diff --git a/lib/util/clone.ts b/lib/util/clone.ts index d1c9530e7e597ac1da36b0815c48cc5b286a8119..cb0b5ba7be134b00338151029c65eccf59089eaa 100644 --- a/lib/util/clone.ts +++ b/lib/util/clone.ts @@ -1,5 +1,5 @@ import safeStringify from 'fast-safe-stringify'; -export function clone<T>(input: T = null): T { +export function clone<T>(input: T | null = null): T { return JSON.parse(safeStringify(input)); } diff --git a/package.json b/package.json index 96745e3216b6c3fde5439600fe54138160349da6..a2bd8da0ba9487eac307b54e52b368ea321a204a 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,7 @@ "ls-lint": "ls-lint", "markdown-lint": "markdownlint-cli2", "markdown-lint-fix": "markdownlint-cli2-fix", + "null-check": "run-s generate:* \"tsc --noEmit -p tsconfig.strict.json {@}\"", "prepare": "run-s prepare:*", "prepare:husky": "husky install", "prepare:generate": "run-s generate:*", @@ -39,7 +40,7 @@ "prettier-fix": "prettier --write \"**/*.{ts,js,mjs,json,md,yml}\"", "release": "node tools/release.mjs", "start": "node -r ts-node/register/transpile-only -- lib/renovate.ts", - "test": "run-s lint test-schema type-check jest", + "test": "run-s lint test-schema type-check null-check jest", "test-dirty": "git diff --exit-code", "test-e2e": "npm pack && cd test/e2e && yarn install --no-lockfile --ignore-optional --prod && yarn test", "test-schema": "node -r ts-node/register/transpile-only -- test/json-schema.ts", diff --git a/tsconfig.strict.json b/tsconfig.strict.json new file mode 100644 index 0000000000000000000000000000000000000000..e256ff01fc6eb5aa99d772485c72ccb2812e4ae2 --- /dev/null +++ b/tsconfig.strict.json @@ -0,0 +1,121 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "strictNullChecks": true, + "noImplicitAny": true + }, + "files": [ + "./lib/constants/error-messages.ts", + "./lib/util/clone.ts", + "./lib/util/sanitize.ts", + "./lib/config/app-strings.ts", + "./lib/config/presets/common.ts", + "./lib/constants/platforms.ts", + "./lib/constants/programming-language.ts", + "./lib/data-files.generated.ts", + "./lib/datasource/adoptium-java/common.ts", + "./lib/datasource/adoptium-java/types.ts", + "./lib/datasource/artifactory/common.ts", + "./lib/datasource/bitbucket-tags/types.ts", + "./lib/datasource/cdnjs/types.ts", + "./lib/datasource/crate/types.ts", + "./lib/datasource/dart/types.ts", + "./lib/datasource/docker/types.ts", + "./lib/datasource/galaxy-collection/types.ts", + "./lib/datasource/galaxy/types.ts", + "./lib/datasource/git-refs/types.ts", + "./lib/datasource/github-releases/types.ts", + "./lib/datasource/github-tags/types.ts", + "./lib/datasource/gitlab-packages/common.ts", + "./lib/datasource/gitlab-packages/types.ts", + "./lib/datasource/gitlab-releases/types.ts", + "./lib/datasource/gitlab-tags/types.ts", + "./lib/datasource/gradle-version/types.ts", + "./lib/datasource/hex/types.ts", + "./lib/datasource/jenkins-plugins/common.ts", + "./lib/datasource/maven/common.ts", + "./lib/datasource/node/common.ts", + "./lib/datasource/node/types.ts", + "./lib/datasource/npm/common.ts", + "./lib/datasource/nuget/types.ts", + "./lib/datasource/orb/types.ts", + "./lib/datasource/pypi/types.ts", + "./lib/datasource/repology/types.ts", + "./lib/datasource/rubygems/types.ts", + "./lib/datasource/terraform-module/types.ts", + "./lib/datasource/terraform-provider/types.ts", + "./lib/datasource/types.ts", + "./lib/globals.d.ts", + "./lib/logger/__mocks__/index.ts", + "./lib/logger/cmd-serializer.ts", + "./lib/manager/argocd/types.ts", + "./lib/manager/azure-pipelines/types.ts", + "./lib/manager/bazel/types.ts", + "./lib/manager/cargo/types.ts", + "./lib/manager/cocoapods/types.ts", + "./lib/manager/composer/types.ts", + "./lib/manager/docker-compose/types.ts", + "./lib/manager/git-submodules/types.ts", + "./lib/manager/gitlabci/types.ts", + "./lib/manager/gitlabci/utils.ts", + "./lib/manager/gradle-wrapper/types.ts", + "./lib/manager/gradle/deep/types.ts", + "./lib/manager/gradle/types.ts", + "./lib/manager/helm-values/types.ts", + "./lib/manager/helmfile/types.ts", + "./lib/manager/helmsman/types.ts", + "./lib/manager/homebrew/types.ts", + "./lib/manager/jenkins/types.ts", + "./lib/manager/kustomize/types.ts", + "./lib/manager/leiningen/types.ts", + "./lib/manager/maven/types.ts", + "./lib/manager/npm/extract/types.ts", + "./lib/manager/npm/update/locked-dependency/types.ts", + "./lib/manager/nuget/types.ts", + "./lib/manager/pip_setup/types.ts", + "./lib/manager/pipenv/types.ts", + "./lib/manager/poetry/types.ts", + "./lib/manager/pre-commit/types.ts", + "./lib/manager/regex/types.ts", + "./lib/manager/sbt/types.ts", + "./lib/manager/swift/types.ts", + "./lib/manager/terraform/common.ts", + "./lib/manager/terraform/lockfile/types.ts", + "./lib/manager/terragrunt/common.ts", + "./lib/platform/bitbucket/types.ts", + "./lib/platform/gitea/types.ts", + "./lib/platform/github/graphql.ts", + "./lib/platform/gitlab/types.ts", + "./lib/platform/utils/pr-body.ts", + "./lib/proxy.ts", + "./lib/types/branch-status.ts", + "./lib/types/git.ts", + "./lib/types/host-rules.ts", + "./lib/types/later.d.ts", + "./lib/types/platform/bitbucket-server/index.ts", + "./lib/types/pr-state.ts", + "./lib/types/skip-reason.ts", + "./lib/types/versioning.ts", + "./lib/types/vulnerability-alert.ts", + "./lib/util/cache/memory/index.ts", + "./lib/util/cache/package/types.ts", + "./lib/util/date.ts", + "./lib/util/exec/common.ts", + "./lib/util/exec/types.ts", + "./lib/util/git/config.ts", + "./lib/util/html.ts", + "./lib/util/http/hooks.ts", + "./lib/util/http/types.ts", + "./lib/util/index.ts", + "./lib/util/json-writer/indentation-type.ts", + "./lib/util/object.ts", + "./lib/util/split.ts", + "./lib/workers/pr/changelog/hbs-template.ts", + "./lib/workers/pr/changelog/types.ts", + "./lib/workers/repository/init/types.ts", + "./test/json-schema.ts", + "./test/newline-snapshot-serializer.ts", + "./test/static-files.spec.ts", + "./tools/utils/index.ts" + ] +}