pr-checkmate 3.0.4 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{cli.js → cjs/cli.js} +30 -30
- package/dist/{config → cjs/config}/index.d.ts +2 -2
- package/dist/{config → cjs/config}/index.js +8 -7
- package/dist/{config → cjs/config}/loader.d.ts +1 -1
- package/dist/{config → cjs/config}/loader.js +8 -8
- package/dist/{core → cjs/core}/checks/dependencies/banned-imports.d.ts +1 -1
- package/dist/{core → cjs/core}/checks/dependencies/banned-imports.js +10 -10
- package/dist/{core → cjs/core}/checks/dependencies/circular-deps.d.ts +1 -1
- package/dist/{core → cjs/core}/checks/dependencies/circular-deps.js +27 -27
- package/dist/{core → cjs/core}/checks/dependencies/dependency-check.d.ts +1 -1
- package/dist/{core → cjs/core}/checks/dependencies/dependency-check.js +17 -17
- package/dist/{core → cjs/core}/checks/dependencies/grype-scan.d.ts +1 -1
- package/dist/{core → cjs/core}/checks/dependencies/grype-scan.js +18 -18
- package/dist/{core → cjs/core}/checks/dependencies/license-check.d.ts +1 -1
- package/dist/{core → cjs/core}/checks/dependencies/license-check.js +12 -12
- package/dist/{core → cjs/core}/checks/dependencies/npm-audit.d.ts +1 -1
- package/dist/{core → cjs/core}/checks/dependencies/npm-audit.js +14 -14
- package/dist/{core → cjs/core}/checks/dependencies/outdated-deps.d.ts +1 -1
- package/dist/{core → cjs/core}/checks/dependencies/outdated-deps.js +14 -14
- package/dist/{core → cjs/core}/checks/dependencies/vuln-scan.d.ts +1 -1
- package/dist/{core → cjs/core}/checks/dependencies/vuln-scan.js +14 -14
- package/dist/{core → cjs/core}/checks/findings.d.ts +1 -1
- package/dist/{core → cjs/core}/checks/findings.js +16 -16
- package/dist/{core → cjs/core}/checks/git/custom-rules.d.ts +1 -1
- package/dist/{core → cjs/core}/checks/git/custom-rules.js +19 -19
- package/dist/{core → cjs/core}/checks/git/diff-smell.d.ts +2 -2
- package/dist/{core → cjs/core}/checks/git/diff-smell.js +13 -13
- package/dist/{core → cjs/core}/checks/git/large-files.d.ts +1 -1
- package/dist/{core → cjs/core}/checks/git/large-files.js +15 -15
- package/dist/{core → cjs/core}/checks/git/leftover-debug.d.ts +1 -1
- package/dist/{core → cjs/core}/checks/git/leftover-debug.js +13 -13
- package/dist/{core → cjs/core}/checks/git/lockfile-drift.d.ts +1 -1
- package/dist/{core → cjs/core}/checks/git/lockfile-drift.js +12 -12
- package/dist/{core → cjs/core}/checks/git/merge-conflict.d.ts +1 -1
- package/dist/{core → cjs/core}/checks/git/merge-conflict.js +15 -15
- package/dist/{core → cjs/core}/checks/git/missing-tests.d.ts +1 -1
- package/dist/{core → cjs/core}/checks/git/missing-tests.js +15 -15
- package/dist/{core → cjs/core}/checks/git/todo-fixme.d.ts +1 -1
- package/dist/{core → cjs/core}/checks/git/todo-fixme.js +11 -11
- package/dist/{core → cjs/core}/checks/languages/cpp-format.d.ts +1 -1
- package/dist/{core → cjs/core}/checks/languages/cpp-format.js +18 -18
- package/dist/{core → cjs/core}/checks/languages/external-checks.d.ts +9 -9
- package/dist/{core → cjs/core}/checks/languages/external-checks.js +10 -10
- package/dist/{core → cjs/core}/checks/languages/external-runner.d.ts +2 -2
- package/dist/{core → cjs/core}/checks/languages/external-runner.js +21 -21
- package/dist/{core → cjs/core}/checks/languages/go-format.d.ts +1 -1
- package/dist/{core → cjs/core}/checks/languages/go-format.js +21 -21
- package/dist/cjs/core/checks/languages/lint.d.ts +2 -0
- package/dist/{core → cjs/core}/checks/languages/lint.js +21 -21
- package/dist/{core → cjs/core}/checks/languages/prettier.d.ts +1 -1
- package/dist/{core → cjs/core}/checks/languages/prettier.js +18 -18
- package/dist/{core → cjs/core}/checks/languages/python-format.d.ts +1 -1
- package/dist/{core → cjs/core}/checks/languages/python-format.js +14 -14
- package/dist/{core → cjs/core}/checks/languages/python-lint.d.ts +1 -1
- package/dist/{core → cjs/core}/checks/languages/python-lint.js +13 -13
- package/dist/{core → cjs/core}/checks/languages/python-typecheck.d.ts +1 -1
- package/dist/{core → cjs/core}/checks/languages/python-typecheck.js +29 -29
- package/dist/{core → cjs/core}/checks/languages/typecheck.d.ts +1 -1
- package/dist/{core → cjs/core}/checks/languages/typecheck.js +13 -13
- package/dist/{core → cjs/core}/checks/pr/commitlint.d.ts +1 -1
- package/dist/{core → cjs/core}/checks/pr/commitlint.js +12 -12
- package/dist/{core → cjs/core}/checks/pr/pr-body.d.ts +1 -1
- package/dist/{core → cjs/core}/checks/pr/pr-body.js +8 -8
- package/dist/{core → cjs/core}/checks/pr/pr-size-check.d.ts +1 -1
- package/dist/{core → cjs/core}/checks/pr/pr-size-check.js +10 -10
- package/dist/{core → cjs/core}/checks/pr/pr-title-lint.d.ts +1 -1
- package/dist/{core → cjs/core}/checks/pr/pr-title-lint.js +8 -8
- package/dist/{core → cjs/core}/checks/quality/case-collision.d.ts +1 -1
- package/dist/{core → cjs/core}/checks/quality/case-collision.js +7 -7
- package/dist/{core → cjs/core}/checks/quality/config-validation.d.ts +1 -1
- package/dist/{core → cjs/core}/checks/quality/config-validation.js +9 -9
- package/dist/{core → cjs/core}/checks/quality/coverage.d.ts +1 -1
- package/dist/{core → cjs/core}/checks/quality/coverage.js +4 -4
- package/dist/{core → cjs/core}/checks/quality/dead-code.d.ts +1 -1
- package/dist/{core → cjs/core}/checks/quality/dead-code.js +23 -23
- package/dist/{core → cjs/core}/checks/quality/duplicate-check.d.ts +1 -1
- package/dist/{core → cjs/core}/checks/quality/duplicate-check.js +22 -22
- package/dist/{core → cjs/core}/checks/quality/license-header.d.ts +1 -1
- package/dist/{core → cjs/core}/checks/quality/license-header.js +16 -16
- package/dist/{core → cjs/core}/checks/quality/markdown-lint.d.ts +1 -1
- package/dist/cjs/core/checks/quality/markdown-lint.js +147 -0
- package/dist/{core → cjs/core}/checks/quality/package-size.d.ts +1 -1
- package/dist/{core → cjs/core}/checks/quality/package-size.js +12 -12
- package/dist/{core → cjs/core}/checks/quality/spellcheck.d.ts +2 -2
- package/dist/{core → cjs/core}/checks/quality/spellcheck.js +18 -18
- package/dist/{core → cjs/core}/checks/quality/symlinks.d.ts +1 -1
- package/dist/{core → cjs/core}/checks/quality/symlinks.js +8 -8
- package/dist/{core → cjs/core}/checks/quality/yaml-lint.d.ts +1 -1
- package/dist/{core → cjs/core}/checks/quality/yaml-lint.js +12 -12
- package/dist/{core → cjs/core}/checks/security/diff-security.d.ts +1 -1
- package/dist/{core → cjs/core}/checks/security/diff-security.js +15 -15
- package/dist/{core → cjs/core}/checks/security/dockerfile-security.d.ts +1 -1
- package/dist/{core → cjs/core}/checks/security/dockerfile-security.js +16 -16
- package/dist/{core → cjs/core}/checks/security/migration-safety.d.ts +1 -1
- package/dist/{core → cjs/core}/checks/security/migration-safety.js +17 -17
- package/dist/{core → cjs/core}/checks/security/security.d.ts +1 -1
- package/dist/{core → cjs/core}/checks/security/security.js +21 -21
- package/dist/{core → cjs/core}/checks/security/sensitive-file-guard.d.ts +1 -1
- package/dist/{core → cjs/core}/checks/security/sensitive-file-guard.js +14 -14
- package/dist/{core → cjs/core}/checks/security/workflow-security.d.ts +2 -2
- package/dist/{core → cjs/core}/checks/security/workflow-security.js +14 -14
- package/dist/{core → cjs/core}/checks/tool-install.d.ts +1 -1
- package/dist/{core → cjs/core}/checks/tool-install.js +2 -2
- package/dist/{core → cjs/core}/context.d.ts +1 -1
- package/dist/{core → cjs/core}/context.js +16 -16
- package/dist/cjs/core/index.d.ts +4 -0
- package/dist/{core → cjs/core}/index.js +7 -7
- package/dist/{core → cjs/core}/install/cache.js +2 -2
- package/dist/{core → cjs/core}/install/doctor.d.ts +4 -4
- package/dist/{core → cjs/core}/install/doctor.js +34 -34
- package/dist/{core → cjs/core}/install/ensure.d.ts +2 -2
- package/dist/{core → cjs/core}/install/ensure.js +15 -14
- package/dist/{core → cjs/core}/install/lock.js +4 -4
- package/dist/{core → cjs/core}/install/prepare.d.ts +4 -4
- package/dist/{core → cjs/core}/install/prepare.js +13 -13
- package/dist/{core → cjs/core}/install/profiles.d.ts +2 -2
- package/dist/{core → cjs/core}/install/profiles.js +1 -1
- package/dist/{core → cjs/core}/install/reuse.d.ts +1 -1
- package/dist/{core → cjs/core}/install/reuse.js +4 -4
- package/dist/{core → cjs/core}/registry.d.ts +1 -1
- package/dist/cjs/core/registry.js +112 -0
- package/dist/{core → cjs/core}/reporters.d.ts +1 -1
- package/dist/{core → cjs/core}/reporters.js +28 -28
- package/dist/{core → cjs/core}/run-checks.d.ts +2 -2
- package/dist/{core → cjs/core}/run-checks.js +31 -31
- package/dist/{core → cjs/core}/targets.d.ts +1 -1
- package/dist/{core → cjs/core}/targets.js +20 -20
- package/dist/{core → cjs/core}/types.d.ts +3 -3
- package/dist/cjs/index.d.ts +12 -0
- package/dist/{index.js → cjs/index.js} +18 -18
- package/dist/{init.js → cjs/init.js} +68 -56
- package/dist/{interfaces → cjs/interfaces}/index.d.ts +3 -3
- package/dist/cjs/package.json +1 -0
- package/dist/{scripts → cjs/scripts}/copy-configs.js +22 -7
- package/dist/{scripts → cjs/scripts}/generate-install-manifests.js +2 -2
- package/dist/{scripts → cjs/scripts}/publish-github.js +4 -4
- package/dist/{utils → cjs/utils}/detect-language.js +12 -12
- package/dist/{utils → cjs/utils}/git.js +2 -2
- package/dist/{utils → cjs/utils}/http.js +2 -2
- package/dist/cjs/utils/index.d.ts +15 -0
- package/dist/{utils → cjs/utils}/index.js +13 -13
- package/dist/{utils → cjs/utils}/own-deps.d.ts +2 -0
- package/dist/{utils → cjs/utils}/own-deps.js +1 -0
- package/dist/{utils → cjs/utils}/package-version.js +2 -1
- package/dist/{utils → cjs/utils}/resolve-bin.js +2 -1
- package/dist/{utils → cjs/utils}/update-notifier.js +4 -4
- package/dist/esm/cli.d.ts +2 -0
- package/dist/esm/cli.js +137 -0
- package/dist/esm/config/constants.d.ts +153 -0
- package/dist/esm/config/constants.js +360 -0
- package/dist/esm/config/index.d.ts +40 -0
- package/dist/esm/config/index.js +60 -0
- package/dist/esm/config/loader.d.ts +6 -0
- package/dist/esm/config/loader.js +191 -0
- package/dist/esm/config/pr-checkmate-workflow-docker.yml +79 -0
- package/dist/esm/config/pr-checkmate-workflow.yml +92 -0
- package/dist/esm/core/checks/dependencies/banned-imports.d.ts +2 -0
- package/dist/esm/core/checks/dependencies/banned-imports.js +70 -0
- package/dist/esm/core/checks/dependencies/circular-deps.d.ts +2 -0
- package/dist/esm/core/checks/dependencies/circular-deps.js +155 -0
- package/dist/esm/core/checks/dependencies/dependency-check.d.ts +43 -0
- package/dist/esm/core/checks/dependencies/dependency-check.js +174 -0
- package/dist/esm/core/checks/dependencies/grype-scan.d.ts +22 -0
- package/dist/esm/core/checks/dependencies/grype-scan.js +112 -0
- package/dist/esm/core/checks/dependencies/license-check.d.ts +2 -0
- package/dist/esm/core/checks/dependencies/license-check.js +61 -0
- package/dist/esm/core/checks/dependencies/npm-audit.d.ts +6 -0
- package/dist/esm/core/checks/dependencies/npm-audit.js +80 -0
- package/dist/esm/core/checks/dependencies/outdated-deps.d.ts +2 -0
- package/dist/esm/core/checks/dependencies/outdated-deps.js +66 -0
- package/dist/esm/core/checks/dependencies/vuln-scan.d.ts +2 -0
- package/dist/esm/core/checks/dependencies/vuln-scan.js +54 -0
- package/dist/esm/core/checks/findings.d.ts +299 -0
- package/dist/esm/core/checks/findings.js +701 -0
- package/dist/esm/core/checks/git/custom-rules.d.ts +2 -0
- package/dist/esm/core/checks/git/custom-rules.js +106 -0
- package/dist/esm/core/checks/git/diff-smell.d.ts +19 -0
- package/dist/esm/core/checks/git/diff-smell.js +69 -0
- package/dist/esm/core/checks/git/large-files.d.ts +2 -0
- package/dist/esm/core/checks/git/large-files.js +112 -0
- package/dist/esm/core/checks/git/leftover-debug.d.ts +2 -0
- package/dist/esm/core/checks/git/leftover-debug.js +89 -0
- package/dist/esm/core/checks/git/lockfile-drift.d.ts +2 -0
- package/dist/esm/core/checks/git/lockfile-drift.js +114 -0
- package/dist/esm/core/checks/git/merge-conflict.d.ts +2 -0
- package/dist/esm/core/checks/git/merge-conflict.js +117 -0
- package/dist/esm/core/checks/git/missing-tests.d.ts +2 -0
- package/dist/esm/core/checks/git/missing-tests.js +105 -0
- package/dist/esm/core/checks/git/todo-fixme.d.ts +7 -0
- package/dist/esm/core/checks/git/todo-fixme.js +80 -0
- package/dist/esm/core/checks/languages/cpp-format.d.ts +7 -0
- package/dist/esm/core/checks/languages/cpp-format.js +91 -0
- package/dist/esm/core/checks/languages/external-checks.d.ts +77 -0
- package/dist/esm/core/checks/languages/external-checks.js +197 -0
- package/dist/esm/core/checks/languages/external-runner.d.ts +119 -0
- package/dist/esm/core/checks/languages/external-runner.js +138 -0
- package/dist/esm/core/checks/languages/go-format.d.ts +8 -0
- package/dist/esm/core/checks/languages/go-format.js +163 -0
- package/dist/esm/core/checks/languages/lint.d.ts +2 -0
- package/dist/esm/core/checks/languages/lint.js +92 -0
- package/dist/esm/core/checks/languages/prettier.d.ts +2 -0
- package/dist/esm/core/checks/languages/prettier.js +85 -0
- package/dist/esm/core/checks/languages/python-format.d.ts +7 -0
- package/dist/esm/core/checks/languages/python-format.js +61 -0
- package/dist/esm/core/checks/languages/python-lint.d.ts +9 -0
- package/dist/esm/core/checks/languages/python-lint.js +55 -0
- package/dist/esm/core/checks/languages/python-typecheck.d.ts +14 -0
- package/dist/esm/core/checks/languages/python-typecheck.js +184 -0
- package/dist/esm/core/checks/languages/ruff-shared.d.ts +10 -0
- package/dist/esm/core/checks/languages/ruff-shared.js +35 -0
- package/dist/esm/core/checks/languages/typecheck.d.ts +2 -0
- package/dist/esm/core/checks/languages/typecheck.js +61 -0
- package/dist/esm/core/checks/pr/commitlint.d.ts +2 -0
- package/dist/esm/core/checks/pr/commitlint.js +102 -0
- package/dist/esm/core/checks/pr/pr-body.d.ts +2 -0
- package/dist/esm/core/checks/pr/pr-body.js +43 -0
- package/dist/esm/core/checks/pr/pr-size-check.d.ts +2 -0
- package/dist/esm/core/checks/pr/pr-size-check.js +42 -0
- package/dist/esm/core/checks/pr/pr-title-lint.d.ts +2 -0
- package/dist/esm/core/checks/pr/pr-title-lint.js +31 -0
- package/dist/esm/core/checks/quality/case-collision.d.ts +8 -0
- package/dist/esm/core/checks/quality/case-collision.js +39 -0
- package/dist/esm/core/checks/quality/config-validation.d.ts +11 -0
- package/dist/esm/core/checks/quality/config-validation.js +188 -0
- package/dist/esm/core/checks/quality/coverage.d.ts +2 -0
- package/dist/esm/core/checks/quality/coverage.js +62 -0
- package/dist/esm/core/checks/quality/dead-code.d.ts +2 -0
- package/dist/esm/core/checks/quality/dead-code.js +124 -0
- package/dist/esm/core/checks/quality/duplicate-check.d.ts +2 -0
- package/dist/esm/core/checks/quality/duplicate-check.js +141 -0
- package/dist/esm/core/checks/quality/license-header.d.ts +7 -0
- package/dist/esm/core/checks/quality/license-header.js +81 -0
- package/dist/esm/core/checks/quality/markdown-lint.d.ts +2 -0
- package/dist/esm/core/checks/quality/markdown-lint.js +141 -0
- package/dist/esm/core/checks/quality/package-size.d.ts +36 -0
- package/dist/esm/core/checks/quality/package-size.js +196 -0
- package/dist/esm/core/checks/quality/spellcheck.d.ts +77 -0
- package/dist/esm/core/checks/quality/spellcheck.js +296 -0
- package/dist/esm/core/checks/quality/symlinks.d.ts +16 -0
- package/dist/esm/core/checks/quality/symlinks.js +57 -0
- package/dist/esm/core/checks/quality/yaml-lint.d.ts +20 -0
- package/dist/esm/core/checks/quality/yaml-lint.js +116 -0
- package/dist/esm/core/checks/security/diff-security.d.ts +2 -0
- package/dist/esm/core/checks/security/diff-security.js +354 -0
- package/dist/esm/core/checks/security/dockerfile-security.d.ts +2 -0
- package/dist/esm/core/checks/security/dockerfile-security.js +98 -0
- package/dist/esm/core/checks/security/migration-safety.d.ts +2 -0
- package/dist/esm/core/checks/security/migration-safety.js +137 -0
- package/dist/esm/core/checks/security/security.d.ts +63 -0
- package/dist/esm/core/checks/security/security.js +201 -0
- package/dist/esm/core/checks/security/sensitive-file-guard.d.ts +2 -0
- package/dist/esm/core/checks/security/sensitive-file-guard.js +160 -0
- package/dist/esm/core/checks/security/workflow-security.d.ts +12 -0
- package/dist/esm/core/checks/security/workflow-security.js +100 -0
- package/dist/esm/core/checks/tool-install.d.ts +102 -0
- package/dist/esm/core/checks/tool-install.js +66 -0
- package/dist/esm/core/commands.d.ts +27 -0
- package/dist/esm/core/commands.js +89 -0
- package/dist/esm/core/context.d.ts +62 -0
- package/dist/esm/core/context.js +241 -0
- package/dist/esm/core/index.d.ts +4 -0
- package/dist/esm/core/index.js +4 -0
- package/dist/esm/core/install/cache.d.ts +58 -0
- package/dist/esm/core/install/cache.js +142 -0
- package/dist/esm/core/install/doctor.d.ts +35 -0
- package/dist/esm/core/install/doctor.js +164 -0
- package/dist/esm/core/install/ensure.d.ts +77 -0
- package/dist/esm/core/install/ensure.js +269 -0
- package/dist/esm/core/install/lock.d.ts +34 -0
- package/dist/esm/core/install/lock.js +92 -0
- package/dist/esm/core/install/merge.d.ts +47 -0
- package/dist/esm/core/install/merge.js +85 -0
- package/dist/esm/core/install/prepare.d.ts +76 -0
- package/dist/esm/core/install/prepare.js +142 -0
- package/dist/esm/core/install/profiles.d.ts +78 -0
- package/dist/esm/core/install/profiles.js +192 -0
- package/dist/esm/core/install/reuse.d.ts +41 -0
- package/dist/esm/core/install/reuse.js +100 -0
- package/dist/esm/core/registry.d.ts +6 -0
- package/dist/esm/core/registry.js +109 -0
- package/dist/esm/core/reporters.d.ts +18 -0
- package/dist/esm/core/reporters.js +266 -0
- package/dist/esm/core/run-checks.d.ts +33 -0
- package/dist/esm/core/run-checks.js +293 -0
- package/dist/esm/core/targets.d.ts +140 -0
- package/dist/esm/core/targets.js +213 -0
- package/dist/esm/core/types.d.ts +195 -0
- package/dist/esm/core/types.js +38 -0
- package/dist/esm/index.d.ts +12 -0
- package/dist/esm/index.js +15 -0
- package/dist/esm/init.d.ts +38 -0
- package/dist/esm/init.js +421 -0
- package/dist/esm/interfaces/index.d.ts +432 -0
- package/dist/esm/interfaces/index.js +2 -0
- package/dist/esm/package.json +1 -0
- package/dist/esm/scripts/copy-configs.d.ts +1 -0
- package/dist/esm/scripts/copy-configs.js +64 -0
- package/dist/esm/scripts/generate-install-manifests.d.ts +39 -0
- package/dist/esm/scripts/generate-install-manifests.js +115 -0
- package/dist/esm/scripts/publish-github.d.ts +1 -0
- package/dist/esm/scripts/publish-github.js +45 -0
- package/dist/esm/utils/ci.d.ts +11 -0
- package/dist/esm/utils/ci.js +40 -0
- package/dist/esm/utils/detect-language.d.ts +48 -0
- package/dist/esm/utils/detect-language.js +234 -0
- package/dist/esm/utils/direct-deps.d.ts +21 -0
- package/dist/esm/utils/direct-deps.js +220 -0
- package/dist/esm/utils/execa.d.ts +22 -0
- package/dist/esm/utils/execa.js +10 -0
- package/dist/esm/utils/git.d.ts +14 -0
- package/dist/esm/utils/git.js +21 -0
- package/dist/esm/utils/glob.d.ts +24 -0
- package/dist/esm/utils/glob.js +40 -0
- package/dist/esm/utils/http.d.ts +59 -0
- package/dist/esm/utils/http.js +115 -0
- package/dist/esm/utils/index.d.ts +15 -0
- package/dist/esm/utils/index.js +26 -0
- package/dist/esm/utils/logger.d.ts +65 -0
- package/dist/esm/utils/logger.js +157 -0
- package/dist/esm/utils/own-deps.d.ts +16 -0
- package/dist/esm/utils/own-deps.js +107 -0
- package/dist/esm/utils/package-version.d.ts +4 -0
- package/dist/esm/utils/package-version.js +38 -0
- package/dist/esm/utils/pool.d.ts +49 -0
- package/dist/esm/utils/pool.js +113 -0
- package/dist/esm/utils/resolve-bin.d.ts +67 -0
- package/dist/esm/utils/resolve-bin.js +156 -0
- package/dist/esm/utils/result-collector.d.ts +33 -0
- package/dist/esm/utils/result-collector.js +44 -0
- package/dist/esm/utils/update-notifier.d.ts +19 -0
- package/dist/esm/utils/update-notifier.js +108 -0
- package/install-manifests/core/package-lock.json +4 -4
- package/install-manifests/core/package.json +1 -1
- package/install-manifests/duplicate/package-lock.json +0 -12
- package/install-manifests/js/package-lock.json +17 -41
- package/install-manifests/js/package.json +1 -1
- package/install-manifests/markdown/package-lock.json +1 -492
- package/install-manifests/markdown/package.json +1 -1
- package/package.json +17 -15
- package/dist/core/checks/languages/lint.d.ts +0 -2
- package/dist/core/checks/quality/markdown-lint.js +0 -110
- package/dist/core/index.d.ts +0 -4
- package/dist/core/registry.js +0 -112
- package/dist/index.d.ts +0 -12
- package/dist/utils/index.d.ts +0 -15
- /package/dist/{cli.d.ts → cjs/cli.d.ts} +0 -0
- /package/dist/{config → cjs/config}/constants.d.ts +0 -0
- /package/dist/{config → cjs/config}/constants.js +0 -0
- /package/dist/{config → cjs/config}/pr-checkmate-workflow-docker.yml +0 -0
- /package/dist/{config → cjs/config}/pr-checkmate-workflow.yml +0 -0
- /package/dist/{core → cjs/core}/checks/languages/ruff-shared.d.ts +0 -0
- /package/dist/{core → cjs/core}/checks/languages/ruff-shared.js +0 -0
- /package/dist/{core → cjs/core}/commands.d.ts +0 -0
- /package/dist/{core → cjs/core}/commands.js +0 -0
- /package/dist/{core → cjs/core}/install/cache.d.ts +0 -0
- /package/dist/{core → cjs/core}/install/lock.d.ts +0 -0
- /package/dist/{core → cjs/core}/install/merge.d.ts +0 -0
- /package/dist/{core → cjs/core}/install/merge.js +0 -0
- /package/dist/{core → cjs/core}/types.js +0 -0
- /package/dist/{init.d.ts → cjs/init.d.ts} +0 -0
- /package/dist/{interfaces → cjs/interfaces}/index.js +0 -0
- /package/dist/{scripts → cjs/scripts}/copy-configs.d.ts +0 -0
- /package/dist/{scripts → cjs/scripts}/generate-install-manifests.d.ts +0 -0
- /package/dist/{scripts → cjs/scripts}/publish-github.d.ts +0 -0
- /package/dist/{utils → cjs/utils}/ci.d.ts +0 -0
- /package/dist/{utils → cjs/utils}/ci.js +0 -0
- /package/dist/{utils → cjs/utils}/detect-language.d.ts +0 -0
- /package/dist/{utils → cjs/utils}/direct-deps.d.ts +0 -0
- /package/dist/{utils → cjs/utils}/direct-deps.js +0 -0
- /package/dist/{utils → cjs/utils}/execa.d.ts +0 -0
- /package/dist/{utils → cjs/utils}/execa.js +0 -0
- /package/dist/{utils → cjs/utils}/git.d.ts +0 -0
- /package/dist/{utils → cjs/utils}/glob.d.ts +0 -0
- /package/dist/{utils → cjs/utils}/glob.js +0 -0
- /package/dist/{utils → cjs/utils}/http.d.ts +0 -0
- /package/dist/{utils → cjs/utils}/logger.d.ts +0 -0
- /package/dist/{utils → cjs/utils}/logger.js +0 -0
- /package/dist/{utils → cjs/utils}/package-version.d.ts +0 -0
- /package/dist/{utils → cjs/utils}/pool.d.ts +0 -0
- /package/dist/{utils → cjs/utils}/pool.js +0 -0
- /package/dist/{utils → cjs/utils}/resolve-bin.d.ts +0 -0
- /package/dist/{utils → cjs/utils}/result-collector.d.ts +0 -0
- /package/dist/{utils → cjs/utils}/result-collector.js +0 -0
- /package/dist/{utils → cjs/utils}/update-notifier.d.ts +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Check } from '../../types';
|
|
1
|
+
import { Check } from '../../types.js';
|
|
2
2
|
export declare const largeFilesCheck: Check;
|
|
@@ -6,11 +6,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.largeFilesCheck = void 0;
|
|
7
7
|
const node_fs_1 = __importDefault(require("node:fs"));
|
|
8
8
|
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
9
|
+
const execa_js_1 = require("../../../utils/execa.js");
|
|
10
|
+
const index_js_1 = require("../../../utils/index.js");
|
|
11
|
+
const targets_js_1 = require("../../targets.js");
|
|
12
|
+
const types_js_1 = require("../../types.js");
|
|
13
|
+
const findings_js_1 = require("../findings.js");
|
|
14
14
|
const DEFAULT_MAX_KB = 500;
|
|
15
15
|
/**
|
|
16
16
|
* Lockfiles are legitimately large and always generated, never accidental — so
|
|
@@ -65,16 +65,16 @@ exports.largeFilesCheck = {
|
|
|
65
65
|
// large files anywhere in the repo — a root-level asset is exactly the case
|
|
66
66
|
// a narrowed `sourcePath` would miss — but still skip `ignoreDirs`
|
|
67
67
|
// (dist/build/vendor), where large generated files are expected.
|
|
68
|
-
const files = await (0,
|
|
68
|
+
const files = await (0, targets_js_1.resolveTargetFiles)(ctx, ['*']);
|
|
69
69
|
if (files === null)
|
|
70
|
-
return (0,
|
|
70
|
+
return (0, types_js_1.skip)('git unavailable');
|
|
71
71
|
if (files.length === 0)
|
|
72
|
-
return (0,
|
|
72
|
+
return (0, types_js_1.pass)();
|
|
73
73
|
const maxKb = ctx.config.largeFiles?.maxSizeKb ?? DEFAULT_MAX_KB;
|
|
74
74
|
const maxBytes = maxKb * 1024;
|
|
75
75
|
const allow = [...LOCKFILE_ALLOW, ...(ctx.config.largeFiles?.allow ?? [])];
|
|
76
76
|
if (!ctx.baseSha && ctx.config.run?.fullScanBehaviour === 'skip')
|
|
77
|
-
return (0,
|
|
77
|
+
return (0, types_js_1.pass)();
|
|
78
78
|
let binary;
|
|
79
79
|
try {
|
|
80
80
|
// `--numstat` reports `-\t-` for binary files. With no range there is
|
|
@@ -83,16 +83,16 @@ exports.largeFilesCheck = {
|
|
|
83
83
|
const args = ctx.baseSha
|
|
84
84
|
? ['diff', '--numstat', '--diff-filter=ACM', ctx.baseSha, ctx.headSha ?? 'HEAD']
|
|
85
85
|
: null;
|
|
86
|
-
const { stdout } = args ? await (0,
|
|
86
|
+
const { stdout } = args ? await (0, execa_js_1.execa)('git', args, { cwd: ctx.cwd }) : { stdout: '' };
|
|
87
87
|
binary = binaryPaths(stdout);
|
|
88
88
|
}
|
|
89
89
|
catch (err) {
|
|
90
|
-
|
|
91
|
-
return (0,
|
|
90
|
+
index_js_1.logger.warn(`[Large Files]: ⚠️ Could not analyze diff\n${err}`);
|
|
91
|
+
return (0, types_js_1.skip)('diff unavailable');
|
|
92
92
|
}
|
|
93
93
|
const findings = [];
|
|
94
94
|
for (const file of files) {
|
|
95
|
-
if ((0,
|
|
95
|
+
if ((0, index_js_1.matchesAnyGlob)(file, allow))
|
|
96
96
|
continue;
|
|
97
97
|
let size;
|
|
98
98
|
try {
|
|
@@ -110,8 +110,8 @@ exports.largeFilesCheck = {
|
|
|
110
110
|
findings.push(`${file} (${reasons.join(', ')})`);
|
|
111
111
|
}
|
|
112
112
|
if (findings.length === 0)
|
|
113
|
-
return (0,
|
|
114
|
-
const sev = (0,
|
|
113
|
+
return (0, types_js_1.pass)();
|
|
114
|
+
const sev = (0, findings_js_1.severityEmitter)(ctx.config.largeFiles?.severity, 'warn');
|
|
115
115
|
findings.forEach(f => sev.log(`[Large Files]: ${sev.icon} ${f}`));
|
|
116
116
|
return sev.emit(`${findings.length} large/binary file(s) added`);
|
|
117
117
|
},
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Check } from '../../types';
|
|
1
|
+
import { Check } from '../../types.js';
|
|
2
2
|
export declare const leftoverDebugCheck: Check;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.leftoverDebugCheck = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
4
|
+
const index_js_1 = require("../../../utils/index.js");
|
|
5
|
+
const types_js_1 = require("../../types.js");
|
|
6
|
+
const findings_js_1 = require("../findings.js");
|
|
7
7
|
/**
|
|
8
8
|
* Debug statements for languages NOT already covered by the Diff Smells check
|
|
9
9
|
* (which handles `console.*`/`debugger` for JS/TS). Kept separate so the two
|
|
@@ -35,7 +35,7 @@ function collect(stdout, patterns, findings, mode = 'language') {
|
|
|
35
35
|
for (const line of stdout.split('\n')) {
|
|
36
36
|
const header = DIFF_FILE_HEADER.exec(line);
|
|
37
37
|
if (header) {
|
|
38
|
-
syntax = mode === 'language' ? (0,
|
|
38
|
+
syntax = mode === 'language' ? (0, findings_js_1.commentSyntaxFor)(header[1]) : 'both';
|
|
39
39
|
continue;
|
|
40
40
|
}
|
|
41
41
|
// Honour an inline opt-out in any comment style (`// pr-checkmate-ignore`,
|
|
@@ -43,7 +43,7 @@ function collect(stdout, patterns, findings, mode = 'language') {
|
|
|
43
43
|
if (line.includes('pr-checkmate-ignore'))
|
|
44
44
|
continue;
|
|
45
45
|
// Match on the comment-stripped line so `# print(x)` in a comment isn't flagged.
|
|
46
|
-
const scanned = mode === 'off' ? line : (0,
|
|
46
|
+
const scanned = mode === 'off' ? line : (0, findings_js_1.stripInlineComment)(line, syntax);
|
|
47
47
|
for (const { pattern, label } of patterns) {
|
|
48
48
|
if (pattern.test(scanned)) {
|
|
49
49
|
(findings[label] ?? (findings[label] = [])).push(line.slice(1).trim().substring(0, 100));
|
|
@@ -67,26 +67,26 @@ exports.leftoverDebugCheck = {
|
|
|
67
67
|
let reviewed = true;
|
|
68
68
|
if (ctx.languages.includes('python')) {
|
|
69
69
|
reviewed =
|
|
70
|
-
(await (0,
|
|
70
|
+
(await (0, findings_js_1.reviewLines)(ctx, ['*.py'], out => collect(out, PYTHON_PATTERNS, findings, comments))) && reviewed;
|
|
71
71
|
}
|
|
72
72
|
if (ctx.languages.includes('kotlin')) {
|
|
73
73
|
reviewed =
|
|
74
|
-
(await (0,
|
|
74
|
+
(await (0, findings_js_1.reviewLines)(ctx, ['*.kt', '*.kts', '*.java'], out => collect(out, KOTLIN_PATTERNS, findings, comments))) && reviewed;
|
|
75
75
|
}
|
|
76
76
|
if (!reviewed)
|
|
77
|
-
return (0,
|
|
78
|
-
if ((0,
|
|
79
|
-
return (0,
|
|
77
|
+
return (0, types_js_1.skip)('git unavailable');
|
|
78
|
+
if ((0, findings_js_1.bucketTotal)(findings) === 0)
|
|
79
|
+
return (0, types_js_1.pass)();
|
|
80
80
|
// Advisory by default; a repo may promote to a gate via
|
|
81
81
|
// `leftoverDebug.severity: 'error'`.
|
|
82
|
-
return (0,
|
|
82
|
+
return (0, findings_js_1.reportCountedFindings)(findings, ctx, {
|
|
83
83
|
prefix: 'Leftover Debug',
|
|
84
84
|
severity: ctx.config.leftoverDebug?.severity,
|
|
85
85
|
});
|
|
86
86
|
}
|
|
87
87
|
catch (err) {
|
|
88
|
-
|
|
89
|
-
return (0,
|
|
88
|
+
index_js_1.logger.warn(`[Leftover Debug]: ⚠️ Could not analyze diff\n${err}`);
|
|
89
|
+
return (0, types_js_1.skip)('diff unavailable');
|
|
90
90
|
}
|
|
91
91
|
},
|
|
92
92
|
};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Check } from '../../types';
|
|
1
|
+
import { Check } from '../../types.js';
|
|
2
2
|
export declare const lockfileDriftCheck: Check;
|
|
@@ -6,11 +6,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.lockfileDriftCheck = void 0;
|
|
7
7
|
const node_fs_1 = __importDefault(require("node:fs"));
|
|
8
8
|
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
9
|
+
const execa_js_1 = require("../../../utils/execa.js");
|
|
10
|
+
const index_js_1 = require("../../../utils/index.js");
|
|
11
|
+
const targets_js_1 = require("../../targets.js");
|
|
12
|
+
const types_js_1 = require("../../types.js");
|
|
13
|
+
const findings_js_1 = require("../findings.js");
|
|
14
14
|
/**
|
|
15
15
|
* Manifest → its lockfile(s). A change to the manifest's dependency set without
|
|
16
16
|
* a corresponding lockfile update is drift: CI resolves versions the author
|
|
@@ -55,7 +55,7 @@ async function packageDepsChanged(ctx, manifestPath, base) {
|
|
|
55
55
|
// Head file unreadable (e.g. deleted) — treat as changed so it surfaces.
|
|
56
56
|
return true;
|
|
57
57
|
}
|
|
58
|
-
const { stdout, exitCode } = await (0,
|
|
58
|
+
const { stdout, exitCode } = await (0, execa_js_1.execa)('git', ['show', `${base}:${manifestPath}`], {
|
|
59
59
|
cwd: ctx.cwd,
|
|
60
60
|
reject: false,
|
|
61
61
|
});
|
|
@@ -78,14 +78,14 @@ exports.lockfileDriftCheck = {
|
|
|
78
78
|
// `excludePaths` is still applied, below: not scoping is an argument about
|
|
79
79
|
// WHERE these files live, not a licence to ignore a client who named one
|
|
80
80
|
// (ticket 080). A vendored sub-project's lockfile is a real case.
|
|
81
|
-
const { stdout } = await (0,
|
|
81
|
+
const { stdout } = await (0, execa_js_1.execa)('git', [
|
|
82
82
|
'diff',
|
|
83
83
|
'--name-only',
|
|
84
84
|
'--diff-filter=ACMRD',
|
|
85
85
|
ctx.baseSha,
|
|
86
86
|
ctx.headSha ?? 'HEAD',
|
|
87
87
|
], { cwd: ctx.cwd });
|
|
88
|
-
const changed = new Set((0,
|
|
88
|
+
const changed = new Set((0, targets_js_1.excludeClientPaths)(stdout.split('\n').filter(Boolean), ctx.cwd));
|
|
89
89
|
const warnings = [];
|
|
90
90
|
for (const changedPath of changed) {
|
|
91
91
|
const pair = LOCK_PAIRS.find(p => p.manifest === node_path_1.default.basename(changedPath));
|
|
@@ -107,14 +107,14 @@ exports.lockfileDriftCheck = {
|
|
|
107
107
|
}
|
|
108
108
|
}
|
|
109
109
|
if (warnings.length === 0)
|
|
110
|
-
return (0,
|
|
111
|
-
const sev = (0,
|
|
110
|
+
return (0, types_js_1.pass)();
|
|
111
|
+
const sev = (0, findings_js_1.severityEmitter)(ctx.config.lockfileDrift?.severity, 'warn');
|
|
112
112
|
warnings.forEach(w => sev.log(`[Lockfile Drift]: ${sev.icon} ${w}`));
|
|
113
113
|
return sev.emit(`${warnings.length} manifest(s) changed without a lockfile update`);
|
|
114
114
|
}
|
|
115
115
|
catch (err) {
|
|
116
|
-
|
|
117
|
-
return (0,
|
|
116
|
+
index_js_1.logger.warn(`[Lockfile Drift]: ⚠️ Could not analyze diff\n${err}`);
|
|
117
|
+
return (0, types_js_1.skip)('diff unavailable');
|
|
118
118
|
}
|
|
119
119
|
},
|
|
120
120
|
};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Check } from '../../types';
|
|
1
|
+
import { Check } from '../../types.js';
|
|
2
2
|
export declare const mergeConflictCheck: Check;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.mergeConflictCheck = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
4
|
+
const index_js_1 = require("../../../config/index.js");
|
|
5
|
+
const execa_js_1 = require("../../../utils/execa.js");
|
|
6
|
+
const index_js_2 = require("../../../utils/index.js");
|
|
7
|
+
const targets_js_1 = require("../../targets.js");
|
|
8
|
+
const types_js_1 = require("../../types.js");
|
|
9
|
+
const findings_js_1 = require("../findings.js");
|
|
10
10
|
/**
|
|
11
11
|
* Git conflict markers, matched against the content of an added diff line
|
|
12
12
|
* (the leading `+` already stripped). Each is exactly seven characters at the
|
|
@@ -82,26 +82,26 @@ exports.mergeConflictCheck = {
|
|
|
82
82
|
// client's `ignoreDirs` and `sourcePath`), then diff only those files for
|
|
83
83
|
// content. `['*']` matches every path since conflicts are language-agnostic;
|
|
84
84
|
// scoping still keeps build/vendor/report dirs out, like every other check.
|
|
85
|
-
const files = await (0,
|
|
85
|
+
const files = await (0, targets_js_1.resolveScopedTargetFiles)(ctx, ['*'], (0, index_js_1.getSourcePaths)(ctx.cwd));
|
|
86
86
|
if (files === null)
|
|
87
|
-
return (0,
|
|
87
|
+
return (0, types_js_1.skip)('git unavailable');
|
|
88
88
|
if (files.length === 0)
|
|
89
|
-
return (0,
|
|
89
|
+
return (0, types_js_1.pass)();
|
|
90
90
|
try {
|
|
91
91
|
const hits = [];
|
|
92
92
|
if (ctx.baseSha) {
|
|
93
|
-
const { stdout } = await (0,
|
|
93
|
+
const { stdout } = await (0, execa_js_1.execa)('git', ['diff', '--unified=0', ctx.baseSha, ctx.headSha ?? 'HEAD', '--', ...files], { cwd: ctx.cwd });
|
|
94
94
|
hits.push(...scanDiff(stdout));
|
|
95
95
|
}
|
|
96
96
|
else if (ctx.config.run?.fullScanBehaviour !== 'skip') {
|
|
97
|
-
await (0,
|
|
97
|
+
await (0, findings_js_1.scanTrackedFiles)(ctx, files, asDiff => hits.push(...scanDiff(asDiff)));
|
|
98
98
|
}
|
|
99
99
|
const found = filterHits(hits);
|
|
100
100
|
if (found.length === 0)
|
|
101
|
-
return (0,
|
|
101
|
+
return (0, types_js_1.pass)();
|
|
102
102
|
// Conflict markers are a hard error by default; a repo may downgrade to
|
|
103
103
|
// `warn` via `mergeConflict.severity`.
|
|
104
|
-
const sev = (0,
|
|
104
|
+
const sev = (0, findings_js_1.severityEmitter)(ctx.config.mergeConflict?.severity, 'error');
|
|
105
105
|
for (const h of found) {
|
|
106
106
|
sev.log(`[Merge Conflict]: ${sev.icon} ${h.file}:${h.line}`);
|
|
107
107
|
}
|
|
@@ -113,8 +113,8 @@ exports.mergeConflictCheck = {
|
|
|
113
113
|
return sev.emit(` unresolved conflict marker(s): ${sample}${more}`);
|
|
114
114
|
}
|
|
115
115
|
catch (err) {
|
|
116
|
-
|
|
117
|
-
return (0,
|
|
116
|
+
index_js_2.logger.warn(`[Merge Conflict]: ⚠️ Could not analyze diff\n${err}`);
|
|
117
|
+
return (0, types_js_1.skip)('diff unavailable');
|
|
118
118
|
}
|
|
119
119
|
},
|
|
120
120
|
};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Check } from '../../types';
|
|
1
|
+
import { Check } from '../../types.js';
|
|
2
2
|
export declare const missingTestsCheck: Check;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.missingTestsCheck = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
4
|
+
const index_js_1 = require("../../../config/index.js");
|
|
5
|
+
const execa_js_1 = require("../../../utils/execa.js");
|
|
6
|
+
const index_js_2 = require("../../../utils/index.js");
|
|
7
|
+
const targets_js_1 = require("../../targets.js");
|
|
8
|
+
const types_js_1 = require("../../types.js");
|
|
9
|
+
const findings_js_1 = require("../findings.js");
|
|
10
10
|
/** Source-file extensions across the supported languages. */
|
|
11
11
|
const SOURCE_EXT = /\.(ts|tsx|js|jsx|mjs|cjs|py|kt|kts|java|swift|cpp|cc|cxx|c|h|hpp|go|rb)$/i;
|
|
12
12
|
/** Test-file conventions across languages. */
|
|
@@ -45,14 +45,14 @@ exports.missingTestsCheck = {
|
|
|
45
45
|
async run(ctx) {
|
|
46
46
|
// Scope the same way lint does — a client's `sourcePath` and `ignoreDirs`
|
|
47
47
|
// both apply, so generated/out-of-scope dirs never count as "new source".
|
|
48
|
-
const scopedList = await (0,
|
|
48
|
+
const scopedList = await (0, targets_js_1.resolveScopedTargetFiles)(ctx, ['*'], (0, index_js_1.getSourcePaths)(ctx.cwd));
|
|
49
49
|
if (scopedList === null)
|
|
50
|
-
return (0,
|
|
50
|
+
return (0, types_js_1.skip)('git unavailable');
|
|
51
51
|
const scoped = new Set(scopedList);
|
|
52
52
|
const added = [];
|
|
53
53
|
const touched = [];
|
|
54
54
|
try {
|
|
55
|
-
const { stdout } = await (0,
|
|
55
|
+
const { stdout } = await (0, execa_js_1.execa)('git', [
|
|
56
56
|
'diff',
|
|
57
57
|
'--name-status',
|
|
58
58
|
'--diff-filter=ACM',
|
|
@@ -86,18 +86,18 @@ exports.missingTestsCheck = {
|
|
|
86
86
|
}
|
|
87
87
|
}
|
|
88
88
|
catch (err) {
|
|
89
|
-
|
|
90
|
-
return (0,
|
|
89
|
+
index_js_2.logger.warn(`[Missing Tests]: ⚠️ Could not analyze diff\n${err}`);
|
|
90
|
+
return (0, types_js_1.skip)('diff unavailable');
|
|
91
91
|
}
|
|
92
92
|
const ignore = ctx.config.missingTests?.ignore ?? DEFAULT_IGNORE;
|
|
93
|
-
const addedSource = added.filter(f => SOURCE_EXT.test(f) && !isTestFile(f) && !(0,
|
|
93
|
+
const addedSource = added.filter(f => SOURCE_EXT.test(f) && !isTestFile(f) && !(0, index_js_2.matchesAnyGlob)(f, ignore));
|
|
94
94
|
if (addedSource.length === 0)
|
|
95
|
-
return (0,
|
|
95
|
+
return (0, types_js_1.pass)(); // no new source that would need a test
|
|
96
96
|
// A test added or modified anywhere in the diff satisfies the check —
|
|
97
97
|
// `touched` only ever holds test files, collected without the source scope.
|
|
98
98
|
if (touched.length > 0)
|
|
99
|
-
return (0,
|
|
100
|
-
const sev = (0,
|
|
99
|
+
return (0, types_js_1.pass)();
|
|
100
|
+
const sev = (0, findings_js_1.severityEmitter)(ctx.config.missingTests?.severity, 'warn');
|
|
101
101
|
addedSource
|
|
102
102
|
.slice(0, 5)
|
|
103
103
|
.forEach(f => sev.log(`[Missing Tests]: ${sev.icon} new source without tests: ${f}`));
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.todoFixmeCheck = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
4
|
+
const index_js_1 = require("../../../utils/index.js");
|
|
5
|
+
const types_js_1 = require("../../types.js");
|
|
6
|
+
const findings_js_1 = require("../findings.js");
|
|
7
7
|
const DEFAULT_KEYWORDS = ['TODO', 'FIXME', 'XXX', 'HACK'];
|
|
8
8
|
/** A ticket reference in the comment: `#123` or JIRA-style `PROJ-456`. */
|
|
9
9
|
const TICKET_PATTERN = /#\d+|[A-Z][A-Z0-9]+-\d+/;
|
|
@@ -57,27 +57,27 @@ exports.todoFixmeCheck = {
|
|
|
57
57
|
if (ctx.languages.includes('python')) {
|
|
58
58
|
const pattern = buildPattern('#', keywords);
|
|
59
59
|
reviewed =
|
|
60
|
-
(await (0,
|
|
60
|
+
(await (0, findings_js_1.reviewLines)(ctx, ['*.py'], out => scan(out, pattern, requireTicket, findings))) &&
|
|
61
61
|
reviewed;
|
|
62
62
|
}
|
|
63
63
|
if (ctx.languages.includes('kotlin')) {
|
|
64
64
|
const ktPattern = buildPattern('//|/\\*', keywords);
|
|
65
65
|
reviewed =
|
|
66
|
-
(await (0,
|
|
66
|
+
(await (0, findings_js_1.reviewLines)(ctx, ['*.kt', '*.kts', '*.java'], out => scan(out, ktPattern, requireTicket, findings))) && reviewed;
|
|
67
67
|
}
|
|
68
68
|
if (!reviewed)
|
|
69
|
-
return (0,
|
|
70
|
-
if ((0,
|
|
71
|
-
return (0,
|
|
72
|
-
return (0,
|
|
69
|
+
return (0, types_js_1.skip)('git unavailable');
|
|
70
|
+
if ((0, findings_js_1.bucketTotal)(findings) === 0)
|
|
71
|
+
return (0, types_js_1.pass)();
|
|
72
|
+
return (0, findings_js_1.reportCountedFindings)(findings, ctx, {
|
|
73
73
|
prefix: 'TODO/FIXME',
|
|
74
74
|
severity: cfg?.severity,
|
|
75
75
|
suffix: requireTicket ? ' (no ticket reference)' : '',
|
|
76
76
|
});
|
|
77
77
|
}
|
|
78
78
|
catch (err) {
|
|
79
|
-
|
|
80
|
-
return (0,
|
|
79
|
+
index_js_1.logger.warn(`[TODO/FIXME]: ⚠️ Could not analyze diff\n${err}`);
|
|
80
|
+
return (0, types_js_1.skip)('diff unavailable');
|
|
81
81
|
}
|
|
82
82
|
},
|
|
83
83
|
};
|
|
@@ -6,11 +6,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.cppFormatCheck = void 0;
|
|
7
7
|
const node_fs_1 = __importDefault(require("node:fs"));
|
|
8
8
|
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
9
|
+
const index_js_1 = require("../../../config/index.js");
|
|
10
|
+
const execa_js_1 = require("../../../utils/execa.js");
|
|
11
|
+
const index_js_2 = require("../../../utils/index.js");
|
|
12
|
+
const targets_js_1 = require("../../targets.js");
|
|
13
|
+
const types_js_1 = require("../../types.js");
|
|
14
14
|
/**
|
|
15
15
|
* C/C++ source & header extensions clang-format understands. `.h` is intentionally
|
|
16
16
|
* included even though it is ambiguous with C — clang-format handles both.
|
|
@@ -58,40 +58,40 @@ exports.cppFormatCheck = {
|
|
|
58
58
|
// in `write` mode clang-format was rewriting third-party sources the client
|
|
59
59
|
// does not own. It also crashed the WASM formatter, which is how this was
|
|
60
60
|
// found.
|
|
61
|
-
const targets = await (0,
|
|
61
|
+
const targets = await (0, targets_js_1.resolveScopedTargetFiles)(ctx, CPP_GLOBS, (0, index_js_1.getSourcePaths)(ctx.cwd));
|
|
62
62
|
if (targets === null)
|
|
63
|
-
return (0,
|
|
63
|
+
return (0, types_js_1.skip)('git unavailable');
|
|
64
64
|
if (targets.length === 0)
|
|
65
|
-
return (0,
|
|
66
|
-
const cfBin = (0,
|
|
65
|
+
return (0, types_js_1.pass)('no C/C++ files changed');
|
|
66
|
+
const cfBin = (0, index_js_2.resolvePackageBin)('@wasm-fmt/clang-format', 'clang-format-cli.cjs');
|
|
67
67
|
const styleArg = resolveStyleArg(ctx);
|
|
68
68
|
// Detect unformatted files without mutating anything.
|
|
69
|
-
const dry = await (0,
|
|
69
|
+
const dry = await (0, execa_js_1.execa)(process.execPath, [cfBin, '--dry-run', '--Werror', styleArg, ...targets], { cwd: ctx.cwd, reject: false });
|
|
70
70
|
if (dry.exitCode === 0)
|
|
71
|
-
return (0,
|
|
71
|
+
return (0, types_js_1.pass)();
|
|
72
72
|
const offending = countOffendingFiles(dry.stderr) || targets.length;
|
|
73
73
|
if (!ctx.write) {
|
|
74
|
-
|
|
75
|
-
return (0,
|
|
74
|
+
index_js_2.logger.warn(`[C++ Format]: ⚠️ ${offending} C/C++ file(s) need formatting`);
|
|
75
|
+
return (0, types_js_1.warn)(`${offending} file(s) need formatting (run with write to fix)`);
|
|
76
76
|
}
|
|
77
77
|
// write mode: rewrite the offending files in place so CI can auto-commit them.
|
|
78
|
-
const fix = await (0,
|
|
78
|
+
const fix = await (0, execa_js_1.execa)(process.execPath, [cfBin, '-i', styleArg, ...targets], {
|
|
79
79
|
cwd: ctx.cwd,
|
|
80
80
|
reject: false,
|
|
81
81
|
});
|
|
82
82
|
if (fix.exitCode !== 0) {
|
|
83
|
-
|
|
83
|
+
index_js_2.logger.warn(`[C++ Format]: ⚠️ clang-format -i failed\n${fix.stderr}`);
|
|
84
84
|
// A WASM runtime error is the formatter giving up on a file, not a verdict
|
|
85
85
|
// about the code — and `-i` means whatever it managed before the crash is
|
|
86
86
|
// already written, so the tree is half-formatted. Saying which it was
|
|
87
87
|
// matters: "failed to rewrite files" sent people looking for a style
|
|
88
88
|
// problem that does not exist.
|
|
89
89
|
const crashed = /RuntimeError|memory access out of bounds|abort\(/.test(fix.stderr);
|
|
90
|
-
return (0,
|
|
90
|
+
return (0, types_js_1.warn)(crashed
|
|
91
91
|
? 'clang-format crashed on one of these files — some may already have been rewritten'
|
|
92
92
|
: `clang-format could not rewrite the files (exit ${fix.exitCode ?? 'killed'})`);
|
|
93
93
|
}
|
|
94
|
-
|
|
95
|
-
return (0,
|
|
94
|
+
index_js_2.logger.info(`[C++ Format]: ✅ Reformatted ${offending} C/C++ file(s)`);
|
|
95
|
+
return (0, types_js_1.pass)(`reformatted ${offending} file(s)`);
|
|
96
96
|
},
|
|
97
97
|
};
|
|
@@ -20,20 +20,20 @@
|
|
|
20
20
|
* doubles as the Kotlin format signal). Uses the repo's own `.editorconfig`
|
|
21
21
|
* when present.
|
|
22
22
|
*/
|
|
23
|
-
export declare const kotlinLintCheck: import("
|
|
23
|
+
export declare const kotlinLintCheck: import("../../types.js").Check;
|
|
24
24
|
/**
|
|
25
25
|
* Lints Swift with SwiftLint, which needs SourceKit and therefore a macOS
|
|
26
26
|
* runner. Runs over the directory rather than a file list — SwiftLint resolves
|
|
27
27
|
* its own `.swiftlint.yml` scope, and a file list would bypass the excludes a
|
|
28
28
|
* repo wrote there — so the resolved targets only decide whether it runs at all.
|
|
29
29
|
*/
|
|
30
|
-
export declare const swiftLintCheck: import("
|
|
30
|
+
export declare const swiftLintCheck: import("../../types.js").Check;
|
|
31
31
|
/**
|
|
32
32
|
* Lints changed Ruby files with RuboCop, which covers layout as well as style,
|
|
33
33
|
* so it doubles as the Ruby format signal. Uses the repo's own `.rubocop.yml`
|
|
34
34
|
* when present.
|
|
35
35
|
*/
|
|
36
|
-
export declare const rubyLintCheck: import("
|
|
36
|
+
export declare const rubyLintCheck: import("../../types.js").Check;
|
|
37
37
|
/**
|
|
38
38
|
* Lints changed shell scripts with ShellCheck. `-f gcc` gives one line per
|
|
39
39
|
* finding ending in an `[SC…]` code, which both a human and the count below can
|
|
@@ -42,36 +42,36 @@ export declare const rubyLintCheck: import("../..").Check;
|
|
|
42
42
|
* No language gate: shell is not something detection reports, and a `deploy.sh`
|
|
43
43
|
* in a Python repository is exactly the file this check exists for.
|
|
44
44
|
*/
|
|
45
|
-
export declare const shellcheckCheck: import("
|
|
45
|
+
export declare const shellcheckCheck: import("../../types.js").Check;
|
|
46
46
|
/**
|
|
47
47
|
* Vets changed Go code with `go vet ./...`, which needs the Go toolchain (the
|
|
48
48
|
* formatter next door no longer does — see `go-format.ts`). `go vet` operates
|
|
49
49
|
* per package, so it runs over the module rather than a file list; the delta
|
|
50
50
|
* only decides whether it runs.
|
|
51
51
|
*/
|
|
52
|
-
export declare const goLintCheck: import("
|
|
52
|
+
export declare const goLintCheck: import("../../types.js").Check;
|
|
53
53
|
/**
|
|
54
54
|
* Lints changed Rust with Clippy. It compiles the crate, so it runs over the
|
|
55
55
|
* crate rather than a file list; the delta only decides whether it runs.
|
|
56
56
|
*/
|
|
57
|
-
export declare const rustLintCheck: import("
|
|
57
|
+
export declare const rustLintCheck: import("../../types.js").Check;
|
|
58
58
|
/**
|
|
59
59
|
* Formats changed Rust with `cargo fmt`, not a bare `rustfmt`: cargo reads the
|
|
60
60
|
* crate's edition from `Cargo.toml`, and rustfmt invoked directly does not —
|
|
61
61
|
* which silently formats 2015-edition code by 2024 rules.
|
|
62
62
|
*/
|
|
63
|
-
export declare const rustFormatCheck: import("
|
|
63
|
+
export declare const rustFormatCheck: import("../../types.js").Check;
|
|
64
64
|
/**
|
|
65
65
|
* Verifies C# formatting with `dotnet format`, which also runs the project's
|
|
66
66
|
* configured analyzers and style rules. It operates on the project or solution
|
|
67
67
|
* (and expects a prior `dotnet restore`), so it runs over the whole project; the
|
|
68
68
|
* delta only decides whether it runs.
|
|
69
69
|
*/
|
|
70
|
-
export declare const csharpFormatCheck: import("
|
|
70
|
+
export declare const csharpFormatCheck: import("../../types.js").Check;
|
|
71
71
|
/**
|
|
72
72
|
* Formats changed PHP with PHP-CS-Fixer, using the repo's own
|
|
73
73
|
* `.php-cs-fixer.php` when present. `--using-cache=no` because the cache keys on
|
|
74
74
|
* absolute paths, and a CI checkout directory that changes between runs makes a
|
|
75
75
|
* stale cache report files as clean that were never examined.
|
|
76
76
|
*/
|
|
77
|
-
export declare const phpFormatCheck: import("
|
|
77
|
+
export declare const phpFormatCheck: import("../../types.js").Check;
|