From d97737914ee5c05c533f7f40619e2346d7d08c3d Mon Sep 17 00:00:00 2001 From: Michael Kriese <michael.kriese@visualon.de> Date: Wed, 17 Jul 2019 10:14:56 +0200 Subject: [PATCH] refactor: add js type check (#4098) --- .circleci/config.yml | 1 + .eslintrc.js | 23 +++--- lib/config/decrypt.js | 7 +- lib/config/massage.js | 7 +- lib/config/migrate-validate.js | 7 +- lib/config/migration.js | 11 +-- lib/config/presets.js | 10 +-- lib/config/validation-helpers/managers.js | 6 +- lib/config/validation.js | 9 +-- lib/datasource/dart/index.js | 1 + lib/datasource/docker/index.js | 24 ++++--- lib/datasource/github/index.js | 10 ++- lib/datasource/gitlab/index.js | 12 ++-- lib/datasource/go/index.js | 1 + lib/datasource/hex/index.js | 2 +- lib/datasource/maven/index.js | 11 +-- lib/datasource/metadata.js | 7 +- lib/datasource/npm/npmrc.js | 8 +-- lib/datasource/npm/presets.js | 4 +- lib/datasource/npm/releases.js | 6 +- lib/datasource/packagist/index.js | 7 +- lib/datasource/pypi/index.js | 12 ++-- lib/datasource/ruby-version/index.js | 1 + lib/datasource/rubygems/get-rubygems-org.js | 1 + lib/datasource/rubygems/get.js | 2 +- lib/datasource/rubygems/releases.js | 10 +-- lib/datasource/rubygems/retriable.js | 2 +- lib/datasource/terraform/index.js | 7 +- lib/logger/config-serializer.js | 39 +++++----- lib/logger/err-serializer.js | 6 +- lib/manager/composer/artifacts.js | 7 +- lib/manager/composer/extract.js | 7 +- lib/manager/dockerfile/extract.js | 1 + lib/manager/github-actions/extract.js | 1 + lib/manager/gitlabci-include/extract.js | 7 +- lib/manager/gitlabci/extract.js | 3 + lib/manager/kubernetes/extract.js | 1 + lib/manager/maven/extract.js | 1 + lib/manager/npm/extract/monorepo.js | 7 +- lib/manager/npm/post-update/index.js | 7 +- lib/manager/pip_setup/extract.js | 4 +- lib/manager/pipenv/extract.js | 7 +- lib/manager/pub/extract.js | 1 + lib/manager/travis/extract.js | 7 +- lib/manager/travis/package.js | 7 +- lib/manager/travis/update.js | 7 +- lib/platform/github/index.ts | 16 +++-- lib/types.d.ts | 37 +++++++++- lib/util/got/auth.js | 1 + lib/util/got/cache-get.js | 1 + lib/util/got/host-rules.js | 1 + lib/util/got/index.js | 1 + lib/util/got/stats.js | 2 + lib/util/host-rules.ts | 5 +- lib/workers/branch/commit.js | 13 ++-- lib/workers/branch/get-updated.js | 9 +-- lib/workers/branch/schedule.js | 13 ++-- lib/workers/global/autodiscover.js | 7 +- lib/workers/global/index.js | 9 ++- lib/workers/pr/changelog/release-notes.js | 6 +- lib/workers/pr/changelog/source-github.js | 9 +-- lib/workers/pr/pr-body.js | 7 +- lib/workers/repository/finalise/validate.js | 5 +- lib/workers/repository/index.js | 5 +- lib/workers/repository/init/config.js | 10 ++- lib/workers/repository/init/index.js | 1 + .../repository/onboarding/branch/check.js | 7 +- .../repository/onboarding/branch/config.js | 13 ++-- .../repository/onboarding/branch/index.js | 2 +- lib/workers/repository/onboarding/pr/index.js | 7 +- lib/workers/repository/process/fetch.js | 7 +- .../repository/process/lookup/filter.js | 6 +- .../repository/process/lookup/index.js | 1 + lib/workers/repository/process/write.js | 1 + lib/workers/repository/updates/branchify.js | 7 +- lib/workers/repository/updates/flatten.js | 7 +- lib/workers/repository/updates/generate.js | 1 + package.json | 10 +-- .../__snapshots__/validation.spec.js.snap | 2 +- test/config/cli.spec.js | 1 + test/config/index.spec.js | 5 +- test/config/presets.spec.js | 10 +-- test/datasource/docker.spec.js | 1 + test/datasource/git-tags.spec.js | 1 + test/datasource/github.spec.js | 41 ++++------- test/datasource/gitlab.spec.js | 1 + test/datasource/go.spec.js | 1 + test/datasource/gradle-version.spec.js | 1 + test/datasource/hex.spec.js | 3 +- test/datasource/index.spec.js | 1 + test/datasource/packagist.spec.js | 3 + test/datasource/pypi.spec.js | 1 + test/datasource/rubygems/index.spec.js | 2 +- test/datasource/rubygems/retriable.spec.js | 2 +- test/datasource/terraform.spec.js | 2 +- test/logger/err-serializer.spec.js | 2 +- test/manager/ansible/extract.spec.js | 10 +-- test/manager/bazel/extract.spec.js | 27 +++---- test/manager/bazel/update.spec.js | 1 + test/manager/buildkite/extract.spec.js | 14 ++-- test/manager/bundler/extract.spec.js | 3 + test/manager/bundler/range.spec.js | 6 +- test/manager/cargo/artifacts.spec.js | 4 ++ test/manager/circleci/extract.spec.js | 10 +-- test/manager/composer/artifacts.spec.js | 5 ++ test/manager/composer/extract.spec.js | 3 + test/manager/deps-edn/extract.spec.js | 2 +- test/manager/deps-edn/update.spec.js | 2 +- test/manager/docker-compose/extract.spec.js | 8 +-- test/manager/dockerfile/extract.spec.js | 71 +++++++------------ test/manager/github-actions/extract.spec.js | 8 +-- test/manager/gitlabci/extract.spec.js | 8 +-- test/manager/gomod/artifacts.spec.js | 5 ++ test/manager/gomod/extract.spec.js | 10 +-- test/manager/gradle-wrapper/extract.spec.js | 12 +--- test/manager/gradle/index.spec.js | 4 ++ test/manager/kubernetes/extract.spec.js | 14 ++-- test/manager/leiningen/extract.spec.js | 2 +- test/manager/leiningen/update.spec.js | 2 +- test/manager/maven/index.spec.js | 3 + .../meteor/__snapshots__/update.spec.js.snap | 6 +- test/manager/meteor/_fixtures/package-1.js | 1 + test/manager/meteor/_fixtures/package-2.js | 1 + test/manager/meteor/extract.spec.js | 8 +-- test/manager/npm/extract/index.spec.js | 3 + .../npm/extract/locked-versions.spec.js | 2 + test/manager/npm/extract/npm.spec.js | 3 + test/manager/npm/extract/yarn.spec.js | 3 + test/manager/pipenv/artifacts.spec.js | 4 ++ test/manager/pipenv/extract.spec.js | 33 ++++----- test/manager/poetry/artifacts.spec.js | 4 ++ test/manager/terraform/extract.spec.js | 8 +-- test/manager/travis/extract.spec.js | 8 +-- test/manager/travis/package.spec.js | 1 + test/util/env.spec.js | 21 +++++- test/util/host-rules.spec.js | 1 + test/versioning/docker.spec.js | 2 + test/website-docs.spec.js | 1 + test/workers/branch/automerge.spec.js | 3 + test/workers/branch/check-existing.spec.js | 3 + test/workers/branch/commit.spec.js | 3 + test/workers/branch/get-updated.spec.js | 5 ++ test/workers/branch/index.spec.js | 11 +++ test/workers/branch/lock-files/index.spec.js | 7 ++ test/workers/branch/lock-files/lerna.spec.js | 3 + test/workers/branch/lock-files/npm.spec.js | 1 + test/workers/branch/lock-files/pnpm.spec.js | 1 + test/workers/branch/lock-files/yarn.spec.js | 1 + test/workers/branch/parent.spec.js | 3 + test/workers/branch/schedule.spec.js | 1 + test/workers/branch/status-checks.spec.js | 3 + test/workers/global/autodiscover.spec.js | 15 ++-- test/workers/global/index.spec.js | 2 + test/workers/pr/changelog/index.spec.js | 5 +- test/workers/pr/index.spec.js | 6 ++ test/workers/repository/error-config.spec.js | 3 + test/workers/repository/extract/index.spec.js | 1 + .../repository/extract/manager-files.spec.js | 5 ++ .../workers/repository/finalise/prune.spec.js | 4 ++ .../repository/finalise/validate.spec.js | 3 + test/workers/repository/index.spec.js | 1 + test/workers/repository/init/apis.spec.js | 1 + test/workers/repository/init/base.spec.js | 4 ++ test/workers/repository/init/config.spec.js | 5 ++ test/workers/repository/init/index.spec.js | 4 +- test/workers/repository/init/semantic.spec.js | 4 ++ .../repository/init/vulnerability.spec.js | 3 + test/workers/repository/master-issue.spec.js | 5 ++ .../onboarding/branch/index.spec.js | 3 + .../onboarding/branch/rebase.spec.js | 3 + .../repository/onboarding/pr/index.spec.js | 3 + .../repository/process/deprecated.spec.js | 3 + .../repository/process/extract-update.spec.js | 1 + test/workers/repository/process/fetch.spec.js | 1 + test/workers/repository/process/index.spec.js | 1 + .../workers/repository/process/limits.spec.js | 4 ++ .../repository/process/lookup/index.spec.js | 2 + test/workers/repository/process/write.spec.js | 2 + .../repository/updates/branchify.spec.js | 3 + .../repository/updates/flatten.spec.js | 1 + tsconfig.app.json | 2 +- tsconfig.json | 6 +- 182 files changed, 656 insertions(+), 475 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index de9af6148c..57429a084e 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -32,6 +32,7 @@ commands: command: | yarn lint yarn test-schema + yarn type-check - run: name: Build diff --git a/.eslintrc.js b/.eslintrc.js index 104c5bed6e..b45ff30f17 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -15,7 +15,7 @@ module.exports = { project: './tsconfig.json', }, rules: { - 'import/no-unresolved': 0, // only required for js, see overrides + 'import/no-unresolved': 0, // done by typescript 'require-await': 'error', 'no-use-before-define': 0, 'no-restricted-syntax': 0, @@ -25,6 +25,7 @@ module.exports = { 'no-underscore-dangle': 0, // TODO: fix lint + 'import/prefer-default-export': 1, '@typescript-eslint/camelcase': 'off', // disabled until ?? '@typescript-eslint/no-var-requires': 'off', // disable until all files converted to typescript '@typescript-eslint/no-use-before-define': 'off', // disable until all files converted to typescript @@ -32,17 +33,13 @@ module.exports = { '@typescript-eslint/explicit-function-return-type': 0, '@typescript-eslint/no-explicit-any': 0, '@typescript-eslint/no-non-null-assertion': 0, - }, - overrides: [ - { - // TODO: should be removed in near future, uses around ~50% lint time - files: ['*.js'], - rules: { - 'import/no-unresolved': [ - 'error', - { commonjs: true, caseSensitive: true }, - ], + '@typescript-eslint/no-unused-vars': [ + 'error', + { + vars: 'all', + args: 'none', + ignoreRestSiblings: false, }, - }, - ], + ], // disable until proper interfaced api + }, }; diff --git a/lib/config/decrypt.js b/lib/config/decrypt.js index 8003289316..c5b353a02c 100644 --- a/lib/config/decrypt.js +++ b/lib/config/decrypt.js @@ -1,11 +1,10 @@ -const is = require('@sindresorhus/is'); +import is from '@sindresorhus/is'; + const crypto = require('crypto'); const { logger } = require('../logger'); const { maskToken } = require('../util/mask'); -module.exports = { - decryptConfig, -}; +export { decryptConfig }; function decryptConfig(config, privateKey) { logger.trace({ config }, 'decryptConfig()'); diff --git a/lib/config/massage.js b/lib/config/massage.js index 6ff9aca252..72b43f3277 100644 --- a/lib/config/massage.js +++ b/lib/config/massage.js @@ -1,13 +1,12 @@ -const is = require('@sindresorhus/is'); +import is from '@sindresorhus/is'; + const options = require('./definitions').getOptions(); const clone = input => JSON.parse(JSON.stringify(input)); let allowedStrings; -module.exports = { - massageConfig, -}; +export { massageConfig }; // Returns a massaged config function massageConfig(config) { diff --git a/lib/config/migrate-validate.js b/lib/config/migrate-validate.js index 772d02841c..72a29c18d4 100644 --- a/lib/config/migrate-validate.js +++ b/lib/config/migrate-validate.js @@ -1,12 +1,11 @@ -const is = require('@sindresorhus/is'); +import is from '@sindresorhus/is'; + const { logger } = require('../logger'); const configMigration = require('./migration'); const configMassage = require('./massage'); const configValidation = require('./validation'); -module.exports = { - migrateAndValidate, -}; +export { migrateAndValidate }; async function migrateAndValidate(config, input) { logger.debug('migrateAndValidate()'); diff --git a/lib/config/migration.js b/lib/config/migration.js index bc4d7175b6..d9724eb0d7 100644 --- a/lib/config/migration.js +++ b/lib/config/migration.js @@ -1,4 +1,5 @@ -const is = require('@sindresorhus/is'); +import is from '@sindresorhus/is'; + const later = require('later'); const { logger } = require('../logger'); const options = require('./definitions').getOptions(); @@ -7,9 +8,7 @@ const clone = input => JSON.parse(JSON.stringify(input)); let optionTypes; -module.exports = { - migrateConfig, -}; +export { migrateConfig }; const removedOptions = [ 'maintainYarnLock', @@ -83,11 +82,13 @@ function migrateConfig(config, parentKey) { const fileList = []; for (const packageFile of val) { if (is.object(packageFile) && !is.array(packageFile)) { + // @ts-ignore fileList.push(packageFile.packageFile); if (Object.keys(packageFile).length > 1) { migratedConfig.packageRules = migratedConfig.packageRules || []; const payload = migrateConfig(packageFile, key).migratedConfig; for (const subrule of payload.packageRules || []) { + // @ts-ignore subrule.paths = [packageFile.packageFile]; migratedConfig.packageRules.push(subrule); } @@ -96,6 +97,7 @@ function migrateConfig(config, parentKey) { if (Object.keys(payload).length) { migratedConfig.packageRules.push({ ...payload, + // @ts-ignore paths: [packageFile.packageFile], }); } @@ -344,6 +346,7 @@ function migrateConfig(config, parentKey) { } else if (key === 'depTypes' && is.array(val)) { val.forEach(depType => { if (is.object(depType) && !is.array(depType)) { + // @ts-ignore const depTypeName = depType.depType; if (depTypeName) { migratedConfig.packageRules = migratedConfig.packageRules || []; diff --git a/lib/config/presets.js b/lib/config/presets.js index f8df3b6487..9e7ad8bf80 100644 --- a/lib/config/presets.js +++ b/lib/config/presets.js @@ -1,4 +1,5 @@ -const is = require('@sindresorhus/is'); +import is from '@sindresorhus/is'; + const { logger } = require('../logger'); const configParser = require('./index'); const massage = require('./massage'); @@ -13,12 +14,7 @@ const datasources = { gitlab, }; -module.exports = { - resolveConfigPresets, - replaceArgs, - parsePreset, - getPreset, -}; +export { resolveConfigPresets, replaceArgs, parsePreset, getPreset }; async function resolveConfigPresets( inputConfig, diff --git a/lib/config/validation-helpers/managers.js b/lib/config/validation-helpers/managers.js index d6601ba2e2..500dec3ca2 100644 --- a/lib/config/validation-helpers/managers.js +++ b/lib/config/validation-helpers/managers.js @@ -1,9 +1,7 @@ const { getManagerList } = require('../../manager'); /** * Only if type condition or context condition violated then errors array will be mutated to store metadata - * @param {Obgect} param - * * {Obgect} param.resolvedRule - * * {string} param.currentPath + * @param {{resolvedRule:any, currentPath: string}} param * @returns {Array} with finded error or empty array */ const check = ({ resolvedRule, currentPath }) => { @@ -17,7 +15,7 @@ const check = ({ resolvedRule, currentPath }) => { managersErrMessage = `${currentPath}: You have included an unsupported manager in a package rule. Your list: ${ resolvedRule.managers - }. + }. Supported managers are: (${getManagerList().join(', ')}).`; } } else if (typeof resolvedRule.managers !== 'undefined') diff --git a/lib/config/validation.js b/lib/config/validation.js index 186b919ebe..88d88ed096 100644 --- a/lib/config/validation.js +++ b/lib/config/validation.js @@ -1,4 +1,5 @@ -const is = require('@sindresorhus/is'); +import is from '@sindresorhus/is'; + const safe = require('safe-regex'); const options = require('./definitions').getOptions(); const { resolveConfigPresets } = require('./presets'); @@ -10,9 +11,7 @@ const managerValidator = require('./validation-helpers/managers'); let optionTypes; -module.exports = { - validateConfig, -}; +export { validateConfig }; // istanbul ignore next async function validateBaseBranches(config) { @@ -79,6 +78,7 @@ async function validateConfig(config, isPreset, parentPath) { const currentPath = parentPath ? `${parentPath}.${key}` : key; if ( !isIgnored(key) && // We need to ignore some reserved keys + // @ts-ignore !is.function(val) // Ignore all functions ) { if (getDeprecationMessage(key)) { @@ -203,6 +203,7 @@ async function validateConfig(config, isPreset, parentPath) { !(val && val.length === 1 && val[0] === '*') ) { try { + // @ts-ignore RegExp(val); if (!safe(val)) { errors.push({ diff --git a/lib/datasource/dart/index.js b/lib/datasource/dart/index.js index a8b64f54bb..e8d9f4df4a 100644 --- a/lib/datasource/dart/index.js +++ b/lib/datasource/dart/index.js @@ -2,6 +2,7 @@ const got = require('../../util/got'); const { logger } = require('../../logger'); async function getPkgReleases({ lookupName }) { + /** @type any */ let result = null; const pkgUrl = `https://pub.dartlang.org/api/packages/${lookupName}`; let raw = null; diff --git a/lib/datasource/docker/index.js b/lib/datasource/docker/index.js index 5685d7e09f..c232b241be 100644 --- a/lib/datasource/docker/index.js +++ b/lib/datasource/docker/index.js @@ -1,6 +1,7 @@ +import is from '@sindresorhus/is'; + const hasha = require('hasha'); const URL = require('url'); -const is = require('@sindresorhus/is'); const parseLinkHeader = require('parse-link-header'); const wwwAuthenticate = require('www-authenticate'); const { logger } = require('../../logger'); @@ -8,12 +9,15 @@ const { logger } = require('../../logger'); const got = require('../../util/got'); const hostRules = require('../../util/host-rules'); -module.exports = { - getDigest, - getPkgReleases, -}; +export { getDigest, getPkgReleases }; +/** + * + * @param {string} lookupName + * @param {string[]=} registryUrls + */ function getRegistryRepository(lookupName, registryUrls) { + /** @type string */ let registry; const split = lookupName.split('/'); if (split.length > 1 && split[0].includes('.')) { @@ -50,6 +54,7 @@ async function getAuthHeaders(registry, repository) { apiCheckResponse.headers['www-authenticate'] ); + /** @type any */ const opts = hostRules.find({ hostType: 'docker', url: apiCheckUrl }); opts.json = true; if (opts.username && opts.password) { @@ -200,7 +205,7 @@ async function getManifestResponse(registry, repository, tag) { } } -/* +/** * docker.getDigest * * The `newValue` supplied here should be a valid tag for the docker image. @@ -208,8 +213,9 @@ async function getManifestResponse(registry, repository, tag) { * This function will: * - Look up a sha256 digest for a tag on its registry * - Return the digest as a string + * @param {{registryUrls? : string[], lookupName: string}} args + * @param {string=} newValue */ - async function getDigest({ registryUrls, lookupName }, newValue) { const { registry, repository } = getRegistryRepository( lookupName, @@ -451,7 +457,7 @@ async function getLabels(registry, repository, tag) { } } -/* +/** * docker.getPkgReleases * * A docker image usually looks something like this: somehost.io/owner/repo:8.1.0-alpine @@ -461,8 +467,8 @@ async function getLabels(registry, repository, tag) { * - '8.1.0-alpine' is the tag * * This function will filter only tags that contain a semver version + * @param {{lookupName :string, registryUrls?: string[] }} args */ - async function getPkgReleases({ lookupName, registryUrls }) { const { registry, repository } = getRegistryRepository( lookupName, diff --git a/lib/datasource/github/index.js b/lib/datasource/github/index.js index e88e9cfc80..e78a10ae5f 100644 --- a/lib/datasource/github/index.js +++ b/lib/datasource/github/index.js @@ -1,13 +1,11 @@ -import ghGot from '../../platform/github/gh-got-wrapper'; +import { api } from '../../platform/github/gh-got-wrapper'; const { logger } = require('../../logger'); const got = require('../../util/got'); -module.exports = { - getPreset, - getDigest, - getPkgReleases, -}; +const ghGot = api.get; + +export { getPreset, getDigest, getPkgReleases }; async function fetchJSONFile(repo, fileName) { const url = `https://api.github.com/repos/${repo}/contents/${fileName}`; diff --git a/lib/datasource/gitlab/index.js b/lib/datasource/gitlab/index.js index 048071a393..2168a778e3 100644 --- a/lib/datasource/gitlab/index.js +++ b/lib/datasource/gitlab/index.js @@ -1,12 +1,9 @@ -const is = require('@sindresorhus/is'); +import is from '@sindresorhus/is'; const glGot = require('../../platform/gitlab/gl-got-wrapper').api.get; const { logger } = require('../../logger'); -module.exports = { - getPreset, - getPkgReleases, -}; +export { getPreset, getPkgReleases }; const GitLabApiUrl = 'https://gitlab.com/api/v4/projects'; @@ -14,6 +11,7 @@ async function getPreset(pkgName, presetName = 'default') { if (presetName !== 'default') { throw new Error( { pkgName, presetName }, + // @ts-ignore 'Sub-preset names are not supported with Gitlab datasource' ); } @@ -45,6 +43,10 @@ function getCacheKey(depHost, repo, lookupType) { return `${depHost}:${repo}:${type}`; } +/** + * + * @param {{registryUrls? : string[], lookupName:string, lookupType:string}} param0 + */ async function getPkgReleases({ registryUrls, lookupName: repo, lookupType }) { // Use registryUrls if present, otherwise default to publid gitlab.com const depHost = is.nonEmptyArray(registryUrls) diff --git a/lib/datasource/go/index.js b/lib/datasource/go/index.js index 1b838a3a42..e44d1aab7a 100644 --- a/lib/datasource/go/index.js +++ b/lib/datasource/go/index.js @@ -74,6 +74,7 @@ async function getPkgReleases({ lookupName }) { logger.trace(`go.getPkgReleases(${lookupName})`); const source = await getDatasource(lookupName); if (source && source.datasource === 'github') { + // @ts-ignore const res = await github.getPkgReleases(source); if (res && res.releases) { res.releases = res.releases.filter( diff --git a/lib/datasource/hex/index.js b/lib/datasource/hex/index.js index 7f5b7ece41..3db55774d3 100644 --- a/lib/datasource/hex/index.js +++ b/lib/datasource/hex/index.js @@ -15,7 +15,7 @@ function getHostOpts() { async function getPkgReleases({ lookupName }) { const hexUrl = `https://hex.pm/api/packages/${lookupName}`; try { - const opts = getHostOpts(hexUrl); + const opts = getHostOpts(); const res = (await got(hexUrl, { json: true, ...opts, diff --git a/lib/datasource/maven/index.js b/lib/datasource/maven/index.js index 6f86f9e0cb..33041c6e12 100644 --- a/lib/datasource/maven/index.js +++ b/lib/datasource/maven/index.js @@ -1,17 +1,20 @@ +import is from '@sindresorhus/is'; + const url = require('url'); const fs = require('fs-extra'); const { XmlDocument } = require('xmldoc'); -const is = require('@sindresorhus/is'); const { logger } = require('../../logger'); const { compare } = require('../../versioning/maven/compare'); const { containsPlaceholder } = require('../../manager/maven/extract'); const { downloadHttpProtocol } = require('./util'); -module.exports = { - getPkgReleases, -}; +export { getPkgReleases }; +/** + * + * @param {{lookupName:string, registryUrls?: string[]}} args + */ // eslint-disable-next-line no-unused-vars async function getPkgReleases({ lookupName, registryUrls }) { const versions = []; diff --git a/lib/datasource/metadata.js b/lib/datasource/metadata.js index 85401ce250..34bdbe97c2 100644 --- a/lib/datasource/metadata.js +++ b/lib/datasource/metadata.js @@ -1,9 +1,8 @@ -const is = require('@sindresorhus/is'); +import is from '@sindresorhus/is'; + const parse = require('github-url-from-git'); -module.exports = { - addMetaData, -}; +export { addMetaData }; // Use this object to define changelog URLs for packages // Only necessary when the changelog data cannot be found in the package's source repository diff --git a/lib/datasource/npm/npmrc.js b/lib/datasource/npm/npmrc.js index bd33b9000d..d9093a8a0c 100644 --- a/lib/datasource/npm/npmrc.js +++ b/lib/datasource/npm/npmrc.js @@ -1,4 +1,5 @@ -const is = require('@sindresorhus/is'); +import is from '@sindresorhus/is'; + const ini = require('ini'); const { isBase64 } = require('validator'); const { logger } = require('../../logger'); @@ -6,10 +7,7 @@ const { logger } = require('../../logger'); let npmrc = null; let npmrcRaw; -module.exports = { - getNpmrc, - setNpmrc, -}; +export { getNpmrc, setNpmrc }; function getNpmrc() { return npmrc; diff --git a/lib/datasource/npm/presets.js b/lib/datasource/npm/presets.js index bcab3aa0bb..b7137f3e03 100644 --- a/lib/datasource/npm/presets.js +++ b/lib/datasource/npm/presets.js @@ -2,9 +2,7 @@ import { logger } from '../../logger'; const { getDependency } = require('./get'); -module.exports = { - getPreset, -}; +export { getPreset }; async function getPreset(pkgName, presetName = 'default') { const dep = await getDependency(pkgName); diff --git a/lib/datasource/npm/releases.js b/lib/datasource/npm/releases.js index b340ac059c..f2c96a6756 100644 --- a/lib/datasource/npm/releases.js +++ b/lib/datasource/npm/releases.js @@ -5,11 +5,15 @@ module.exports = { getPkgReleases, }; +/** + * + * @param {{lookupName: string, npmrc?: string}} args + */ async function getPkgReleases({ lookupName, npmrc }) { if (npmrc) { setNpmrc(npmrc); } - const res = await getDependency(lookupName, global.testNpmRetries); + const res = await getDependency(lookupName); if (res) { res.tags = res['dist-tags']; delete res['dist-tags']; diff --git a/lib/datasource/packagist/index.js b/lib/datasource/packagist/index.js index 42772c6c4e..2eff397eea 100644 --- a/lib/datasource/packagist/index.js +++ b/lib/datasource/packagist/index.js @@ -1,4 +1,5 @@ -const is = require('@sindresorhus/is'); +import is from '@sindresorhus/is'; + const URL = require('url'); const delay = require('delay'); const parse = require('github-url-from-git'); @@ -8,9 +9,7 @@ const { logger } = require('../../logger'); const got = require('../../util/got'); const hostRules = require('../../util/host-rules'); -module.exports = { - getPkgReleases, -}; +export { getPkgReleases }; function getHostOpts(url) { const opts = { diff --git a/lib/datasource/pypi/index.js b/lib/datasource/pypi/index.js index 63cc856223..825824e3d0 100644 --- a/lib/datasource/pypi/index.js +++ b/lib/datasource/pypi/index.js @@ -1,13 +1,12 @@ +import is from '@sindresorhus/is'; + const url = require('url'); -const is = require('@sindresorhus/is'); const { parse } = require('node-html-parser'); const { logger } = require('../../logger'); const { matches } = require('../../versioning/pep440'); const got = require('../../util/got'); -module.exports = { - getPkgReleases, -}; +export { getPkgReleases }; function normalizeName(input) { return input.toLowerCase().replace(/(-|\.)/g, '_'); @@ -28,6 +27,10 @@ function compatibleVersions(releases, compatibility) { ); } +/** + * + * @param {{compatibility:any, lookupName:string, registryUrls?: string[] }} args + */ async function getPkgReleases({ compatibility, lookupName, registryUrls }) { let hostUrls = ['https://pypi.org/pypi/']; if (is.nonEmptyArray(registryUrls)) { @@ -114,6 +117,7 @@ async function getSimpleDependency(depName, hostUrl) { return null; } const root = parse(dep); + // @ts-ignore const links = root.querySelectorAll('a'); const versions = new Set(); for (const link of links) { diff --git a/lib/datasource/ruby-version/index.js b/lib/datasource/ruby-version/index.js index 03598f3440..cd2507bbb9 100644 --- a/lib/datasource/ruby-version/index.js +++ b/lib/datasource/ruby-version/index.js @@ -26,6 +26,7 @@ async function getPkgReleases() { }; const response = await got(rubyVersionsUrl); const root = parse(response.body); + // @ts-ignore const rows = root.querySelector('.release-list').querySelectorAll('tr'); for (const row of rows) { const columns = Array.from( diff --git a/lib/datasource/rubygems/get-rubygems-org.js b/lib/datasource/rubygems/get-rubygems-org.js index 25eea2834d..4ccdfa7261 100644 --- a/lib/datasource/rubygems/get-rubygems-org.js +++ b/lib/datasource/rubygems/get-rubygems-org.js @@ -72,6 +72,7 @@ async function updateRubyGemsVersions() { } function isDataStale() { + // @ts-ignore const minutesElapsed = Math.floor((new Date() - lastSync) / (60 * 1000)); return minutesElapsed >= 5; } diff --git a/lib/datasource/rubygems/get.js b/lib/datasource/rubygems/get.js index 0e2c869bc9..0310497587 100644 --- a/lib/datasource/rubygems/get.js +++ b/lib/datasource/rubygems/get.js @@ -39,7 +39,7 @@ const fetch = async ({ dependency, registry, path }) => { const json = true; const retry = retriable(); - const headers = getHeaders(registry); + const headers = getHeaders(); const name = `/${dependency}.json`; const baseUrl = `${registry}/${path}`; diff --git a/lib/datasource/rubygems/releases.js b/lib/datasource/rubygems/releases.js index 3e1af26328..f7c8f1cf89 100644 --- a/lib/datasource/rubygems/releases.js +++ b/lib/datasource/rubygems/releases.js @@ -1,9 +1,11 @@ -const { nonEmptyArray } = require('@sindresorhus/is'); +import is from '@sindresorhus/is'; + const { getDependency } = require('./get'); const { getRubygemsOrgDependency } = require('./get-rubygems-org'); +/** @param {{lookupName:string, registryUrls?: string[]}} opt */ async function getPkgReleases({ lookupName, registryUrls }) { - const registries = nonEmptyArray(registryUrls) ? registryUrls : []; + const registries = is.nonEmptyArray(registryUrls) ? registryUrls : []; for (const registry of registries) { let pkg; @@ -20,6 +22,4 @@ async function getPkgReleases({ lookupName, registryUrls }) { return null; } -module.exports = { - getPkgReleases, -}; +export { getPkgReleases }; diff --git a/lib/datasource/rubygems/retriable.js b/lib/datasource/rubygems/retriable.js index dea324b773..1f91ecd27e 100644 --- a/lib/datasource/rubygems/retriable.js +++ b/lib/datasource/rubygems/retriable.js @@ -11,7 +11,7 @@ const RETRY_AFTER = 600; const NUMBER_OF_RETRIES = 5; const getDelayStep = () => - process.env.RENOVATE_RUBYGEMS_RETRY_DELAY_STEP || 1000; + parseInt(process.env.RENOVATE_RUBYGEMS_RETRY_DELAY_STEP || '1000', 10); const toMs = value => parseInt(value, 10) * getDelayStep(); const getBannedDelay = retryAfter => (retryAfter || RETRY_AFTER) + 1; diff --git a/lib/datasource/terraform/index.js b/lib/datasource/terraform/index.js index 0a378b4f02..949f035c34 100644 --- a/lib/datasource/terraform/index.js +++ b/lib/datasource/terraform/index.js @@ -1,12 +1,11 @@ +import is from '@sindresorhus/is'; + const parse = require('github-url-from-git'); -const is = require('@sindresorhus/is'); const { logger } = require('../../logger'); const got = require('../../util/got'); -module.exports = { - getPkgReleases, -}; +export { getPkgReleases }; function getRegistryRepository(lookupName, registryUrls) { let registry; diff --git a/lib/logger/config-serializer.js b/lib/logger/config-serializer.js index 123ce38379..6c81673f6e 100644 --- a/lib/logger/config-serializer.js +++ b/lib/logger/config-serializer.js @@ -23,23 +23,26 @@ function configSerializer(config) { 'yarnLockParsed', ]; const arrayFields = ['packageFiles', 'upgrades']; - // eslint-disable-next-line array-callback-return - return traverse(config).map(function scrub(val) { - if (val && redactedFields.includes(this.key)) { - this.update('***********'); + return traverse(config).map( + /** @this {{key:string, update: (val:any) => void}} */ + // eslint-disable-next-line array-callback-return + function scrub(val) { + if (val && redactedFields.includes(this.key)) { + this.update('***********'); + } + if (val && templateFields.includes(this.key)) { + this.update('[Template]'); + } + if (val && contentFields.includes(this.key)) { + this.update('[content]'); + } + if (val && this.key === 'releases') { + this.update(val.map(release => release.version)); + } + // istanbul ignore if + if (val && arrayFields.includes(this.key)) { + this.update('[Array]'); + } } - if (val && templateFields.includes(this.key)) { - this.update('[Template]'); - } - if (val && contentFields.includes(this.key)) { - this.update('[content]'); - } - if (val && this.key === 'releases') { - this.update(val.map(release => release.version)); - } - // istanbul ignore if - if (val && arrayFields.includes(this.key)) { - this.update('[Array]'); - } - }); + ); } diff --git a/lib/logger/err-serializer.js b/lib/logger/err-serializer.js index b18605afaf..79b425ab44 100644 --- a/lib/logger/err-serializer.js +++ b/lib/logger/err-serializer.js @@ -1,8 +1,6 @@ -const is = require('@sindresorhus/is'); +import is from '@sindresorhus/is'; -module.exports = errSerializer; - -function errSerializer(err) { +export default function errSerializer(err) { const response = { ...err, }; diff --git a/lib/manager/composer/artifacts.js b/lib/manager/composer/artifacts.js index 9af1093280..2e971d44b2 100644 --- a/lib/manager/composer/artifacts.js +++ b/lib/manager/composer/artifacts.js @@ -1,4 +1,5 @@ -const is = require('@sindresorhus/is'); +import is from '@sindresorhus/is'; + const URL = require('url'); const { exec } = require('child-process-promise'); const fs = require('fs-extra'); @@ -7,9 +8,7 @@ const { logger } = require('../../logger'); const hostRules = require('../../util/host-rules'); const { getChildProcessEnv } = require('../../util/env'); -module.exports = { - updateArtifacts, -}; +export { updateArtifacts }; async function updateArtifacts( packageFileName, diff --git a/lib/manager/composer/extract.js b/lib/manager/composer/extract.js index a650d18f03..b67da65a06 100644 --- a/lib/manager/composer/extract.js +++ b/lib/manager/composer/extract.js @@ -1,10 +1,9 @@ -const is = require('@sindresorhus/is'); +import is from '@sindresorhus/is'; + const { logger } = require('../../logger'); const semverComposer = require('../../versioning/composer'); -module.exports = { - extractPackageFile, -}; +export { extractPackageFile }; async function extractPackageFile(content, fileName) { logger.trace(`composer.extractPackageFile(${fileName})`); diff --git a/lib/manager/dockerfile/extract.js b/lib/manager/dockerfile/extract.js index afd04dc132..6972faf331 100644 --- a/lib/manager/dockerfile/extract.js +++ b/lib/manager/dockerfile/extract.js @@ -36,6 +36,7 @@ function splitImageParts(currentFrom) { } function getDep(currentFrom) { + /** @type any */ const dep = { ...splitImageParts(currentFrom), currentFrom, diff --git a/lib/manager/github-actions/extract.js b/lib/manager/github-actions/extract.js index 6e04847e07..3e668af665 100644 --- a/lib/manager/github-actions/extract.js +++ b/lib/manager/github-actions/extract.js @@ -13,6 +13,7 @@ function extractPackageFile(content) { const match = line.match(/^\s+uses = "docker:\/\/([^"]+)"\s*$/); if (match) { const currentFrom = match[1]; + /** @type any */ const dep = getDep(currentFrom); logger.debug( { diff --git a/lib/manager/gitlabci-include/extract.js b/lib/manager/gitlabci-include/extract.js index 8427ff767d..9fdcd29879 100644 --- a/lib/manager/gitlabci-include/extract.js +++ b/lib/manager/gitlabci-include/extract.js @@ -1,11 +1,10 @@ -const is = require('@sindresorhus/is'); +import is from '@sindresorhus/is'; + const yaml = require('js-yaml'); const { logger } = require('../../logger'); -module.exports = { - extractPackageFile, -}; +export { extractPackageFile }; function extractDepFromInclude(includeObj) { if (!includeObj.file || !includeObj.project) { diff --git a/lib/manager/gitlabci/extract.js b/lib/manager/gitlabci/extract.js index 66dbe23221..ff3480247c 100644 --- a/lib/manager/gitlabci/extract.js +++ b/lib/manager/gitlabci/extract.js @@ -24,6 +24,7 @@ function extractPackageFile(content) { lineNumber += 1; logger.trace(`Matched image name on line ${lineNumber}`); const currentFrom = imageNameMatch[1]; + /** @type any */ const dep = getDep(currentFrom); dep.lineNumber = lineNumber; dep.depType = 'image-name'; @@ -34,6 +35,7 @@ function extractPackageFile(content) { default: { logger.trace(`Matched image on line ${lineNumber}`); const currentFrom = imageMatch[1]; + /** @type any */ const dep = getDep(currentFrom); dep.lineNumber = lineNumber; dep.depType = 'image'; @@ -57,6 +59,7 @@ function extractPackageFile(content) { foundImage = true; const currentFrom = serviceImageMatch[1]; lineNumber += 1; + /** @type any */ const dep = getDep(currentFrom); dep.lineNumber = lineNumber; dep.depType = 'service-image'; diff --git a/lib/manager/kubernetes/extract.js b/lib/manager/kubernetes/extract.js index 36391926d9..4e79fae8ca 100644 --- a/lib/manager/kubernetes/extract.js +++ b/lib/manager/kubernetes/extract.js @@ -20,6 +20,7 @@ function extractPackageFile(content) { const match = line.match(/^\s*-?\s*image:\s*'?"?([^\s'"]+)'?"?\s*$/); if (match) { const currentFrom = match[1]; + /** @type any */ const dep = getDep(currentFrom); logger.debug( { diff --git a/lib/manager/maven/extract.js b/lib/manager/maven/extract.js index 9d10255eab..e8af7a6c1c 100644 --- a/lib/manager/maven/extract.js +++ b/lib/manager/maven/extract.js @@ -195,6 +195,7 @@ function resolveProps(packages) { pkg = extractedPackages[pkg.parent]; } hierarchy.unshift({}); + // @ts-ignore extractedProps[name] = Object.assign.apply(null, hierarchy); }); diff --git a/lib/manager/npm/extract/monorepo.js b/lib/manager/npm/extract/monorepo.js index 1f9cdbf112..e678bb461b 100644 --- a/lib/manager/npm/extract/monorepo.js +++ b/lib/manager/npm/extract/monorepo.js @@ -1,12 +1,11 @@ -const is = require('@sindresorhus/is'); +import is from '@sindresorhus/is'; + const minimatch = require('minimatch'); const path = require('path'); const upath = require('upath'); const { logger } = require('../../../logger'); -module.exports = { - detectMonorepos, -}; +export { detectMonorepos }; function matchesAnyPattern(val, patterns) { const res = patterns.some( diff --git a/lib/manager/npm/post-update/index.js b/lib/manager/npm/post-update/index.js index bde075d86d..c7ffd9fa2a 100644 --- a/lib/manager/npm/post-update/index.js +++ b/lib/manager/npm/post-update/index.js @@ -1,7 +1,8 @@ +import is from '@sindresorhus/is'; + const fs = require('fs-extra'); const path = require('path'); const upath = require('upath'); -const is = require('@sindresorhus/is'); const { logger } = require('../../../logger'); const npm = require('./npm'); const lerna = require('./lerna'); @@ -10,7 +11,7 @@ const pnpm = require('./pnpm'); const hostRules = require('../../../util/host-rules'); const { getChildProcessEnv } = require('../../../util/env'); -module.exports = { +export { determineLockFileDirs, writeExistingFiles, writeUpdatedPackageFiles, @@ -353,7 +354,7 @@ async function getAdditionalFiles(config, packageFiles) { const dirs = module.exports.determineLockFileDirs(config, packageFiles); logger.debug({ dirs }, 'lock file dirs'); await module.exports.writeExistingFiles(config, packageFiles); - await module.exports.writeUpdatedPackageFiles(config, packageFiles); + await module.exports.writeUpdatedPackageFiles(config); process.env.NPM_CONFIG_CACHE = process.env.NPM_CONFIG_CACHE || upath.join(config.cacheDir, './others/npm'); diff --git a/lib/manager/pip_setup/extract.js b/lib/manager/pip_setup/extract.js index b085288e6c..c7e5eaa70a 100644 --- a/lib/manager/pip_setup/extract.js +++ b/lib/manager/pip_setup/extract.js @@ -135,7 +135,9 @@ async function extractPackageFile(content, packageFile, config) { .filter(Boolean) .sort((a, b) => a.lineNumber === b.lineNumber - ? (a.depName > b.depName) - (a.depName < b.depName) + ? // TODO: dummy comment for prettier + // @ts-ignore + (a.depName > b.depName) - (a.depName < b.depName) : a.lineNumber - b.lineNumber ); // istanbul ignore if diff --git a/lib/manager/pipenv/extract.js b/lib/manager/pipenv/extract.js index 4c81528f15..c95cf9e47b 100644 --- a/lib/manager/pipenv/extract.js +++ b/lib/manager/pipenv/extract.js @@ -1,5 +1,6 @@ +import is from '@sindresorhus/is'; + const toml = require('toml'); -const is = require('@sindresorhus/is'); // based on https://www.python.org/dev/peps/pep-0508/#names const packageRegex = /^([A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9])$/i; @@ -12,9 +13,7 @@ const specifierPartPattern = `\\s*${rangePattern.replace( )}\\s*`; const specifierPattern = `${specifierPartPattern}(?:,${specifierPartPattern})*`; -module.exports = { - extractPackageFile, -}; +export { extractPackageFile }; function extractPackageFile(content) { logger.debug('pipenv.extractPackageFile()'); diff --git a/lib/manager/pub/extract.js b/lib/manager/pub/extract.js index 5dcac29ade..99bce6dc9b 100644 --- a/lib/manager/pub/extract.js +++ b/lib/manager/pub/extract.js @@ -22,6 +22,7 @@ function getDeps(depsObj, preset = {}) { currentValue = section.version.toString(); } + /** @type any */ const dep = { ...preset, depName, currentValue }; if (!currentValue) { dep.skipReason = 'not-a-version'; diff --git a/lib/manager/travis/extract.js b/lib/manager/travis/extract.js index ab9a374814..682f7506f7 100644 --- a/lib/manager/travis/extract.js +++ b/lib/manager/travis/extract.js @@ -1,9 +1,8 @@ +import is from '@sindresorhus/is'; + const yaml = require('js-yaml'); -const is = require('@sindresorhus/is'); -module.exports = { - extractPackageFile, -}; +export { extractPackageFile }; function extractPackageFile(content) { const doc = yaml.safeLoad(content); diff --git a/lib/manager/travis/package.js b/lib/manager/travis/package.js index 78c00e7cae..bb5370eba1 100644 --- a/lib/manager/travis/package.js +++ b/lib/manager/travis/package.js @@ -1,13 +1,12 @@ -const is = require('@sindresorhus/is'); +import is from '@sindresorhus/is'; + const { isEqual } = require('lodash'); const { getPkgReleases } = require('../../datasource'); const { isVersion, maxSatisfyingVersion } = require('../../versioning/semver'); const { logger } = require('../../logger'); const nodeJsSchedule = require('../../../data/node-js-schedule.json'); -module.exports = { - getPackageUpdates, -}; +export { getPackageUpdates }; let policies; let refreshDate; diff --git a/lib/manager/travis/update.js b/lib/manager/travis/update.js index f3c94aca9c..44e8d31a16 100644 --- a/lib/manager/travis/update.js +++ b/lib/manager/travis/update.js @@ -1,10 +1,9 @@ +import is from '@sindresorhus/is'; + const detectIndent = require('detect-indent'); -const is = require('@sindresorhus/is'); const { logger } = require('../../logger'); -module.exports = { - updateDependency, -}; +export { updateDependency }; function updateDependency(fileContent, upgrade) { try { diff --git a/lib/platform/github/index.ts b/lib/platform/github/index.ts index fe56b4e271..d8ad3e570b 100644 --- a/lib/platform/github/index.ts +++ b/lib/platform/github/index.ts @@ -29,6 +29,12 @@ interface Pr { branchName: string; number: number; comments: Comment[]; + + createdAt: string; + + sha: string; + + sourceRepo: string; } interface RepoConfig { @@ -507,7 +513,7 @@ export function getFile(filePath: string, branchName?: string) { } // istanbul ignore next -export function deleteBranch(branchName: string) { +export function deleteBranch(branchName: string, closePr?: boolean) { return config.storage.deleteBranch(branchName); } @@ -665,7 +671,7 @@ export async function setBranchStatus( context: string, description: string, state: string, - targetUrl: string + targetUrl?: string ) { // istanbul ignore if if (config.parentRepo) { @@ -1274,7 +1280,7 @@ async function getOpenPrs() { json: false, }; const res = JSON.parse((await api.post(url, options)).body); - const prNumbers = []; + const prNumbers: number[] = []; // istanbul ignore if if (!res.data) { logger.info({ query, res }, 'No graphql res.data'); @@ -1399,7 +1405,7 @@ async function getClosedPrs() { json: false, }; const res = JSON.parse((await api.post(url, options)).body); - const prNumbers = []; + const prNumbers: number[] = []; // istanbul ignore if if (!res.data) { logger.info( @@ -1555,7 +1561,7 @@ export async function getPrFiles(prNo: number) { return files.map((f: { filename: string }) => f.filename); } -export async function updatePr(prNo: number, title: string, body: string) { +export async function updatePr(prNo: number, title: string, body?: string) { logger.debug(`updatePr(${prNo}, ${title}, body)`); const patchBody: any = { title }; if (body) { diff --git a/lib/types.d.ts b/lib/types.d.ts index 3ce19ad72d..edca5fb38c 100644 --- a/lib/types.d.ts +++ b/lib/types.d.ts @@ -1,6 +1,23 @@ -declare namespace Renovate {} +declare namespace Renovate { + interface Cache { + get<T = any>(namespace: string, key: string): Promise<T>; + rm(namespace: string, key: string): Promise<void>; + rmAll(): Promise<void>; + + set<T = any>( + namespace: string, + key: string, + value: T, + ttlMinutes?: number + ): Promise<void>; + } +} declare interface Error { + configFile?: string; + + statusCode?: number; + validationError?: string; validationMessage?: string; } @@ -13,5 +30,23 @@ declare namespace NodeJS { renovateVersion: string; // TODO: declare interface for all platforms platform: typeof import('./platform/github'); + + renovateCache: Renovate.Cache; + + repoCache: Record<string, any>; + + trustLevel?: string; + + updateRubyGemsVersions?: Promise<void>; } } + +declare let platform: typeof import('./platform/github'); + +declare let renovateCache: Renovate.Cache; + +// can't use `resolveJsonModule` because it will copy json files and change dist path +declare module '*.json' { + const value: any; + export = value; +} diff --git a/lib/util/got/auth.js b/lib/util/got/auth.js index 77311e45cc..069c98bfc9 100644 --- a/lib/util/got/auth.js +++ b/lib/util/got/auth.js @@ -2,6 +2,7 @@ const got = require('got'); const { logger } = require('../../logger'); // istanbul ignore next +// @ts-ignore module.exports = got.create({ options: {}, handler: (options, next) => { diff --git a/lib/util/got/cache-get.js b/lib/util/got/cache-get.js index 82c3049a72..93e4e4aebd 100644 --- a/lib/util/got/cache-get.js +++ b/lib/util/got/cache-get.js @@ -7,6 +7,7 @@ const clone = input => JSON.parse(JSON.stringify(input)); // With this caching, it means every GET request is cached during each repository run // istanbul ignore next +// @ts-ignore module.exports = got.create({ options: {}, handler: (options, next) => { diff --git a/lib/util/got/host-rules.js b/lib/util/got/host-rules.js index bed682ab0a..61762f6837 100644 --- a/lib/util/got/host-rules.js +++ b/lib/util/got/host-rules.js @@ -6,6 +6,7 @@ const hostRules = require('../host-rules'); // Apply host rules to requests // istanbul ignore next +// @ts-ignore module.exports = got.create({ options: {}, handler: (options, next) => { diff --git a/lib/util/got/index.js b/lib/util/got/index.js index 92e03756d0..06a94285c2 100644 --- a/lib/util/got/index.js +++ b/lib/util/got/index.js @@ -13,6 +13,7 @@ const stats = require('./stats'); * Important: always put the renovateAgent one last, to make sure the correct user agent is used */ +// @ts-ignore module.exports = got.mergeInstances( cacheGet, renovateAgent, diff --git a/lib/util/got/stats.js b/lib/util/got/stats.js index cf723302d7..f04d5da553 100644 --- a/lib/util/got/stats.js +++ b/lib/util/got/stats.js @@ -26,12 +26,14 @@ module.exports.printStats = () => { logger.debug({ hostStats }, 'Host request stats (milliseconds)'); }; +// @ts-ignore module.exports.instance = got.create({ options: {}, handler: (options, next) => { const start = new Date(); const nextPromise = next(options); nextPromise.on('response', () => { + // @ts-ignore const elapsed = new Date() - start; stats[options.hostname] = stats[options.hostname] || []; stats[options.hostname].push(elapsed); diff --git a/lib/util/host-rules.ts b/lib/util/host-rules.ts index 5299e163a3..beb26180d7 100644 --- a/lib/util/host-rules.ts +++ b/lib/util/host-rules.ts @@ -6,10 +6,13 @@ export interface HostRule { hostType?: string; domainName?: string; hostName?: string; + json?: true; baseUrl?: string; token?: string; username?: string; password?: string; + + timeout?: number; } let hostRules: HostRule[] = []; @@ -29,7 +32,7 @@ export function add(params: HostRule) { export interface HostRuleSearch { hostType?: string; - url: string; + url?: string; } function isEmptyRule(rule: HostRule) { diff --git a/lib/workers/branch/commit.js b/lib/workers/branch/commit.js index 85aaffdf79..ae1e3fdad1 100644 --- a/lib/workers/branch/commit.js +++ b/lib/workers/branch/commit.js @@ -1,10 +1,9 @@ -const is = require('@sindresorhus/is'); +import is from '@sindresorhus/is'; + const minimatch = require('minimatch'); const { logger } = require('../../logger'); -module.exports = { - commitFilesToBranch, -}; +export { commitFilesToBranch }; async function commitFilesToBranch(config) { let updatedFiles = config.updatedPackageFiles.concat(config.updatedArtifacts); @@ -30,15 +29,13 @@ async function commitFilesToBranch(config) { logger.info('DRY-RUN: Would commit files to branch ' + config.branchName); } else { // API will know whether to create new branch or not - const res = await platform.commitFilesToBranch( + await platform.commitFilesToBranch( config.branchName, updatedFiles, config.commitMessage, config.baseBranch || undefined ); - if (res) { - logger.info({ branch: config.branchName }, `Branch ${res}`); - } + logger.info({ branch: config.branchName }, `files committed`); } } else { logger.debug(`No files to commit`); diff --git a/lib/workers/branch/get-updated.js b/lib/workers/branch/get-updated.js index 7265e2aa69..7e0cc6240c 100644 --- a/lib/workers/branch/get-updated.js +++ b/lib/workers/branch/get-updated.js @@ -1,10 +1,9 @@ -const is = require('@sindresorhus/is'); +import is from '@sindresorhus/is'; + const { logger } = require('../../logger'); const { get } = require('../../manager'); -module.exports = { - getUpdatedPackageFiles, -}; +export { getUpdatedPackageFiles }; async function getUpdatedPackageFiles(config) { logger.debug('manager.getUpdatedPackageFiles()'); @@ -83,6 +82,7 @@ async function getUpdatedPackageFiles(config) { ); if (is.nonEmptyArray(results)) { for (const res of results) { + // @ts-ignore const { file, artifactError } = res; if (file) { updatedArtifacts.push(file); @@ -110,6 +110,7 @@ async function getUpdatedPackageFiles(config) { ); if (is.nonEmptyArray(results)) { for (const res of results) { + // @ts-ignore const { file, artifactError } = res; if (file) { updatedArtifacts.push(file); diff --git a/lib/workers/branch/schedule.js b/lib/workers/branch/schedule.js index 5a1d37d67f..4ce8a67136 100644 --- a/lib/workers/branch/schedule.js +++ b/lib/workers/branch/schedule.js @@ -1,13 +1,10 @@ -const is = require('@sindresorhus/is'); +import is from '@sindresorhus/is'; + const later = require('later'); const moment = require('moment-timezone'); const { logger } = require('../../logger'); -module.exports = { - hasValidTimezone, - hasValidSchedule, - isScheduledNow, -}; +export { hasValidTimezone, hasValidSchedule, isScheduledNow }; const scheduleMappings = { 'every month': 'before 3am on the first day of the month', @@ -64,7 +61,7 @@ function hasValidSchedule(schedule) { // If any fail then we invalidate the whole thing return [false, message]; } - return [true]; + return [true, '']; } function isScheduledNow(config) { @@ -88,6 +85,7 @@ function isScheduledNow(config) { } const [validSchedule, errorMessage] = hasValidSchedule(configSchedule); if (!validSchedule) { + // @ts-ignore logger.warn(errorMessage); return true; } @@ -98,6 +96,7 @@ function isScheduledNow(config) { logger.debug({ timezone: config.timezone }, 'Found timezone'); const [validTimezone, error] = hasValidTimezone(config.timezone); if (!validTimezone) { + // @ts-ignore logger.warn(error); return true; } diff --git a/lib/workers/global/autodiscover.js b/lib/workers/global/autodiscover.js index 1eeb4d2537..a4405e8c04 100644 --- a/lib/workers/global/autodiscover.js +++ b/lib/workers/global/autodiscover.js @@ -1,10 +1,9 @@ -const is = require('@sindresorhus/is'); +import is from '@sindresorhus/is'; + const minimatch = require('minimatch'); const { logger } = require('../../logger'); -module.exports = { - autodiscoverRepositories, -}; +export { autodiscoverRepositories }; async function autodiscoverRepositories(config) { if (!config.autodiscover) { diff --git a/lib/workers/global/index.js b/lib/workers/global/index.js index 8c16d80249..a960078cf5 100644 --- a/lib/workers/global/index.js +++ b/lib/workers/global/index.js @@ -1,6 +1,7 @@ +import is from '@sindresorhus/is'; + const fs = require('fs-extra'); const os = require('os'); -const is = require('@sindresorhus/is'); const path = require('path'); const { logger, setMeta } = require('../../logger'); const configParser = require('../../config'); @@ -12,10 +13,7 @@ const { initPlatform } = require('../../platform'); const hostRules = require('../../util/host-rules'); const { printStats } = require('../../util/got/stats'); -module.exports = { - start, - getRepositoryConfig, -}; +export { start, getRepositoryConfig }; async function start() { try { @@ -82,6 +80,7 @@ async function start() { // istanbul ignore next function detectRenovateVersion() { try { + // @ts-ignore global.renovateVersion = require('../../../package.json').version; // eslint-disable-line global-require } catch (err) { logger.debug({ err }, 'Error getting renovate version'); diff --git a/lib/workers/pr/changelog/release-notes.js b/lib/workers/pr/changelog/release-notes.js index 2a85c223ba..d5f280eebc 100644 --- a/lib/workers/pr/changelog/release-notes.js +++ b/lib/workers/pr/changelog/release-notes.js @@ -1,14 +1,16 @@ -import ghGot from '../../../platform/github/gh-got-wrapper'; +import { api } from '../../../platform/github/gh-got-wrapper'; const changelogFilenameRegex = require('changelog-filename-regex'); const { linkify } = require('linkify-markdown'); const MarkdownIt = require('markdown-it'); const { logger } = require('../../../logger'); +const ghGot = api.get; + const markdown = new MarkdownIt('zero'); markdown.enable(['heading', 'lheading']); -module.exports = { +export { getReleaseList, massageBody, getReleaseNotesMd, diff --git a/lib/workers/pr/changelog/source-github.js b/lib/workers/pr/changelog/source-github.js index 214e478490..6b9fb35273 100644 --- a/lib/workers/pr/changelog/source-github.js +++ b/lib/workers/pr/changelog/source-github.js @@ -1,4 +1,4 @@ -import ghGot from '../../../platform/github/gh-got-wrapper'; +import { api } from '../../../platform/github/gh-got-wrapper'; const URL = require('url'); const { logger } = require('../../../logger'); @@ -6,9 +6,9 @@ const hostRules = require('../../../util/host-rules'); const versioning = require('../../../versioning'); const { addReleaseNotes } = require('./release-notes'); -module.exports = { - getChangeLogJSON, -}; +const ghGot = api.get; + +export { getChangeLogJSON }; async function getTags(endpoint, versionScheme, repository) { let url = endpoint @@ -72,6 +72,7 @@ async function getChangeLogJSON({ const githubApiBaseURL = sourceUrl.startsWith('https://github.com/') ? 'https://api.github.com/' : endpoint; // TODO FIX + // @ts-ignore const repository = pathname.slice(1).replace(/\/$/, ''); if (repository.split('/').length !== 2) { logger.info({ sourceUrl }, 'Invalid github URL found'); diff --git a/lib/workers/pr/pr-body.js b/lib/workers/pr/pr-body.js index c03bc44356..b400bb210c 100644 --- a/lib/workers/pr/pr-body.js +++ b/lib/workers/pr/pr-body.js @@ -1,4 +1,5 @@ -const is = require('@sindresorhus/is'); +import is from '@sindresorhus/is'; + const handlebars = require('handlebars'); const { logger } = require('../../logger'); const releaseNotesHbs = require('./changelog/hbs-template'); @@ -10,9 +11,7 @@ const { appName, appSlug } = require('../../config/app-strings'); handlebars.registerHelper('encodeURIComponent', encodeURIComponent); -module.exports = { - getPrBody, -}; +export { getPrBody }; function getTableDefinition(config) { const res = []; diff --git a/lib/workers/repository/finalise/validate.js b/lib/workers/repository/finalise/validate.js index dd26a2e313..ade9c898da 100644 --- a/lib/workers/repository/finalise/validate.js +++ b/lib/workers/repository/finalise/validate.js @@ -52,7 +52,10 @@ async function validatePrs(config) { if (file.endsWith('.json5')) { parsed = JSON5.parse(content); } else { - parsed = JSON.parse(content); + parsed = JSON.parse( + // @ts-ignore + content + ); } } catch (err) { validations.push({ diff --git a/lib/workers/repository/index.js b/lib/workers/repository/index.js index c206adc3f1..83e1c09419 100644 --- a/lib/workers/repository/index.js +++ b/lib/workers/repository/index.js @@ -1,7 +1,6 @@ import handleError from './error'; const fs = require('fs-extra'); - const { logger, setMeta } = require('../../logger'); const { initRepo } = require('./init'); const { ensureOnboardingPr } = require('./onboarding/pr'); @@ -10,9 +9,7 @@ const { processRepo } = require('./process'); const { finaliseRepo } = require('./finalise'); const { ensureMasterIssue } = require('./master-issue'); -module.exports = { - renovateRepository, -}; +export { renovateRepository }; // istanbul ignore next async function renovateRepository(repoConfig) { diff --git a/lib/workers/repository/init/config.js b/lib/workers/repository/init/config.js index 07ded19677..6b8ad59b14 100644 --- a/lib/workers/repository/init/config.js +++ b/lib/workers/repository/init/config.js @@ -20,7 +20,10 @@ async function mergeRenovateConfig(config) { for (const fileName of configFileNames) { if (fileName === 'package.json') { try { - const pJson = JSON.parse(await platform.getFile('package.json')); + const pJson = JSON.parse( + // @ts-ignore + await platform.getFile('package.json') + ); if (pJson.renovate) { logger.info('Using package.json for global renovate config'); return 'package.json'; @@ -43,7 +46,10 @@ async function mergeRenovateConfig(config) { let renovateJson; if (configFile === 'package.json') { // We already know it parses - renovateJson = JSON.parse(await platform.getFile('package.json')).renovate; + renovateJson = JSON.parse( + // @ts-ignore + await platform.getFile('package.json') + ).renovate; logger.info({ config: renovateJson }, 'package.json>renovate config'); } else { let renovateConfig = await platform.getFile(configFile); diff --git a/lib/workers/repository/init/index.js b/lib/workers/repository/init/index.js index 9870527218..245bcfc9a1 100644 --- a/lib/workers/repository/init/index.js +++ b/lib/workers/repository/init/index.js @@ -8,6 +8,7 @@ const { detectSemanticCommits } = require('./semantic'); const { detectVulnerabilityAlerts } = require('./vulnerability'); async function initRepo(input) { + // @ts-ignore global.repoCache = {}; let config = { ...input, diff --git a/lib/workers/repository/onboarding/branch/check.js b/lib/workers/repository/onboarding/branch/check.js index cd6e005828..1b37cacc7c 100644 --- a/lib/workers/repository/onboarding/branch/check.js +++ b/lib/workers/repository/onboarding/branch/check.js @@ -24,7 +24,10 @@ const configFileExists = async () => { const packageJsonConfigExists = async () => { try { - const pJson = JSON.parse(await platform.getFile('package.json')); + const pJson = JSON.parse( + // @ts-ignore + await platform.getFile('package.json') + ); if (pJson[appSlug]) { return true; } @@ -64,7 +67,7 @@ const isOnboarded = async config => { throw new Error('disabled'); } - const pr = await closedPrExists(config); + const pr = await closedPrExists(); if (!pr) { logger.debug('Found no closed onboarding PR'); return false; diff --git a/lib/workers/repository/onboarding/branch/config.js b/lib/workers/repository/onboarding/branch/config.js index 899d482fcc..ffde5255ae 100644 --- a/lib/workers/repository/onboarding/branch/config.js +++ b/lib/workers/repository/onboarding/branch/config.js @@ -1,21 +1,22 @@ -const is = require('@sindresorhus/is'); +import is from '@sindresorhus/is'; + const { logger } = require('../../../../logger'); const { appSlug } = require('../../../../config/app-strings'); const clone = input => JSON.parse(JSON.stringify(input)); -module.exports = { - getOnboardingConfig, -}; +export { getOnboardingConfig }; async function getOnboardingConfig(config) { const onboardingConfig = clone(config.onboardingConfig); try { logger.debug('Checking for greenkeeper config'); - const greenkeeperConfig = JSON.parse(await platform.getFile('package.json')) - .greenkeeper; + const greenkeeperConfig = JSON.parse( + // @ts-ignore + await platform.getFile('package.json') + ).greenkeeper; if (greenkeeperConfig) { onboardingConfig.statusCheckVerify = true; } diff --git a/lib/workers/repository/onboarding/branch/index.js b/lib/workers/repository/onboarding/branch/index.js index 1b0707422b..905ae8ab98 100644 --- a/lib/workers/repository/onboarding/branch/index.js +++ b/lib/workers/repository/onboarding/branch/index.js @@ -17,7 +17,7 @@ async function checkOnboardingBranch(config) { throw new Error('fork'); } logger.info('Repo is not onboarded'); - if (await onboardingPrExists(config)) { + if (await onboardingPrExists()) { logger.debug('Onboarding PR already exists'); await rebaseOnboardingBranch(config); } else { diff --git a/lib/workers/repository/onboarding/pr/index.js b/lib/workers/repository/onboarding/pr/index.js index d8aad93309..ade8d8edcd 100644 --- a/lib/workers/repository/onboarding/pr/index.js +++ b/lib/workers/repository/onboarding/pr/index.js @@ -1,4 +1,5 @@ -const is = require('@sindresorhus/is'); +import is from '@sindresorhus/is'; + const { logger } = require('../../../../logger'); const { getConfigDesc } = require('./config-description'); const { getErrors, getWarnings, getDepWarnings } = require('./errors-warnings'); @@ -136,6 +137,4 @@ If you need any further assistance then you can also [request help here](${urls. } } -module.exports = { - ensureOnboardingPr, -}; +export { ensureOnboardingPr }; diff --git a/lib/workers/repository/process/fetch.js b/lib/workers/repository/process/fetch.js index ca48317129..a503162027 100644 --- a/lib/workers/repository/process/fetch.js +++ b/lib/workers/repository/process/fetch.js @@ -1,4 +1,5 @@ -const is = require('@sindresorhus/is'); +import is from '@sindresorhus/is'; + const pAll = require('p-all'); const { logger } = require('../../../logger'); @@ -8,9 +9,7 @@ const { applyPackageRules } = require('../../../util/package-rules'); const { getManagerConfig } = require('../../../config'); const { lookupUpdates } = require('./lookup'); -module.exports = { - fetchUpdates, -}; +export { fetchUpdates }; async function fetchDepUpdates(packageFileConfig, dep) { /* eslint-disable no-param-reassign */ diff --git a/lib/workers/repository/process/lookup/filter.js b/lib/workers/repository/process/lookup/filter.js index 6cd3a42d9c..a5d3a5a68d 100644 --- a/lib/workers/repository/process/lookup/filter.js +++ b/lib/workers/repository/process/lookup/filter.js @@ -66,7 +66,11 @@ function filterVersions( 'Falling back to npm semver syntax for allowedVersions' ); filteredVersions = filteredVersions.filter(version => - semver.satisfies(semver.coerce(version), allowedVersions) + semver.satisfies( + // @ts-ignore + semver.coerce(version), + allowedVersions + ) ); } else { logger.warn( diff --git a/lib/workers/repository/process/lookup/index.js b/lib/workers/repository/process/lookup/index.js index 64ddd9d669..5cce99116f 100644 --- a/lib/workers/repository/process/lookup/index.js +++ b/lib/workers/repository/process/lookup/index.js @@ -31,6 +31,7 @@ async function lookupUpdates(config) { getNewValue, valueToVersion, } = versioning.get(config.versionScheme); + /** @type any */ const res = { updates: [], warnings: [] }; if (isValid(currentValue)) { const dependency = clone(await getPkgReleases(config)); diff --git a/lib/workers/repository/process/write.js b/lib/workers/repository/process/write.js index f72d032f74..5f24970a36 100644 --- a/lib/workers/repository/process/write.js +++ b/lib/workers/repository/process/write.js @@ -31,6 +31,7 @@ async function writeUpdates(config, packageFiles, allBranches) { packageFiles ); branch.res = res; + // @ts-ignore if (res === 'pr-closed' || res === 'automerged') { // Stop procesing other branches because base branch has been changed return res; diff --git a/lib/workers/repository/updates/branchify.js b/lib/workers/repository/updates/branchify.js index 0f916163ec..ffbe9a4f90 100644 --- a/lib/workers/repository/updates/branchify.js +++ b/lib/workers/repository/updates/branchify.js @@ -1,5 +1,6 @@ +import slugify from 'slugify'; + const handlebars = require('handlebars'); -const slugify = require('slugify'); const cleanGitRef = require('clean-git-ref').clean; const { logger, setMeta } = require('../../../logger'); @@ -132,6 +133,4 @@ function branchifyUpgrades(config, packageFiles) { }; } -module.exports = { - branchifyUpgrades, -}; +export { branchifyUpgrades }; diff --git a/lib/workers/repository/updates/flatten.js b/lib/workers/repository/updates/flatten.js index 3704d27834..94bc0e93b9 100644 --- a/lib/workers/repository/updates/flatten.js +++ b/lib/workers/repository/updates/flatten.js @@ -1,4 +1,5 @@ -const is = require('@sindresorhus/is'); +import is from '@sindresorhus/is'; + const { getManagerConfig, mergeChildConfig, @@ -7,9 +8,7 @@ const { const { applyPackageRules } = require('../../../util/package-rules'); const { get } = require('../../../manager'); -module.exports = { - flattenUpdates, -}; +export { flattenUpdates }; // Return only rules that contain an updateType function getUpdateTypeRules(packageRules) { diff --git a/lib/workers/repository/updates/generate.js b/lib/workers/repository/updates/generate.js index 794d7c2756..e7ad6acd47 100644 --- a/lib/workers/repository/updates/generate.js +++ b/lib/workers/repository/updates/generate.js @@ -21,6 +21,7 @@ function ifTypesGroup(depNames, hasGroupName, branchUpgrades) { function generateBranchConfig(branchUpgrades) { logger.debug(`generateBranchConfig(${branchUpgrades.length})`); logger.trace({ config: branchUpgrades }); + /** @type any */ let config = { upgrades: [], }; diff --git a/package.json b/package.json index c74a7b49d7..43b9d1cfdf 100644 --- a/package.json +++ b/package.json @@ -7,9 +7,10 @@ "renovate-config-validator": "bin/config-validator.js" }, "scripts": { - "build": "yarn clean && tsc -p tsconfig.app.json && yarn copy-static-files", + "build": "run-s clean compile copy-static-files", "clean": "rimraf dist", "clean-cache": "node bin/clean-cache.js", + "compile": "tsc -p tsconfig.app.json", "copy-static-files": "copyfiles -u 1 lib/**/*.json lib/**/*.py dist/", "create-json-schema": "node bin/create-json-schema.js && prettier --write \"renovate-schema.json\"", "debug": "babel-node --inspect-brk --extensions \".ts,.js\" -- lib/renovate.ts", @@ -18,15 +19,16 @@ "jest": "yarn clean-cache && cross-env NODE_ENV=test LOG_LEVEL=fatal jest", "jest-debug": "cross-env NODE_ENV=test LOG_LEVEL=fatal node --inspect-brk node_modules/jest/bin/jest.js", "jest-silent": "cross-env NODE_ENV=test yarn jest --reporters jest-silent-reporter", - "lint": "yarn eslint && yarn prettier", - "lint-fix": "yarn eslint-fix && yarn prettier-fix", + "lint": "run-s eslint prettier", + "lint-fix": "run-s eslint-fix prettier-fix", "prettier": "prettier --list-different \"**/*.{ts,js,json,md}\"", "prettier-fix": "prettier --write \"**/*.{ts,js,json,md}\"", "start": "babel-node --extensions \".ts,.js\" -- lib/renovate.ts", "test-dirty": "git diff --exit-code", "test-e2e": "npm pack && cd e2e && yarn install --no-lockfile && yarn test", "test-schema": "bash test/json-schema.sh", - "test": "yarn lint && yarn test-schema && yarn jest" + "test": "run-s lint test-schema type-check jest", + "type-check": "tsc --noEmit" }, "repository": { "type": "git", diff --git a/test/config/__snapshots__/validation.spec.js.snap b/test/config/__snapshots__/validation.spec.js.snap index 7e555c2276..2865dfe627 100644 --- a/test/config/__snapshots__/validation.spec.js.snap +++ b/test/config/__snapshots__/validation.spec.js.snap @@ -86,7 +86,7 @@ Array [ Object { "depName": "Configuration Error", "message": "packageRules: - You have included an unsupported manager in a package rule. Your list: foo. + You have included an unsupported manager in a package rule. Your list: foo. Supported managers are: (ansible, bazel, buildkite, bundler, cargo, circleci, composer, deps-edn, docker-compose, dockerfile, github-actions, gitlabci, gitlabci-include, gomod, gradle, gradle-wrapper, kubernetes, leiningen, maven, meteor, npm, nuget, nvm, pip_requirements, pip_setup, pipenv, poetry, pub, sbt, swift, terraform, travis, ruby-version, homebrew).", }, ] diff --git a/test/config/cli.spec.js b/test/config/cli.spec.js index ecc60376b5..5d329df90f 100644 --- a/test/config/cli.spec.js +++ b/test/config/cli.spec.js @@ -1,3 +1,4 @@ +/** @type any */ const cli = require('../../lib/config/cli.js'); const getArgv = require('./config/_fixtures/argv'); diff --git a/test/config/index.spec.js b/test/config/index.spec.js index dd31c9919c..5b86396fa4 100644 --- a/test/config/index.spec.js +++ b/test/config/index.spec.js @@ -1,7 +1,9 @@ const argv = require('./config/_fixtures/argv'); +/** @type any */ const defaultConfig = require('../../lib/config/defaults').getConfig(); +/** @type any */ const npm = require('../../lib/datasource/npm'); -const presetDefaults = require('./npm/_fixtures/renovate-config-default'); +const presetDefaults = require('./npm/_fixtures/renovate-config-default.json'); npm.getPkgReleases = jest.fn(() => ({ 'renovate-config': @@ -19,6 +21,7 @@ describe('config/index', () => { configParser = require('../../lib/config/index.js'); defaultArgv = argv(); jest.mock('delay'); + // @ts-ignore require('delay').mockImplementation(() => Promise.resolve()); }); it('supports token in env', async () => { diff --git a/test/config/presets.spec.js b/test/config/presets.spec.js index 46fb26f49f..d26792c668 100644 --- a/test/config/presets.spec.js +++ b/test/config/presets.spec.js @@ -1,10 +1,10 @@ const npm = require('../../lib/datasource/npm'); const presets = require('../../lib/config/presets'); -const presetDefaults = require('./npm/_fixtures/renovate-config-default'); -const presetPackages = require('./npm/_fixtures/renovate-config-packages'); -const presetGroup = require('./npm/_fixtures/renovate-config-group'); -const presetMonorepo = require('./npm/_fixtures/renovate-config-monorepo'); -const presetIkatyang = require('./npm/_fixtures/renovate-config-ikatyang'); +const presetDefaults = require('./npm/_fixtures/renovate-config-default.json'); +const presetPackages = require('./npm/_fixtures/renovate-config-packages.json'); +const presetGroup = require('./npm/_fixtures/renovate-config-group.json'); +const presetMonorepo = require('./npm/_fixtures/renovate-config-monorepo.json'); +const presetIkatyang = require('./npm/_fixtures/renovate-config-ikatyang.json'); npm.getPreset = jest.fn((dep, presetName) => { if (dep === 'renovate-config-default') { diff --git a/test/datasource/docker.spec.js b/test/datasource/docker.spec.js index 08fa8a62cc..e91566d11d 100644 --- a/test/datasource/docker.spec.js +++ b/test/datasource/docker.spec.js @@ -1,6 +1,7 @@ const got = require('../../lib/util/got'); const docker = require('../../lib/datasource/docker'); const { getPkgReleases } = require('../../lib/datasource'); +/** @type any */ const hostRules = require('../../lib/util/host-rules'); jest.mock('../../lib/util/got'); diff --git a/test/datasource/git-tags.spec.js b/test/datasource/git-tags.spec.js index 829875bf9b..9288c35b65 100644 --- a/test/datasource/git-tags.spec.js +++ b/test/datasource/git-tags.spec.js @@ -1,3 +1,4 @@ +/** @type any */ const simpleGit = require('simple-git/promise'); const { getPkgReleases } = require('../../lib/datasource/git-tags'); diff --git a/test/datasource/github.spec.js b/test/datasource/github.spec.js index 6e4871fd91..aa72db11d1 100644 --- a/test/datasource/github.spec.js +++ b/test/datasource/github.spec.js @@ -1,4 +1,4 @@ -import ghGot from '../../lib/platform/github/gh-got-wrapper'; +import { api } from '../../lib/platform/github/gh-got-wrapper'; const datasource = require('../../lib/datasource'); const github = require('../../lib/datasource/github'); @@ -9,6 +9,9 @@ jest.mock('../../lib/platform/github/gh-got-wrapper'); jest.mock('../../lib/util/got'); jest.mock('../../lib/util/host-rules'); +/** @type any */ +const ghGot = api.get; + describe('datasource/github', () => { beforeEach(() => global.renovateCache.rmAll()); describe('getDigest', () => { @@ -19,28 +22,19 @@ describe('datasource/github', () => { }); it('returns null if no token', async () => { ghGot.mockReturnValueOnce({ body: [] }); - const res = await github.getDigest( - { depName: 'some-dep', githubRepo: 'some/dep' }, - null - ); + const res = await github.getDigest({ lookupName: 'some/dep' }, null); expect(res).toBeNull(); }); it('returns digest', async () => { ghGot.mockReturnValueOnce({ body: [{ sha: 'abcdef' }] }); - const res = await github.getDigest( - { depName: 'some-dep', lookupName: 'some/dep' }, - null - ); + const res = await github.getDigest({ lookupName: 'some/dep' }, null); expect(res).toBe('abcdef'); }); it('returns commit digest', async () => { ghGot.mockReturnValueOnce({ body: { object: { type: 'commit', sha: 'ddd111' } }, }); - const res = await github.getDigest( - { depName: 'some-dep', lookupName: 'some/dep' }, - 'v1.2.0' - ); + const res = await github.getDigest({ lookupName: 'some/dep' }, 'v1.2.0'); expect(res).toBe('ddd111'); }); it('returns tagged commit digest', async () => { @@ -50,28 +44,19 @@ describe('datasource/github', () => { ghGot.mockReturnValueOnce({ body: { object: { type: 'commit', sha: 'ddd111' } }, }); - const res = await github.getDigest( - { depName: 'some-dep', lookupName: 'some/dep' }, - 'v1.2.0' - ); + const res = await github.getDigest({ lookupName: 'some/dep' }, 'v1.2.0'); expect(res).toBe('ddd111'); }); it('warns if unknown ref', async () => { ghGot.mockReturnValueOnce({ body: { object: { sha: 'ddd111' } }, }); - const res = await github.getDigest( - { depName: 'some-dep', lookupName: 'some/dep' }, - 'v1.2.0' - ); + const res = await github.getDigest({ lookupName: 'some/dep' }, 'v1.2.0'); expect(res).toBeNull(); }); it('returns null for missed tagged digest', async () => { ghGot.mockReturnValueOnce({}); - const res = await github.getDigest( - { depName: 'some-dep', lookupName: 'some/dep' }, - 'v1.2.0' - ); + const res = await github.getDigest({ lookupName: 'some/dep' }, 'v1.2.0'); expect(res).toBeNull(); }); }); @@ -97,6 +82,7 @@ describe('datasource/github', () => { await expect(github.getPreset('some/repo')).rejects.toThrow(); }); it('should return default.json', async () => { + // @ts-ignore hostRules.find.mockReturnValueOnce({ token: 'abc' }); got.mockImplementationOnce(() => ({ body: { @@ -107,6 +93,7 @@ describe('datasource/github', () => { expect(content).toEqual({ foo: 'bar' }); }); it('should return custom.json', async () => { + // @ts-ignore hostRules.find.mockReturnValueOnce({ token: 'abc' }); got.mockImplementationOnce(() => ({ body: { @@ -134,7 +121,7 @@ describe('datasource/github', () => { ghGot.mockReturnValueOnce({ headers: {}, body }); const res = await datasource.getPkgReleases({ datasource: 'github', - depName: 'some/dep', + lookupName: 'some/dep', lookupType: 'releases', }); expect(res).toMatchSnapshot(); @@ -148,7 +135,7 @@ describe('datasource/github', () => { ghGot.mockReturnValueOnce({ headers: {}, body }); const res = await datasource.getPkgReleases({ datasource: 'github', - depName: 'some/dep2', + lookupName: 'some/dep2', }); expect(res).toMatchSnapshot(); expect(res.releases).toHaveLength(2); diff --git a/test/datasource/gitlab.spec.js b/test/datasource/gitlab.spec.js index 0734e45239..7b7c26dcf1 100644 --- a/test/datasource/gitlab.spec.js +++ b/test/datasource/gitlab.spec.js @@ -1,5 +1,6 @@ const datasource = require('../../lib/datasource'); const gitlab = require('../../lib/datasource/gitlab'); +/** @type any */ const glGot = require('../../lib/platform/gitlab/gl-got-wrapper').api.get; jest.mock('../../lib/platform/gitlab/gl-got-wrapper'); diff --git a/test/datasource/go.spec.js b/test/datasource/go.spec.js index 8684abaaa6..94795d7236 100644 --- a/test/datasource/go.spec.js +++ b/test/datasource/go.spec.js @@ -1,4 +1,5 @@ const got = require('../../lib/util/got'); +/** @type any */ const github = require('../../lib/datasource/github'); const go = require('../../lib/datasource/go'); diff --git a/test/datasource/gradle-version.spec.js b/test/datasource/gradle-version.spec.js index 35e927fb20..6719d097e6 100644 --- a/test/datasource/gradle-version.spec.js +++ b/test/datasource/gradle-version.spec.js @@ -4,6 +4,7 @@ const datasource = require('../../lib/datasource'); jest.mock('../../lib/util/got'); +/** @type any */ const allResponse = fs.readFileSync( 'test/datasource/gradle-wrapper/_fixtures/all.json' ); diff --git a/test/datasource/hex.spec.js b/test/datasource/hex.spec.js index 918c23197c..7559bb2604 100644 --- a/test/datasource/hex.spec.js +++ b/test/datasource/hex.spec.js @@ -1,5 +1,6 @@ const fs = require('fs'); const got = require('../../lib/util/got'); +/** @type any */ const hostRules = require('../../lib/util/host-rules'); const { getPkgReleases } = require('../../lib/datasource/hex'); @@ -49,7 +50,7 @@ describe('datasource/hex', () => { got.mockImplementationOnce(() => { throw new Error(); }); - expect(await getPkgReleases('some_package')).toBeNull(); + expect(await getPkgReleases({ lookupName: 'some_package' })).toBeNull(); }); it('returns null with wrong auth token', async () => { hostRules.find.mockReturnValueOnce({ token: 'this_simple_token' }); diff --git a/test/datasource/index.spec.js b/test/datasource/index.spec.js index 56d5e8b6ca..a3cf872d54 100644 --- a/test/datasource/index.spec.js +++ b/test/datasource/index.spec.js @@ -1,4 +1,5 @@ const datasource = require('../../lib/datasource'); +/** @type any */ const npmDatasource = require('../../lib/datasource/npm'); jest.mock('../../lib/datasource/docker'); diff --git a/test/datasource/packagist.spec.js b/test/datasource/packagist.spec.js index 57000b53ce..8fc2922b6b 100644 --- a/test/datasource/packagist.spec.js +++ b/test/datasource/packagist.spec.js @@ -6,12 +6,15 @@ const hostRules = require('../../lib/util/host-rules'); jest.mock('../../lib/util/got'); jest.mock('../../lib/util/host-rules'); +/** @type any */ const includesJson = fs.readFileSync( 'test/datasource/packagist/_fixtures/includes.json' ); +/** @type any */ const beytJson = fs.readFileSync( 'test/datasource/packagist/_fixtures/1beyt.json' ); +/** @type any */ const mailchimpJson = fs.readFileSync( 'test/datasource/packagist/_fixtures/mailchimp-api.json' ); diff --git a/test/datasource/pypi.spec.js b/test/datasource/pypi.spec.js index 246037df0f..dbb8f1e664 100644 --- a/test/datasource/pypi.spec.js +++ b/test/datasource/pypi.spec.js @@ -4,6 +4,7 @@ const datasource = require('../../lib/datasource'); jest.mock('../../lib/util/got'); +/** @type any */ const res1 = fs.readFileSync( 'test/datasource/pypi/_fixtures/azure-cli-monitor.json' ); diff --git a/test/datasource/rubygems/index.spec.js b/test/datasource/rubygems/index.spec.js index cbe9db9f86..9e61afc139 100644 --- a/test/datasource/rubygems/index.spec.js +++ b/test/datasource/rubygems/index.spec.js @@ -34,7 +34,7 @@ describe('datasource/rubygems', () => { }; beforeEach(() => { - process.env.RENOVATE_SKIP_CACHE = true; + process.env.RENOVATE_SKIP_CACHE = 'true'; jest.resetAllMocks(); }); diff --git a/test/datasource/rubygems/retriable.spec.js b/test/datasource/rubygems/retriable.spec.js index c078415c40..27cc770a8f 100644 --- a/test/datasource/rubygems/retriable.spec.js +++ b/test/datasource/rubygems/retriable.spec.js @@ -4,7 +4,7 @@ describe('datasource/rubygems/retriable', () => { const { RENOVATE_RUBYGEMS_RETRY_DELAY_STEP } = process.env; beforeEach(() => { - process.env.RENOVATE_RUBYGEMS_RETRY_DELAY_STEP = 1; + process.env.RENOVATE_RUBYGEMS_RETRY_DELAY_STEP = '1'; }); it('returns 0 when numberOfRetries equals 0', () => { diff --git a/test/datasource/terraform.spec.js b/test/datasource/terraform.spec.js index 095f0ff704..247cd121b7 100644 --- a/test/datasource/terraform.spec.js +++ b/test/datasource/terraform.spec.js @@ -3,7 +3,7 @@ const got = require('../../lib/util/got'); const datasource = require('../../lib/datasource'); jest.mock('../../lib/util/got'); - +/** @type any */ const consulData = fs.readFileSync( 'test/datasource/terraform/_fixtures/registry-consul.json' ); diff --git a/test/logger/err-serializer.spec.js b/test/logger/err-serializer.spec.js index 03d9762e1b..e74c8b5f9b 100644 --- a/test/logger/err-serializer.spec.js +++ b/test/logger/err-serializer.spec.js @@ -1,4 +1,4 @@ -const configSerializer = require('../../lib/logger/err-serializer'); +import configSerializer from '../../lib/logger/err-serializer'; describe('logger/err-serializer', () => { it('expands errors', () => { diff --git a/test/manager/ansible/extract.spec.js b/test/manager/ansible/extract.spec.js index 9662bff5b1..4683256ded 100644 --- a/test/manager/ansible/extract.spec.js +++ b/test/manager/ansible/extract.spec.js @@ -12,20 +12,16 @@ const yamlFile2 = fs.readFileSync( describe('lib/manager/ansible/extract', () => { describe('extractPackageFile()', () => { - let config; - beforeEach(() => { - config = {}; - }); it('returns null for empty', () => { - expect(extractPackageFile('nothing here', config)).toBeNull(); + expect(extractPackageFile('nothing here')).toBeNull(); }); it('extracts multiple image lines from docker_container', () => { - const res = extractPackageFile(yamlFile1, config); + const res = extractPackageFile(yamlFile1); expect(res.deps).toMatchSnapshot(); expect(res.deps).toHaveLength(9); }); it('extracts multiple image lines from docker_service', () => { - const res = extractPackageFile(yamlFile2, config); + const res = extractPackageFile(yamlFile2); expect(res.deps).toMatchSnapshot(); expect(res.deps).toHaveLength(4); }); diff --git a/test/manager/bazel/extract.spec.js b/test/manager/bazel/extract.spec.js index 9cc45b860e..8d529f1222 100644 --- a/test/manager/bazel/extract.spec.js +++ b/test/manager/bazel/extract.spec.js @@ -13,24 +13,20 @@ const fileWithBzlExtension = fs.readFileSync( describe('lib/manager/bazel/extract', () => { describe('extractPackageFile()', () => { - let config; - beforeEach(() => { - config = {}; - }); it('returns empty if fails to parse', () => { - const res = extractPackageFile('blahhhhh:foo:@what\n', config); + const res = extractPackageFile('blahhhhh:foo:@what\n'); expect(res).toBeNull(); }); it('returns empty if cannot parse dependency', () => { - const res = extractPackageFile('git_repository(\n nothing\n)\n', config); + const res = extractPackageFile('git_repository(\n nothing\n)\n'); expect(res).toBeNull(); }); it('extracts multiple types of dependencies', () => { - const res = extractPackageFile(workspaceFile, config); + const res = extractPackageFile(workspaceFile); expect(res.deps).toMatchSnapshot(); }); it('extracts dependencies from *.bzl files', () => { - const res = extractPackageFile(fileWithBzlExtension, config); + const res = extractPackageFile(fileWithBzlExtension); expect(res.deps).toMatchSnapshot(); }); @@ -44,8 +40,7 @@ describe('lib/manager/bazel/extract', () => { # v1.0.0-alpha31.cli-migrations 11/28 digest="sha256:a4e8d8c444ca04fe706649e82263c9f4c2a4229bc30d2a64561b5e1d20cc8548", tag="v1.0.0-alpha31.cli-migrations" - )`, - config + )` ); expect(res.deps).toMatchSnapshot(); }); @@ -59,8 +54,7 @@ go_repository( remote = "https://github.com/test/uuid-fork", commit = "dec09d789f3dba190787f8b4454c7d3c936fed9e" ) - `, - config + ` ); expect(successStory.deps[0].datasource).toBe('go'); expect(successStory.deps[0].lookupName).toBe('github.com/test/uuid-fork'); @@ -73,8 +67,7 @@ go_repository( remote = "https://github.com/test/uuid.git#branch", commit = "dec09d789f3dba190787f8b4454c7d3c936fed9e" ) - `, - config + ` ); expect(badStory.deps[0].skipReason).toBe('unsupported-remote'); @@ -86,8 +79,7 @@ go_repository( remote = "https://github.mycompany.com/test/uuid", commit = "dec09d789f3dba190787f8b4454c7d3c936fed9e" ) - `, - config + ` ); expect(gheStory.deps[0].skipReason).toBe('unsupported-remote'); @@ -99,8 +91,7 @@ go_repository( remote = "https://gitlab.com/test/uuid", commit = "dec09d789f3dba190787f8b4454c7d3c936fed9e" ) - `, - config + ` ); expect(gitlabRemote.deps[0].skipReason).toBe('unsupported-remote'); }); diff --git a/test/manager/bazel/update.spec.js b/test/manager/bazel/update.spec.js index 6729d866a6..d2719ef580 100644 --- a/test/manager/bazel/update.spec.js +++ b/test/manager/bazel/update.spec.js @@ -1,4 +1,5 @@ const fs = require('fs'); +/** @type any */ const hasha = require('hasha'); const path = require('path'); const bazelfile = require('../../../lib/manager/bazel/update'); diff --git a/test/manager/buildkite/extract.spec.js b/test/manager/buildkite/extract.spec.js index 50c00bd43a..0a06072b78 100644 --- a/test/manager/buildkite/extract.spec.js +++ b/test/manager/buildkite/extract.spec.js @@ -22,30 +22,26 @@ const pipeline4 = fs.readFileSync( describe('lib/manager/buildkite/extract', () => { describe('extractPackageFile()', () => { - let config; - beforeEach(() => { - config = {}; - }); it('returns null for empty', () => { - expect(extractPackageFile('nothing here', config)).toBeNull(); + expect(extractPackageFile('nothing here')).toBeNull(); }); it('extracts simple single plugin', () => { - const res = extractPackageFile(pipeline1, config).deps; + const res = extractPackageFile(pipeline1).deps; expect(res).toMatchSnapshot(); expect(res).toHaveLength(1); }); it('extracts multiple plugins in same file', () => { - const res = extractPackageFile(pipeline2, config).deps; + const res = extractPackageFile(pipeline2).deps; expect(res).toMatchSnapshot(); expect(res).toHaveLength(2); }); it('adds skipReason', () => { - const res = extractPackageFile(pipeline3, config).deps; + const res = extractPackageFile(pipeline3).deps; expect(res).toMatchSnapshot(); expect(res).toHaveLength(3); }); it('extracts arrays of plugins', () => { - const res = extractPackageFile(pipeline4, config).deps; + const res = extractPackageFile(pipeline4).deps; expect(res).toMatchSnapshot(); expect(res).toHaveLength(2); // TODO: should be 4 }); diff --git a/test/manager/bundler/extract.spec.js b/test/manager/bundler/extract.spec.js index 3007eef13a..220c6fcb02 100644 --- a/test/manager/bundler/extract.spec.js +++ b/test/manager/bundler/extract.spec.js @@ -1,6 +1,9 @@ const fs = require('fs'); const { extractPackageFile } = require('../../../lib/manager/bundler/extract'); +/** @type any */ +const platform = global.platform; + const railsGemfile = fs.readFileSync( 'test/manager/bundler/_fixtures/Gemfile.rails', 'utf8' diff --git a/test/manager/bundler/range.spec.js b/test/manager/bundler/range.spec.js index 9885a7d23f..2b69f36a7e 100644 --- a/test/manager/bundler/range.spec.js +++ b/test/manager/bundler/range.spec.js @@ -2,12 +2,8 @@ const { getRangeStrategy } = require('../../../lib/manager/bundler'); describe('lib/manager/bundler/range', () => { describe('getRangeStrategy()', () => { - let config; - beforeEach(() => { - config = {}; - }); it('always returns replace', () => { - expect(getRangeStrategy(config)).toEqual('replace'); + expect(getRangeStrategy()).toEqual('replace'); }); }); }); diff --git a/test/manager/cargo/artifacts.spec.js b/test/manager/cargo/artifacts.spec.js index ad8e1728b8..c6e7ce4472 100644 --- a/test/manager/cargo/artifacts.spec.js +++ b/test/manager/cargo/artifacts.spec.js @@ -1,10 +1,14 @@ jest.mock('fs-extra'); jest.mock('child-process-promise'); +/** @type any */ const fs = require('fs-extra'); const { exec } = require('child-process-promise'); const cargo = require('../../../lib/manager/cargo/artifacts'); +/** @type any */ +const platform = global.platform; + const config = { localDir: '/tmp/github/some/repo', }; diff --git a/test/manager/circleci/extract.spec.js b/test/manager/circleci/extract.spec.js index 5d327ca049..92a66b5784 100644 --- a/test/manager/circleci/extract.spec.js +++ b/test/manager/circleci/extract.spec.js @@ -12,20 +12,16 @@ const file2 = fs.readFileSync( describe('lib/manager/circleci/extract', () => { describe('extractPackageFile()', () => { - let config; - beforeEach(() => { - config = {}; - }); it('returns null for empty', () => { - expect(extractPackageFile('nothing here', config)).toBeNull(); + expect(extractPackageFile('nothing here')).toBeNull(); }); it('extracts multiple image lines', () => { - const res = extractPackageFile(file1, config); + const res = extractPackageFile(file1); expect(res.deps).toMatchSnapshot(); expect(res.deps).toHaveLength(4); }); it('extracts orbs too', () => { - const res = extractPackageFile(file2, config); + const res = extractPackageFile(file2); expect(res.deps).toMatchSnapshot(); // expect(res.deps).toHaveLength(4); }); diff --git a/test/manager/composer/artifacts.spec.js b/test/manager/composer/artifacts.spec.js index 5fbc84598f..a3e8a41936 100644 --- a/test/manager/composer/artifacts.spec.js +++ b/test/manager/composer/artifacts.spec.js @@ -2,11 +2,16 @@ jest.mock('fs-extra'); jest.mock('child-process-promise'); jest.mock('../../../lib/util/host-rules'); +/** @type any */ const fs = require('fs-extra'); const { exec } = require('child-process-promise'); const composer = require('../../../lib/manager/composer/artifacts'); +/** @type any */ const hostRules = require('../../../lib/util/host-rules'); +/** @type any */ +const platform = global.platform; + const config = { localDir: '/tmp/github/some/repo', cacheDir: '/tmp/renovate/cache', diff --git a/test/manager/composer/extract.spec.js b/test/manager/composer/extract.spec.js index 2a59097ca9..e8420dac96 100644 --- a/test/manager/composer/extract.spec.js +++ b/test/manager/composer/extract.spec.js @@ -1,6 +1,9 @@ const fs = require('fs'); const { extractPackageFile } = require('../../../lib/manager/composer/extract'); +/** @type any */ +const platform = global.platform; + const requirements1 = fs.readFileSync( 'test/manager/composer/_fixtures/composer1.json', 'utf8' diff --git a/test/manager/deps-edn/extract.spec.js b/test/manager/deps-edn/extract.spec.js index def76847f6..e5b1856ddb 100644 --- a/test/manager/deps-edn/extract.spec.js +++ b/test/manager/deps-edn/extract.spec.js @@ -10,6 +10,6 @@ const depsEdn = fs.readFileSync( describe('manager/deps-edn/extract', () => { it('extractPackageFile', () => { - expect(extractPackageFile(depsEdn, 'deps.edn')).toMatchSnapshot(); + expect(extractPackageFile(depsEdn)).toMatchSnapshot(); }); }); diff --git a/test/manager/deps-edn/update.spec.js b/test/manager/deps-edn/update.spec.js index 0e45c0f790..61ac28a57b 100644 --- a/test/manager/deps-edn/update.spec.js +++ b/test/manager/deps-edn/update.spec.js @@ -11,7 +11,7 @@ const depsEdn = fs.readFileSync( describe('manager/deps-edn/update', () => { it('updateDependency', () => { - const { deps } = extractPackageFile(depsEdn, 'deps.edn'); + const { deps } = extractPackageFile(depsEdn); const dep = deps.pop(); const upgrade = { ...dep, diff --git a/test/manager/docker-compose/extract.spec.js b/test/manager/docker-compose/extract.spec.js index c36878c1af..51bf755eca 100644 --- a/test/manager/docker-compose/extract.spec.js +++ b/test/manager/docker-compose/extract.spec.js @@ -10,15 +10,11 @@ const yamlFile = fs.readFileSync( describe('lib/manager/docker-compose/extract', () => { describe('extractPackageFile()', () => { - let config; - beforeEach(() => { - config = {}; - }); it('returns null for empty', () => { - expect(extractPackageFile('nothing here', config)).toBeNull(); + expect(extractPackageFile('nothing here')).toBeNull(); }); it('extracts multiple image lines', () => { - const res = extractPackageFile(yamlFile, config); + const res = extractPackageFile(yamlFile); expect(res.deps).toMatchSnapshot(); expect(res.deps).toHaveLength(8); }); diff --git a/test/manager/dockerfile/extract.spec.js b/test/manager/dockerfile/extract.spec.js index 5033414b69..19dec3b0fa 100644 --- a/test/manager/dockerfile/extract.spec.js +++ b/test/manager/dockerfile/extract.spec.js @@ -10,70 +10,57 @@ const d1 = fs.readFileSync( describe('lib/manager/dockerfile/extract', () => { describe('extractPackageFile()', () => { - let config; - beforeEach(() => { - config = {}; - }); it('handles no FROM', () => { - const res = extractPackageFile('no from!', config); + const res = extractPackageFile('no from!'); expect(res).toBeNull(); }); it('handles naked dep', () => { - const res = extractPackageFile('FROM node\n', config).deps; + const res = extractPackageFile('FROM node\n').deps; expect(res).toMatchSnapshot(); }); it('is case insensitive', () => { - const res = extractPackageFile('From node\n', config).deps; + const res = extractPackageFile('From node\n').deps; expect(res).toMatchSnapshot(); }); it('handles tag', () => { - const res = extractPackageFile('FROM node:8.9.0-alpine\n', config).deps; + const res = extractPackageFile('FROM node:8.9.0-alpine\n').deps; expect(res).toMatchSnapshot(); }); it('handles digest', () => { const res = extractPackageFile( - 'FROM node@sha256:eb85fc5b1198f5e1ec025ea07586bdbbf397e7d82df66c90d7511f533517e063\n', - config + 'FROM node@sha256:eb85fc5b1198f5e1ec025ea07586bdbbf397e7d82df66c90d7511f533517e063\n' ).deps; expect(res).toMatchSnapshot(); }); it('handles tag and digest', () => { const res = extractPackageFile( - 'FROM node:8.9.0@sha256:eb85fc5b1198f5e1ec025ea07586bdbbf397e7d82df66c90d7511f533517e063\n', - config + 'FROM node:8.9.0@sha256:eb85fc5b1198f5e1ec025ea07586bdbbf397e7d82df66c90d7511f533517e063\n' ).deps; expect(res).toMatchSnapshot(); }); it('handles from as', () => { - const res = extractPackageFile('FROM node:8.9.0-alpine as base\n', config) - .deps; + const res = extractPackageFile('FROM node:8.9.0-alpine as base\n').deps; expect(res).toMatchSnapshot(); }); it('handles comments', () => { - const res = extractPackageFile( - '# some comment\n# another\n\nFROM node\n', - config - ).deps; + const res = extractPackageFile('# some comment\n# another\n\nFROM node\n') + .deps; expect(res).toMatchSnapshot(); }); it('handles custom hosts', () => { - const res = extractPackageFile( - 'FROM registry2.something.info/node:8\n', - config - ).deps; + const res = extractPackageFile('FROM registry2.something.info/node:8\n') + .deps; expect(res).toMatchSnapshot(); }); it('handles custom hosts and suffix', () => { const res = extractPackageFile( - 'FROM registry2.something.info/node:8-alpine\n', - config + 'FROM registry2.something.info/node:8-alpine\n' ).deps; expect(res).toMatchSnapshot(); }); it('handles custom hosts with port', () => { const res = extractPackageFile( - 'FROM registry2.something.info:5005/node:8\n', - config + 'FROM registry2.something.info:5005/node:8\n' ).deps; expect(res).toMatchSnapshot(); expect(res[0].depName).toEqual('registry2.something.info:5005/node'); @@ -81,20 +68,18 @@ describe('lib/manager/dockerfile/extract', () => { }); it('handles custom hosts with port without tag', () => { const res = extractPackageFile( - 'FROM registry2.something.info:5005/node\n', - config + 'FROM registry2.something.info:5005/node\n' ).deps; expect(res).toMatchSnapshot(); expect(res[0].depName).toEqual('registry2.something.info:5005/node'); }); it('handles namespaced images', () => { - const res = extractPackageFile('FROM mynamespace/node:8\n', config).deps; + const res = extractPackageFile('FROM mynamespace/node:8\n').deps; expect(res).toMatchSnapshot(); }); it('handles custom hosts with namespace', () => { const res = extractPackageFile( - 'FROM registry2.something.info/someaccount/node:8\n', - config + 'FROM registry2.something.info/someaccount/node:8\n' ).deps; expect(res).toMatchSnapshot(); }); @@ -106,51 +91,45 @@ describe('lib/manager/dockerfile/extract', () => { }); it('extracts multiple FROM tags', () => { const res = extractPackageFile( - 'FROM node:6.12.3 as frontend\n\n# comment\nENV foo=bar\nFROM python:3.6-slim\n', - config + 'FROM node:6.12.3 as frontend\n\n# comment\nENV foo=bar\nFROM python:3.6-slim\n' ).deps; expect(res).toMatchSnapshot(); expect(res).toHaveLength(2); }); it('skips scratchs', () => { - const res = extractPackageFile('FROM scratch\nADD foo\n', config); + const res = extractPackageFile('FROM scratch\nADD foo\n'); expect(res).toBeNull(); }); it('skips named multistage FROM tags', () => { const res = extractPackageFile( - 'FROM node:6.12.3 as frontend\n\n# comment\nENV foo=bar\nFROM frontend\n', - config + 'FROM node:6.12.3 as frontend\n\n# comment\nENV foo=bar\nFROM frontend\n' ).deps; expect(res).toMatchSnapshot(); expect(res).toHaveLength(1); }); it('handles COPY --from', () => { const res = extractPackageFile( - 'FROM scratch\nCOPY --from=gcr.io/k8s-skaffold/skaffold:v0.11.0 /usr/bin/skaffold /usr/bin/skaffold\n', - config + 'FROM scratch\nCOPY --from=gcr.io/k8s-skaffold/skaffold:v0.11.0 /usr/bin/skaffold /usr/bin/skaffold\n' ).deps; expect(res).toMatchSnapshot(); }); it('skips named multistage COPY --from tags', () => { const res = extractPackageFile( - 'FROM node:6.12.3 as frontend\n\n# comment\nENV foo=bar\nCOPY --from=frontend /usr/bin/node /usr/bin/node\n', - config + 'FROM node:6.12.3 as frontend\n\n# comment\nENV foo=bar\nCOPY --from=frontend /usr/bin/node /usr/bin/node\n' ).deps; expect(res).toMatchSnapshot(); expect(res).toHaveLength(1); }); it('skips index reference COPY --from tags', () => { const res = extractPackageFile( - 'FROM node:6.12.3 as frontend\n\n# comment\nENV foo=bar\nCOPY --from=0 /usr/bin/node /usr/bin/node\n', - config + 'FROM node:6.12.3 as frontend\n\n# comment\nENV foo=bar\nCOPY --from=0 /usr/bin/node /usr/bin/node\n' ).deps; expect(res).toMatchSnapshot(); expect(res).toHaveLength(1); }); it('detects ["stage"] and ["final"] deps of docker multi-stage build.', () => { const res = extractPackageFile( - 'FROM node:8.15.1-alpine as skippedfrom\nFROM golang:1.7.3 as builder\n\n# comment\nWORKDIR /go/src/github.com/alexellis/href-counter/\nRUN go get -d -v golang.org/x/net/html \nCOPY app.go .\nRUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app .\n\nFROM alpine:latest \nRUN apk --no-cache add ca-certificates\nWORKDIR /root/\nCOPY --from=builder /go/src/github.com/alexellis/href-counter/app .\nCMD ["./app"]\n', - config + 'FROM node:8.15.1-alpine as skippedfrom\nFROM golang:1.7.3 as builder\n\n# comment\nWORKDIR /go/src/github.com/alexellis/href-counter/\nRUN go get -d -v golang.org/x/net/html \nCOPY app.go .\nRUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app .\n\nFROM alpine:latest \nRUN apk --no-cache add ca-certificates\nWORKDIR /root/\nCOPY --from=builder /go/src/github.com/alexellis/href-counter/app .\nCMD ["./app"]\n' ).deps; expect(res).toMatchSnapshot(); const passed = [ @@ -163,12 +142,12 @@ describe('lib/manager/dockerfile/extract', () => { expect(passed).toBe(true); }); it('extracts images on adjacent lines', () => { - const res = extractPackageFile(d1, config).deps; + const res = extractPackageFile(d1).deps; expect(res).toMatchSnapshot(); expect(res).toHaveLength(2); }); it('handles calico/node', () => { - const res = extractPackageFile('FROM calico/node\n', config).deps; + const res = extractPackageFile('FROM calico/node\n').deps; expect(res).toMatchSnapshot(); }); }); diff --git a/test/manager/github-actions/extract.spec.js b/test/manager/github-actions/extract.spec.js index 5924fe185b..c5fa9d75fd 100644 --- a/test/manager/github-actions/extract.spec.js +++ b/test/manager/github-actions/extract.spec.js @@ -10,15 +10,11 @@ const workflow1 = fs.readFileSync( describe('lib/manager/github-actions/extract', () => { describe('extractPackageFile()', () => { - let config; - beforeEach(() => { - config = {}; - }); it('returns null for empty', () => { - expect(extractPackageFile('nothing here', config)).toBeNull(); + expect(extractPackageFile('nothing here')).toBeNull(); }); it('extracts multiple image lines from docker_container', () => { - const res = extractPackageFile(workflow1, config); + const res = extractPackageFile(workflow1); expect(res.deps).toMatchSnapshot(); expect(res.deps).toHaveLength(2); }); diff --git a/test/manager/gitlabci/extract.spec.js b/test/manager/gitlabci/extract.spec.js index 7106a85614..b86f618fce 100644 --- a/test/manager/gitlabci/extract.spec.js +++ b/test/manager/gitlabci/extract.spec.js @@ -8,15 +8,11 @@ const yamlFile = fs.readFileSync( describe('lib/manager/gitlabci/extract', () => { describe('extractPackageFile()', () => { - let config; - beforeEach(() => { - config = {}; - }); it('returns null for empty', () => { - expect(extractPackageFile('nothing here', config)).toBeNull(); + expect(extractPackageFile('nothing here')).toBeNull(); }); it('extracts multiple image lines', () => { - const res = extractPackageFile(yamlFile, config); + const res = extractPackageFile(yamlFile); expect(res.deps).toMatchSnapshot(); expect(res.deps).toHaveLength(6); }); diff --git a/test/manager/gomod/artifacts.spec.js b/test/manager/gomod/artifacts.spec.js index 35115d7eb5..5123aa5593 100644 --- a/test/manager/gomod/artifacts.spec.js +++ b/test/manager/gomod/artifacts.spec.js @@ -2,11 +2,16 @@ jest.mock('fs-extra'); jest.mock('child-process-promise'); jest.mock('../../../lib/util/host-rules'); +/** @type any */ const fs = require('fs-extra'); const { exec } = require('child-process-promise'); const gomod = require('../../../lib/manager/gomod/artifacts'); +/** @type any */ const hostRules = require('../../../lib/util/host-rules'); +/** @type any */ +const platform = global.platform; + const gomod1 = `module github.com/renovate-tests/gomod1 require github.com/pkg/errors v0.7.0 diff --git a/test/manager/gomod/extract.spec.js b/test/manager/gomod/extract.spec.js index 5cf42852e4..c4e47b93cd 100644 --- a/test/manager/gomod/extract.spec.js +++ b/test/manager/gomod/extract.spec.js @@ -6,21 +6,17 @@ const gomod2 = fs.readFileSync('test/manager/gomod/_fixtures/2/go.mod', 'utf8'); describe('lib/manager/gomod/extract', () => { describe('extractPackageFile()', () => { - let config; - beforeEach(() => { - config = {}; - }); it('returns null for empty', () => { - expect(extractPackageFile('nothing here', config)).toBeNull(); + expect(extractPackageFile('nothing here')).toBeNull(); }); it('extracts single-line requires', () => { - const res = extractPackageFile(gomod1, config).deps; + const res = extractPackageFile(gomod1).deps; expect(res).toMatchSnapshot(); expect(res).toHaveLength(7); expect(res.filter(e => e.skipReason)).toHaveLength(1); }); it('extracts multi-line requires', () => { - const res = extractPackageFile(gomod2, config).deps; + const res = extractPackageFile(gomod2).deps; expect(res).toMatchSnapshot(); expect(res).toHaveLength(58); expect(res.filter(e => e.skipReason)).toHaveLength(0); diff --git a/test/manager/gradle-wrapper/extract.spec.js b/test/manager/gradle-wrapper/extract.spec.js index 2674def6b4..08a4af42b2 100644 --- a/test/manager/gradle-wrapper/extract.spec.js +++ b/test/manager/gradle-wrapper/extract.spec.js @@ -14,23 +14,17 @@ const propertiesFile2 = fs.readFileSync( describe('lib/manager/gradle-wrapper/extract', () => { describe('extractPackageFile()', () => { - let config; - - beforeEach(() => { - config = {}; - }); - it('returns null for empty', () => { - expect(extractPackageFile('nothing here', config)).toBeNull(); + expect(extractPackageFile('nothing here')).toBeNull(); }); it('extracts bin version line', () => { - const res = extractPackageFile(propertiesFile1, config); + const res = extractPackageFile(propertiesFile1); expect(res.deps).toMatchSnapshot(); }); it('extracts all version line', () => { - const res = extractPackageFile(propertiesFile2, config); + const res = extractPackageFile(propertiesFile2); expect(res.deps).toMatchSnapshot(); }); }); diff --git a/test/manager/gradle/index.spec.js b/test/manager/gradle/index.spec.js index 6575cb2e48..bde2e7ad59 100644 --- a/test/manager/gradle/index.spec.js +++ b/test/manager/gradle/index.spec.js @@ -2,12 +2,16 @@ jest.mock('fs-extra'); jest.mock('child-process-promise'); const { toUnix } = require('upath'); +/** @type any */ const fs = require('fs-extra'); const fsReal = require('fs'); const { exec } = require('child-process-promise'); const manager = require('../../../lib/manager/gradle/index'); +/** @type any */ +const platform = global.platform; + const config = { localDir: 'localDir', gradle: { diff --git a/test/manager/kubernetes/extract.spec.js b/test/manager/kubernetes/extract.spec.js index 238209381c..2a51d6ff42 100644 --- a/test/manager/kubernetes/extract.spec.js +++ b/test/manager/kubernetes/extract.spec.js @@ -25,27 +25,21 @@ const otherYamlFile = fs.readFileSync( describe('lib/manager/kubernetes/extract', () => { describe('extractPackageFile()', () => { - let config; - beforeEach(() => { - config = { - fileMatch: ['(^|/)[^/]*\\.yaml$'], - }; - }); it('returns null for empty', () => { - expect(extractPackageFile(kubernetesConfigMapFile, config)).toBeNull(); + expect(extractPackageFile(kubernetesConfigMapFile)).toBeNull(); }); it('extracts multiple image lines', () => { - const res = extractPackageFile(kubernetesImagesFile, config); + const res = extractPackageFile(kubernetesImagesFile); expect(res.deps).toMatchSnapshot(); expect(res.deps).toHaveLength(2); }); it('extracts image line in a YAML array', () => { - const res = extractPackageFile(kubernetesArraySyntaxFile, config); + const res = extractPackageFile(kubernetesArraySyntaxFile); expect(res.deps).toMatchSnapshot(); expect(res.deps).toHaveLength(1); }); it('ignores non-Kubernetes YAML files', () => { - expect(extractPackageFile(otherYamlFile, config)).toBeNull(); + expect(extractPackageFile(otherYamlFile)).toBeNull(); }); }); }); diff --git a/test/manager/leiningen/extract.spec.js b/test/manager/leiningen/extract.spec.js index 09e6ce7ae9..378f21f8e1 100644 --- a/test/manager/leiningen/extract.spec.js +++ b/test/manager/leiningen/extract.spec.js @@ -50,6 +50,6 @@ describe('manager/clojure/extract', () => { ]); }); it('extractPackageFile', () => { - expect(extractPackageFile(leinProjectClj, 'project.clj')).toMatchSnapshot(); + expect(extractPackageFile(leinProjectClj)).toMatchSnapshot(); }); }); diff --git a/test/manager/leiningen/update.spec.js b/test/manager/leiningen/update.spec.js index 6106330a7e..ea9e752222 100644 --- a/test/manager/leiningen/update.spec.js +++ b/test/manager/leiningen/update.spec.js @@ -13,7 +13,7 @@ const leinProjectClj = fs.readFileSync( describe('manager/leiningen/update', () => { it('updatePackageFile', () => { - const { deps } = extractPackageFile(leinProjectClj, 'project.clj'); + const { deps } = extractPackageFile(leinProjectClj); const dep = deps.pop(); const upgrade = { ...dep, diff --git a/test/manager/maven/index.spec.js b/test/manager/maven/index.spec.js index a52c4251f7..366f507f83 100644 --- a/test/manager/maven/index.spec.js +++ b/test/manager/maven/index.spec.js @@ -8,6 +8,9 @@ const { updateDependency, } = require('../../../lib/manager/maven/index'); +/** @type any */ +const platform = global.platform; + const pomContent = fs.readFileSync( 'test/manager/maven/_fixtures/simple.pom.xml', 'utf8' diff --git a/test/manager/meteor/__snapshots__/update.spec.js.snap b/test/manager/meteor/__snapshots__/update.spec.js.snap index ae350256a1..58abe7ace1 100644 --- a/test/manager/meteor/__snapshots__/update.spec.js.snap +++ b/test/manager/meteor/__snapshots__/update.spec.js.snap @@ -1,7 +1,8 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`workers/branch/package-js .updateDependency(fileContent, depName, currentValue, newValue) handles alternative quotes and white space 1`] = ` -"Package.describe({ +"// @ts-nocheck +Package.describe({ \\"name\\": \\"steffo:meteor-accounts-saml\\", \\"summary\\": \\"SAML Login (SP) for Meteor. Works with OpenAM, OpenIDP and provides Single Logout.\\", \\"version\\": \\"0.0.1\\", @@ -31,7 +32,8 @@ Npm.depends({ `; exports[`workers/branch/package-js .updateDependency(fileContent, depName, currentValue, newValue) replaces a dependency value 1`] = ` -"Package.describe({ +"// @ts-nocheck +Package.describe({ 'name': 'steffo:meteor-accounts-saml', 'summary': 'SAML Login (SP) for Meteor. Works with OpenAM, OpenIDP and provides Single Logout.', 'version': '0.0.1', diff --git a/test/manager/meteor/_fixtures/package-1.js b/test/manager/meteor/_fixtures/package-1.js index 65f5015c78..7a447bad3e 100644 --- a/test/manager/meteor/_fixtures/package-1.js +++ b/test/manager/meteor/_fixtures/package-1.js @@ -1,3 +1,4 @@ +// @ts-nocheck Package.describe({ 'name': 'steffo:meteor-accounts-saml', 'summary': 'SAML Login (SP) for Meteor. Works with OpenAM, OpenIDP and provides Single Logout.', diff --git a/test/manager/meteor/_fixtures/package-2.js b/test/manager/meteor/_fixtures/package-2.js index 182fa7c9a0..631ab31db1 100644 --- a/test/manager/meteor/_fixtures/package-2.js +++ b/test/manager/meteor/_fixtures/package-2.js @@ -1,3 +1,4 @@ +// @ts-nocheck Package.describe({ "name": "steffo:meteor-accounts-saml", "summary": "SAML Login (SP) for Meteor. Works with OpenAM, OpenIDP and provides Single Logout.", diff --git a/test/manager/meteor/extract.spec.js b/test/manager/meteor/extract.spec.js index b866334788..2b26dbd2f8 100644 --- a/test/manager/meteor/extract.spec.js +++ b/test/manager/meteor/extract.spec.js @@ -13,16 +13,12 @@ const input01Content = readFixture('package-1.js'); describe('lib/manager/meteor/extract', () => { describe('extractPackageFile()', () => { - let config; - beforeEach(() => { - config = {}; - }); it('returns empty if fails to parse', () => { - const res = extractPackageFile('blahhhhh:foo:@what\n', config); + const res = extractPackageFile('blahhhhh:foo:@what\n'); expect(res).toBeNull(); }); it('returns results', () => { - const res = extractPackageFile(input01Content, config); + const res = extractPackageFile(input01Content); expect(res).toMatchSnapshot(); expect(res.deps).toHaveLength(6); }); diff --git a/test/manager/npm/extract/index.spec.js b/test/manager/npm/extract/index.spec.js index 37d263085e..8957543bb4 100644 --- a/test/manager/npm/extract/index.spec.js +++ b/test/manager/npm/extract/index.spec.js @@ -3,6 +3,9 @@ const path = require('path'); const npmExtract = require('../../../../lib/manager/npm/extract'); const defaultConfig = require('../../../../lib/config/defaults').getConfig(); +/** @type any */ +const platform = global.platform; + function readFixture(fixture) { return fs.readFileSync( path.resolve(__dirname, `../_fixtures/${fixture}`), diff --git a/test/manager/npm/extract/locked-versions.spec.js b/test/manager/npm/extract/locked-versions.spec.js index d7fda6a91e..21401bf27d 100644 --- a/test/manager/npm/extract/locked-versions.spec.js +++ b/test/manager/npm/extract/locked-versions.spec.js @@ -2,7 +2,9 @@ const { getLockedVersions, } = require('../../../../lib/manager/npm/extract/locked-versions'); +/** @type any */ const npm = require('../../../../lib/manager/npm/extract/npm'); +/** @type any */ const yarn = require('../../../../lib/manager/npm/extract/yarn'); jest.mock('../../../../lib/manager/npm/extract/npm'); diff --git a/test/manager/npm/extract/npm.spec.js b/test/manager/npm/extract/npm.spec.js index afb2bafafa..f3127623cc 100644 --- a/test/manager/npm/extract/npm.spec.js +++ b/test/manager/npm/extract/npm.spec.js @@ -1,6 +1,9 @@ const fs = require('fs'); const { getNpmLock } = require('../../../../lib/manager/npm/extract/npm'); +/** @type any */ +const platform = global.platform; + describe('manager/npm/extract/npm', () => { describe('.getNpmLock()', () => { it('returns empty if failed to parse', async () => { diff --git a/test/manager/npm/extract/yarn.spec.js b/test/manager/npm/extract/yarn.spec.js index 0328773ea0..6e6c844648 100644 --- a/test/manager/npm/extract/yarn.spec.js +++ b/test/manager/npm/extract/yarn.spec.js @@ -1,6 +1,9 @@ const fs = require('fs'); const { getYarnLock } = require('../../../../lib/manager/npm/extract/yarn'); +/** @type any */ +const platform = global.platform; + describe('manager/npm/extract/yarn', () => { describe('.getYarnLock()', () => { it('returns empty if exception parsing', async () => { diff --git a/test/manager/pipenv/artifacts.spec.js b/test/manager/pipenv/artifacts.spec.js index 1abe4b5a3a..5b5756d015 100644 --- a/test/manager/pipenv/artifacts.spec.js +++ b/test/manager/pipenv/artifacts.spec.js @@ -2,10 +2,14 @@ jest.mock('fs-extra'); jest.mock('child-process-promise'); jest.mock('../../../lib/util/host-rules'); +/** @type any */ const fs = require('fs-extra'); const { exec } = require('child-process-promise'); const pipenv = require('../../../lib/manager/pipenv/artifacts'); +/** @type any */ +const platform = global.platform; + const config = { localDir: '/tmp/github/some/repo', cacheDir: '/tmp/renovate/cache', diff --git a/test/manager/pipenv/extract.spec.js b/test/manager/pipenv/extract.spec.js index 39416bdcda..eb95ac3238 100644 --- a/test/manager/pipenv/extract.spec.js +++ b/test/manager/pipenv/extract.spec.js @@ -24,57 +24,48 @@ const pipfile5 = fs.readFileSync( describe('lib/manager/pipenv/extract', () => { describe('extractPackageFile()', () => { - let config; - beforeEach(() => { - config = {}; - }); it('returns null for empty', () => { - expect(extractPackageFile('[packages]\r\n', config)).toBeNull(); + expect(extractPackageFile('[packages]\r\n')).toBeNull(); }); it('returns null for invalid toml file', () => { - expect(extractPackageFile('nothing here', config)).toBeNull(); + expect(extractPackageFile('nothing here')).toBeNull(); }); it('extracts dependencies', () => { - const res = extractPackageFile(pipfile1, config); + const res = extractPackageFile(pipfile1); expect(res).toMatchSnapshot(); expect(res.deps).toHaveLength(6); expect(res.deps.filter(dep => !dep.skipReason)).toHaveLength(4); }); it('marks packages with "extras" as skipReason === any-version', () => { - const res = extractPackageFile(pipfile3, { - extends: ['config:base'], - pipenv: { enabled: true }, - pip_setup: { enabled: true }, - labels: ['dependencies'], - }); + const res = extractPackageFile(pipfile3); expect(res.deps.filter(r => !r.skipReason)).toHaveLength(0); expect(res.deps.filter(r => r.skipReason)).toHaveLength(6); }); it('extracts multiple dependencies', () => { - const res = extractPackageFile(pipfile2, config); + const res = extractPackageFile(pipfile2); expect(res).toMatchSnapshot(); expect(res.deps).toHaveLength(5); }); it('ignores git dependencies', () => { const content = '[packages]\r\nflask = {git = "https://github.com/pallets/flask.git"}\r\nwerkzeug = ">=0.14"'; - const res = extractPackageFile(content, config); + const res = extractPackageFile(content); expect(res.deps.filter(r => !r.skipReason)).toHaveLength(1); }); it('ignores invalid package names', () => { const content = '[packages]\r\nfoo = "==1.0.0"\r\n_invalid = "==1.0.0"'; - const res = extractPackageFile(content, config); + const res = extractPackageFile(content); expect(res.deps).toHaveLength(2); expect(res.deps.filter(dep => !dep.skipReason)).toHaveLength(1); }); it('ignores relative path dependencies', () => { const content = '[packages]\r\nfoo = "==1.0.0"\r\ntest = {path = "."}'; - const res = extractPackageFile(content, config); + const res = extractPackageFile(content); expect(res.deps.filter(r => !r.skipReason)).toHaveLength(1); }); it('ignores invalid versions', () => { const content = '[packages]\r\nfoo = "==1.0.0"\r\nsome-package = "==0 0"'; - const res = extractPackageFile(content, config); + const res = extractPackageFile(content); expect(res.deps).toHaveLength(2); expect(res.deps.filter(dep => !dep.skipReason)).toHaveLength(1); }); @@ -83,15 +74,15 @@ describe('lib/manager/pipenv/extract', () => { '[[source]]\r\nurl = "source-url"\r\n' + '[[source]]\r\nurl = "other-source-url"\r\n' + '[packages]\r\nfoo = "==1.0.0"\r\n'; - const res = extractPackageFile(content, config); + const res = extractPackageFile(content); expect(res.registryUrls).toEqual(['source-url', 'other-source-url']); }); it('extracts example pipfile', () => { - const res = extractPackageFile(pipfile4, config); + const res = extractPackageFile(pipfile4); expect(res).toMatchSnapshot(); }); it('supports custom index', () => { - const res = extractPackageFile(pipfile5, config); + const res = extractPackageFile(pipfile5); expect(res).toMatchSnapshot(); expect(res.registryUrls).toBeDefined(); expect(res.registryUrls).toHaveLength(2); diff --git a/test/manager/poetry/artifacts.spec.js b/test/manager/poetry/artifacts.spec.js index 1f99df6b4c..f8871ad2a9 100644 --- a/test/manager/poetry/artifacts.spec.js +++ b/test/manager/poetry/artifacts.spec.js @@ -1,10 +1,14 @@ jest.mock('fs-extra'); jest.mock('child-process-promise'); +/** @type any */ const fs = require('fs-extra'); const { exec } = require('child-process-promise'); const poetry = require('../../../lib/manager/poetry/artifacts'); +/** @type any */ +const platform = global.platform; + const config = { localDir: '/tmp/github/some/repo', }; diff --git a/test/manager/terraform/extract.spec.js b/test/manager/terraform/extract.spec.js index 901bf3c585..d4be1dd9f1 100644 --- a/test/manager/terraform/extract.spec.js +++ b/test/manager/terraform/extract.spec.js @@ -11,12 +11,8 @@ const tf2 = `module "relative" { describe('lib/manager/terraform/extract', () => { describe('extractPackageFile()', () => { - let config; - beforeEach(() => { - config = {}; - }); it('returns null for empty', () => { - expect(extractPackageFile('nothing here', config)).toBeNull(); + expect(extractPackageFile('nothing here')).toBeNull(); }); it('extracts', () => { const res = extractPackageFile(tf1); @@ -25,7 +21,7 @@ describe('lib/manager/terraform/extract', () => { expect(res.deps.filter(dep => dep.skipReason)).toHaveLength(5); }); it('returns null if only local deps', () => { - expect(extractPackageFile(tf2, config)).toBeNull(); + expect(extractPackageFile(tf2)).toBeNull(); }); }); }); diff --git a/test/manager/travis/extract.spec.js b/test/manager/travis/extract.spec.js index e24ac4ef27..8798027fb0 100644 --- a/test/manager/travis/extract.spec.js +++ b/test/manager/travis/extract.spec.js @@ -2,16 +2,12 @@ const { extractPackageFile } = require('../../../lib/manager/travis/extract'); describe('lib/manager/travis/extract', () => { describe('extractPackageFile()', () => { - let config; - beforeEach(() => { - config = {}; - }); it('returns empty if fails to parse', () => { - const res = extractPackageFile('blahhhhh:foo:@what\n', config); + const res = extractPackageFile('blahhhhh:foo:@what\n'); expect(res).toBeNull(); }); it('returns results', () => { - const res = extractPackageFile('node_js:\n - 6\n - 8\n', config); + const res = extractPackageFile('node_js:\n - 6\n - 8\n'); expect(res).toMatchSnapshot(); expect(res.deps).toHaveLength(1); }); diff --git a/test/manager/travis/package.spec.js b/test/manager/travis/package.spec.js index b2d791495f..a85168e47a 100644 --- a/test/manager/travis/package.spec.js +++ b/test/manager/travis/package.spec.js @@ -1,5 +1,6 @@ const node = require('../../../lib/manager/travis/package'); const defaultConfig = require('../../../lib/config/defaults').getConfig(); +/** @type any */ const githubDatasource = require('../../../lib/datasource/github'); jest.mock('../../../lib/datasource/github'); diff --git a/test/util/env.spec.js b/test/util/env.spec.js index 237a173ed9..c5ed09400a 100644 --- a/test/util/env.spec.js +++ b/test/util/env.spec.js @@ -11,7 +11,15 @@ describe('getChildProcess environment when trustlevel set to low', () => { envVars.forEach(env => delete process.env[env]); }); it('returns default environment variables', () => { - expect(getChildProcessEnv()).toHaveProperty(...envVars); + expect(getChildProcessEnv()).toMatchInlineSnapshot(` + Object { + "HOME": "HOME", + "HTTPS_PROXY": "HTTPS_PROXY", + "HTTP_PROXY": "HTTP_PROXY", + "NO_PROXY": "NO_PROXY", + "PATH": "PATH", + } + `); }); it('returns environment variable only if defined', () => { delete process.env.PATH; @@ -19,7 +27,16 @@ describe('getChildProcess environment when trustlevel set to low', () => { }); it('returns custom environment variables if passed and defined', () => { process.env.LANG = 'LANG'; - expect(getChildProcessEnv(['LANG'])).toHaveProperty(...envVars, 'LANG'); + expect(getChildProcessEnv(['LANG'])).toMatchInlineSnapshot(` + Object { + "HOME": "HOME", + "HTTPS_PROXY": "HTTPS_PROXY", + "HTTP_PROXY": "HTTP_PROXY", + "LANG": "LANG", + "NO_PROXY": "NO_PROXY", + "PATH": "PATH", + } + `); delete process.env.LANG; }); diff --git a/test/util/host-rules.spec.js b/test/util/host-rules.spec.js index 260d45c1cf..7ba8f439aa 100644 --- a/test/util/host-rules.spec.js +++ b/test/util/host-rules.spec.js @@ -43,6 +43,7 @@ describe('util/host-rules', () => { }); describe('find()', () => { it('warns and returns empty for bad search', () => { + // @ts-ignore expect(find({ abc: 'def' })).toEqual({}); }); it('needs exact host matches', () => { diff --git a/test/versioning/docker.spec.js b/test/versioning/docker.spec.js index a3a7b8f862..345aa31c0b 100644 --- a/test/versioning/docker.spec.js +++ b/test/versioning/docker.spec.js @@ -1,3 +1,4 @@ +/** @type any */ const docker = require('../../lib/versioning/docker'); const semver = require('../../lib/versioning/semver'); @@ -110,6 +111,7 @@ describe('docker.', () => { ['2.0.1', '1.2.3'], ['1.2.3', '0.9.5'], ].forEach(pair => { + // @ts-ignore expect(docker.sortVersions(...pair)).toBe(semver.sortVersions(...pair)); }); }); diff --git a/test/website-docs.spec.js b/test/website-docs.spec.js index f484442d4f..1c95febf0e 100644 --- a/test/website-docs.spec.js +++ b/test/website-docs.spec.js @@ -86,6 +86,7 @@ describe('docs', () => { // Lists through each option in the relatedOptions array to be able to locate the exact element which causes error, in case of one it('has valid relateOptions values', () => { relatedOptions.forEach(relOption => { + // @ts-ignore expect(allOptionNames).toContainOption(relOption); }); }); diff --git a/test/workers/branch/automerge.spec.js b/test/workers/branch/automerge.spec.js index 3fbdd5cd55..4f511dba02 100644 --- a/test/workers/branch/automerge.spec.js +++ b/test/workers/branch/automerge.spec.js @@ -1,6 +1,9 @@ const { tryBranchAutomerge } = require('../../../lib/workers/branch/automerge'); const defaultConfig = require('../../../lib/config/defaults').getConfig(); +/** @type any */ +const platform = global.platform; + describe('workers/branch/automerge', () => { describe('tryBranchAutomerge', () => { let config; diff --git a/test/workers/branch/check-existing.spec.js b/test/workers/branch/check-existing.spec.js index 05ae5bc5eb..1835bda7eb 100644 --- a/test/workers/branch/check-existing.spec.js +++ b/test/workers/branch/check-existing.spec.js @@ -3,6 +3,9 @@ const { } = require('../../../lib/workers/branch/check-existing'); const defaultConfig = require('../../../lib/config/defaults').getConfig(); +/** @type any */ +const platform = global.platform; + describe('workers/branch/check-existing', () => { describe('prAlreadyExisted', () => { let config; diff --git a/test/workers/branch/commit.spec.js b/test/workers/branch/commit.spec.js index ca3285175f..bbd581400a 100644 --- a/test/workers/branch/commit.spec.js +++ b/test/workers/branch/commit.spec.js @@ -1,6 +1,9 @@ const { commitFilesToBranch } = require('../../../lib/workers/branch/commit'); const defaultConfig = require('../../../lib/config/defaults').getConfig(); +/** @type any */ +const platform = global.platform; + describe('workers/branch/automerge', () => { describe('commitFilesToBranch', () => { let config; diff --git a/test/workers/branch/get-updated.spec.js b/test/workers/branch/get-updated.spec.js index a00e4e9880..503c0bf8fa 100644 --- a/test/workers/branch/get-updated.spec.js +++ b/test/workers/branch/get-updated.spec.js @@ -1,10 +1,15 @@ +/** @type any */ const composer = require('../../../lib/manager/composer'); +/** @type any */ const npm = require('../../../lib/manager/npm'); const { getUpdatedPackageFiles, } = require('../../../lib/workers/branch/get-updated'); const defaultConfig = require('../../../lib/config/defaults').getConfig(); +/** @type any */ +const platform = global.platform; + describe('workers/branch/get-updated', () => { describe('getUpdatedPackageFiles()', () => { let config; diff --git a/test/workers/branch/index.spec.js b/test/workers/branch/index.spec.js index e7f847cafa..11970153cc 100644 --- a/test/workers/branch/index.spec.js +++ b/test/workers/branch/index.spec.js @@ -1,14 +1,22 @@ const branchWorker = require('../../../lib/workers/branch'); const defaultConfig = require('../../../lib/config/defaults').getConfig(); +/** @type any */ const schedule = require('../../../lib/workers/branch/schedule'); +/** @type any */ const checkExisting = require('../../../lib/workers/branch/check-existing'); +/** @type any */ const parent = require('../../../lib/workers/branch/parent'); +/** @type any */ const npmPostExtract = require('../../../lib/manager/npm/post-update'); +/** @type any */ const commit = require('../../../lib/workers/branch/commit'); const statusChecks = require('../../../lib/workers/branch/status-checks'); +/** @type any */ const automerge = require('../../../lib/workers/branch/automerge'); +/** @type any */ const prWorker = require('../../../lib/workers/pr'); +/** @type any */ const getUpdated = require('../../../lib/workers/branch/get-updated'); const { appSlug } = require('../../../lib/config/app-strings'); @@ -22,6 +30,9 @@ jest.mock('../../../lib/workers/branch/automerge'); jest.mock('../../../lib/workers/branch/commit'); jest.mock('../../../lib/workers/pr'); +/** @type any */ +const platform = global.platform; + describe('workers/branch', () => { describe('processBranch', () => { let config; diff --git a/test/workers/branch/lock-files/index.spec.js b/test/workers/branch/lock-files/index.spec.js index ee8c1df0b6..6c829471af 100644 --- a/test/workers/branch/lock-files/index.spec.js +++ b/test/workers/branch/lock-files/index.spec.js @@ -1,15 +1,22 @@ +/** @type any */ const fs = require('fs-extra'); const lockFiles = require('../../../../lib/manager/npm/post-update'); const defaultConfig = require('../../../../lib/config/defaults').getConfig(); // const upath = require('upath'); +/** @type any */ const npm = require('../../../../lib/manager/npm/post-update/npm'); +/** @type any */ const yarn = require('../../../../lib/manager/npm/post-update/yarn'); +/** @type any */ const pnpm = require('../../../../lib/manager/npm/post-update/pnpm'); const lerna = require('../../../../lib/manager/npm/post-update/lerna'); const hostRules = require('../../../../lib/util/host-rules'); +/** @type any */ +const platform = global.platform; + hostRules.find = jest.fn(() => ({ token: 'abc', })); diff --git a/test/workers/branch/lock-files/lerna.spec.js b/test/workers/branch/lock-files/lerna.spec.js index 06adb3ac97..a54bb660b9 100644 --- a/test/workers/branch/lock-files/lerna.spec.js +++ b/test/workers/branch/lock-files/lerna.spec.js @@ -3,6 +3,9 @@ const lernaHelper = require('../../../../lib/manager/npm/post-update/lerna'); jest.mock('child-process-promise'); +/** @type any */ +const platform = global.platform; + describe('generateLockFiles()', () => { it('returns if no lernaClient', async () => { const res = await lernaHelper.generateLockFiles(undefined, 'some-dir', {}); diff --git a/test/workers/branch/lock-files/npm.spec.js b/test/workers/branch/lock-files/npm.spec.js index adcc3228c7..41914eb689 100644 --- a/test/workers/branch/lock-files/npm.spec.js +++ b/test/workers/branch/lock-files/npm.spec.js @@ -6,6 +6,7 @@ jest.mock('get-installed-path'); getInstalledPath.mockImplementation(() => null); +/** @type any */ const fs = require('fs-extra'); const { exec } = require('child-process-promise'); const npmHelper = require('../../../../lib/manager/npm/post-update/npm'); diff --git a/test/workers/branch/lock-files/pnpm.spec.js b/test/workers/branch/lock-files/pnpm.spec.js index 92ab394004..75d6f4a4bb 100644 --- a/test/workers/branch/lock-files/pnpm.spec.js +++ b/test/workers/branch/lock-files/pnpm.spec.js @@ -6,6 +6,7 @@ jest.mock('get-installed-path'); getInstalledPath.mockImplementation(() => null); +/** @type any */ const fs = require('fs-extra'); const { exec } = require('child-process-promise'); const pnpmHelper = require('../../../../lib/manager/npm/post-update/pnpm'); diff --git a/test/workers/branch/lock-files/yarn.spec.js b/test/workers/branch/lock-files/yarn.spec.js index 7933d71769..f43c879021 100644 --- a/test/workers/branch/lock-files/yarn.spec.js +++ b/test/workers/branch/lock-files/yarn.spec.js @@ -6,6 +6,7 @@ jest.mock('get-installed-path'); getInstalledPath.mockImplementation(() => null); +/** @type any */ const fs = require('fs-extra'); const { exec } = require('child-process-promise'); const yarnHelper = require('../../../../lib/manager/npm/post-update/yarn'); diff --git a/test/workers/branch/parent.spec.js b/test/workers/branch/parent.spec.js index 876a3bdc2e..192425c3d9 100644 --- a/test/workers/branch/parent.spec.js +++ b/test/workers/branch/parent.spec.js @@ -1,5 +1,8 @@ const { getParentBranch } = require('../../../lib/workers/branch/parent'); +/** @type any */ +const platform = global.platform; + describe('workers/branch/parent', () => { describe('getParentBranch(config)', () => { let config; diff --git a/test/workers/branch/schedule.spec.js b/test/workers/branch/schedule.spec.js index 3026203aeb..8c0afdd46e 100644 --- a/test/workers/branch/schedule.spec.js +++ b/test/workers/branch/schedule.spec.js @@ -1,3 +1,4 @@ +/** @type any */ const mockDate = require('mockdate'); const schedule = require('../../../lib/workers/branch/schedule'); diff --git a/test/workers/branch/status-checks.spec.js b/test/workers/branch/status-checks.spec.js index 0f2ab550aa..17fec24c5f 100644 --- a/test/workers/branch/status-checks.spec.js +++ b/test/workers/branch/status-checks.spec.js @@ -3,6 +3,9 @@ const { } = require('../../../lib/workers/branch/status-checks'); const defaultConfig = require('../../../lib/config/defaults').getConfig(); +/** @type any */ +const platform = global.platform; + describe('workers/branch/status-checks', () => { describe('setUnpublishable', () => { let config; diff --git a/test/workers/global/autodiscover.spec.js b/test/workers/global/autodiscover.spec.js index bbd5adc579..1f5a3b70d9 100644 --- a/test/workers/global/autodiscover.spec.js +++ b/test/workers/global/autodiscover.spec.js @@ -27,7 +27,7 @@ describe('lib/workers/global/autodiscover', () => { hostRules.find = jest.fn(() => ({ token: 'abc', })); - ghApi.getRepos = jest.fn(() => []); + ghApi.getRepos = jest.fn(() => Promise.resolve([])); const res = await autodiscoverRepositories(config); expect(res).toEqual(config); }); @@ -37,7 +37,7 @@ describe('lib/workers/global/autodiscover', () => { hostRules.find = jest.fn(() => ({ token: 'abc', })); - ghApi.getRepos = jest.fn(() => [{}, {}]); + ghApi.getRepos = jest.fn(() => Promise.resolve([{}, {}])); const res = await autodiscoverRepositories(config); expect(res.repositories).toHaveLength(2); }); @@ -48,7 +48,9 @@ describe('lib/workers/global/autodiscover', () => { hostRules.find = jest.fn(() => ({ token: 'abc', })); - ghApi.getRepos = jest.fn(() => ['project/repo', 'project/another-repo']); + ghApi.getRepos = jest.fn(() => + Promise.resolve(['project/repo', 'project/another-repo']) + ); const res = await autodiscoverRepositories(config); expect(res.repositories).toEqual(['project/repo']); }); @@ -59,10 +61,9 @@ describe('lib/workers/global/autodiscover', () => { hostRules.find = jest.fn(() => ({ token: 'abc', })); - ghApi.getRepos = jest.fn(() => [ - 'another-project/repo', - 'another-project/another-repo', - ]); + ghApi.getRepos = jest.fn(() => + Promise.resolve(['another-project/repo', 'another-project/another-repo']) + ); const res = await autodiscoverRepositories(config); expect(res).toEqual(config); }); diff --git a/test/workers/global/index.spec.js b/test/workers/global/index.spec.js index cda86e3c42..27f5212f04 100644 --- a/test/workers/global/index.spec.js +++ b/test/workers/global/index.spec.js @@ -1,6 +1,8 @@ const globalWorker = require('../../../lib/workers/global'); const repositoryWorker = require('../../../lib/workers/repository'); +/** @type any */ const configParser = require('../../../lib/config'); +/** @type any */ const platform = require('../../../lib/platform'); jest.mock('../../../lib/platform'); diff --git a/test/workers/pr/changelog/index.spec.js b/test/workers/pr/changelog/index.spec.js index 16989a7b33..1bc3c6d435 100644 --- a/test/workers/pr/changelog/index.spec.js +++ b/test/workers/pr/changelog/index.spec.js @@ -1,8 +1,11 @@ -import ghGot from '../../../../lib/platform/github/gh-got-wrapper'; +import { api } from '../../../../lib/platform/github/gh-got-wrapper'; jest.mock('../../../../lib/platform/github/gh-got-wrapper'); jest.mock('../../../../lib/datasource/npm'); +/** @type any */ +const ghGot = api.get; + const hostRules = require('../../../../lib/util/host-rules'); const { getChangeLogJSON } = require('../../../../lib/workers/pr/changelog'); diff --git a/test/workers/pr/index.spec.js b/test/workers/pr/index.spec.js index 1be7083c53..749eccd371 100644 --- a/test/workers/pr/index.spec.js +++ b/test/workers/pr/index.spec.js @@ -1,8 +1,13 @@ const prWorker = require('../../../lib/workers/pr'); +/** @type any */ const changelogHelper = require('../../../lib/workers/pr/changelog'); const defaultConfig = require('../../../lib/config/defaults').getConfig(); jest.mock('../../../lib/workers/pr/changelog'); + +/** @type any */ +const platform = global.platform; + changelogHelper.getChangeLogJSON = jest.fn(); changelogHelper.getChangeLogJSON.mockReturnValue({ project: { @@ -98,6 +103,7 @@ describe('workers/pr', () => { }); }); describe('ensurePr', () => { + /** @type any */ let config; const existingPr = { displayNumber: 'Existing PR', diff --git a/test/workers/repository/error-config.spec.js b/test/workers/repository/error-config.spec.js index f97b2b0dc4..5031c62ece 100644 --- a/test/workers/repository/error-config.spec.js +++ b/test/workers/repository/error-config.spec.js @@ -2,6 +2,9 @@ const { raiseConfigWarningIssue, } = require('../../../lib/workers/repository/error-config'); +/** @type any */ +const platform = global.platform; + let config; beforeEach(() => { jest.resetAllMocks(); diff --git a/test/workers/repository/extract/index.spec.js b/test/workers/repository/extract/index.spec.js index a47b3fb949..d78cafd6e2 100644 --- a/test/workers/repository/extract/index.spec.js +++ b/test/workers/repository/extract/index.spec.js @@ -1,3 +1,4 @@ +/** @type any */ const managerFiles = require('../../../../lib/workers/repository/extract/manager-files'); const { extractAllDependencies, diff --git a/test/workers/repository/extract/manager-files.spec.js b/test/workers/repository/extract/manager-files.spec.js index 126d0d9087..259300fc65 100644 --- a/test/workers/repository/extract/manager-files.spec.js +++ b/test/workers/repository/extract/manager-files.spec.js @@ -1,12 +1,17 @@ const { getManagerPackageFiles, } = require('../../../../lib/workers/repository/extract/manager-files'); +/** @type any */ const fileMatch = require('../../../../lib/workers/repository/extract/file-match'); const npm = require('../../../../lib/manager/npm'); +/** @type any */ const dockerfile = require('../../../../lib/manager/dockerfile'); jest.mock('../../../../lib/workers/repository/extract/file-match'); +/** @type any */ +const platform = global.platform; + describe('workers/repository/extract/manager-files', () => { describe('getManagerPackageFiles()', () => { let config; diff --git a/test/workers/repository/finalise/prune.spec.js b/test/workers/repository/finalise/prune.spec.js index 8a6288883d..f0a9d31532 100644 --- a/test/workers/repository/finalise/prune.spec.js +++ b/test/workers/repository/finalise/prune.spec.js @@ -1,5 +1,9 @@ const cleanup = require('../../../../lib/workers/repository/finalise/prune'); +/** @type any */ +const platform = global.platform; + +/** @type any */ let config; beforeEach(() => { jest.resetAllMocks(); diff --git a/test/workers/repository/finalise/validate.spec.js b/test/workers/repository/finalise/validate.spec.js index cc1a8f6f4e..6bedf52f59 100644 --- a/test/workers/repository/finalise/validate.spec.js +++ b/test/workers/repository/finalise/validate.spec.js @@ -1,5 +1,8 @@ const validate = require('../../../../lib/workers/repository/finalise/validate'); +/** @type any */ +const platform = global.platform; + beforeEach(() => { jest.resetAllMocks(); }); diff --git a/test/workers/repository/index.spec.js b/test/workers/repository/index.spec.js index 5f42fba1be..26a16de3e7 100644 --- a/test/workers/repository/index.spec.js +++ b/test/workers/repository/index.spec.js @@ -1,4 +1,5 @@ const { renovateRepository } = require('../../../lib/workers/repository/index'); +/** @type any */ const process = require('../../../lib/workers/repository/process'); jest.mock('../../../lib/workers/repository/init'); diff --git a/test/workers/repository/init/apis.spec.js b/test/workers/repository/init/apis.spec.js index b882079376..7bf16e3ebd 100644 --- a/test/workers/repository/init/apis.spec.js +++ b/test/workers/repository/init/apis.spec.js @@ -4,6 +4,7 @@ jest.mock('../../../../lib/platform/github'); describe('workers/repository/init/apis', () => { describe('initApis', () => { + /** @type any */ let config; beforeEach(() => { config = require('../../../config/config/_fixtures'); diff --git a/test/workers/repository/init/base.spec.js b/test/workers/repository/init/base.spec.js index 1d80b7989a..184197e156 100644 --- a/test/workers/repository/init/base.spec.js +++ b/test/workers/repository/init/base.spec.js @@ -1,3 +1,4 @@ +/** @type any */ let config; beforeEach(() => { jest.resetAllMocks(); @@ -10,6 +11,9 @@ const { checkBaseBranch, } = require('../../../../lib/workers/repository/init/base'); +/** @type any */ +const platform = global.platform; + describe('workers/repository/init/base', () => { describe('checkBaseBranch()', () => { it('errors', async () => { diff --git a/test/workers/repository/init/config.spec.js b/test/workers/repository/init/config.spec.js index 6d254cd9a9..7c81c6a2bb 100644 --- a/test/workers/repository/init/config.spec.js +++ b/test/workers/repository/init/config.spec.js @@ -1,3 +1,4 @@ +/** @type any */ let config; beforeEach(() => { jest.resetAllMocks(); @@ -9,10 +10,14 @@ beforeEach(() => { const { mergeRenovateConfig, } = require('../../../../lib/workers/repository/init/config'); +/** @type any */ const migrateValidate = require('../../../../lib/config/migrate-validate'); jest.mock('../../../../lib/config/migrate-validate'); +/** @type any */ +const platform = global.platform; + describe('workers/repository/init/config', () => { describe('mergeRenovateConfig()', () => { beforeEach(() => { diff --git a/test/workers/repository/init/index.spec.js b/test/workers/repository/init/index.spec.js index abe30c37e6..8972907ecd 100644 --- a/test/workers/repository/init/index.spec.js +++ b/test/workers/repository/init/index.spec.js @@ -1,4 +1,6 @@ +/** @type any */ const base = require('../../../../lib/workers/repository/init/base'); +/** @type any */ const apis = require('../../../../lib/workers/repository/init/apis'); const { initRepo } = require('../../../../lib/workers/repository/init'); @@ -14,7 +16,7 @@ describe('workers/repository/init', () => { it('runs', async () => { base.checkBaseBranch.mockReturnValue({}); apis.initApis.mockReturnValue({}); - await initRepo({}, null); + await initRepo({}); }); }); }); diff --git a/test/workers/repository/init/semantic.spec.js b/test/workers/repository/init/semantic.spec.js index 022340adcf..ba90dc29c0 100644 --- a/test/workers/repository/init/semantic.spec.js +++ b/test/workers/repository/init/semantic.spec.js @@ -1,3 +1,4 @@ +/** @type any */ let config; beforeEach(() => { jest.resetAllMocks(); @@ -10,6 +11,9 @@ const { detectSemanticCommits, } = require('../../../../lib/workers/repository/init/semantic'); +/** @type any */ +const platform = global.platform; + describe('workers/repository/init/semantic', () => { describe('detectSemanticCommits()', () => { it('returns config if already set', async () => { diff --git a/test/workers/repository/init/vulnerability.spec.js b/test/workers/repository/init/vulnerability.spec.js index adf55d3a1a..5cc3d1472e 100644 --- a/test/workers/repository/init/vulnerability.spec.js +++ b/test/workers/repository/init/vulnerability.spec.js @@ -10,6 +10,9 @@ const { detectVulnerabilityAlerts, } = require('../../../../lib/workers/repository/init/vulnerability'); +/** @type any */ +const platform = global.platform; + describe('workers/repository/init/vulnerability', () => { describe('detectVulnerabilityAlerts()', () => { it('returns if alerts are missing', async () => { diff --git a/test/workers/repository/master-issue.spec.js b/test/workers/repository/master-issue.spec.js index 896cee0141..6c4659e4cf 100644 --- a/test/workers/repository/master-issue.spec.js +++ b/test/workers/repository/master-issue.spec.js @@ -1,6 +1,10 @@ const fs = require('fs'); const masterIssue = require('../../../lib/workers/repository/master-issue'); +/** @type any */ +const platform = global.platform; + +/** @type any */ let config; beforeEach(() => { jest.resetAllMocks(); @@ -12,6 +16,7 @@ beforeEach(() => { async function dryRun( branches, + // eslint-disable-next-line no-shadow platform, ensureIssueClosingCalls = 0, ensureIssueCalls = 0, diff --git a/test/workers/repository/onboarding/branch/index.spec.js b/test/workers/repository/onboarding/branch/index.spec.js index 7e9cbd9fdd..e63d0d4fe1 100644 --- a/test/workers/repository/onboarding/branch/index.spec.js +++ b/test/workers/repository/onboarding/branch/index.spec.js @@ -5,6 +5,9 @@ const { jest.mock('../../../../../lib/workers/repository/onboarding/branch/rebase'); +/** @type any */ +const platform = global.platform; + describe('workers/repository/onboarding/branch', () => { describe('checkOnboardingBranch', () => { let config; diff --git a/test/workers/repository/onboarding/branch/rebase.spec.js b/test/workers/repository/onboarding/branch/rebase.spec.js index 764b764b51..a7c2d326ab 100644 --- a/test/workers/repository/onboarding/branch/rebase.spec.js +++ b/test/workers/repository/onboarding/branch/rebase.spec.js @@ -3,6 +3,9 @@ const { rebaseOnboardingBranch, } = require('../../../../../lib/workers/repository/onboarding/branch/rebase'); +/** @type any */ +const platform = global.platform; + describe('workers/repository/onboarding/branch/rebase', () => { describe('rebaseOnboardingBranch()', () => { let config; diff --git a/test/workers/repository/onboarding/pr/index.spec.js b/test/workers/repository/onboarding/pr/index.spec.js index a86fc10f81..a84a4996fb 100644 --- a/test/workers/repository/onboarding/pr/index.spec.js +++ b/test/workers/repository/onboarding/pr/index.spec.js @@ -4,6 +4,9 @@ const { ensureOnboardingPr, } = require('../../../../../lib/workers/repository/onboarding/pr'); +/** @type any */ +const platform = global.platform; + describe('workers/repository/onboarding/pr', () => { describe('ensureOnboardingPr()', () => { let config; diff --git a/test/workers/repository/process/deprecated.spec.js b/test/workers/repository/process/deprecated.spec.js index 6db91efd0e..b52abbaf48 100644 --- a/test/workers/repository/process/deprecated.spec.js +++ b/test/workers/repository/process/deprecated.spec.js @@ -2,6 +2,9 @@ const { raiseDeprecationWarnings, } = require('../../../../lib/workers/repository/process/deprecated'); +/** @type any */ +const platform = global.platform; + describe('workers/repository/process/deprecated', () => { describe('raiseDeprecationWarnings()', () => { it('returns if onboarding', async () => { diff --git a/test/workers/repository/process/extract-update.spec.js b/test/workers/repository/process/extract-update.spec.js index 3dc4e18daf..bceaa51573 100644 --- a/test/workers/repository/process/extract-update.spec.js +++ b/test/workers/repository/process/extract-update.spec.js @@ -1,6 +1,7 @@ const { extractAndUpdate, } = require('../../../../lib/workers/repository/process/extract-update'); +/** @type any */ const branchify = require('../../../../lib/workers/repository/updates/branchify'); jest.mock('../../../../lib/workers/repository/process/write'); diff --git a/test/workers/repository/process/fetch.spec.js b/test/workers/repository/process/fetch.spec.js index 9ba8875427..a722fb3a29 100644 --- a/test/workers/repository/process/fetch.spec.js +++ b/test/workers/repository/process/fetch.spec.js @@ -3,6 +3,7 @@ const { } = require('../../../../lib/workers/repository/process/fetch'); const npm = require('../../../../lib/manager/npm'); +/** @type any */ const lookup = require('../../../../lib/workers/repository/process/lookup'); jest.mock('../../../../lib/workers/repository/process/lookup'); diff --git a/test/workers/repository/process/index.spec.js b/test/workers/repository/process/index.spec.js index 4c1337ca23..3f73348553 100644 --- a/test/workers/repository/process/index.spec.js +++ b/test/workers/repository/process/index.spec.js @@ -1,6 +1,7 @@ const { processRepo, } = require('../../../../lib/workers/repository/process/index'); +/** @type any */ const extractUpdate = require('../../../../lib/workers/repository/process/extract-update'); jest.mock('../../../../lib/workers/repository/process/extract-update'); diff --git a/test/workers/repository/process/limits.spec.js b/test/workers/repository/process/limits.spec.js index 15d876f4f0..036e8788b4 100644 --- a/test/workers/repository/process/limits.spec.js +++ b/test/workers/repository/process/limits.spec.js @@ -1,6 +1,10 @@ const moment = require('moment'); +/** @type any */ const limits = require('../../../../lib/workers/repository/process/limits'); +/** @type any */ +const platform = global.platform; + let config; beforeEach(() => { jest.resetAllMocks(); diff --git a/test/workers/repository/process/lookup/index.spec.js b/test/workers/repository/process/lookup/index.spec.js index d53f2e2cb9..c53805d3dd 100644 --- a/test/workers/repository/process/lookup/index.spec.js +++ b/test/workers/repository/process/lookup/index.spec.js @@ -7,6 +7,7 @@ const webpackJson = require('../../../../config/npm/_fixtures/webpack.json'); const nextJson = require('../../../../config/npm/_fixtures/next.json'); const vueJson = require('../../../../config/npm/_fixtures/vue.json'); const typescriptJson = require('../../../../config/npm/_fixtures/typescript.json'); +/** @type any */ const docker = require('../../../../../lib/datasource/docker'); const defaults = require('../../../../../lib/config/defaults'); @@ -14,6 +15,7 @@ jest.mock('../../../../../lib/datasource/docker'); qJson.latestVersion = '1.4.1'; +/** @type any */ let config; describe('workers/repository/process/lookup', () => { diff --git a/test/workers/repository/process/write.spec.js b/test/workers/repository/process/write.spec.js index 167d1828b6..3ea14619a5 100644 --- a/test/workers/repository/process/write.spec.js +++ b/test/workers/repository/process/write.spec.js @@ -1,7 +1,9 @@ const { writeUpdates, } = require('../../../../lib/workers/repository/process/write'); +/** @type any */ const branchWorker = require('../../../../lib/workers/branch'); +/** @type any */ const limits = require('../../../../lib/workers/repository/process/limits'); branchWorker.processBranch = jest.fn(); diff --git a/test/workers/repository/updates/branchify.spec.js b/test/workers/repository/updates/branchify.spec.js index 1fb8b2c738..628e0f28df 100644 --- a/test/workers/repository/updates/branchify.spec.js +++ b/test/workers/repository/updates/branchify.spec.js @@ -1,3 +1,4 @@ +/** @type any */ let config; beforeEach(() => { jest.resetAllMocks(); @@ -9,6 +10,8 @@ beforeEach(() => { const { branchifyUpgrades, } = require('../../../../lib/workers/repository/updates/branchify'); + +/** @type any */ const { flattenUpdates, } = require('../../../../lib/workers/repository/updates/flatten'); diff --git a/test/workers/repository/updates/flatten.spec.js b/test/workers/repository/updates/flatten.spec.js index b118a958a0..2cde044339 100644 --- a/test/workers/repository/updates/flatten.spec.js +++ b/test/workers/repository/updates/flatten.spec.js @@ -2,6 +2,7 @@ const { flattenUpdates, } = require('../../../../lib/workers/repository/updates/flatten'); +/** @type any */ let config; beforeEach(() => { jest.resetAllMocks(); diff --git a/tsconfig.app.json b/tsconfig.app.json index 19cea95f7a..91698e6057 100644 --- a/tsconfig.app.json +++ b/tsconfig.app.json @@ -2,7 +2,7 @@ "extends": "./tsconfig", "compilerOptions": { "resolveJsonModule": false, - "isolatedModules": false, + "isolatedModules": true, "sourceMap": false, "types": ["node"] }, diff --git a/tsconfig.json b/tsconfig.json index 814df428d8..d05ddae809 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,15 +1,17 @@ { "compilerOptions": { "strict": true, + "noImplicitAny": false /* required for js files */, + "strictNullChecks": false /* required for js files */, "outDir": "./dist", "target": "es2018", "allowJs": true, - "checkJs": false, + "checkJs": true, "module": "commonjs", "sourceMap": true, "allowSyntheticDefaultImports": true, "esModuleInterop": true, - "resolveJsonModule": true, + "resolveJsonModule": false, "isolatedModules": true, "lib": ["es2018"], "types": ["node", "jest"] -- GitLab