diff --git a/.github/actions/action_tests/action.yaml b/.github/actions/action_tests/action.yaml index 74775a4e6..2da8737b8 100644 --- a/.github/actions/action_tests/action.yaml +++ b/.github/actions/action_tests/action.yaml @@ -16,12 +16,9 @@ inputs: description: Additional args to append to the test invocation required: false default: actions/ -- - trunk-staging-token: - description: Test analytics staging api token (org token) - required: false - trunk-prod-token: - description: Test analytics prod api token (org token) - required: false + trunk-token: + description: CI debugger api token + required: true runs: # TODO(Tyler): See if this can be converted to a js action @@ -52,35 +49,39 @@ runs: working-directory: ${{ inputs.path }} - name: Run action tests + if: runner.os == 'Windows' run: npm test ${{ inputs.append-args }} ${{ env.PLATFORM_APPEND_ARGS }} --passWithNoTests --ci shell: bash working-directory: ${{ inputs.path }} - continue-on-error: true env: JEST_SUITE_NAME: Action Tests PLUGINS_TEST_CLI_VERSION: ${{ inputs.cli-version }} PLUGINS_TEST_CLI_PATH: ${{ env.CLI_PATH }} - - name: Upload prod results - # TODO(Tyler): Add upload on Windows once the action supports it. - if: "!cancelled() && runner.os != 'Windows' && inputs.trunk-prod-token != ''" - uses: trunk-io/analytics-uploader@main + - name: Run action tests + if: runner.os != 'Windows' + uses: trunk-io/breakpoint@v1.3.0 with: - junit-paths: junit.xml - org-slug: trunk - token: ${{ inputs.trunk-prod-token }} - continue-on-error: true + breakpoint-id: trunk-plugins-action-tests + shell: bash + working-directory: ${{ inputs.path }} + trunk-token: ${{ inputs.trunk-token }} + org: trunk-staging-org + run: + npm test ${{ inputs.append-args }} ${{ env.PLATFORM_APPEND_ARGS }} --passWithNoTests --ci env: - TRUNK_PUBLIC_API_ADDRESS: https://api.trunk.io + JEST_SUITE_NAME: Action Tests + PLUGINS_TEST_CLI_VERSION: ${{ inputs.cli-version }} + PLUGINS_TEST_CLI_PATH: ${{ env.CLI_PATH }} - - name: Upload staging results - # TODO(Tyler): Add upload on Windows once the action supports it. - if: "!cancelled() && runner.os != 'Windows' && inputs.trunk-staging-token != ''" + - name: Upload results + # TODO(Tyler): Add upload on MacOS/Windows once the action supports it. + if: "!cancelled() && runner.os == 'Linux'" uses: trunk-io/analytics-uploader@main with: junit-paths: junit.xml org-slug: trunk-staging-org - token: ${{ inputs.trunk-staging-token }} - quarantine: true + token: ${{ inputs.trunk-token }} + continue-on-error: true env: TRUNK_PUBLIC_API_ADDRESS: https://api.trunk-staging.io diff --git a/.github/actions/linter_tests/action.yaml b/.github/actions/linter_tests/action.yaml index 503dd9db0..16e09101f 100644 --- a/.github/actions/linter_tests/action.yaml +++ b/.github/actions/linter_tests/action.yaml @@ -20,18 +20,12 @@ inputs: description: Additional args to append to the test invocation required: false default: linters -- - snyk-token: - description: Token to login for snyk test - required: true sourcery-token: description: Token to login for sourcery test required: true - trunk-staging-token: - description: Test analytics staging api token (org token) - required: false - trunk-prod-token: - description: Test analytics prod api token (org token) - required: false + trunk-token: + description: CI debugger api token (org token) + required: true ref-type: description: release or main required: false @@ -73,9 +67,8 @@ runs: sudo apt install -y php8.2-fpm php8.2-xml php8.2-mbstring php8.2-curl ;; macOS) - brew install powershell/tap/powershell - brew install cpanminus - cpanm YAML::PP Class::Tiny Perl::Critic + brew install cpm + cpm install -g --no-test --color Perl::Critic Perl::Tidy brew unlink perl && brew link perl brew install php gnupg ;; @@ -99,42 +92,50 @@ runs: working-directory: ${{ inputs.path }} - name: Run plugin tests + if: runner.os == 'Windows' run: npm test ${{ inputs.append-args }} ${{ env.PLATFORM_APPEND_ARGS }} --ci shell: bash working-directory: ${{ inputs.path }} - continue-on-error: true env: PLUGINS_TEST_LINTER_VERSION: ${{ inputs.linter-version }} PLUGINS_TEST_CLI_VERSION: ${{ inputs.cli-version }} PLUGINS_TEST_CLI_PATH: ${{ env.CLI_PATH }} - SNYK_TOKEN: ${{ inputs.snyk-token }} SOURCERY_TOKEN: ${{ inputs.sourcery-token }} # Debug recurrent eslint circular JSON errors - DEBUG: Driver:eslint:*,Driver:nixpkgs-fmt:*,Driver:trunk-toolbox:* + DEBUG: Driver:eslint:*,Driver:nixpkgs-fmt:* JEST_SUITE_NAME: Linter Tests JEST_JUNIT_SUITE_NAME: "{title} ${{ runner.os }} ${{ inputs.ref-type }} ${{ inputs.linter-version }}" - - name: Upload prod results - # TODO(Tyler): Add upload on Windows once the action supports it. - if: "!cancelled() && runner.os != 'Windows' && inputs.trunk-prod-token != ''" - uses: trunk-io/analytics-uploader@main + - name: Run plugin tests + if: runner.os != 'Windows' + # trunk-ignore(semgrep/yaml.github-actions.security.third-party-action-not-pinned-to-commit-sha.third-party-action-not-pinned-to-commit-sha) + uses: trunk-io/breakpoint@v1.3.0 with: - junit-paths: junit.xml - org-slug: trunk - token: ${{ inputs.trunk-prod-token }} - continue-on-error: true + breakpoint-id: trunk-plugins-linter-tests + shell: bash + working-directory: ${{ inputs.path }} + trunk-token: ${{ inputs.trunk-token }} + org: trunk-staging-org + run: npm test ${{ inputs.append-args }} ${{ env.PLATFORM_APPEND_ARGS }} --ci --runInBand env: - TRUNK_PUBLIC_API_ADDRESS: https://api.trunk.io + PLUGINS_TEST_LINTER_VERSION: ${{ inputs.linter-version }} + PLUGINS_TEST_CLI_VERSION: ${{ inputs.cli-version }} + PLUGINS_TEST_CLI_PATH: ${{ env.CLI_PATH }} + SOURCERY_TOKEN: ${{ inputs.sourcery-token }} + DEBUG: Driver:nixpkgs-fmt:*, Driver:eslint:* + JEST_SUITE_NAME: Linter Tests + JEST_JUNIT_SUITE_NAME: + "{title} ${{ runner.os }} ${{ inputs.ref-type }} ${{ env.JEST_LINTER_VERSION }}" - - name: Upload staging results - # TODO(Tyler): Add upload on Windows once the action supports it. - if: "!cancelled() && runner.os != 'Windows' && inputs.trunk-staging-token != ''" + - name: Upload results + # TODO(Tyler): Add upload on MacOS/Windows once the action supports it. + if: "!cancelled() && runner.os == 'Linux'" uses: trunk-io/analytics-uploader@main with: junit-paths: junit.xml org-slug: trunk-staging-org - token: ${{ inputs.trunk-staging-token }} - quarantine: true + token: ${{ inputs.trunk-token }} + continue-on-error: true env: TRUNK_PUBLIC_API_ADDRESS: https://api.trunk-staging.io diff --git a/.github/actions/tool_tests/action.yaml b/.github/actions/tool_tests/action.yaml index f9cba9e88..9d36c17e3 100644 --- a/.github/actions/tool_tests/action.yaml +++ b/.github/actions/tool_tests/action.yaml @@ -16,12 +16,9 @@ inputs: description: Additional args to append to the test invocation required: false default: tools -- - trunk-staging-token: - description: Test analytics staging api token (org token) - required: false - trunk-prod-token: - description: Test analytics prod api token (org token) - required: false + trunk-token: + description: CI debugger api token (org token) + required: true ref-type: description: release or main required: false @@ -68,36 +65,41 @@ runs: working-directory: ${{ inputs.path }} - name: Run plugin tests + if: runner.os == 'Windows' run: npm test ${{ inputs.append-args }} ${{ env.PLATFORM_APPEND_ARGS }} --ci shell: bash working-directory: ${{ inputs.path }} - continue-on-error: true env: PLUGINS_TEST_CLI_VERSION: ${{ inputs.cli-version }} PLUGINS_TEST_CLI_PATH: ${{ env.CLI_PATH }} JEST_SUITE_NAME: Tool Tests JEST_JUNIT_SUITE_NAME: "{title} ${{ runner.os }} ${{ inputs.ref-type }}" - - name: Upload prod results - # TODO(Tyler): Add upload on Windows once the action supports it. - if: "!cancelled() && runner.os != 'Windows' && inputs.trunk-prod-token != ''" - uses: trunk-io/analytics-uploader@main + - name: Run plugin tests + if: runner.os != 'Windows' + # trunk-ignore(semgrep/yaml.github-actions.security.third-party-action-not-pinned-to-commit-sha.third-party-action-not-pinned-to-commit-sha) + uses: trunk-io/breakpoint@v1.3.0 with: - junit-paths: junit.xml - org-slug: trunk - token: ${{ inputs.trunk-prod-token }} - continue-on-error: true + breakpoint-id: trunk-plugins-tool-tests + shell: bash + working-directory: ${{ inputs.path }} + trunk-token: ${{ inputs.trunk-token }} + org: trunk-staging-org + run: npm test ${{ inputs.append-args }} ${{ env.PLATFORM_APPEND_ARGS }} --ci env: - TRUNK_PUBLIC_API_ADDRESS: https://api.trunk.io + PLUGINS_TEST_CLI_VERSION: ${{ inputs.cli-version }} + PLUGINS_TEST_CLI_PATH: ${{ env.CLI_PATH }} + JEST_SUITE_NAME: Tool Tests + JEST_JUNIT_SUITE_NAME: "{title} ${{ runner.os }} ${{ inputs.ref-type }}" - - name: Upload staging results - # TODO(Tyler): Add upload on Windows once the action supports it. - if: "!cancelled() && runner.os != 'Windows' && inputs.trunk-staging-token != ''" + - name: Upload results + # TODO(Tyler): Add upload on MacOS/Windows once the action supports it. + if: "!cancelled() && runner.os == 'Linux'" uses: trunk-io/analytics-uploader@main with: junit-paths: junit.xml org-slug: trunk-staging-org - token: ${{ inputs.trunk-staging-token }} - quarantine: true + token: ${{ inputs.trunk-token }} + continue-on-error: true env: TRUNK_PUBLIC_API_ADDRESS: https://api.trunk-staging.io diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml index 2900b5a2a..71d8bd7c0 100644 --- a/.github/dependabot.yaml +++ b/.github/dependabot.yaml @@ -5,7 +5,8 @@ updates: schedule: interval: weekly day: sunday - time: "10:00" # UTC + # trunk-ignore(yamllint/quoted-strings) + time: "08:00" # UTC groups: dependencies: patterns: @@ -17,11 +18,13 @@ updates: schedule: interval: weekly day: sunday - time: "10:00" # UTC - ignore: - - dependency-name: eslint + # trunk-ignore(yamllint/quoted-strings) + time: "08:00" # UTC groups: dependencies: patterns: - "*" + # TODO(Tyler): Readd once eslint9 is resolved. + ignore: + - dependency-name: eslint open-pull-requests-limit: 2 diff --git a/.github/workflows/annotate_pr.yaml b/.github/workflows/annotate_pr.yaml index 603d010a6..2f6afd8f3 100644 --- a/.github/workflows/annotate_pr.yaml +++ b/.github/workflows/annotate_pr.yaml @@ -18,7 +18,7 @@ jobs: uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Trunk Check - uses: trunk-io/trunk-action@4d5ecc89b2691705fd08c747c78652d2fc806a94 # v1.1.19 + uses: trunk-io/trunk-action@f6c5f1b90503c30e02059667dbc247f2257b63c5 # v1.1.15 with: post-annotations: true # This job may fail when the PR was not run on a fork, and that's okay diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 07ce34052..7db750645 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -34,7 +34,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@45775bd8235c68ba998cffa5171334d58593da47 # v3.28.15 + uses: github/codeql-action/init@2e230e8fe0ad3a14a340ad0815ddb96d599d2aff # v3.25.8 # Override language selection by uncommenting this and choosing your languages with: languages: javascript @@ -42,7 +42,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, or Java). # If this step fails, then you should remove it and run the build manually (see below). - name: Autobuild - uses: github/codeql-action/autobuild@45775bd8235c68ba998cffa5171334d58593da47 # v3.28.15 + uses: github/codeql-action/autobuild@2e230e8fe0ad3a14a340ad0815ddb96d599d2aff # v3.25.8 # â„šī¸ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -56,4 +56,4 @@ jobs: # make release - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@45775bd8235c68ba998cffa5171334d58593da47 # v3.28.15 + uses: github/codeql-action/analyze@2e230e8fe0ad3a14a340ad0815ddb96d599d2aff # v3.25.8 diff --git a/.github/workflows/nightly.yaml b/.github/workflows/nightly.yaml index 0f742fc01..91be87085 100644 --- a/.github/workflows/nightly.yaml +++ b/.github/workflows/nightly.yaml @@ -1,8 +1,8 @@ name: Nightly on: schedule: - # Times in UTC (PST+8), this translates to running Mon-Fri at 2am/3am (depending on DST) - - cron: 0 10 * * 1-5 + # Times in UTC (PST+8), this translates to running Mon-Fri at midnight/1am (depending on DST) + - cron: 0 8 * * 1-5 # Only enable on pull requests for testing # pull_request: # paths: [.github/workflows/nightly.yaml] @@ -28,14 +28,14 @@ jobs: # This job is used to diagnose plugin config health in advance of a release linter_tests_main: name: Plugin Tests Main + # runs-on: [self-hosted, "${{ matrix.os }}"] TODO(Tyler): Set after Windows self-hosted are established. runs-on: ${{ matrix.os }} timeout-minutes: 120 strategy: fail-fast: false matrix: linter-version: [Snapshots, Latest] - # TODO(Tyler): Re-add Windows runners. - os: [ubuntu-latest, macOS] + os: [ubuntu-latest, macOS, windows-latest] steps: - name: Checkout uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 @@ -43,7 +43,7 @@ jobs: - name: Cache tool downloads # ubuntu runner has persistent cache if: matrix.os == 'windows-latest' - uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 + uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 with: path: /tmp/plugins_testing_download_cache # No need to key on trunk version unless we change how we store downloads. @@ -67,28 +67,29 @@ jobs: with: linter-version: ${{ matrix.linter-version }} ref-type: main - snyk-token: ${{ secrets.TRUNK_SNYK_TOKEN }} sourcery-token: ${{ secrets.TRUNK_SOURCERY_TOKEN }} - trunk-staging-token: ${{ secrets.TRUNK_DEBUGGER_TOKEN }} - trunk-prod-token: ${{ secrets.TRUNK_ORG_PROD_TOKEN }} + trunk-token: ${{ secrets.TRUNK_DEBUGGER_TOKEN }} # Run tests against all linters for snapshots and latest version as they exist in latest release # This job is used to update the list of validated versions linter_tests_release: name: Plugin Tests Release + # runs-on: [self-hosted, "${{ matrix.os }}"] TODO(Tyler): Set after Windows self-hosted are established. runs-on: ${{ matrix.os }} timeout-minutes: 150 strategy: fail-fast: false matrix: linter-version: [Snapshots, Latest] - os: [ubuntu-latest, macOS] + os: [ubuntu-latest, macOS, windows-latest] include: # Normalize the filenames as inputs for ease of parsing - os: ubuntu-latest results-file: ubuntu-latest - os: macOS results-file: macos-latest + - os: windows-latest + results-file: windows-latest outputs: plugin-version: ${{ steps.get-release.outputs.tag }} @@ -149,7 +150,7 @@ jobs: - name: Cache tool downloads # ubuntu, mac runners have persistent cache if: matrix.os == 'windows-latest' - uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 + uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 with: path: /tmp/plugins_testing_download_cache # No need to key on trunk version unless we change how we store downloads. @@ -174,15 +175,13 @@ jobs: linter-version: ${{ matrix.linter-version }} append-args: linters -- --json --outputFile=${{ matrix.results-file }}-res.json ref-type: release - snyk-token: ${{ secrets.TRUNK_SNYK_TOKEN }} sourcery-token: ${{ secrets.TRUNK_SOURCERY_TOKEN }} - trunk-staging-token: ${{ secrets.TRUNK_DEBUGGER_TOKEN }} - trunk-prod-token: ${{ secrets.TRUNK_ORG_PROD_TOKEN }} + trunk-token: ${{ secrets.TRUNK_DEBUGGER_TOKEN }} - name: Upload Test Outputs for Upload Job # Only upload results from latest. Always run, except when cancelled. if: (failure() || success()) && matrix.linter-version == 'Latest' - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 + uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 with: name: ${{ matrix.results-file }}-test-results path: ${{ matrix.results-file }}-res.json @@ -200,10 +199,8 @@ jobs: TRUNK_API_TOKEN: ${{ secrets.TRUNK_API_TOKEN }} TRUNK_OPEN_PR_APP_ID: ${{ secrets.TRUNK_OPEN_PR_APP_ID }} TRUNK_OPEN_PR_APP_PRIVATE_KEY: ${{ secrets.TRUNK_OPEN_PR_APP_PRIVATE_KEY }} - TRUNK_SNYK_TOKEN: ${{ secrets.TRUNK_SNYK_TOKEN }} TRUNK_SOURCERY_TOKEN: ${{ secrets.TRUNK_SOURCERY_TOKEN }} TRUNK_DEBUGGER_TOKEN: ${{ secrets.TRUNK_DEBUGGER_TOKEN }} - TRUNK_ORG_PROD_TOKEN: ${{ secrets.TRUNK_ORG_PROD_TOKEN }} with: plugin-version: ${{ needs.linter_tests_release.outputs.plugin-version }} upload-validated-versions: true @@ -213,21 +210,21 @@ jobs: # Run tool tests only on main tool_tests_main: name: Tool Tests Main + # runs-on: [self-hosted, "${{ matrix.os }}"] TODO(Tyler): Set after Windows self-hosted are established. runs-on: ${{ matrix.os }} timeout-minutes: 120 strategy: fail-fast: false matrix: - # TODO(Tyler): Re-add Windows runners. - os: [ubuntu-latest, macOS] + os: [ubuntu-latest, macOS, windows-latest] include: # Normalize the filenames as inputs for ease of parsing - os: ubuntu-latest results-file: ubuntu-latest - os: macOS results-file: macos-latest - # - os: windows-latest - # results-file: windows-latest + - os: windows-latest + results-file: windows-latest steps: - name: Checkout uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 @@ -238,13 +235,12 @@ jobs: uses: ./.github/actions/tool_tests with: append-args: tools -- --json --outputFile=${{ matrix.results-file }}-res.json - trunk-staging-token: ${{ secrets.TRUNK_DEBUGGER_TOKEN }} - trunk-prod-token: ${{ secrets.TRUNK_ORG_PROD_TOKEN }} + trunk-token: ${{ secrets.TRUNK_DEBUGGER_TOKEN }} - name: Upload Test Outputs for Notification Job # Always run, except when cancelled. if: (failure() || success()) - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 + uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 with: name: tools-${{ matrix.results-file }}-test-results path: ${{ matrix.results-file }}-res.json @@ -257,10 +253,8 @@ jobs: uses: ./.github/workflows/upload_results.reusable.yaml secrets: TRUNKBOT_SLACK_BOT_TOKEN: ${{ secrets.TRUNKBOT_SLACK_BOT_TOKEN }} - TRUNK_SNYK_TOKEN: ${{ secrets.TRUNK_SNYK_TOKEN }} TRUNK_SOURCERY_TOKEN: ${{ secrets.TRUNK_SOURCERY_TOKEN }} TRUNK_DEBUGGER_TOKEN: ${{ secrets.TRUNK_DEBUGGER_TOKEN }} - TRUNK_ORG_PROD_TOKEN: ${{ secrets.TRUNK_ORG_PROD_TOKEN }} with: plugin-version: main results-prefix: tools- @@ -284,5 +278,4 @@ jobs: - name: Action Tests uses: ./.github/actions/action_tests with: - trunk-staging-token: ${{ secrets.TRUNK_DEBUGGER_TOKEN }} - trunk-prod-token: ${{ secrets.TRUNK_ORG_PROD_TOKEN }} + trunk-token: ${{ secrets.TRUNK_DEBUGGER_TOKEN }} diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index 7040c3b86..a559c6bfa 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -151,13 +151,11 @@ jobs: with: linter-version: KnownGoodVersion ref-type: main - snyk-token: ${{ secrets.TRUNK_SNYK_TOKEN }} sourcery-token: ${{ secrets.TRUNK_SOURCERY_TOKEN }} append-args: ${{ needs.detect_changes.outputs.all-linters }} ${{ needs.detect_changes.outputs.linters-files }} - trunk-staging-token: ${{ secrets.TRUNK_DEBUGGER_TOKEN }} - trunk-prod-token: ${{ secrets.TRUNK_ORG_PROD_TOKEN }} + trunk-token: ${{ secrets.TRUNK_DEBUGGER_TOKEN }} - name: Linter Tests Latest # Run tests on Latest with any modified linters (see filters.yaml). Don't run when cancelled. @@ -168,11 +166,9 @@ jobs: with: linter-version: Latest ref-type: main - snyk-token: ${{ secrets.TRUNK_SNYK_TOKEN }} sourcery-token: ${{ secrets.TRUNK_SOURCERY_TOKEN }} append-args: ${{ needs.detect_changes.outputs.linters-files }} - trunk-staging-token: ${{ secrets.TRUNK_DEBUGGER_TOKEN }} - trunk-prod-token: ${{ secrets.TRUNK_ORG_PROD_TOKEN }} + trunk-token: ${{ secrets.TRUNK_DEBUGGER_TOKEN }} tool_tests: name: Tool Tests @@ -198,8 +194,7 @@ jobs: append-args: ${{ needs.detect_changes.outputs.all-tools }} ${{ needs.detect_changes.outputs.tools-files }} - trunk-staging-token: ${{ secrets.TRUNK_DEBUGGER_TOKEN }} - trunk-prod-token: ${{ secrets.TRUNK_ORG_PROD_TOKEN }} + trunk-token: ${{ secrets.TRUNK_DEBUGGER_TOKEN }} action_tests: name: Action Tests @@ -219,8 +214,7 @@ jobs: append-args: ${{ needs.detect_changes.outputs.all-actions }} ${{ needs.detect_changes.outputs.actions-files }} -- - trunk-staging-token: ${{ secrets.TRUNK_DEBUGGER_TOKEN }} - trunk-prod-token: ${{ secrets.TRUNK_ORG_PROD_TOKEN }} + trunk-token: ${{ secrets.TRUNK_DEBUGGER_TOKEN }} trunk_check_runner: name: Trunk Check runner [linux] @@ -236,24 +230,24 @@ jobs: lfs: true - name: Trunk Check - uses: trunk-io/trunk-action@4d5ecc89b2691705fd08c747c78652d2fc806a94 + uses: trunk-io/trunk-action@f6c5f1b90503c30e02059667dbc247f2257b63c5 env: TRUNK_GITHUB_CHECK_RUN_TITLE: Trunk Check # Run Windows tests for modified linters and tools + # TODO(Tyler): When this is more stabilized and we want to gate on it, we can make it part of the matrix above. windows_linter_tests: name: Windows Linter Tests runs-on: windows-latest needs: detect_changes - # TODO(Tyler): Re-add Windows runners. - if: needs.detect_changes.outputs.linters == 'true' && false + if: needs.detect_changes.outputs.linters == 'true' timeout-minutes: 90 steps: - name: Checkout uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Cache tool downloads - uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 + uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 with: path: /tmp/plugins_testing_download_cache key: trunk-${{ runner.os }} @@ -264,26 +258,23 @@ jobs: with: linter-version: Latest ref-type: main - snyk-token: ${{ secrets.TRUNK_SNYK_TOKEN }} sourcery-token: ${{ secrets.TRUNK_SOURCERY_TOKEN }} cli-path: ${{ github.workspace }}\trunk.ps1 append-args: ${{needs.detect_changes.outputs.linters-files }} -- --maxWorkers=5 - trunk-staging-token: ${{ secrets.TRUNK_DEBUGGER_TOKEN }} - trunk-prod-token: ${{ secrets.TRUNK_ORG_PROD_TOKEN }} + trunk-token: ${{ secrets.TRUNK_DEBUGGER_TOKEN }} - # TODO(Tyler): Re-add Windows runners. windows_tool_tests: name: Windows Tool Tests runs-on: windows-latest needs: detect_changes - if: needs.detect_changes.outputs.tools == 'true' && false + if: needs.detect_changes.outputs.tools == 'true' timeout-minutes: 60 steps: - name: Checkout uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Cache tool downloads - uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 + uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 with: path: /tmp/plugins_testing_download_cache key: trunk-${{ runner.os }} @@ -294,8 +285,7 @@ jobs: with: append-args: ${{needs.detect_changes.outputs.tools-files }} -- --maxWorkers=5 cli-path: ${{ github.workspace }}\trunk.ps1 - trunk-staging-token: ${{ secrets.TRUNK_DEBUGGER_TOKEN }} - trunk-prod-token: ${{ secrets.TRUNK_ORG_PROD_TOKEN }} + trunk-token: ${{ secrets.TRUNK_DEBUGGER_TOKEN }} # Run repo healthcheck tests repo_tests: diff --git a/.github/workflows/repo_tests.reusable.yaml b/.github/workflows/repo_tests.reusable.yaml index 5a1ad9169..c188d5372 100644 --- a/.github/workflows/repo_tests.reusable.yaml +++ b/.github/workflows/repo_tests.reusable.yaml @@ -28,7 +28,7 @@ jobs: uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Setup node - uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0 + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: node-version: 18 diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index c8e23af4f..d7fb300e8 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -35,7 +35,7 @@ jobs: persist-credentials: false - name: Run analysis - uses: ossf/scorecard-action@f49aabe0b5af0936a0987cfb85d86b75731b0186 # v2.4.1 + uses: ossf/scorecard-action@dc50aa9510b46c811795eb24b2f1ba02a914e534 # v2.3.3 with: results_file: results.sarif results_format: sarif @@ -57,7 +57,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: Upload artifact - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 + uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 with: name: SARIF file path: results.sarif @@ -65,6 +65,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: Upload to code-scanning - uses: github/codeql-action/upload-sarif@45775bd8235c68ba998cffa5171334d58593da47 # v3.28.15 + uses: github/codeql-action/upload-sarif@2e230e8fe0ad3a14a340ad0815ddb96d599d2aff # v3.25.8 with: sarif_file: results.sarif diff --git a/.github/workflows/upgrade_trunk.yaml b/.github/workflows/upgrade_trunk.yaml index d9a6fc8b9..f52157c37 100644 --- a/.github/workflows/upgrade_trunk.yaml +++ b/.github/workflows/upgrade_trunk.yaml @@ -1,8 +1,8 @@ name: Upgrade Trunk Weekly on: schedule: - # Weekly W morning - - cron: 0 10 * * 3 + # Weekly at midnight W morning + - cron: 0 8 * * 3 workflow_dispatch: {} permissions: read-all @@ -26,7 +26,7 @@ jobs: private_key: ${{ secrets.TRUNK_OPEN_PR_APP_PRIVATE_KEY }} - name: Trunk Upgrade - uses: trunk-io/trunk-action/upgrade@4d5ecc89b2691705fd08c747c78652d2fc806a94 + uses: trunk-io/trunk-action/upgrade@f6c5f1b90503c30e02059667dbc247f2257b63c5 with: arguments: -n --bleeding-edge github-token: ${{ steps.generate-token.outputs.token }} diff --git a/.github/workflows/upload_results.reusable.yaml b/.github/workflows/upload_results.reusable.yaml index 94fe278cc..8229d46bc 100644 --- a/.github/workflows/upload_results.reusable.yaml +++ b/.github/workflows/upload_results.reusable.yaml @@ -34,14 +34,10 @@ on: required: false TRUNK_OPEN_PR_APP_PRIVATE_KEY: required: false - TRUNK_SNYK_TOKEN: - required: false TRUNK_SOURCERY_TOKEN: required: false TRUNK_DEBUGGER_TOKEN: required: false - TRUNK_ORG_PROD_TOKEN: - required: false permissions: actions: write @@ -64,25 +60,24 @@ jobs: - name: Retrieve Test Outputs ubuntu id: download-ubuntu - uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4.2.1 + uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e # v4.1.7 continue-on-error: true with: name: ${{ inputs.results-prefix }}ubuntu-latest-test-results - name: Retrieve Test Outputs macOS id: download-macos - uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4.2.1 + uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e # v4.1.7 continue-on-error: true with: name: ${{ inputs.results-prefix }}macos-latest-test-results - # TODO(Tyler): Re-add Windows runners. - # - name: Retrieve Test Outputs Windows - # id: download-windows - # uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4.2.1 - # continue-on-error: true - # with: - # name: ${{ inputs.results-prefix }}windows-latest-test-results + - name: Retrieve Test Outputs Windows + id: download-windows + uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e # v4.1.7 + continue-on-error: true + with: + name: ${{ inputs.results-prefix }}windows-latest-test-results - name: Print Test Outputs continue-on-error: true @@ -96,29 +91,35 @@ jobs: cat "macos-latest-res.json" || echo "missing" echo "::endgroup::" - # echo "::group::Windows results" - # cat "windows-latest-res.json" || echo "missing" - # echo "::endgroup::" + echo "::group::Windows results" + cat "windows-latest-res.json" || echo "missing" + echo "::endgroup::" - name: Slack Notification For Missing Artifacts - uses: slackapi/slack-github-action@485a9d42d3a73031f12ec201c457e2162c45d02d # v2.0.0 + uses: slackapi/slack-github-action@70cd7be8e40a46e8b0eced40b0de447bdb42f68e # v1.26.0 if: - steps.download-ubuntu.outcome == 'failure' || steps.download-macos.outcome == 'failure' - # || steps.download-windows.outcome == 'failure' + steps.download-ubuntu.outcome == 'failure' || steps.download-macos.outcome == 'failure' || + steps.download-windows.outcome == 'failure' with: - method: chat.postMessage - token: ${{ secrets.TRUNKBOT_SLACK_BOT_TOKEN }} + channel-id: ${{ env.SLACK_CHANNEL_ID }} payload: | - channel: ${{ env.SLACK_CHANNEL_ID }} - text: "Artifact Download Failure" - blocks: - - type: section - text: - type: mrkdwn - text: "Failure: " + { + "text": "Artifact Download Failure", + "blocks": [ + { + "type": "section", + "text": { + "type": "mrkdwn", + "text": "Failure: " + } + } + ] + } + env: + SLACK_BOT_TOKEN: ${{ secrets.TRUNKBOT_SLACK_BOT_TOKEN }} - name: Setup Node - uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0 + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: node-version: 18 @@ -136,9 +137,8 @@ jobs: id: parse run: | npm run parse - echo "failures=$([[ -f failures.yaml ]] && echo "true" || echo "false")" >> "$GITHUB_OUTPUT" - failures_payload=$(cat failures.yaml) - printf "failures-payload<> "$GITHUB_OUTPUT" + echo "failures=$([[ -f failures.json ]] && echo "true" || echo "false")" >> "$GITHUB_OUTPUT" + echo "failures-payload=$(cat failures.json)" >> "$GITHUB_OUTPUT" echo "reruns=$(cat reruns.txt)" >> "$GITHUB_OUTPUT" env: PLUGIN_VERSION: ${{ inputs.plugin-version }} @@ -146,7 +146,6 @@ jobs: RUN_ID: ${{ github.run_id }} TEST_REF: ${{ inputs.test-ref }} TEST_TYPE: ${{ inputs.test-type }} - SLACK_CHANNEL_ID: ${{ env.SLACK_CHANNEL_ID }} - name: Upload Test Results Staging if: inputs.upload-validated-versions == true @@ -180,42 +179,55 @@ jobs: # Slack notifications - name: Slack Notification For Failures - uses: slackapi/slack-github-action@485a9d42d3a73031f12ec201c457e2162c45d02d # v2.0.0 + uses: slackapi/slack-github-action@70cd7be8e40a46e8b0eced40b0de447bdb42f68e # v1.26.0 if: always() && steps.parse.outputs.failures == 'true' with: - method: chat.postMessage - token: ${{ secrets.TRUNKBOT_SLACK_BOT_TOKEN }} + channel-id: ${{ env.SLACK_CHANNEL_ID }} payload: ${{ steps.parse.outputs.failures-payload }} + env: + SLACK_BOT_TOKEN: ${{ secrets.TRUNKBOT_SLACK_BOT_TOKEN }} - name: Slack Notification For Staging Upload Failure - uses: slackapi/slack-github-action@485a9d42d3a73031f12ec201c457e2162c45d02d # v2.0.0 + uses: slackapi/slack-github-action@70cd7be8e40a46e8b0eced40b0de447bdb42f68e # v1.26.0 if: inputs.upload-validated-versions == true && steps.upload-staging.outcome == 'failure' with: - method: chat.postMessage - token: ${{ secrets.TRUNKBOT_SLACK_BOT_TOKEN }} + channel-id: ${{ env.SLACK_CHANNEL_ID }} payload: | - channel: ${{ env.SLACK_CHANNEL_ID }} - text: "Upload Failure" - blocks: - - type: section - text: - type: mrkdwn - text: "Failure: " + { + "text": "Upload Failure", + "blocks": [ + { + "type": "section", + "text": { + "type": "mrkdwn", + "text": "Failure: " + } + } + ] + } + env: + SLACK_BOT_TOKEN: ${{ secrets.TRUNKBOT_SLACK_BOT_TOKEN }} - name: Slack Notification For Prod Upload Failure - uses: slackapi/slack-github-action@485a9d42d3a73031f12ec201c457e2162c45d02d # v2.0.0 + uses: slackapi/slack-github-action@70cd7be8e40a46e8b0eced40b0de447bdb42f68e # v1.26.0 if: inputs.upload-validated-versions == true && steps.upload-prod.outcome == 'failure' with: - method: chat.postMessage - token: ${{ secrets.TRUNKBOT_SLACK_BOT_TOKEN }} + channel-id: ${{ env.SLACK_CHANNEL_ID }} payload: | - channel: ${{ env.SLACK_CHANNEL_ID }} - text: "Upload Failure" - blocks: - - type: section - text: - type: mrkdwn - text: "Failure: " + { + "text": "Upload Failure", + "blocks": [ + { + "type": "section", + "text": { + "type": "mrkdwn", + "text": "Failure: " + } + } + ] + } + env: + SLACK_BOT_TOKEN: ${{ secrets.TRUNKBOT_SLACK_BOT_TOKEN }} generate_snapshots_pr: name: Generate Snapshots PR runs-on: ubuntu-latest @@ -227,7 +239,7 @@ jobs: uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Setup Node - uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0 + uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: node-version: 18 @@ -245,10 +257,8 @@ jobs: linter-version: Latest ref-type: main append-args: ${{ needs.upload_test_results.outputs.reruns }} -- -u - snyk-token: ${{ secrets.TRUNK_SNYK_TOKEN }} sourcery-token: ${{ secrets.TRUNK_SOURCERY_TOKEN }} - trunk-staging-token: ${{ secrets.TRUNK_DEBUGGER_TOKEN }} - trunk-prod-token: ${{ secrets.TRUNK_ORG_PROD_TOKEN }} + trunk-token: ${{ secrets.TRUNK_DEBUGGER_TOKEN }} env: PLUGINS_TEST_UPDATE_SNAPSHOTS: "true" @@ -265,7 +275,7 @@ jobs: private_key: ${{ secrets.TRUNK_OPEN_PR_APP_PRIVATE_KEY }} - name: Create Pull Request - uses: peter-evans/create-pull-request@v7 + uses: peter-evans/create-pull-request@v6 with: title: Auto-add missing snapshots body: diff --git a/.github/workflows/windows_nightly.yaml b/.github/workflows/windows_nightly.yaml index 53313f2ec..6ebf748c9 100644 --- a/.github/workflows/windows_nightly.yaml +++ b/.github/workflows/windows_nightly.yaml @@ -1,6 +1,6 @@ name: Windows Tests on: - # NOTE(Tyler): Preserve this workflow for testing, but in the future we'll want to remove it. + # TODO(Tyler): Preserve this workflow for testing, but in the future we'll want to remove it. workflow_dispatch: {} permissions: read-all @@ -21,7 +21,7 @@ jobs: uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Cache tool downloads - uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 + uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 with: path: /tmp/plugins_testing_download_cache # No need to key on trunk version unless we change how we store downloads. @@ -45,14 +45,12 @@ jobs: with: linter-version: ${{ matrix.linter-version }} ref-type: main - snyk-token: ${{ secrets.TRUNK_SNYK_TOKEN }} sourcery-token: ${{ secrets.TRUNK_SOURCERY_TOKEN }} cli-path: ${{ github.workspace }}\trunk.ps1 # manually specify more parallelism to avoid bottlenecks append-args: linters -- --maxWorkers=5 - # Analytics uploader is not yet supported on Windows - trunk-staging-token: ${{ secrets.TRUNK_DEBUGGER_TOKEN }} - trunk-prod-token: ${{ secrets.TRUNK_ORG_PROD_TOKEN }} + # CI Debugger is not yet supported on Windows + trunk-token: ${{ secrets.TRUNK_DEBUGGER_TOKEN }} tool_tests_main: name: Tool Tests Main @@ -63,7 +61,7 @@ jobs: uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Cache tool downloads - uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 + uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 with: path: /tmp/plugins_testing_download_cache # No need to key on trunk version unless we change how we store downloads. @@ -90,6 +88,5 @@ jobs: with: cli-path: ${{ github.workspace }}\trunk.ps1 append-args: tools -- --maxWorkers=5 - # Analytics uploader is not yet supported on Windows - trunk-staging-token: ${{ secrets.TRUNK_DEBUGGER_TOKEN }} - trunk-prod-token: ${{ secrets.TRUNK_ORG_PROD_TOKEN }} + # CI Debugger is not yet supported on Windows + trunk-token: ${{ secrets.TRUNK_DEBUGGER_TOKEN }} diff --git a/.gitignore b/.gitignore index 75a65a35c..003c57f6f 100644 --- a/.gitignore +++ b/.gitignore @@ -6,8 +6,3 @@ node_modules/ # Typescript out/ - -junit.xml - -# Snyk -.dccache diff --git a/.trunk/trunk.yaml b/.trunk/trunk.yaml index fa6bd9366..a43baf62b 100644 --- a/.trunk/trunk.yaml +++ b/.trunk/trunk.yaml @@ -2,7 +2,7 @@ version: 0.1 # version used for local trunk runs and testing cli: - version: 1.22.12 + version: 1.22.2-beta.9 shell_hooks: enforce: true @@ -17,7 +17,7 @@ plugins: - id: configs uri: https://github.com/trunk-io/configs - ref: v1.0.11 + ref: v1.0.5 lint: files: @@ -42,8 +42,7 @@ lint: enabled: # enabled linters inherited from github.com/trunk-io/configs plugin - definition-checker - - eslint@9.24.0 - - trunk-toolbox@0.5.4 + - eslint@9.2.0 disabled: - pylint # pylint diagnostics are too strict - semgrep @@ -53,11 +52,6 @@ lint: paths: - "**/test_data" # required for golangci-lint, which runs on directories - "**/test_data/**" - - linters: [prettier] - paths: [linters/markdownlint/README.md] - threshold: - - linters: [trunk] - level: high actions: # Uncomment to enable more verbose action logs @@ -107,9 +101,8 @@ actions: - tool-test-helper tools: enabled: - - clangd-indexing-tools@19.1.2 - - clangd@19.1.2 - + - clangd-indexing-tools@18.1.3 + - clangd@18.1.3 runtimes: # expose shims in .trunk/tools - node diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a5515c6fe..2d8735670 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -69,9 +69,8 @@ To add a new linter: ``` 3. Add your linter definition to `plugin.yaml` (consult the docs for [custom linters] and [custom - parsers] - to understand how it should be defined). Most linters in this repository are defined as tools as - well, so that they can be easily run manually from the command line. + parsers] to understand how it should be defined). Most linters in this repository are defined as + tools as well, so that they can be easily run manually from the command line. 4. Run `trunk check enable ` to enable your linter, and run `trunk check` to verify that the configuration is valid and that you get desired diagnostics. Running `trunk check --verbose` can help provide greater insights when debugging. You may also wish to run on your test data, @@ -82,8 +81,8 @@ To add a new linter: 6. Revert any `.trunk/trunk.yaml` changes, and run `trunk check` to lint your changes. 7. Open a PR! -[custom linters]: https://docs.trunk.io/code-quality/linters/custom-linters -[custom parsers]: https://docs.trunk.io/cli/configuration/lint/output-parsing +[custom linters]: https://docs.trunk.io/check/custom-linters +[custom parsers]: https://docs.trunk.io/check/custom-parsers ## Tools diff --git a/README.md b/README.md index d0545e841..3df95c43b 100644 --- a/README.md +++ b/README.md @@ -38,59 +38,59 @@ Enable the following tools via: trunk check enable {linter} ``` -| Technology | Linters | -| --------------- | ------------------------------------------------------------------------------------------------------------------------ | -| All | [codespell], [cspell], [gitleaks], [git-diff-check], [pre-commit-hooks], [trunk-toolbox], [vale] | -| Ansible | [ansible-lint] | -| Apex | [pmd] | -| Bash | [shellcheck], [shfmt] | -| Bazel, Starlark | [buildifier] | -| C, C++ | [clang-format], [clang-tidy], [include-what-you-use], [pragma-once] | -| C# | [dotnet-format] | -| CircleCI Config | [circleci] | -| Cloudformation | [cfnlint], [checkov] | -| CMake | [cmake-format] | -| CSS, SCSS | [stylelint], [prettier] | -| Cue | [cue-fmt] | -| Dart | [dart] | -| Docker | [hadolint], [checkov] | -| Dotenv | [dotenv-linter] | -| GitHub | [actionlint] | -| Go | [gofmt], [gofumpt], [goimports], [gokart], [golangci-lint], [golines], [semgrep] | -| GraphQL | [graphql-schema-linter], [prettier] | -| HAML | [haml-lint] | -| HTML Templates | [djlint] | -| Java | [google-java-format], [pmd], [semgrep] | -| Javascript | [biome], [deno], [eslint], [prettier], [rome], [semgrep] | -| JSON | [biome], [deno], [eslint], [prettier], [semgrep] | -| Kotlin | [detekt], [ktlint] | -| Kubernetes | [kube-linter] | -| Lua | [stylua] | -| Markdown | [deno], [markdownlint], [markdownlint-cli2], [markdown-link-check], [markdown-table-prettify], [prettier], [remark-lint] | -| Nix | [nixpkgs-fmt] | -| package.json | [sort-package-json] | -| Perl | [perlcritic], [perltidy] | -| PHP | [php-cs-fixer], [phpstan] | -| PNG | [oxipng] | -| PowerShell | [psscriptanalyzer] | -| Prisma | [prisma] | -| Protobuf | [buf] (breaking, lint, and format), [clang-format], [clang-tidy] | -| Python | [autopep8], [bandit], [black], [flake8], [isort], [mypy], [pylint], [pyright], [semgrep], [yapf], [ruff], [sourcery] | -| Rego | [regal], [opa] | -| Renovate | [renovate] | -| Ruby | [brakeman], [rubocop], [rufo], [semgrep], [standardrb] | -| Rust | [clippy], [rustfmt] | -| Scala | [scalafmt] | -| Security | [checkov], [dustilock], [nancy], [osv-scanner], [snyk], [tfsec], [trivy], [trufflehog], [terrascan] | -| SQL | [sqlfluff], [sqlfmt], [sql-formatter], [squawk] | -| SVG | [svgo] | -| Swift | [stringslint], [swiftlint], [swiftformat] | -| Terraform | [terraform] (validate and fmt), [checkov], [tflint], [tfsec], [terrascan], [tofu] | -| Terragrunt | [terragrunt] | -| Textproto | [txtpbfmt] | -| TOML | [taplo] | -| Typescript | [deno], [eslint], [prettier], [rome], [semgrep] | -| YAML | [prettier], [semgrep], [yamllint] | +| Technology | Linters | +| --------------- | -------------------------------------------------------------------------------------------------------------------- | +| All | [codespell], [cspell], [gitleaks], [git-diff-check], [pre-commit-hooks], [trunk-toolbox], [vale] | +| Ansible | [ansible-lint] | +| Apex | [pmd] | +| Bash | [shellcheck], [shfmt] | +| Bazel, Starlark | [buildifier] | +| C, C++ | [clang-format], [clang-tidy], [include-what-you-use], [pragma-once] | +| C# | [dotnet-format] | +| CircleCI Config | [circleci] | +| Cloudformation | [cfnlint], [checkov] | +| CMake | [cmake-format] | +| CSS, SCSS | [stylelint], [prettier] | +| Cue | [cue-fmt] | +| Dart | [dart] | +| Docker | [hadolint], [checkov] | +| Dotenv | [dotenv-linter] | +| GitHub | [actionlint] | +| Go | [gofmt], [gofumpt], [goimports], [gokart], [golangci-lint], [golines], [semgrep] | +| GraphQL | [graphql-schema-linter], [prettier] | +| HAML | [haml-lint] | +| HTML Templates | [djlint] | +| Java | [google-java-format], [pmd], [semgrep] | +| Javascript | [biome], [deno], [eslint], [prettier], [rome], [semgrep] | +| JSON | [biome], [deno], [eslint], [prettier], [semgrep] | +| Kotlin | [detekt], [ktlint] | +| Kubernetes | [kube-linter] | +| Lua | [stylua] | +| Markdown | [deno], [markdownlint], [markdown-link-check], [markdown-table-prettify], [prettier], [remark-lint] | +| Nix | [nixpkgs-fmt] | +| package.json | [sort-package-json] | +| Perl | [perlcritic], [perltidy] | +| PHP | [php-cs-fixer], [phpstan] | +| PNG | [oxipng] | +| PowerShell | [psscriptanalyzer] | +| Prisma | [prisma] | +| Protobuf | [buf] (breaking, lint, and format), [clang-format], [clang-tidy] | +| Python | [autopep8], [bandit], [black], [flake8], [isort], [mypy], [pylint], [pyright], [semgrep], [yapf], [ruff], [sourcery] | +| Rego | [regal], [opa] | +| Renovate | [renovate] | +| Ruby | [brakeman], [rubocop], [rufo], [semgrep], [standardrb] | +| Rust | [clippy], [rustfmt] | +| Scala | [scalafmt] | +| Security | [checkov], [dustilock], [nancy], [osv-scanner], [tfsec], [trivy], [trufflehog], [terrascan] | +| SQL | [sqlfluff], [sqlfmt], [sql-formatter] | +| SVG | [svgo] | +| Swift | [stringslint], [swiftlint], [swiftformat] | +| Terraform | [terraform] (validate and fmt), [checkov], [tflint], [tfsec], [terrascan], [tofu] | +| Terragrunt | [terragrunt] | +| Textproto | [txtpbfmt] | +| TOML | [taplo] | +| Typescript | [deno], [eslint], [prettier], [rome], [semgrep] | +| YAML | [prettier], [semgrep], [yamllint] | [actionlint]: https://trunk.io/linters/infra/actionlint [ansible-lint]: https://github.com/ansible/ansible-lint#readme @@ -137,7 +137,6 @@ trunk check enable {linter} [ktlint]: https://github.com/pinterest/ktlint#readme [kube-linter]: https://github.com/stackrox/kube-linter#readme [markdownlint]: https://github.com/DavidAnson/markdownlint#readme -[markdownlint-cli2]: https://github.com/DavidAnson/markdownlint-cli2#readme [markdown-table-prettify]: https://github.com/darkriszty/MarkdownTablePrettify-VSCodeExt#readme [markdown-link-check]: https://github.com/tcort/markdown-link-check#readme [mypy]: https://github.com/python/mypy#readme @@ -174,8 +173,6 @@ trunk check enable {linter} [sql-formatter]: https://github.com/sql-formatter-org/sql-formatter#readme [sqlfluff]: https://github.com/sqlfluff/sqlfluff#readme [sqlfmt]: https://github.com/tconbeer/sqlfmt#readme -[squawk]: https://github.com/sbdchd/squawk#readme -[snyk]: https://github.com/snyk/cli#readme [standardrb]: https://github.com/testdouble/standard#readme [stringslint]: https://github.com/dral3x/StringsLint#readme [stylelint]: https://github.com/stylelint/stylelint#readme @@ -222,7 +219,6 @@ trunk actions enable {action} | [`go-mod-tidy-vendor`](actions/go-mod-tidy-vendor/README.md) | automatically tidy and vendor go.mod file | | [`git-blame-ignore-revs`](actions/git-blame-ignore-revs/README.md) | automatically configure git to use .git-blame-ignore-revs | | [`npm-check`](actions/npm-check/README.md) | check whether NPM installation is up to date | -| [`terraform-docs`](actions/terraform-docs/README.md) | generate documentation from Terraform modules | | [`poetry-check`](actions/poetry/README.md), [`poetry-lock`](actions/poetry/README.md), [`poetry-export`](actions/poetry/README.md), [`poetry-install`](actions/poetry/README.md) | hooks to enforce poetry configuration | | [`yarn-check`](actions/yarn-check/README.md) | check whether Yarn installation is up to date | diff --git a/eslint.config.cjs b/eslint.config.cjs index a1e9fb120..0694f4094 100644 --- a/eslint.config.cjs +++ b/eslint.config.cjs @@ -44,6 +44,11 @@ module.exports = [ "no-unused-vars": "off", "no-use-before-define": "off", "no-useless-constructor": "off", + "@typescript-eslint/lines-between-class-members": [ + "error", + "always", + { exceptAfterSingleLine: true }, + ], "@typescript-eslint/naming-convention": [ "error", { selector: "typeLike", format: ["PascalCase"] }, @@ -74,7 +79,7 @@ module.exports = [ ], "import-x/no-unresolved": "off", "import-x/prefer-default-export": "off", - "lines-between-class-members": ["error", "always", { exceptAfterSingleLine: true }], + "lines-between-class-members": "off", "max-len": [ "error", { diff --git a/linters/ansible-lint/README.md b/linters/ansible-lint/README.md index 2a6226784..23be34fe1 100644 --- a/linters/ansible-lint/README.md +++ b/linters/ansible-lint/README.md @@ -2,32 +2,10 @@ ## Usage -### New Recommendation - -We now recommend using -[inverse ignores](https://docs.trunk.io/code-quality/linters/ignoring-issues-and-files#ignoring-multiple-files) -to run ansible-lint. For backwards compatibility, you will need to specify filetypes yourself and -then a list of ignores. - -```yaml -lint: - definitions: - - name: ansible-lint - files: [yaml] - enabled: - - ansible-lint@5.3.2 - ignore: - - linters: [ansible-lint] - paths: - - "**" - - "!test_data/jboss-standalone" -``` - -### Legacy Mode - -[Ansible-lint](https://github.com/ansible/ansible-lint) is used to check ansible playbooks. -Historically, in order to integrate well with trunk, you would invoke ansible-lint with -[triggers](https://docs.trunk.io/check/configuration#trigger-rules). +[Ansible-lint](https://github.com/ansible/ansible-lint) is used to check ansible playbooks. In order +to integrate well with trunk, ansible is usually run using triggers. The trigger system allows file +changes to trigger lint runs. An example of an ansible-lint trigger is included below, but more +information can be found in our [docs](https://docs.trunk.io/check/configuration#trigger-rules). ```yaml lint: diff --git a/linters/ansible-lint/ansible_lint.test.ts b/linters/ansible-lint/ansible_lint.test.ts index 3510159b8..896f5cba6 100644 --- a/linters/ansible-lint/ansible_lint.test.ts +++ b/linters/ansible-lint/ansible_lint.test.ts @@ -9,14 +9,16 @@ const preCheck = (driver: TrunkLintDriver) => { const trunkYamlPath = ".trunk/trunk.yaml"; const currentContents = driver.readFile(trunkYamlPath); - const newContents = currentContents.concat(` definitions: - - name: ansible-lint - files: [yaml] - ignore: - - linters: [ansible-lint] + const newContents = currentContents.concat(` triggers: + # Run these linters + - linters: + - ansible-lint + # If any files matching these change paths: - "**" - - "!jboss-standalone" + # On this target (A directory in this case) + targets: + - jboss-standalone `); driver.writeFile(trunkYamlPath, newContents); diff --git a/linters/ansible-lint/plugin.yaml b/linters/ansible-lint/plugin.yaml index d7188d1b0..ca71524ac 100644 --- a/linters/ansible-lint/plugin.yaml +++ b/linters/ansible-lint/plugin.yaml @@ -1,6 +1,7 @@ version: 0.1 tools: definitions: + # TODO(Tyler): Once we can make ansible its own tool without breaking upgrade, this should be extracted into its own tool directory - name: ansible-lint runtime: python package: ansible-lint @@ -19,20 +20,18 @@ lint: version: ">=6.1.0" # sarif support was added in version 6.1.0 output: sarif - run: ansible-lint -f sarif ${target} + run: ansible-lint -f sarif # ansible-lint >=6.15.0 return exit code 5 when no files matched success_codes: [0, 2, 5] - run_from: ${parent} - batch: true + run_from: ${target_directory} - name: lint version: ">=5.1.3" # Custom parser type defined in the trunk cli to handle ansible-lint's output. output: ansible_lint # parseable-severity was removed after 5.4.0 - run: ansible-lint --parseable-severity ${target} + run: ansible-lint --parseable-severity success_codes: [0, 2] - run_from: ${parent} - batch: true + run_from: ${target_directory} tools: [ansible-lint] suggest_if: never direct_configs: [.ansible-lint] diff --git a/linters/ansible-lint/test_data/ansible_lint_v24.5.0_FQCN.check.shot b/linters/ansible-lint/test_data/ansible_lint_v24.5.0_FQCN.check.shot new file mode 100644 index 000000000..ed073c421 --- /dev/null +++ b/linters/ansible-lint/test_data/ansible_lint_v24.5.0_FQCN.check.shot @@ -0,0 +1,596 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP +// trunk-upgrade-validation:RELEASE + +exports[`Testing linter ansible-lint test FQCN 1`] = ` +{ + "issues": [ + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/demo-aws-launch.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "28", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.wait_for\` or \`ansible.legacy.wait_for\` instead.", + "targetType": "custom", + }, + { + "code": "yaml[truthy]", + "column": "1", + "file": "jboss-standalone/demo-aws-launch.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#yaml[truthy]", + "level": "LEVEL_HIGH", + "line": "5", + "linter": "ansible-lint", + "message": "Truthy value should be one of [false, true]", + "targetType": "custom", + }, + { + "code": "name[play]", + "column": "1", + "file": "jboss-standalone/deploy-application.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#name[play]", + "level": "LEVEL_HIGH", + "line": "4", + "linter": "ansible-lint", + "message": "All plays should be named.", + "targetType": "custom", + }, + { + "code": "role-name", + "column": "1", + "file": "jboss-standalone/roles/java-app", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#role-name", + "level": "LEVEL_HIGH", + "line": "1", + "linter": "ansible-lint", + "message": "Role name java-app does not match \`\`^[a-z][a-z0-9_]*$\`\` pattern.", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/java-app/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "14", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.copy\` or \`ansible.legacy.copy\` instead.", + "targetType": "custom", + }, + { + "code": "risky-file-permissions", + "column": "1", + "file": "jboss-standalone/roles/java-app/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#risky-file-permissions", + "level": "LEVEL_HIGH", + "line": "14", + "linter": "ansible-lint", + "message": "Task/Handler: Copy application WAR file to host", + "targetType": "custom", + }, + { + "code": "fqcn[action]", + "column": "1", + "file": "jboss-standalone/roles/java-app/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action]", + "level": "LEVEL_HIGH", + "line": "19", + "linter": "ansible-lint", + "message": "Action \`jboss\` is not FQCN.", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/java-app/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "2", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.copy\` or \`ansible.legacy.copy\` instead.", + "targetType": "custom", + }, + { + "code": "risky-file-permissions", + "column": "1", + "file": "jboss-standalone/roles/java-app/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#risky-file-permissions", + "level": "LEVEL_HIGH", + "line": "2", + "linter": "ansible-lint", + "message": "Task/Handler: Copy application WAR file to host", + "targetType": "custom", + }, + { + "code": "fqcn[action]", + "column": "1", + "file": "jboss-standalone/roles/java-app/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action]", + "level": "LEVEL_HIGH", + "line": "7", + "linter": "ansible-lint", + "message": "Action \`jboss\` is not FQCN.", + "targetType": "custom", + }, + { + "code": "role-name", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#role-name", + "level": "LEVEL_HIGH", + "line": "1", + "linter": "ansible-lint", + "message": "Role name jboss-standalone does not match \`\`^[a-z][a-z0-9_]*$\`\` pattern.", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/handlers/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "2", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.service\` or \`ansible.legacy.service\` instead.", + "targetType": "custom", + }, + { + "code": "name[casing]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/handlers/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#name[casing]", + "level": "LEVEL_HIGH", + "line": "2", + "linter": "ansible-lint", + "message": "Task/Handler: restart jboss", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/handlers/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "7", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.service\` or \`ansible.legacy.service\` instead.", + "targetType": "custom", + }, + { + "code": "name[casing]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/handlers/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#name[casing]", + "level": "LEVEL_HIGH", + "line": "7", + "linter": "ansible-lint", + "message": "Task/Handler: restart iptables", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "12", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.get_url\` or \`ansible.legacy.get_url\` instead.", + "targetType": "custom", + }, + { + "code": "risky-file-permissions", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#risky-file-permissions", + "level": "LEVEL_HIGH", + "line": "12", + "linter": "ansible-lint", + "message": "Task/Handler: Download JBoss from jboss.org", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "17", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.unarchive\` or \`ansible.legacy.unarchive\` instead.", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "2", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.dnf\` or \`ansible.legacy.dnf\` instead.", + "targetType": "custom", + }, + { + "code": "yaml[truthy]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#yaml[truthy]", + "level": "LEVEL_HIGH", + "line": "22", + "linter": "ansible-lint", + "message": "Truthy value should be one of [false, true]", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "25", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.command\` or \`ansible.legacy.command\` instead.", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "31", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.template\` or \`ansible.legacy.template\` instead.", + "targetType": "custom", + }, + { + "code": "name[casing]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#name[casing]", + "level": "LEVEL_HIGH", + "line": "31", + "linter": "ansible-lint", + "message": "Task/Handler: Copying standalone.xml configuration file", + "targetType": "custom", + }, + { + "code": "risky-file-permissions", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#risky-file-permissions", + "level": "LEVEL_HIGH", + "line": "31", + "linter": "ansible-lint", + "message": "Task/Handler: Copying standalone.xml configuration file", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "37", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.group\` or \`ansible.legacy.group\` instead.", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "41", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.user\` or \`ansible.legacy.user\` instead.", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "47", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.file\` or \`ansible.legacy.file\` instead.", + "targetType": "custom", + }, + { + "code": "yaml[truthy]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#yaml[truthy]", + "level": "LEVEL_HIGH", + "line": "53", + "linter": "ansible-lint", + "message": "Truthy value should be one of [false, true]", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "55", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.copy\` or \`ansible.legacy.copy\` instead.", + "targetType": "custom", + }, + { + "code": "yaml[octal-values]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#yaml[octal-values]", + "level": "LEVEL_HIGH", + "line": "59", + "linter": "ansible-lint", + "message": "Forbidden implicit octal value "0755"", + "targetType": "custom", + }, + { + "code": "command-instead-of-module", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#command-instead-of-module", + "level": "LEVEL_HIGH", + "line": "61", + "linter": "ansible-lint", + "message": "Task/Handler: Workaround for systemd bug", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "61", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.shell\` or \`ansible.legacy.shell\` instead.", + "targetType": "custom", + }, + { + "code": "ignore-errors", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#ignore-errors", + "level": "LEVEL_HIGH", + "line": "61", + "linter": "ansible-lint", + "message": "Task/Handler: Workaround for systemd bug", + "targetType": "custom", + }, + { + "code": "no-changed-when", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#no-changed-when", + "level": "LEVEL_HIGH", + "line": "61", + "linter": "ansible-lint", + "message": "Task/Handler: Workaround for systemd bug", + "targetType": "custom", + }, + { + "code": "yaml[truthy]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#yaml[truthy]", + "level": "LEVEL_HIGH", + "line": "63", + "linter": "ansible-lint", + "message": "Truthy value should be one of [false, true]", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "65", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.service\` or \`ansible.legacy.service\` instead.", + "targetType": "custom", + }, + { + "code": "yaml[truthy]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#yaml[truthy]", + "level": "LEVEL_HIGH", + "line": "68", + "linter": "ansible-lint", + "message": "Truthy value should be one of [false, true]", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "71", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.template\` or \`ansible.legacy.template\` instead.", + "targetType": "custom", + }, + { + "code": "name[casing]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#name[casing]", + "level": "LEVEL_HIGH", + "line": "71", + "linter": "ansible-lint", + "message": "Task/Handler: deploy iptables rules", + "targetType": "custom", + }, + { + "code": "risky-file-permissions", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#risky-file-permissions", + "level": "LEVEL_HIGH", + "line": "71", + "linter": "ansible-lint", + "message": "Task/Handler: deploy iptables rules", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "78", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.dnf\` or \`ansible.legacy.dnf\` instead.", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "84", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.service\` or \`ansible.legacy.service\` instead.", + "targetType": "custom", + }, + { + "code": "fqcn[action]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action]", + "level": "LEVEL_HIGH", + "line": "90", + "linter": "ansible-lint", + "message": "Action \`firewalld\` is not FQCN.", + "targetType": "custom", + }, + { + "code": "name[casing]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#name[casing]", + "level": "LEVEL_HIGH", + "line": "90", + "linter": "ansible-lint", + "message": "Task/Handler: deploy firewalld rules", + "targetType": "custom", + }, + { + "code": "yaml[truthy]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#yaml[truthy]", + "level": "LEVEL_HIGH", + "line": "92", + "linter": "ansible-lint", + "message": "Truthy value should be one of [false, true]", + "targetType": "custom", + }, + { + "code": "yaml[truthy]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#yaml[truthy]", + "level": "LEVEL_HIGH", + "line": "95", + "linter": "ansible-lint", + "message": "Truthy value should be one of [false, true]", + "targetType": "custom", + }, + { + "code": "name[play]", + "column": "1", + "file": "jboss-standalone/site.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#name[play]", + "level": "LEVEL_HIGH", + "line": "4", + "linter": "ansible-lint", + "message": "All plays should be named.", + "targetType": "custom", + }, + ], + "lintActions": [ + { + "command": "lint", + "fileGroupName": "custom", + "linter": "ansible-lint", + "paths": [ + "jboss-standalone", + ], + "verb": "TRUNK_VERB_CHECK", + }, + { + "command": "lint", + "fileGroupName": "custom", + "linter": "ansible-lint", + "paths": [ + "jboss-standalone", + ], + "upstream": true, + "verb": "TRUNK_VERB_CHECK", + }, + ], + "taskFailures": [], + "unformattedFiles": [], +} +`; diff --git a/linters/ansible-lint/test_data/ansible_lint_v24.5.0_non_FQCN.check.shot b/linters/ansible-lint/test_data/ansible_lint_v24.5.0_non_FQCN.check.shot new file mode 100644 index 000000000..5eb027aa2 --- /dev/null +++ b/linters/ansible-lint/test_data/ansible_lint_v24.5.0_non_FQCN.check.shot @@ -0,0 +1,584 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP +// trunk-upgrade-validation:RELEASE + +exports[`Testing linter ansible-lint test non_FQCN 1`] = ` +{ + "issues": [ + { + "code": "syntax-check[unknown-module]", + "column": "7", + "file": "jboss-standalone/demo-aws-launch.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#syntax-check[unknown-module]", + "level": "LEVEL_HIGH", + "line": "12", + "linter": "ansible-lint", + "message": "couldn't resolve module/action 'ec2'. This often indicates a misspelling, missing collection, or incorrect module path.", + "targetType": "custom", + }, + { + "code": "name[play]", + "column": "1", + "file": "jboss-standalone/deploy-application.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#name[play]", + "level": "LEVEL_HIGH", + "line": "4", + "linter": "ansible-lint", + "message": "All plays should be named.", + "targetType": "custom", + }, + { + "code": "role-name", + "column": "1", + "file": "jboss-standalone/roles/java-app", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#role-name", + "level": "LEVEL_HIGH", + "line": "1", + "linter": "ansible-lint", + "message": "Role name java-app does not match \`\`^[a-z][a-z0-9_]*$\`\` pattern.", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/java-app/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "14", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.copy\` or \`ansible.legacy.copy\` instead.", + "targetType": "custom", + }, + { + "code": "risky-file-permissions", + "column": "1", + "file": "jboss-standalone/roles/java-app/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#risky-file-permissions", + "level": "LEVEL_HIGH", + "line": "14", + "linter": "ansible-lint", + "message": "Task/Handler: Copy application WAR file to host", + "targetType": "custom", + }, + { + "code": "fqcn[action]", + "column": "1", + "file": "jboss-standalone/roles/java-app/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action]", + "level": "LEVEL_HIGH", + "line": "19", + "linter": "ansible-lint", + "message": "Action \`jboss\` is not FQCN.", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/java-app/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "2", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.copy\` or \`ansible.legacy.copy\` instead.", + "targetType": "custom", + }, + { + "code": "risky-file-permissions", + "column": "1", + "file": "jboss-standalone/roles/java-app/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#risky-file-permissions", + "level": "LEVEL_HIGH", + "line": "2", + "linter": "ansible-lint", + "message": "Task/Handler: Copy application WAR file to host", + "targetType": "custom", + }, + { + "code": "fqcn[action]", + "column": "1", + "file": "jboss-standalone/roles/java-app/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action]", + "level": "LEVEL_HIGH", + "line": "7", + "linter": "ansible-lint", + "message": "Action \`jboss\` is not FQCN.", + "targetType": "custom", + }, + { + "code": "role-name", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#role-name", + "level": "LEVEL_HIGH", + "line": "1", + "linter": "ansible-lint", + "message": "Role name jboss-standalone does not match \`\`^[a-z][a-z0-9_]*$\`\` pattern.", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/handlers/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "2", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.service\` or \`ansible.legacy.service\` instead.", + "targetType": "custom", + }, + { + "code": "name[casing]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/handlers/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#name[casing]", + "level": "LEVEL_HIGH", + "line": "2", + "linter": "ansible-lint", + "message": "Task/Handler: restart jboss", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/handlers/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "7", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.service\` or \`ansible.legacy.service\` instead.", + "targetType": "custom", + }, + { + "code": "name[casing]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/handlers/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#name[casing]", + "level": "LEVEL_HIGH", + "line": "7", + "linter": "ansible-lint", + "message": "Task/Handler: restart iptables", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "12", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.get_url\` or \`ansible.legacy.get_url\` instead.", + "targetType": "custom", + }, + { + "code": "risky-file-permissions", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#risky-file-permissions", + "level": "LEVEL_HIGH", + "line": "12", + "linter": "ansible-lint", + "message": "Task/Handler: Download JBoss from jboss.org", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "17", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.unarchive\` or \`ansible.legacy.unarchive\` instead.", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "2", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.dnf\` or \`ansible.legacy.dnf\` instead.", + "targetType": "custom", + }, + { + "code": "yaml[truthy]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#yaml[truthy]", + "level": "LEVEL_HIGH", + "line": "22", + "linter": "ansible-lint", + "message": "Truthy value should be one of [false, true]", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "25", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.command\` or \`ansible.legacy.command\` instead.", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "31", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.template\` or \`ansible.legacy.template\` instead.", + "targetType": "custom", + }, + { + "code": "name[casing]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#name[casing]", + "level": "LEVEL_HIGH", + "line": "31", + "linter": "ansible-lint", + "message": "Task/Handler: Copying standalone.xml configuration file", + "targetType": "custom", + }, + { + "code": "risky-file-permissions", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#risky-file-permissions", + "level": "LEVEL_HIGH", + "line": "31", + "linter": "ansible-lint", + "message": "Task/Handler: Copying standalone.xml configuration file", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "37", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.group\` or \`ansible.legacy.group\` instead.", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "41", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.user\` or \`ansible.legacy.user\` instead.", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "47", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.file\` or \`ansible.legacy.file\` instead.", + "targetType": "custom", + }, + { + "code": "yaml[truthy]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#yaml[truthy]", + "level": "LEVEL_HIGH", + "line": "53", + "linter": "ansible-lint", + "message": "Truthy value should be one of [false, true]", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "55", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.copy\` or \`ansible.legacy.copy\` instead.", + "targetType": "custom", + }, + { + "code": "yaml[octal-values]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#yaml[octal-values]", + "level": "LEVEL_HIGH", + "line": "59", + "linter": "ansible-lint", + "message": "Forbidden implicit octal value "0755"", + "targetType": "custom", + }, + { + "code": "command-instead-of-module", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#command-instead-of-module", + "level": "LEVEL_HIGH", + "line": "61", + "linter": "ansible-lint", + "message": "Task/Handler: Workaround for systemd bug", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "61", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.shell\` or \`ansible.legacy.shell\` instead.", + "targetType": "custom", + }, + { + "code": "ignore-errors", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#ignore-errors", + "level": "LEVEL_HIGH", + "line": "61", + "linter": "ansible-lint", + "message": "Task/Handler: Workaround for systemd bug", + "targetType": "custom", + }, + { + "code": "no-changed-when", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#no-changed-when", + "level": "LEVEL_HIGH", + "line": "61", + "linter": "ansible-lint", + "message": "Task/Handler: Workaround for systemd bug", + "targetType": "custom", + }, + { + "code": "yaml[truthy]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#yaml[truthy]", + "level": "LEVEL_HIGH", + "line": "63", + "linter": "ansible-lint", + "message": "Truthy value should be one of [false, true]", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "65", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.service\` or \`ansible.legacy.service\` instead.", + "targetType": "custom", + }, + { + "code": "yaml[truthy]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#yaml[truthy]", + "level": "LEVEL_HIGH", + "line": "68", + "linter": "ansible-lint", + "message": "Truthy value should be one of [false, true]", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "71", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.template\` or \`ansible.legacy.template\` instead.", + "targetType": "custom", + }, + { + "code": "name[casing]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#name[casing]", + "level": "LEVEL_HIGH", + "line": "71", + "linter": "ansible-lint", + "message": "Task/Handler: deploy iptables rules", + "targetType": "custom", + }, + { + "code": "risky-file-permissions", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#risky-file-permissions", + "level": "LEVEL_HIGH", + "line": "71", + "linter": "ansible-lint", + "message": "Task/Handler: deploy iptables rules", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "78", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.dnf\` or \`ansible.legacy.dnf\` instead.", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "84", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.service\` or \`ansible.legacy.service\` instead.", + "targetType": "custom", + }, + { + "code": "fqcn[action]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action]", + "level": "LEVEL_HIGH", + "line": "90", + "linter": "ansible-lint", + "message": "Action \`firewalld\` is not FQCN.", + "targetType": "custom", + }, + { + "code": "name[casing]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#name[casing]", + "level": "LEVEL_HIGH", + "line": "90", + "linter": "ansible-lint", + "message": "Task/Handler: deploy firewalld rules", + "targetType": "custom", + }, + { + "code": "yaml[truthy]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#yaml[truthy]", + "level": "LEVEL_HIGH", + "line": "92", + "linter": "ansible-lint", + "message": "Truthy value should be one of [false, true]", + "targetType": "custom", + }, + { + "code": "yaml[truthy]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#yaml[truthy]", + "level": "LEVEL_HIGH", + "line": "95", + "linter": "ansible-lint", + "message": "Truthy value should be one of [false, true]", + "targetType": "custom", + }, + { + "code": "name[play]", + "column": "1", + "file": "jboss-standalone/site.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#name[play]", + "level": "LEVEL_HIGH", + "line": "4", + "linter": "ansible-lint", + "message": "All plays should be named.", + "targetType": "custom", + }, + ], + "lintActions": [ + { + "command": "lint", + "fileGroupName": "custom", + "linter": "ansible-lint", + "paths": [ + "jboss-standalone", + ], + "verb": "TRUNK_VERB_CHECK", + }, + { + "command": "lint", + "fileGroupName": "custom", + "linter": "ansible-lint", + "paths": [ + "jboss-standalone", + ], + "upstream": true, + "verb": "TRUNK_VERB_CHECK", + }, + ], + "taskFailures": [], + "unformattedFiles": [], +} +`; diff --git a/linters/ansible-lint/test_data/ansible_lint_v24.6.0_FQCN.check.shot b/linters/ansible-lint/test_data/ansible_lint_v24.6.0_FQCN.check.shot index a67527fe7..90ea69641 100644 --- a/linters/ansible-lint/test_data/ansible_lint_v24.6.0_FQCN.check.shot +++ b/linters/ansible-lint/test_data/ansible_lint_v24.6.0_FQCN.check.shot @@ -1,4 +1,5 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +// trunk-upgrade-validation:RELEASE exports[`Testing linter ansible-lint test FQCN 1`] = ` { @@ -13,7 +14,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "28", "linter": "ansible-lint", "message": "Use \`ansible.builtin.wait_for\` or \`ansible.legacy.wait_for\` instead.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "yaml[truthy]", @@ -25,7 +26,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "5", "linter": "ansible-lint", "message": "Truthy value should be one of [false, true]", - "targetType": "yaml", + "targetType": "custom", }, { "code": "name[play]", @@ -37,7 +38,19 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "4", "linter": "ansible-lint", "message": "All plays should be named.", - "targetType": "yaml", + "targetType": "custom", + }, + { + "code": "role-name", + "column": "1", + "file": "jboss-standalone/roles/java-app", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#role-name", + "level": "LEVEL_HIGH", + "line": "1", + "linter": "ansible-lint", + "message": "Role name java-app does not match \`\`^[a-z][a-z0-9_]*$\`\` pattern.", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -49,7 +62,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "14", "linter": "ansible-lint", "message": "Use \`ansible.builtin.copy\` or \`ansible.legacy.copy\` instead.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "risky-file-permissions", @@ -61,7 +74,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "14", "linter": "ansible-lint", "message": "Task/Handler: Copy application WAR file to host", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action]", @@ -73,7 +86,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "19", "linter": "ansible-lint", "message": "Action \`jboss\` is not FQCN.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -85,7 +98,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "2", "linter": "ansible-lint", "message": "Use \`ansible.builtin.copy\` or \`ansible.legacy.copy\` instead.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "risky-file-permissions", @@ -97,7 +110,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "2", "linter": "ansible-lint", "message": "Task/Handler: Copy application WAR file to host", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action]", @@ -109,7 +122,19 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "7", "linter": "ansible-lint", "message": "Action \`jboss\` is not FQCN.", - "targetType": "yaml", + "targetType": "custom", + }, + { + "code": "role-name", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#role-name", + "level": "LEVEL_HIGH", + "line": "1", + "linter": "ansible-lint", + "message": "Role name jboss-standalone does not match \`\`^[a-z][a-z0-9_]*$\`\` pattern.", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -121,7 +146,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "2", "linter": "ansible-lint", "message": "Use \`ansible.builtin.service\` or \`ansible.legacy.service\` instead.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "name[casing]", @@ -133,7 +158,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "2", "linter": "ansible-lint", "message": "Task/Handler: restart jboss", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -145,7 +170,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "7", "linter": "ansible-lint", "message": "Use \`ansible.builtin.service\` or \`ansible.legacy.service\` instead.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "name[casing]", @@ -157,7 +182,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "7", "linter": "ansible-lint", "message": "Task/Handler: restart iptables", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -169,7 +194,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "12", "linter": "ansible-lint", "message": "Use \`ansible.builtin.get_url\` or \`ansible.legacy.get_url\` instead.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "risky-file-permissions", @@ -181,7 +206,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "12", "linter": "ansible-lint", "message": "Task/Handler: Download JBoss from jboss.org", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -193,7 +218,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "17", "linter": "ansible-lint", "message": "Use \`ansible.builtin.unarchive\` or \`ansible.legacy.unarchive\` instead.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -205,7 +230,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "2", "linter": "ansible-lint", "message": "Use \`ansible.builtin.dnf\` or \`ansible.legacy.dnf\` instead.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "yaml[truthy]", @@ -217,7 +242,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "22", "linter": "ansible-lint", "message": "Truthy value should be one of [false, true]", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -229,7 +254,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "25", "linter": "ansible-lint", "message": "Use \`ansible.builtin.command\` or \`ansible.legacy.command\` instead.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -241,7 +266,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "31", "linter": "ansible-lint", "message": "Use \`ansible.builtin.template\` or \`ansible.legacy.template\` instead.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "risky-file-permissions", @@ -253,7 +278,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "31", "linter": "ansible-lint", "message": "Task/Handler: Copying standalone.xml configuration file", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -265,7 +290,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "37", "linter": "ansible-lint", "message": "Use \`ansible.builtin.group\` or \`ansible.legacy.group\` instead.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -277,7 +302,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "41", "linter": "ansible-lint", "message": "Use \`ansible.builtin.user\` or \`ansible.legacy.user\` instead.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -289,7 +314,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "47", "linter": "ansible-lint", "message": "Use \`ansible.builtin.file\` or \`ansible.legacy.file\` instead.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "yaml[truthy]", @@ -301,7 +326,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "53", "linter": "ansible-lint", "message": "Truthy value should be one of [false, true]", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -313,7 +338,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "55", "linter": "ansible-lint", "message": "Use \`ansible.builtin.copy\` or \`ansible.legacy.copy\` instead.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "yaml[octal-values]", @@ -325,7 +350,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "59", "linter": "ansible-lint", "message": "Forbidden implicit octal value "0755"", - "targetType": "yaml", + "targetType": "custom", }, { "code": "command-instead-of-module", @@ -337,7 +362,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "61", "linter": "ansible-lint", "message": "Task/Handler: Workaround for systemd bug", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -349,7 +374,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "61", "linter": "ansible-lint", "message": "Use \`ansible.builtin.shell\` or \`ansible.legacy.shell\` instead.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "ignore-errors", @@ -361,7 +386,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "61", "linter": "ansible-lint", "message": "Task/Handler: Workaround for systemd bug", - "targetType": "yaml", + "targetType": "custom", }, { "code": "no-changed-when", @@ -373,7 +398,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "61", "linter": "ansible-lint", "message": "Task/Handler: Workaround for systemd bug", - "targetType": "yaml", + "targetType": "custom", }, { "code": "yaml[truthy]", @@ -385,7 +410,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "63", "linter": "ansible-lint", "message": "Truthy value should be one of [false, true]", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -397,7 +422,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "65", "linter": "ansible-lint", "message": "Use \`ansible.builtin.service\` or \`ansible.legacy.service\` instead.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "yaml[truthy]", @@ -409,7 +434,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "68", "linter": "ansible-lint", "message": "Truthy value should be one of [false, true]", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -421,7 +446,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "71", "linter": "ansible-lint", "message": "Use \`ansible.builtin.template\` or \`ansible.legacy.template\` instead.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "name[casing]", @@ -433,7 +458,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "71", "linter": "ansible-lint", "message": "Task/Handler: deploy iptables rules", - "targetType": "yaml", + "targetType": "custom", }, { "code": "risky-file-permissions", @@ -445,7 +470,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "71", "linter": "ansible-lint", "message": "Task/Handler: deploy iptables rules", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -457,7 +482,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "78", "linter": "ansible-lint", "message": "Use \`ansible.builtin.dnf\` or \`ansible.legacy.dnf\` instead.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -469,7 +494,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "84", "linter": "ansible-lint", "message": "Use \`ansible.builtin.service\` or \`ansible.legacy.service\` instead.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action]", @@ -481,7 +506,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "90", "linter": "ansible-lint", "message": "Action \`firewalld\` is not FQCN.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "name[casing]", @@ -493,7 +518,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "90", "linter": "ansible-lint", "message": "Task/Handler: deploy firewalld rules", - "targetType": "yaml", + "targetType": "custom", }, { "code": "yaml[truthy]", @@ -505,7 +530,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "92", "linter": "ansible-lint", "message": "Truthy value should be one of [false, true]", - "targetType": "yaml", + "targetType": "custom", }, { "code": "yaml[truthy]", @@ -517,7 +542,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "95", "linter": "ansible-lint", "message": "Truthy value should be one of [false, true]", - "targetType": "yaml", + "targetType": "custom", }, { "code": "name[play]", @@ -529,62 +554,27 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "4", "linter": "ansible-lint", "message": "All plays should be named.", - "targetType": "yaml", + "targetType": "custom", }, ], "lintActions": [ { "command": "lint", - "fileGroupName": "yaml", - "linter": "ansible-lint", - "paths": [ - "jboss-standalone/demo-aws-launch.yml", - ], - "verb": "TRUNK_VERB_CHECK", - }, - { - "command": "lint", - "fileGroupName": "yaml", - "linter": "ansible-lint", - "paths": [ - "jboss-standalone/deploy-application.yml", - ], - "verb": "TRUNK_VERB_CHECK", - }, - { - "command": "lint", - "fileGroupName": "yaml", - "linter": "ansible-lint", - "paths": [ - "jboss-standalone/roles/java-app/tasks/main.yml", - ], - "verb": "TRUNK_VERB_CHECK", - }, - { - "command": "lint", - "fileGroupName": "yaml", - "linter": "ansible-lint", - "paths": [ - "jboss-standalone/roles/jboss-standalone/handlers/main.yml", - ], - "verb": "TRUNK_VERB_CHECK", - }, - { - "command": "lint", - "fileGroupName": "yaml", + "fileGroupName": "custom", "linter": "ansible-lint", "paths": [ - "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "jboss-standalone", ], "verb": "TRUNK_VERB_CHECK", }, { "command": "lint", - "fileGroupName": "yaml", + "fileGroupName": "custom", "linter": "ansible-lint", "paths": [ - "jboss-standalone/site.yml", + "jboss-standalone", ], + "upstream": true, "verb": "TRUNK_VERB_CHECK", }, ], diff --git a/linters/ansible-lint/test_data/ansible_lint_v24.6.0_non_FQCN.check.shot b/linters/ansible-lint/test_data/ansible_lint_v24.6.0_non_FQCN.check.shot index 50b3c44c4..8737a2c44 100644 --- a/linters/ansible-lint/test_data/ansible_lint_v24.6.0_non_FQCN.check.shot +++ b/linters/ansible-lint/test_data/ansible_lint_v24.6.0_non_FQCN.check.shot @@ -1,4 +1,5 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +// trunk-upgrade-validation:RELEASE exports[`Testing linter ansible-lint test non_FQCN 1`] = ` { @@ -13,7 +14,7 @@ exports[`Testing linter ansible-lint test non_FQCN 1`] = ` "line": "12", "linter": "ansible-lint", "message": "couldn't resolve module/action 'ec2'. This often indicates a misspelling, missing collection, or incorrect module path.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "name[play]", @@ -25,7 +26,19 @@ exports[`Testing linter ansible-lint test non_FQCN 1`] = ` "line": "4", "linter": "ansible-lint", "message": "All plays should be named.", - "targetType": "yaml", + "targetType": "custom", + }, + { + "code": "role-name", + "column": "1", + "file": "jboss-standalone/roles/java-app", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#role-name", + "level": "LEVEL_HIGH", + "line": "1", + "linter": "ansible-lint", + "message": "Role name java-app does not match \`\`^[a-z][a-z0-9_]*$\`\` pattern.", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -37,7 +50,7 @@ exports[`Testing linter ansible-lint test non_FQCN 1`] = ` "line": "14", "linter": "ansible-lint", "message": "Use \`ansible.builtin.copy\` or \`ansible.legacy.copy\` instead.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "risky-file-permissions", @@ -49,7 +62,7 @@ exports[`Testing linter ansible-lint test non_FQCN 1`] = ` "line": "14", "linter": "ansible-lint", "message": "Task/Handler: Copy application WAR file to host", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action]", @@ -61,7 +74,7 @@ exports[`Testing linter ansible-lint test non_FQCN 1`] = ` "line": "19", "linter": "ansible-lint", "message": "Action \`jboss\` is not FQCN.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -73,7 +86,7 @@ exports[`Testing linter ansible-lint test non_FQCN 1`] = ` "line": "2", "linter": "ansible-lint", "message": "Use \`ansible.builtin.copy\` or \`ansible.legacy.copy\` instead.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "risky-file-permissions", @@ -85,7 +98,7 @@ exports[`Testing linter ansible-lint test non_FQCN 1`] = ` "line": "2", "linter": "ansible-lint", "message": "Task/Handler: Copy application WAR file to host", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action]", @@ -97,7 +110,19 @@ exports[`Testing linter ansible-lint test non_FQCN 1`] = ` "line": "7", "linter": "ansible-lint", "message": "Action \`jboss\` is not FQCN.", - "targetType": "yaml", + "targetType": "custom", + }, + { + "code": "role-name", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#role-name", + "level": "LEVEL_HIGH", + "line": "1", + "linter": "ansible-lint", + "message": "Role name jboss-standalone does not match \`\`^[a-z][a-z0-9_]*$\`\` pattern.", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -109,7 +134,7 @@ exports[`Testing linter ansible-lint test non_FQCN 1`] = ` "line": "2", "linter": "ansible-lint", "message": "Use \`ansible.builtin.service\` or \`ansible.legacy.service\` instead.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "name[casing]", @@ -121,7 +146,7 @@ exports[`Testing linter ansible-lint test non_FQCN 1`] = ` "line": "2", "linter": "ansible-lint", "message": "Task/Handler: restart jboss", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -133,7 +158,7 @@ exports[`Testing linter ansible-lint test non_FQCN 1`] = ` "line": "7", "linter": "ansible-lint", "message": "Use \`ansible.builtin.service\` or \`ansible.legacy.service\` instead.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "name[casing]", @@ -145,7 +170,7 @@ exports[`Testing linter ansible-lint test non_FQCN 1`] = ` "line": "7", "linter": "ansible-lint", "message": "Task/Handler: restart iptables", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -157,7 +182,7 @@ exports[`Testing linter ansible-lint test non_FQCN 1`] = ` "line": "12", "linter": "ansible-lint", "message": "Use \`ansible.builtin.get_url\` or \`ansible.legacy.get_url\` instead.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "risky-file-permissions", @@ -169,7 +194,7 @@ exports[`Testing linter ansible-lint test non_FQCN 1`] = ` "line": "12", "linter": "ansible-lint", "message": "Task/Handler: Download JBoss from jboss.org", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -181,7 +206,7 @@ exports[`Testing linter ansible-lint test non_FQCN 1`] = ` "line": "17", "linter": "ansible-lint", "message": "Use \`ansible.builtin.unarchive\` or \`ansible.legacy.unarchive\` instead.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -193,7 +218,7 @@ exports[`Testing linter ansible-lint test non_FQCN 1`] = ` "line": "2", "linter": "ansible-lint", "message": "Use \`ansible.builtin.dnf\` or \`ansible.legacy.dnf\` instead.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "yaml[truthy]", @@ -205,7 +230,7 @@ exports[`Testing linter ansible-lint test non_FQCN 1`] = ` "line": "22", "linter": "ansible-lint", "message": "Truthy value should be one of [false, true]", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -217,7 +242,7 @@ exports[`Testing linter ansible-lint test non_FQCN 1`] = ` "line": "25", "linter": "ansible-lint", "message": "Use \`ansible.builtin.command\` or \`ansible.legacy.command\` instead.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -229,7 +254,7 @@ exports[`Testing linter ansible-lint test non_FQCN 1`] = ` "line": "31", "linter": "ansible-lint", "message": "Use \`ansible.builtin.template\` or \`ansible.legacy.template\` instead.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "risky-file-permissions", @@ -241,7 +266,7 @@ exports[`Testing linter ansible-lint test non_FQCN 1`] = ` "line": "31", "linter": "ansible-lint", "message": "Task/Handler: Copying standalone.xml configuration file", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -253,7 +278,7 @@ exports[`Testing linter ansible-lint test non_FQCN 1`] = ` "line": "37", "linter": "ansible-lint", "message": "Use \`ansible.builtin.group\` or \`ansible.legacy.group\` instead.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -265,7 +290,7 @@ exports[`Testing linter ansible-lint test non_FQCN 1`] = ` "line": "41", "linter": "ansible-lint", "message": "Use \`ansible.builtin.user\` or \`ansible.legacy.user\` instead.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -277,7 +302,7 @@ exports[`Testing linter ansible-lint test non_FQCN 1`] = ` "line": "47", "linter": "ansible-lint", "message": "Use \`ansible.builtin.file\` or \`ansible.legacy.file\` instead.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "yaml[truthy]", @@ -289,7 +314,7 @@ exports[`Testing linter ansible-lint test non_FQCN 1`] = ` "line": "53", "linter": "ansible-lint", "message": "Truthy value should be one of [false, true]", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -301,7 +326,7 @@ exports[`Testing linter ansible-lint test non_FQCN 1`] = ` "line": "55", "linter": "ansible-lint", "message": "Use \`ansible.builtin.copy\` or \`ansible.legacy.copy\` instead.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "yaml[octal-values]", @@ -313,7 +338,7 @@ exports[`Testing linter ansible-lint test non_FQCN 1`] = ` "line": "59", "linter": "ansible-lint", "message": "Forbidden implicit octal value "0755"", - "targetType": "yaml", + "targetType": "custom", }, { "code": "command-instead-of-module", @@ -325,7 +350,7 @@ exports[`Testing linter ansible-lint test non_FQCN 1`] = ` "line": "61", "linter": "ansible-lint", "message": "Task/Handler: Workaround for systemd bug", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -337,7 +362,7 @@ exports[`Testing linter ansible-lint test non_FQCN 1`] = ` "line": "61", "linter": "ansible-lint", "message": "Use \`ansible.builtin.shell\` or \`ansible.legacy.shell\` instead.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "ignore-errors", @@ -349,7 +374,7 @@ exports[`Testing linter ansible-lint test non_FQCN 1`] = ` "line": "61", "linter": "ansible-lint", "message": "Task/Handler: Workaround for systemd bug", - "targetType": "yaml", + "targetType": "custom", }, { "code": "no-changed-when", @@ -361,7 +386,7 @@ exports[`Testing linter ansible-lint test non_FQCN 1`] = ` "line": "61", "linter": "ansible-lint", "message": "Task/Handler: Workaround for systemd bug", - "targetType": "yaml", + "targetType": "custom", }, { "code": "yaml[truthy]", @@ -373,7 +398,7 @@ exports[`Testing linter ansible-lint test non_FQCN 1`] = ` "line": "63", "linter": "ansible-lint", "message": "Truthy value should be one of [false, true]", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -385,7 +410,7 @@ exports[`Testing linter ansible-lint test non_FQCN 1`] = ` "line": "65", "linter": "ansible-lint", "message": "Use \`ansible.builtin.service\` or \`ansible.legacy.service\` instead.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "yaml[truthy]", @@ -397,7 +422,7 @@ exports[`Testing linter ansible-lint test non_FQCN 1`] = ` "line": "68", "linter": "ansible-lint", "message": "Truthy value should be one of [false, true]", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -409,7 +434,7 @@ exports[`Testing linter ansible-lint test non_FQCN 1`] = ` "line": "71", "linter": "ansible-lint", "message": "Use \`ansible.builtin.template\` or \`ansible.legacy.template\` instead.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "name[casing]", @@ -421,7 +446,7 @@ exports[`Testing linter ansible-lint test non_FQCN 1`] = ` "line": "71", "linter": "ansible-lint", "message": "Task/Handler: deploy iptables rules", - "targetType": "yaml", + "targetType": "custom", }, { "code": "risky-file-permissions", @@ -433,7 +458,7 @@ exports[`Testing linter ansible-lint test non_FQCN 1`] = ` "line": "71", "linter": "ansible-lint", "message": "Task/Handler: deploy iptables rules", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -445,7 +470,7 @@ exports[`Testing linter ansible-lint test non_FQCN 1`] = ` "line": "78", "linter": "ansible-lint", "message": "Use \`ansible.builtin.dnf\` or \`ansible.legacy.dnf\` instead.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -457,7 +482,7 @@ exports[`Testing linter ansible-lint test non_FQCN 1`] = ` "line": "84", "linter": "ansible-lint", "message": "Use \`ansible.builtin.service\` or \`ansible.legacy.service\` instead.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action]", @@ -469,7 +494,7 @@ exports[`Testing linter ansible-lint test non_FQCN 1`] = ` "line": "90", "linter": "ansible-lint", "message": "Action \`firewalld\` is not FQCN.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "name[casing]", @@ -481,7 +506,7 @@ exports[`Testing linter ansible-lint test non_FQCN 1`] = ` "line": "90", "linter": "ansible-lint", "message": "Task/Handler: deploy firewalld rules", - "targetType": "yaml", + "targetType": "custom", }, { "code": "yaml[truthy]", @@ -493,7 +518,7 @@ exports[`Testing linter ansible-lint test non_FQCN 1`] = ` "line": "92", "linter": "ansible-lint", "message": "Truthy value should be one of [false, true]", - "targetType": "yaml", + "targetType": "custom", }, { "code": "yaml[truthy]", @@ -505,7 +530,7 @@ exports[`Testing linter ansible-lint test non_FQCN 1`] = ` "line": "95", "linter": "ansible-lint", "message": "Truthy value should be one of [false, true]", - "targetType": "yaml", + "targetType": "custom", }, { "code": "name[play]", @@ -517,62 +542,27 @@ exports[`Testing linter ansible-lint test non_FQCN 1`] = ` "line": "4", "linter": "ansible-lint", "message": "All plays should be named.", - "targetType": "yaml", + "targetType": "custom", }, ], "lintActions": [ { "command": "lint", - "fileGroupName": "yaml", - "linter": "ansible-lint", - "paths": [ - "jboss-standalone/demo-aws-launch.yml", - ], - "verb": "TRUNK_VERB_CHECK", - }, - { - "command": "lint", - "fileGroupName": "yaml", - "linter": "ansible-lint", - "paths": [ - "jboss-standalone/deploy-application.yml", - ], - "verb": "TRUNK_VERB_CHECK", - }, - { - "command": "lint", - "fileGroupName": "yaml", - "linter": "ansible-lint", - "paths": [ - "jboss-standalone/roles/java-app/tasks/main.yml", - ], - "verb": "TRUNK_VERB_CHECK", - }, - { - "command": "lint", - "fileGroupName": "yaml", - "linter": "ansible-lint", - "paths": [ - "jboss-standalone/roles/jboss-standalone/handlers/main.yml", - ], - "verb": "TRUNK_VERB_CHECK", - }, - { - "command": "lint", - "fileGroupName": "yaml", + "fileGroupName": "custom", "linter": "ansible-lint", "paths": [ - "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "jboss-standalone", ], "verb": "TRUNK_VERB_CHECK", }, { "command": "lint", - "fileGroupName": "yaml", + "fileGroupName": "custom", "linter": "ansible-lint", "paths": [ - "jboss-standalone/site.yml", + "jboss-standalone", ], + "upstream": true, "verb": "TRUNK_VERB_CHECK", }, ], diff --git a/linters/ansible-lint/test_data/ansible_lint_v6.13.0_FQCN.check.shot b/linters/ansible-lint/test_data/ansible_lint_v6.13.0_FQCN.check.shot index 2fc859ed5..82f916454 100644 --- a/linters/ansible-lint/test_data/ansible_lint_v6.13.0_FQCN.check.shot +++ b/linters/ansible-lint/test_data/ansible_lint_v6.13.0_FQCN.check.shot @@ -1,4 +1,5 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +// trunk-upgrade-validation:RELEASE exports[`Testing linter ansible-lint test FQCN 1`] = ` { @@ -13,7 +14,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "28", "linter": "ansible-lint", "message": "Use FQCN for builtin module actions (wait_for).", - "targetType": "yaml", + "targetType": "custom", }, { "code": "yaml[truthy]", @@ -25,7 +26,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "5", "linter": "ansible-lint", "message": "Truthy value should be one of [false, true]", - "targetType": "yaml", + "targetType": "custom", }, { "code": "name[play]", @@ -37,7 +38,19 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "4", "linter": "ansible-lint", "message": "All plays should be named.", - "targetType": "yaml", + "targetType": "custom", + }, + { + "code": "role-name", + "column": "1", + "file": "jboss-standalone/roles/java-app", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#role-name", + "level": "LEVEL_HIGH", + "line": "1", + "linter": "ansible-lint", + "message": "Role name java-app does not match \`\`^[a-z][a-z0-9_]*$\`\` pattern.", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -49,7 +62,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "14", "linter": "ansible-lint", "message": "Use FQCN for builtin module actions (copy).", - "targetType": "yaml", + "targetType": "custom", }, { "code": "risky-file-permissions", @@ -61,7 +74,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "14", "linter": "ansible-lint", "message": "File permissions unset or incorrect.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action]", @@ -73,7 +86,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "19", "linter": "ansible-lint", "message": "Use FQCN for module actions, such \`community.general.jboss\`.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -85,7 +98,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "2", "linter": "ansible-lint", "message": "Use FQCN for builtin module actions (copy).", - "targetType": "yaml", + "targetType": "custom", }, { "code": "risky-file-permissions", @@ -97,7 +110,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "2", "linter": "ansible-lint", "message": "File permissions unset or incorrect.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action]", @@ -109,7 +122,19 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "7", "linter": "ansible-lint", "message": "Use FQCN for module actions, such \`community.general.jboss\`.", - "targetType": "yaml", + "targetType": "custom", + }, + { + "code": "role-name", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#role-name", + "level": "LEVEL_HIGH", + "line": "1", + "linter": "ansible-lint", + "message": "Role name jboss-standalone does not match \`\`^[a-z][a-z0-9_]*$\`\` pattern.", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -121,7 +146,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "2", "linter": "ansible-lint", "message": "Use FQCN for builtin module actions (service).", - "targetType": "yaml", + "targetType": "custom", }, { "code": "name[casing]", @@ -133,7 +158,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "2", "linter": "ansible-lint", "message": "All names should start with an uppercase letter.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -145,7 +170,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "7", "linter": "ansible-lint", "message": "Use FQCN for builtin module actions (service).", - "targetType": "yaml", + "targetType": "custom", }, { "code": "name[casing]", @@ -157,7 +182,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "7", "linter": "ansible-lint", "message": "All names should start with an uppercase letter.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -169,7 +194,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "12", "linter": "ansible-lint", "message": "Use FQCN for builtin module actions (get_url).", - "targetType": "yaml", + "targetType": "custom", }, { "code": "risky-file-permissions", @@ -181,7 +206,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "12", "linter": "ansible-lint", "message": "File permissions unset or incorrect.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -193,7 +218,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "17", "linter": "ansible-lint", "message": "Use FQCN for builtin module actions (unarchive).", - "targetType": "yaml", + "targetType": "custom", }, { "code": "yaml[truthy]", @@ -205,7 +230,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "22", "linter": "ansible-lint", "message": "Truthy value should be one of [false, true]", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -217,7 +242,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "25", "linter": "ansible-lint", "message": "Use FQCN for builtin module actions (command).", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -229,7 +254,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "31", "linter": "ansible-lint", "message": "Use FQCN for builtin module actions (template).", - "targetType": "yaml", + "targetType": "custom", }, { "code": "risky-file-permissions", @@ -241,7 +266,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "31", "linter": "ansible-lint", "message": "File permissions unset or incorrect.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -253,7 +278,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "37", "linter": "ansible-lint", "message": "Use FQCN for builtin module actions (group).", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -265,7 +290,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "41", "linter": "ansible-lint", "message": "Use FQCN for builtin module actions (user).", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -277,7 +302,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "47", "linter": "ansible-lint", "message": "Use FQCN for builtin module actions (file).", - "targetType": "yaml", + "targetType": "custom", }, { "code": "yaml[truthy]", @@ -289,7 +314,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "53", "linter": "ansible-lint", "message": "Truthy value should be one of [false, true]", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -301,7 +326,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "55", "linter": "ansible-lint", "message": "Use FQCN for builtin module actions (copy).", - "targetType": "yaml", + "targetType": "custom", }, { "code": "yaml[octal-values]", @@ -313,7 +338,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "59", "linter": "ansible-lint", "message": "Forbidden implicit octal value "0755"", - "targetType": "yaml", + "targetType": "custom", }, { "code": "command-instead-of-module", @@ -325,7 +350,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "61", "linter": "ansible-lint", "message": "service used in place of service module", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -337,7 +362,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "61", "linter": "ansible-lint", "message": "Use FQCN for builtin module actions (shell).", - "targetType": "yaml", + "targetType": "custom", }, { "code": "ignore-errors", @@ -349,7 +374,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "61", "linter": "ansible-lint", "message": "Use failed_when and specify error conditions instead of using ignore_errors.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "no-changed-when", @@ -361,7 +386,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "61", "linter": "ansible-lint", "message": "Commands should not change things if nothing needs doing.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "yaml[truthy]", @@ -373,7 +398,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "63", "linter": "ansible-lint", "message": "Truthy value should be one of [false, true]", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -385,7 +410,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "65", "linter": "ansible-lint", "message": "Use FQCN for builtin module actions (service).", - "targetType": "yaml", + "targetType": "custom", }, { "code": "yaml[truthy]", @@ -397,7 +422,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "68", "linter": "ansible-lint", "message": "Truthy value should be one of [false, true]", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -409,7 +434,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "71", "linter": "ansible-lint", "message": "Use FQCN for builtin module actions (template).", - "targetType": "yaml", + "targetType": "custom", }, { "code": "name[casing]", @@ -421,7 +446,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "71", "linter": "ansible-lint", "message": "All names should start with an uppercase letter.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "risky-file-permissions", @@ -433,7 +458,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "71", "linter": "ansible-lint", "message": "File permissions unset or incorrect.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action-core]", @@ -445,7 +470,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "84", "linter": "ansible-lint", "message": "Use FQCN for builtin module actions (service).", - "targetType": "yaml", + "targetType": "custom", }, { "code": "fqcn[action]", @@ -457,7 +482,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "90", "linter": "ansible-lint", "message": "Use FQCN for module actions, such \`ansible.posix.firewalld\`.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "name[casing]", @@ -469,7 +494,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "90", "linter": "ansible-lint", "message": "All names should start with an uppercase letter.", - "targetType": "yaml", + "targetType": "custom", }, { "code": "yaml[truthy]", @@ -481,7 +506,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "92", "linter": "ansible-lint", "message": "Truthy value should be one of [false, true]", - "targetType": "yaml", + "targetType": "custom", }, { "code": "yaml[truthy]", @@ -493,7 +518,7 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "95", "linter": "ansible-lint", "message": "Truthy value should be one of [false, true]", - "targetType": "yaml", + "targetType": "custom", }, { "code": "name[play]", @@ -505,62 +530,27 @@ exports[`Testing linter ansible-lint test FQCN 1`] = ` "line": "4", "linter": "ansible-lint", "message": "All plays should be named.", - "targetType": "yaml", + "targetType": "custom", }, ], "lintActions": [ { "command": "lint", - "fileGroupName": "yaml", - "linter": "ansible-lint", - "paths": [ - "jboss-standalone/demo-aws-launch.yml", - ], - "verb": "TRUNK_VERB_CHECK", - }, - { - "command": "lint", - "fileGroupName": "yaml", - "linter": "ansible-lint", - "paths": [ - "jboss-standalone/deploy-application.yml", - ], - "verb": "TRUNK_VERB_CHECK", - }, - { - "command": "lint", - "fileGroupName": "yaml", - "linter": "ansible-lint", - "paths": [ - "jboss-standalone/roles/java-app/tasks/main.yml", - ], - "verb": "TRUNK_VERB_CHECK", - }, - { - "command": "lint", - "fileGroupName": "yaml", - "linter": "ansible-lint", - "paths": [ - "jboss-standalone/roles/jboss-standalone/handlers/main.yml", - ], - "verb": "TRUNK_VERB_CHECK", - }, - { - "command": "lint", - "fileGroupName": "yaml", + "fileGroupName": "custom", "linter": "ansible-lint", "paths": [ - "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "jboss-standalone", ], "verb": "TRUNK_VERB_CHECK", }, { "command": "lint", - "fileGroupName": "yaml", + "fileGroupName": "custom", "linter": "ansible-lint", "paths": [ - "jboss-standalone/site.yml", + "jboss-standalone", ], + "upstream": true, "verb": "TRUNK_VERB_CHECK", }, ], diff --git a/linters/ansible-lint/test_data/ansible_lint_v6.13.0_non_FQCN.check.shot b/linters/ansible-lint/test_data/ansible_lint_v6.13.0_non_FQCN.check.shot index b17ecea8b..8c4365b3b 100644 --- a/linters/ansible-lint/test_data/ansible_lint_v6.13.0_non_FQCN.check.shot +++ b/linters/ansible-lint/test_data/ansible_lint_v6.13.0_non_FQCN.check.shot @@ -13,518 +13,27 @@ exports[`Testing linter ansible-lint test non_FQCN 1`] = ` "line": "12", "linter": "ansible-lint", "message": "couldn't resolve module/action 'ec2'. This often indicates a misspelling, missing collection, or incorrect module path.", - "targetType": "yaml", - }, - { - "code": "fqcn[action-core]", - "column": "1", - "file": "jboss-standalone/roles/java-app/tasks/main.yml", - "issueClass": "ISSUE_CLASS_NEW", - "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", - "level": "LEVEL_HIGH", - "line": "14", - "linter": "ansible-lint", - "message": "Use FQCN for builtin module actions (copy).", - "targetType": "yaml", - }, - { - "code": "risky-file-permissions", - "column": "1", - "file": "jboss-standalone/roles/java-app/tasks/main.yml", - "issueClass": "ISSUE_CLASS_NEW", - "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#risky-file-permissions", - "level": "LEVEL_HIGH", - "line": "14", - "linter": "ansible-lint", - "message": "File permissions unset or incorrect.", - "targetType": "yaml", - }, - { - "code": "fqcn[action]", - "column": "1", - "file": "jboss-standalone/roles/java-app/tasks/main.yml", - "issueClass": "ISSUE_CLASS_NEW", - "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action]", - "level": "LEVEL_HIGH", - "line": "19", - "linter": "ansible-lint", - "message": "Use FQCN for module actions, such \`community.general.jboss\`.", - "targetType": "yaml", - }, - { - "code": "fqcn[action-core]", - "column": "1", - "file": "jboss-standalone/roles/java-app/tasks/main.yml", - "issueClass": "ISSUE_CLASS_NEW", - "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", - "level": "LEVEL_HIGH", - "line": "2", - "linter": "ansible-lint", - "message": "Use FQCN for builtin module actions (copy).", - "targetType": "yaml", - }, - { - "code": "risky-file-permissions", - "column": "1", - "file": "jboss-standalone/roles/java-app/tasks/main.yml", - "issueClass": "ISSUE_CLASS_NEW", - "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#risky-file-permissions", - "level": "LEVEL_HIGH", - "line": "2", - "linter": "ansible-lint", - "message": "File permissions unset or incorrect.", - "targetType": "yaml", - }, - { - "code": "fqcn[action]", - "column": "1", - "file": "jboss-standalone/roles/java-app/tasks/main.yml", - "issueClass": "ISSUE_CLASS_NEW", - "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action]", - "level": "LEVEL_HIGH", - "line": "7", - "linter": "ansible-lint", - "message": "Use FQCN for module actions, such \`community.general.jboss\`.", - "targetType": "yaml", - }, - { - "code": "fqcn[action-core]", - "column": "1", - "file": "jboss-standalone/roles/jboss-standalone/handlers/main.yml", - "issueClass": "ISSUE_CLASS_NEW", - "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", - "level": "LEVEL_HIGH", - "line": "2", - "linter": "ansible-lint", - "message": "Use FQCN for builtin module actions (service).", - "targetType": "yaml", - }, - { - "code": "name[casing]", - "column": "1", - "file": "jboss-standalone/roles/jboss-standalone/handlers/main.yml", - "issueClass": "ISSUE_CLASS_NEW", - "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#name[casing]", - "level": "LEVEL_HIGH", - "line": "2", - "linter": "ansible-lint", - "message": "All names should start with an uppercase letter.", - "targetType": "yaml", - }, - { - "code": "fqcn[action-core]", - "column": "1", - "file": "jboss-standalone/roles/jboss-standalone/handlers/main.yml", - "issueClass": "ISSUE_CLASS_NEW", - "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", - "level": "LEVEL_HIGH", - "line": "7", - "linter": "ansible-lint", - "message": "Use FQCN for builtin module actions (service).", - "targetType": "yaml", - }, - { - "code": "name[casing]", - "column": "1", - "file": "jboss-standalone/roles/jboss-standalone/handlers/main.yml", - "issueClass": "ISSUE_CLASS_NEW", - "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#name[casing]", - "level": "LEVEL_HIGH", - "line": "7", - "linter": "ansible-lint", - "message": "All names should start with an uppercase letter.", - "targetType": "yaml", - }, - { - "code": "fqcn[action-core]", - "column": "1", - "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", - "issueClass": "ISSUE_CLASS_NEW", - "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", - "level": "LEVEL_HIGH", - "line": "12", - "linter": "ansible-lint", - "message": "Use FQCN for builtin module actions (get_url).", - "targetType": "yaml", - }, - { - "code": "risky-file-permissions", - "column": "1", - "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", - "issueClass": "ISSUE_CLASS_NEW", - "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#risky-file-permissions", - "level": "LEVEL_HIGH", - "line": "12", - "linter": "ansible-lint", - "message": "File permissions unset or incorrect.", - "targetType": "yaml", - }, - { - "code": "fqcn[action-core]", - "column": "1", - "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", - "issueClass": "ISSUE_CLASS_NEW", - "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", - "level": "LEVEL_HIGH", - "line": "17", - "linter": "ansible-lint", - "message": "Use FQCN for builtin module actions (unarchive).", - "targetType": "yaml", - }, - { - "code": "yaml[truthy]", - "column": "1", - "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", - "issueClass": "ISSUE_CLASS_NEW", - "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#yaml[truthy]", - "level": "LEVEL_HIGH", - "line": "22", - "linter": "ansible-lint", - "message": "Truthy value should be one of [false, true]", - "targetType": "yaml", - }, - { - "code": "fqcn[action-core]", - "column": "1", - "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", - "issueClass": "ISSUE_CLASS_NEW", - "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", - "level": "LEVEL_HIGH", - "line": "25", - "linter": "ansible-lint", - "message": "Use FQCN for builtin module actions (command).", - "targetType": "yaml", - }, - { - "code": "fqcn[action-core]", - "column": "1", - "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", - "issueClass": "ISSUE_CLASS_NEW", - "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", - "level": "LEVEL_HIGH", - "line": "31", - "linter": "ansible-lint", - "message": "Use FQCN for builtin module actions (template).", - "targetType": "yaml", - }, - { - "code": "risky-file-permissions", - "column": "1", - "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", - "issueClass": "ISSUE_CLASS_NEW", - "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#risky-file-permissions", - "level": "LEVEL_HIGH", - "line": "31", - "linter": "ansible-lint", - "message": "File permissions unset or incorrect.", - "targetType": "yaml", - }, - { - "code": "fqcn[action-core]", - "column": "1", - "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", - "issueClass": "ISSUE_CLASS_NEW", - "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", - "level": "LEVEL_HIGH", - "line": "37", - "linter": "ansible-lint", - "message": "Use FQCN for builtin module actions (group).", - "targetType": "yaml", - }, - { - "code": "fqcn[action-core]", - "column": "1", - "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", - "issueClass": "ISSUE_CLASS_NEW", - "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", - "level": "LEVEL_HIGH", - "line": "41", - "linter": "ansible-lint", - "message": "Use FQCN for builtin module actions (user).", - "targetType": "yaml", - }, - { - "code": "fqcn[action-core]", - "column": "1", - "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", - "issueClass": "ISSUE_CLASS_NEW", - "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", - "level": "LEVEL_HIGH", - "line": "47", - "linter": "ansible-lint", - "message": "Use FQCN for builtin module actions (file).", - "targetType": "yaml", - }, - { - "code": "yaml[truthy]", - "column": "1", - "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", - "issueClass": "ISSUE_CLASS_NEW", - "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#yaml[truthy]", - "level": "LEVEL_HIGH", - "line": "53", - "linter": "ansible-lint", - "message": "Truthy value should be one of [false, true]", - "targetType": "yaml", - }, - { - "code": "fqcn[action-core]", - "column": "1", - "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", - "issueClass": "ISSUE_CLASS_NEW", - "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", - "level": "LEVEL_HIGH", - "line": "55", - "linter": "ansible-lint", - "message": "Use FQCN for builtin module actions (copy).", - "targetType": "yaml", - }, - { - "code": "yaml[octal-values]", - "column": "1", - "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", - "issueClass": "ISSUE_CLASS_NEW", - "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#yaml[octal-values]", - "level": "LEVEL_HIGH", - "line": "59", - "linter": "ansible-lint", - "message": "Forbidden implicit octal value "0755"", - "targetType": "yaml", - }, - { - "code": "command-instead-of-module", - "column": "1", - "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", - "issueClass": "ISSUE_CLASS_NEW", - "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#command-instead-of-module", - "level": "LEVEL_HIGH", - "line": "61", - "linter": "ansible-lint", - "message": "service used in place of service module", - "targetType": "yaml", - }, - { - "code": "fqcn[action-core]", - "column": "1", - "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", - "issueClass": "ISSUE_CLASS_NEW", - "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", - "level": "LEVEL_HIGH", - "line": "61", - "linter": "ansible-lint", - "message": "Use FQCN for builtin module actions (shell).", - "targetType": "yaml", - }, - { - "code": "ignore-errors", - "column": "1", - "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", - "issueClass": "ISSUE_CLASS_NEW", - "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#ignore-errors", - "level": "LEVEL_HIGH", - "line": "61", - "linter": "ansible-lint", - "message": "Use failed_when and specify error conditions instead of using ignore_errors.", - "targetType": "yaml", - }, - { - "code": "no-changed-when", - "column": "1", - "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", - "issueClass": "ISSUE_CLASS_NEW", - "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#no-changed-when", - "level": "LEVEL_HIGH", - "line": "61", - "linter": "ansible-lint", - "message": "Commands should not change things if nothing needs doing.", - "targetType": "yaml", - }, - { - "code": "yaml[truthy]", - "column": "1", - "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", - "issueClass": "ISSUE_CLASS_NEW", - "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#yaml[truthy]", - "level": "LEVEL_HIGH", - "line": "63", - "linter": "ansible-lint", - "message": "Truthy value should be one of [false, true]", - "targetType": "yaml", - }, - { - "code": "fqcn[action-core]", - "column": "1", - "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", - "issueClass": "ISSUE_CLASS_NEW", - "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", - "level": "LEVEL_HIGH", - "line": "65", - "linter": "ansible-lint", - "message": "Use FQCN for builtin module actions (service).", - "targetType": "yaml", - }, - { - "code": "yaml[truthy]", - "column": "1", - "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", - "issueClass": "ISSUE_CLASS_NEW", - "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#yaml[truthy]", - "level": "LEVEL_HIGH", - "line": "68", - "linter": "ansible-lint", - "message": "Truthy value should be one of [false, true]", - "targetType": "yaml", - }, - { - "code": "fqcn[action-core]", - "column": "1", - "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", - "issueClass": "ISSUE_CLASS_NEW", - "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", - "level": "LEVEL_HIGH", - "line": "71", - "linter": "ansible-lint", - "message": "Use FQCN for builtin module actions (template).", - "targetType": "yaml", - }, - { - "code": "name[casing]", - "column": "1", - "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", - "issueClass": "ISSUE_CLASS_NEW", - "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#name[casing]", - "level": "LEVEL_HIGH", - "line": "71", - "linter": "ansible-lint", - "message": "All names should start with an uppercase letter.", - "targetType": "yaml", - }, - { - "code": "risky-file-permissions", - "column": "1", - "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", - "issueClass": "ISSUE_CLASS_NEW", - "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#risky-file-permissions", - "level": "LEVEL_HIGH", - "line": "71", - "linter": "ansible-lint", - "message": "File permissions unset or incorrect.", - "targetType": "yaml", - }, - { - "code": "fqcn[action-core]", - "column": "1", - "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", - "issueClass": "ISSUE_CLASS_NEW", - "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", - "level": "LEVEL_HIGH", - "line": "84", - "linter": "ansible-lint", - "message": "Use FQCN for builtin module actions (service).", - "targetType": "yaml", - }, - { - "code": "fqcn[action]", - "column": "1", - "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", - "issueClass": "ISSUE_CLASS_NEW", - "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action]", - "level": "LEVEL_HIGH", - "line": "90", - "linter": "ansible-lint", - "message": "Use FQCN for module actions, such \`ansible.posix.firewalld\`.", - "targetType": "yaml", - }, - { - "code": "name[casing]", - "column": "1", - "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", - "issueClass": "ISSUE_CLASS_NEW", - "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#name[casing]", - "level": "LEVEL_HIGH", - "line": "90", - "linter": "ansible-lint", - "message": "All names should start with an uppercase letter.", - "targetType": "yaml", - }, - { - "code": "yaml[truthy]", - "column": "1", - "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", - "issueClass": "ISSUE_CLASS_NEW", - "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#yaml[truthy]", - "level": "LEVEL_HIGH", - "line": "92", - "linter": "ansible-lint", - "message": "Truthy value should be one of [false, true]", - "targetType": "yaml", - }, - { - "code": "yaml[truthy]", - "column": "1", - "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", - "issueClass": "ISSUE_CLASS_NEW", - "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#yaml[truthy]", - "level": "LEVEL_HIGH", - "line": "95", - "linter": "ansible-lint", - "message": "Truthy value should be one of [false, true]", - "targetType": "yaml", + "targetType": "custom", }, ], "lintActions": [ { "command": "lint", - "fileGroupName": "yaml", - "linter": "ansible-lint", - "paths": [ - "jboss-standalone/demo-aws-launch.yml", - ], - "verb": "TRUNK_VERB_CHECK", - }, - { - "command": "lint", - "fileGroupName": "yaml", - "linter": "ansible-lint", - "paths": [ - "jboss-standalone/deploy-application.yml", - ], - "verb": "TRUNK_VERB_CHECK", - }, - { - "command": "lint", - "fileGroupName": "yaml", - "linter": "ansible-lint", - "paths": [ - "jboss-standalone/roles/java-app/tasks/main.yml", - ], - "verb": "TRUNK_VERB_CHECK", - }, - { - "command": "lint", - "fileGroupName": "yaml", - "linter": "ansible-lint", - "paths": [ - "jboss-standalone/roles/jboss-standalone/handlers/main.yml", - ], - "verb": "TRUNK_VERB_CHECK", - }, - { - "command": "lint", - "fileGroupName": "yaml", + "fileGroupName": "custom", "linter": "ansible-lint", "paths": [ - "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "jboss-standalone", ], "verb": "TRUNK_VERB_CHECK", }, { "command": "lint", - "fileGroupName": "yaml", + "fileGroupName": "custom", "linter": "ansible-lint", "paths": [ - "jboss-standalone/site.yml", + "jboss-standalone", ], + "upstream": true, "verb": "TRUNK_VERB_CHECK", }, ], diff --git a/linters/ansible-lint/test_data/ansible_lint_v6.14.3_FQCN.check.shot b/linters/ansible-lint/test_data/ansible_lint_v6.14.3_FQCN.check.shot new file mode 100644 index 000000000..21551177a --- /dev/null +++ b/linters/ansible-lint/test_data/ansible_lint_v6.14.3_FQCN.check.shot @@ -0,0 +1,560 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP +// trunk-upgrade-validation:RELEASE + +exports[`Testing linter ansible-lint test FQCN 1`] = ` +{ + "issues": [ + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/demo-aws-launch.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "28", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.wait_for\` or \`ansible.legacy.wait_for\` instead.", + "targetType": "custom", + }, + { + "code": "yaml[truthy]", + "column": "1", + "file": "jboss-standalone/demo-aws-launch.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#yaml[truthy]", + "level": "LEVEL_HIGH", + "line": "5", + "linter": "ansible-lint", + "message": "Truthy value should be one of [false, true]", + "targetType": "custom", + }, + { + "code": "name[play]", + "column": "1", + "file": "jboss-standalone/deploy-application.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#name[play]", + "level": "LEVEL_HIGH", + "line": "4", + "linter": "ansible-lint", + "message": "All plays should be named.", + "targetType": "custom", + }, + { + "code": "role-name", + "column": "1", + "file": "jboss-standalone/roles/java-app", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#role-name", + "level": "LEVEL_HIGH", + "line": "1", + "linter": "ansible-lint", + "message": "Role name java-app does not match \`\`^[a-z][a-z0-9_]*$\`\` pattern.", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/java-app/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "14", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.copy\` or \`ansible.legacy.copy\` instead.", + "targetType": "custom", + }, + { + "code": "risky-file-permissions", + "column": "1", + "file": "jboss-standalone/roles/java-app/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#risky-file-permissions", + "level": "LEVEL_HIGH", + "line": "14", + "linter": "ansible-lint", + "message": "Task/Handler: Copy application WAR file to host", + "targetType": "custom", + }, + { + "code": "fqcn[action]", + "column": "1", + "file": "jboss-standalone/roles/java-app/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action]", + "level": "LEVEL_HIGH", + "line": "19", + "linter": "ansible-lint", + "message": "Action \`jboss\` is not FQCN.", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/java-app/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "2", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.copy\` or \`ansible.legacy.copy\` instead.", + "targetType": "custom", + }, + { + "code": "risky-file-permissions", + "column": "1", + "file": "jboss-standalone/roles/java-app/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#risky-file-permissions", + "level": "LEVEL_HIGH", + "line": "2", + "linter": "ansible-lint", + "message": "Task/Handler: Copy application WAR file to host", + "targetType": "custom", + }, + { + "code": "fqcn[action]", + "column": "1", + "file": "jboss-standalone/roles/java-app/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action]", + "level": "LEVEL_HIGH", + "line": "7", + "linter": "ansible-lint", + "message": "Action \`jboss\` is not FQCN.", + "targetType": "custom", + }, + { + "code": "role-name", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#role-name", + "level": "LEVEL_HIGH", + "line": "1", + "linter": "ansible-lint", + "message": "Role name jboss-standalone does not match \`\`^[a-z][a-z0-9_]*$\`\` pattern.", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/handlers/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "2", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.service\` or \`ansible.legacy.service\` instead.", + "targetType": "custom", + }, + { + "code": "name[casing]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/handlers/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#name[casing]", + "level": "LEVEL_HIGH", + "line": "2", + "linter": "ansible-lint", + "message": "Task/Handler: restart jboss", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/handlers/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "7", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.service\` or \`ansible.legacy.service\` instead.", + "targetType": "custom", + }, + { + "code": "name[casing]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/handlers/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#name[casing]", + "level": "LEVEL_HIGH", + "line": "7", + "linter": "ansible-lint", + "message": "Task/Handler: restart iptables", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "12", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.get_url\` or \`ansible.legacy.get_url\` instead.", + "targetType": "custom", + }, + { + "code": "risky-file-permissions", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#risky-file-permissions", + "level": "LEVEL_HIGH", + "line": "12", + "linter": "ansible-lint", + "message": "Task/Handler: Download JBoss from jboss.org", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "17", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.unarchive\` or \`ansible.legacy.unarchive\` instead.", + "targetType": "custom", + }, + { + "code": "yaml[truthy]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#yaml[truthy]", + "level": "LEVEL_HIGH", + "line": "22", + "linter": "ansible-lint", + "message": "Truthy value should be one of [false, true]", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "25", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.command\` or \`ansible.legacy.command\` instead.", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "31", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.template\` or \`ansible.legacy.template\` instead.", + "targetType": "custom", + }, + { + "code": "risky-file-permissions", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#risky-file-permissions", + "level": "LEVEL_HIGH", + "line": "31", + "linter": "ansible-lint", + "message": "Task/Handler: Copying standalone.xml configuration file", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "37", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.group\` or \`ansible.legacy.group\` instead.", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "41", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.user\` or \`ansible.legacy.user\` instead.", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "47", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.file\` or \`ansible.legacy.file\` instead.", + "targetType": "custom", + }, + { + "code": "yaml[truthy]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#yaml[truthy]", + "level": "LEVEL_HIGH", + "line": "53", + "linter": "ansible-lint", + "message": "Truthy value should be one of [false, true]", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "55", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.copy\` or \`ansible.legacy.copy\` instead.", + "targetType": "custom", + }, + { + "code": "yaml[octal-values]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#yaml[octal-values]", + "level": "LEVEL_HIGH", + "line": "59", + "linter": "ansible-lint", + "message": "Forbidden implicit octal value "0755"", + "targetType": "custom", + }, + { + "code": "command-instead-of-module", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#command-instead-of-module", + "level": "LEVEL_HIGH", + "line": "61", + "linter": "ansible-lint", + "message": "Task/Handler: Workaround for systemd bug", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "61", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.shell\` or \`ansible.legacy.shell\` instead.", + "targetType": "custom", + }, + { + "code": "ignore-errors", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#ignore-errors", + "level": "LEVEL_HIGH", + "line": "61", + "linter": "ansible-lint", + "message": "Task/Handler: Workaround for systemd bug", + "targetType": "custom", + }, + { + "code": "no-changed-when", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#no-changed-when", + "level": "LEVEL_HIGH", + "line": "61", + "linter": "ansible-lint", + "message": "Task/Handler: Workaround for systemd bug", + "targetType": "custom", + }, + { + "code": "yaml[truthy]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#yaml[truthy]", + "level": "LEVEL_HIGH", + "line": "63", + "linter": "ansible-lint", + "message": "Truthy value should be one of [false, true]", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "65", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.service\` or \`ansible.legacy.service\` instead.", + "targetType": "custom", + }, + { + "code": "yaml[truthy]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#yaml[truthy]", + "level": "LEVEL_HIGH", + "line": "68", + "linter": "ansible-lint", + "message": "Truthy value should be one of [false, true]", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "71", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.template\` or \`ansible.legacy.template\` instead.", + "targetType": "custom", + }, + { + "code": "name[casing]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#name[casing]", + "level": "LEVEL_HIGH", + "line": "71", + "linter": "ansible-lint", + "message": "Task/Handler: deploy iptables rules", + "targetType": "custom", + }, + { + "code": "risky-file-permissions", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#risky-file-permissions", + "level": "LEVEL_HIGH", + "line": "71", + "linter": "ansible-lint", + "message": "Task/Handler: deploy iptables rules", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "84", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.service\` or \`ansible.legacy.service\` instead.", + "targetType": "custom", + }, + { + "code": "fqcn[action]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action]", + "level": "LEVEL_HIGH", + "line": "90", + "linter": "ansible-lint", + "message": "Action \`firewalld\` is not FQCN.", + "targetType": "custom", + }, + { + "code": "name[casing]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#name[casing]", + "level": "LEVEL_HIGH", + "line": "90", + "linter": "ansible-lint", + "message": "Task/Handler: deploy firewalld rules", + "targetType": "custom", + }, + { + "code": "yaml[truthy]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#yaml[truthy]", + "level": "LEVEL_HIGH", + "line": "92", + "linter": "ansible-lint", + "message": "Truthy value should be one of [false, true]", + "targetType": "custom", + }, + { + "code": "yaml[truthy]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#yaml[truthy]", + "level": "LEVEL_HIGH", + "line": "95", + "linter": "ansible-lint", + "message": "Truthy value should be one of [false, true]", + "targetType": "custom", + }, + { + "code": "name[play]", + "column": "1", + "file": "jboss-standalone/site.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#name[play]", + "level": "LEVEL_HIGH", + "line": "4", + "linter": "ansible-lint", + "message": "All plays should be named.", + "targetType": "custom", + }, + ], + "lintActions": [ + { + "command": "lint", + "fileGroupName": "custom", + "linter": "ansible-lint", + "paths": [ + "jboss-standalone", + ], + "verb": "TRUNK_VERB_CHECK", + }, + { + "command": "lint", + "fileGroupName": "custom", + "linter": "ansible-lint", + "paths": [ + "jboss-standalone", + ], + "upstream": true, + "verb": "TRUNK_VERB_CHECK", + }, + ], + "taskFailures": [], + "unformattedFiles": [], +} +`; diff --git a/linters/ansible-lint/test_data/ansible_lint_v6.14.3_non_FQCN.check.shot b/linters/ansible-lint/test_data/ansible_lint_v6.14.3_non_FQCN.check.shot new file mode 100644 index 000000000..8c4365b3b --- /dev/null +++ b/linters/ansible-lint/test_data/ansible_lint_v6.14.3_non_FQCN.check.shot @@ -0,0 +1,43 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Testing linter ansible-lint test non_FQCN 1`] = ` +{ + "issues": [ + { + "code": "syntax-check[specific]", + "column": "7", + "file": "jboss-standalone/demo-aws-launch.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#syntax-check[specific]", + "level": "LEVEL_HIGH", + "line": "12", + "linter": "ansible-lint", + "message": "couldn't resolve module/action 'ec2'. This often indicates a misspelling, missing collection, or incorrect module path.", + "targetType": "custom", + }, + ], + "lintActions": [ + { + "command": "lint", + "fileGroupName": "custom", + "linter": "ansible-lint", + "paths": [ + "jboss-standalone", + ], + "verb": "TRUNK_VERB_CHECK", + }, + { + "command": "lint", + "fileGroupName": "custom", + "linter": "ansible-lint", + "paths": [ + "jboss-standalone", + ], + "upstream": true, + "verb": "TRUNK_VERB_CHECK", + }, + ], + "taskFailures": [], + "unformattedFiles": [], +} +`; diff --git a/linters/ansible-lint/test_data/ansible_lint_v6.22.1_FQCN.check.shot b/linters/ansible-lint/test_data/ansible_lint_v6.22.1_FQCN.check.shot new file mode 100644 index 000000000..21551177a --- /dev/null +++ b/linters/ansible-lint/test_data/ansible_lint_v6.22.1_FQCN.check.shot @@ -0,0 +1,560 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP +// trunk-upgrade-validation:RELEASE + +exports[`Testing linter ansible-lint test FQCN 1`] = ` +{ + "issues": [ + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/demo-aws-launch.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "28", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.wait_for\` or \`ansible.legacy.wait_for\` instead.", + "targetType": "custom", + }, + { + "code": "yaml[truthy]", + "column": "1", + "file": "jboss-standalone/demo-aws-launch.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#yaml[truthy]", + "level": "LEVEL_HIGH", + "line": "5", + "linter": "ansible-lint", + "message": "Truthy value should be one of [false, true]", + "targetType": "custom", + }, + { + "code": "name[play]", + "column": "1", + "file": "jboss-standalone/deploy-application.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#name[play]", + "level": "LEVEL_HIGH", + "line": "4", + "linter": "ansible-lint", + "message": "All plays should be named.", + "targetType": "custom", + }, + { + "code": "role-name", + "column": "1", + "file": "jboss-standalone/roles/java-app", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#role-name", + "level": "LEVEL_HIGH", + "line": "1", + "linter": "ansible-lint", + "message": "Role name java-app does not match \`\`^[a-z][a-z0-9_]*$\`\` pattern.", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/java-app/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "14", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.copy\` or \`ansible.legacy.copy\` instead.", + "targetType": "custom", + }, + { + "code": "risky-file-permissions", + "column": "1", + "file": "jboss-standalone/roles/java-app/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#risky-file-permissions", + "level": "LEVEL_HIGH", + "line": "14", + "linter": "ansible-lint", + "message": "Task/Handler: Copy application WAR file to host", + "targetType": "custom", + }, + { + "code": "fqcn[action]", + "column": "1", + "file": "jboss-standalone/roles/java-app/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action]", + "level": "LEVEL_HIGH", + "line": "19", + "linter": "ansible-lint", + "message": "Action \`jboss\` is not FQCN.", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/java-app/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "2", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.copy\` or \`ansible.legacy.copy\` instead.", + "targetType": "custom", + }, + { + "code": "risky-file-permissions", + "column": "1", + "file": "jboss-standalone/roles/java-app/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#risky-file-permissions", + "level": "LEVEL_HIGH", + "line": "2", + "linter": "ansible-lint", + "message": "Task/Handler: Copy application WAR file to host", + "targetType": "custom", + }, + { + "code": "fqcn[action]", + "column": "1", + "file": "jboss-standalone/roles/java-app/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action]", + "level": "LEVEL_HIGH", + "line": "7", + "linter": "ansible-lint", + "message": "Action \`jboss\` is not FQCN.", + "targetType": "custom", + }, + { + "code": "role-name", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#role-name", + "level": "LEVEL_HIGH", + "line": "1", + "linter": "ansible-lint", + "message": "Role name jboss-standalone does not match \`\`^[a-z][a-z0-9_]*$\`\` pattern.", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/handlers/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "2", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.service\` or \`ansible.legacy.service\` instead.", + "targetType": "custom", + }, + { + "code": "name[casing]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/handlers/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#name[casing]", + "level": "LEVEL_HIGH", + "line": "2", + "linter": "ansible-lint", + "message": "Task/Handler: restart jboss", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/handlers/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "7", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.service\` or \`ansible.legacy.service\` instead.", + "targetType": "custom", + }, + { + "code": "name[casing]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/handlers/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#name[casing]", + "level": "LEVEL_HIGH", + "line": "7", + "linter": "ansible-lint", + "message": "Task/Handler: restart iptables", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "12", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.get_url\` or \`ansible.legacy.get_url\` instead.", + "targetType": "custom", + }, + { + "code": "risky-file-permissions", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#risky-file-permissions", + "level": "LEVEL_HIGH", + "line": "12", + "linter": "ansible-lint", + "message": "Task/Handler: Download JBoss from jboss.org", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "17", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.unarchive\` or \`ansible.legacy.unarchive\` instead.", + "targetType": "custom", + }, + { + "code": "yaml[truthy]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#yaml[truthy]", + "level": "LEVEL_HIGH", + "line": "22", + "linter": "ansible-lint", + "message": "Truthy value should be one of [false, true]", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "25", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.command\` or \`ansible.legacy.command\` instead.", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "31", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.template\` or \`ansible.legacy.template\` instead.", + "targetType": "custom", + }, + { + "code": "risky-file-permissions", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#risky-file-permissions", + "level": "LEVEL_HIGH", + "line": "31", + "linter": "ansible-lint", + "message": "Task/Handler: Copying standalone.xml configuration file", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "37", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.group\` or \`ansible.legacy.group\` instead.", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "41", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.user\` or \`ansible.legacy.user\` instead.", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "47", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.file\` or \`ansible.legacy.file\` instead.", + "targetType": "custom", + }, + { + "code": "yaml[truthy]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#yaml[truthy]", + "level": "LEVEL_HIGH", + "line": "53", + "linter": "ansible-lint", + "message": "Truthy value should be one of [false, true]", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "55", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.copy\` or \`ansible.legacy.copy\` instead.", + "targetType": "custom", + }, + { + "code": "yaml[octal-values]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#yaml[octal-values]", + "level": "LEVEL_HIGH", + "line": "59", + "linter": "ansible-lint", + "message": "Forbidden implicit octal value "0755"", + "targetType": "custom", + }, + { + "code": "command-instead-of-module", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#command-instead-of-module", + "level": "LEVEL_HIGH", + "line": "61", + "linter": "ansible-lint", + "message": "Task/Handler: Workaround for systemd bug", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "61", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.shell\` or \`ansible.legacy.shell\` instead.", + "targetType": "custom", + }, + { + "code": "ignore-errors", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#ignore-errors", + "level": "LEVEL_HIGH", + "line": "61", + "linter": "ansible-lint", + "message": "Task/Handler: Workaround for systemd bug", + "targetType": "custom", + }, + { + "code": "no-changed-when", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#no-changed-when", + "level": "LEVEL_HIGH", + "line": "61", + "linter": "ansible-lint", + "message": "Task/Handler: Workaround for systemd bug", + "targetType": "custom", + }, + { + "code": "yaml[truthy]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#yaml[truthy]", + "level": "LEVEL_HIGH", + "line": "63", + "linter": "ansible-lint", + "message": "Truthy value should be one of [false, true]", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "65", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.service\` or \`ansible.legacy.service\` instead.", + "targetType": "custom", + }, + { + "code": "yaml[truthy]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#yaml[truthy]", + "level": "LEVEL_HIGH", + "line": "68", + "linter": "ansible-lint", + "message": "Truthy value should be one of [false, true]", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "71", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.template\` or \`ansible.legacy.template\` instead.", + "targetType": "custom", + }, + { + "code": "name[casing]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#name[casing]", + "level": "LEVEL_HIGH", + "line": "71", + "linter": "ansible-lint", + "message": "Task/Handler: deploy iptables rules", + "targetType": "custom", + }, + { + "code": "risky-file-permissions", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#risky-file-permissions", + "level": "LEVEL_HIGH", + "line": "71", + "linter": "ansible-lint", + "message": "Task/Handler: deploy iptables rules", + "targetType": "custom", + }, + { + "code": "fqcn[action-core]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action-core]", + "level": "LEVEL_HIGH", + "line": "84", + "linter": "ansible-lint", + "message": "Use \`ansible.builtin.service\` or \`ansible.legacy.service\` instead.", + "targetType": "custom", + }, + { + "code": "fqcn[action]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#fqcn[action]", + "level": "LEVEL_HIGH", + "line": "90", + "linter": "ansible-lint", + "message": "Action \`firewalld\` is not FQCN.", + "targetType": "custom", + }, + { + "code": "name[casing]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#name[casing]", + "level": "LEVEL_HIGH", + "line": "90", + "linter": "ansible-lint", + "message": "Task/Handler: deploy firewalld rules", + "targetType": "custom", + }, + { + "code": "yaml[truthy]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#yaml[truthy]", + "level": "LEVEL_HIGH", + "line": "92", + "linter": "ansible-lint", + "message": "Truthy value should be one of [false, true]", + "targetType": "custom", + }, + { + "code": "yaml[truthy]", + "column": "1", + "file": "jboss-standalone/roles/jboss-standalone/tasks/main.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#yaml[truthy]", + "level": "LEVEL_HIGH", + "line": "95", + "linter": "ansible-lint", + "message": "Truthy value should be one of [false, true]", + "targetType": "custom", + }, + { + "code": "name[play]", + "column": "1", + "file": "jboss-standalone/site.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#name[play]", + "level": "LEVEL_HIGH", + "line": "4", + "linter": "ansible-lint", + "message": "All plays should be named.", + "targetType": "custom", + }, + ], + "lintActions": [ + { + "command": "lint", + "fileGroupName": "custom", + "linter": "ansible-lint", + "paths": [ + "jboss-standalone", + ], + "verb": "TRUNK_VERB_CHECK", + }, + { + "command": "lint", + "fileGroupName": "custom", + "linter": "ansible-lint", + "paths": [ + "jboss-standalone", + ], + "upstream": true, + "verb": "TRUNK_VERB_CHECK", + }, + ], + "taskFailures": [], + "unformattedFiles": [], +} +`; diff --git a/linters/ansible-lint/test_data/ansible_lint_v6.22.1_non_FQCN.check.shot b/linters/ansible-lint/test_data/ansible_lint_v6.22.1_non_FQCN.check.shot new file mode 100644 index 000000000..19d429497 --- /dev/null +++ b/linters/ansible-lint/test_data/ansible_lint_v6.22.1_non_FQCN.check.shot @@ -0,0 +1,43 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Testing linter ansible-lint test non_FQCN 1`] = ` +{ + "issues": [ + { + "code": "syntax-check[unknown-module]", + "column": "7", + "file": "jboss-standalone/demo-aws-launch.yml", + "issueClass": "ISSUE_CLASS_NEW", + "issueUrl": "https://ansible-lint.readthedocs.io/en/latest/default_rules.html#syntax-check[unknown-module]", + "level": "LEVEL_HIGH", + "line": "12", + "linter": "ansible-lint", + "message": "couldn't resolve module/action 'ec2'. This often indicates a misspelling, missing collection, or incorrect module path.", + "targetType": "custom", + }, + ], + "lintActions": [ + { + "command": "lint", + "fileGroupName": "custom", + "linter": "ansible-lint", + "paths": [ + "jboss-standalone", + ], + "verb": "TRUNK_VERB_CHECK", + }, + { + "command": "lint", + "fileGroupName": "custom", + "linter": "ansible-lint", + "paths": [ + "jboss-standalone", + ], + "upstream": true, + "verb": "TRUNK_VERB_CHECK", + }, + ], + "taskFailures": [], + "unformattedFiles": [], +} +`; diff --git a/linters/biome/biome.test.ts b/linters/biome/biome.test.ts index d0b29b37b..76425a373 100644 --- a/linters/biome/biome.test.ts +++ b/linters/biome/biome.test.ts @@ -1,5 +1,22 @@ -import { linterCheckTest, linterFmtTest } from "tests"; +import path from "path"; +import { customLinterCheckTest, linterCheckTest, linterFmtTest } from "tests"; +import { TrunkLintDriver } from "tests/driver"; +import { TEST_DATA } from "tests/utils"; linterCheckTest({ linterName: "biome", namedTestPrefixes: ["basic_check"] }); linterFmtTest({ linterName: "biome", namedTestPrefixes: ["basic_fmt", "basic_json"] }); + +const preCheck = (driver: TrunkLintDriver) => { + // Write an invalid biome config and verify we surface an error for format. + // NOTE(Tyler): We should handle config errors better for 'lint' too, but the JSON + // output for biome is not stable and they don't support SARIF. + driver.writeFile("biome.json", JSON.stringify({ rules: { "no-foo": "error" } })); +}; + +customLinterCheckTest({ + linterName: "biome", + testName: "error", + args: path.join(TEST_DATA, "basic_check.in.ts"), + preCheck, +}); diff --git a/linters/biome/plugin.yaml b/linters/biome/plugin.yaml index 4176814b5..a4b7a65a9 100644 --- a/linters/biome/plugin.yaml +++ b/linters/biome/plugin.yaml @@ -6,18 +6,15 @@ tools: runtime: node package: "@biomejs/biome" shims: [biome] - known_good_version: 1.9.4 + known_good_version: 1.4.1 lint: definitions: # Successor to the rome linter+formatter - name: biome files: - - astro - - css - - graphql + - typescript - javascript - json - - typescript description: A static analyzer for web projects commands: - name: lint @@ -32,8 +29,8 @@ lint: read_output_from: stderr - name: fmt output: rewrite - run: biome check --fix "${target}" - success_codes: [0, 1] + run: biome format --write "${target}" + success_codes: [0] batch: true cache_results: true formatter: true @@ -42,12 +39,11 @@ lint: suggest_if: config_present direct_configs: - biome.json - - biome.jsonc - rome.json # For backwards compatibility with rome affects_cache: - package.json - .editorconfig # Undocumented config file - known_good_version: 1.9.4 + known_good_version: 1.4.1 version_command: parse_regex: biome CLI version ${semver} run: biome --version diff --git a/linters/biome/test_data/biome_v1.4.1_basic_check.check.shot b/linters/biome/test_data/biome_v1.4.1_basic_check.check.shot new file mode 100644 index 000000000..2bde4ae46 --- /dev/null +++ b/linters/biome/test_data/biome_v1.4.1_basic_check.check.shot @@ -0,0 +1,61 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Testing linter biome test basic_check 1`] = ` +{ + "issues": [ + { + "code": "lint/style/useEnumInitializers", + "column": "6", + "file": "test_data/basic_check.in.ts", + "issueClass": "ISSUE_CLASS_EXISTING", + "level": "LEVEL_HIGH", + "line": "4", + "linter": "biome", + "message": "This enum declaration contains members that are implicitly initialized.", + "targetType": "typescript", + }, + ], + "lintActions": [ + { + "command": "fmt", + "fileGroupName": "typescript", + "linter": "biome", + "paths": [ + "test_data/basic_check.in.ts", + ], + "verb": "TRUNK_VERB_FMT", + }, + { + "command": "lint", + "fileGroupName": "typescript", + "linter": "biome", + "paths": [ + "test_data/basic_check.in.ts", + ], + "verb": "TRUNK_VERB_CHECK", + }, + { + "command": "lint", + "fileGroupName": "typescript", + "linter": "biome", + "paths": [ + "test_data/basic_check.in.ts", + ], + "upstream": true, + "verb": "TRUNK_VERB_CHECK", + }, + ], + "taskFailures": [], + "unformattedFiles": [ + { + "column": "1", + "file": "test_data/basic_check.in.ts", + "issueClass": "ISSUE_CLASS_UNFORMATTED", + "level": "LEVEL_HIGH", + "line": "1", + "linter": "biome", + "message": "Incorrect formatting, autoformat by running 'trunk fmt'", + }, + ], +} +`; diff --git a/linters/biome/test_data/biome_v1.4.1_basic_fmt.fmt.shot b/linters/biome/test_data/biome_v1.4.1_basic_fmt.fmt.shot new file mode 100644 index 000000000..0961c8a09 --- /dev/null +++ b/linters/biome/test_data/biome_v1.4.1_basic_fmt.fmt.shot @@ -0,0 +1,23 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Testing formatter biome test basic_fmt 1`] = ` +"const foobar = () => {}; +const barfoo = () => {}; + +enum Bar { + Baz, +} + +const foo = (bar: Bar) => { + switch (bar) { + case Bar.Baz: + foobar(); + barfoo(); + break; + } + { + !foo ? null : 1; + } +}; +" +`; diff --git a/linters/biome/test_data/biome_v1.4.1_basic_json.fmt.shot b/linters/biome/test_data/biome_v1.4.1_basic_json.fmt.shot new file mode 100644 index 000000000..3b5af7e15 --- /dev/null +++ b/linters/biome/test_data/biome_v1.4.1_basic_json.fmt.shot @@ -0,0 +1,6 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Testing formatter biome test basic_json 1`] = ` +"{ "a": "foo", "b": 1, "a": true } +" +`; diff --git a/linters/biome/test_data/biome_v1.4.1_error.check.shot b/linters/biome/test_data/biome_v1.4.1_error.check.shot new file mode 100644 index 000000000..c60995917 --- /dev/null +++ b/linters/biome/test_data/biome_v1.4.1_error.check.shot @@ -0,0 +1,36 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Testing linter biome test error 1`] = ` +{ + "issues": [], + "lintActions": [ + { + "command": "lint", + "fileGroupName": "typescript", + "linter": "biome", + "paths": [ + "test_data/basic_check.in.ts", + ], + "verb": "TRUNK_VERB_CHECK", + }, + { + "command": "lint", + "fileGroupName": "typescript", + "linter": "biome", + "paths": [ + "test_data/basic_check.in.ts", + ], + "upstream": true, + "verb": "TRUNK_VERB_CHECK", + }, + ], + "taskFailures": [ + { + "details": StringMatching /\\.\\*\\$/m, + "message": "test_data/basic_check.in.ts", + "name": "biome", + }, + ], + "unformattedFiles": [], +} +`; diff --git a/linters/biome/test_data/biome_v1.6.0_basic_check.check.shot b/linters/biome/test_data/biome_v1.6.0_basic_check.check.shot new file mode 100644 index 000000000..4c68082f4 --- /dev/null +++ b/linters/biome/test_data/biome_v1.6.0_basic_check.check.shot @@ -0,0 +1,72 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Testing linter biome test basic_check 1`] = ` +{ + "issues": [ + { + "code": "lint/complexity/noUselessLoneBlockStatements", + "column": "3", + "file": "test_data/basic_check.in.ts", + "issueClass": "ISSUE_CLASS_EXISTING", + "level": "LEVEL_HIGH", + "line": "13", + "linter": "biome", + "message": "This block statement doesn't serve any purpose and can be safely removed.", + "targetType": "typescript", + }, + { + "code": "lint/style/useEnumInitializers", + "column": "6", + "file": "test_data/basic_check.in.ts", + "issueClass": "ISSUE_CLASS_EXISTING", + "level": "LEVEL_HIGH", + "line": "4", + "linter": "biome", + "message": "This enum declaration contains members that are implicitly initialized.", + "targetType": "typescript", + }, + ], + "lintActions": [ + { + "command": "fmt", + "fileGroupName": "typescript", + "linter": "biome", + "paths": [ + "test_data/basic_check.in.ts", + ], + "verb": "TRUNK_VERB_FMT", + }, + { + "command": "lint", + "fileGroupName": "typescript", + "linter": "biome", + "paths": [ + "test_data/basic_check.in.ts", + ], + "verb": "TRUNK_VERB_CHECK", + }, + { + "command": "lint", + "fileGroupName": "typescript", + "linter": "biome", + "paths": [ + "test_data/basic_check.in.ts", + ], + "upstream": true, + "verb": "TRUNK_VERB_CHECK", + }, + ], + "taskFailures": [], + "unformattedFiles": [ + { + "column": "1", + "file": "test_data/basic_check.in.ts", + "issueClass": "ISSUE_CLASS_UNFORMATTED", + "level": "LEVEL_HIGH", + "line": "1", + "linter": "biome", + "message": "Incorrect formatting, autoformat by running 'trunk fmt'", + }, + ], +} +`; diff --git a/linters/biome/test_data/biome_v1.6.0_basic_fmt.fmt.shot b/linters/biome/test_data/biome_v1.6.0_basic_fmt.fmt.shot new file mode 100644 index 000000000..0961c8a09 --- /dev/null +++ b/linters/biome/test_data/biome_v1.6.0_basic_fmt.fmt.shot @@ -0,0 +1,23 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Testing formatter biome test basic_fmt 1`] = ` +"const foobar = () => {}; +const barfoo = () => {}; + +enum Bar { + Baz, +} + +const foo = (bar: Bar) => { + switch (bar) { + case Bar.Baz: + foobar(); + barfoo(); + break; + } + { + !foo ? null : 1; + } +}; +" +`; diff --git a/linters/biome/test_data/biome_v1.6.0_basic_json.fmt.shot b/linters/biome/test_data/biome_v1.6.0_basic_json.fmt.shot new file mode 100644 index 000000000..3b5af7e15 --- /dev/null +++ b/linters/biome/test_data/biome_v1.6.0_basic_json.fmt.shot @@ -0,0 +1,6 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Testing formatter biome test basic_json 1`] = ` +"{ "a": "foo", "b": 1, "a": true } +" +`; diff --git a/linters/biome/test_data/biome_v1.6.0_error.check.shot b/linters/biome/test_data/biome_v1.6.0_error.check.shot new file mode 100644 index 000000000..c60995917 --- /dev/null +++ b/linters/biome/test_data/biome_v1.6.0_error.check.shot @@ -0,0 +1,36 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Testing linter biome test error 1`] = ` +{ + "issues": [], + "lintActions": [ + { + "command": "lint", + "fileGroupName": "typescript", + "linter": "biome", + "paths": [ + "test_data/basic_check.in.ts", + ], + "verb": "TRUNK_VERB_CHECK", + }, + { + "command": "lint", + "fileGroupName": "typescript", + "linter": "biome", + "paths": [ + "test_data/basic_check.in.ts", + ], + "upstream": true, + "verb": "TRUNK_VERB_CHECK", + }, + ], + "taskFailures": [ + { + "details": StringMatching /\\.\\*\\$/m, + "message": "test_data/basic_check.in.ts", + "name": "biome", + }, + ], + "unformattedFiles": [], +} +`; diff --git a/linters/circleci/test_data/circleci_v0.1.28811_CUSTOM.check.shot b/linters/circleci/test_data/circleci_v0.1.28811_CUSTOM.check.shot index 1926e4d4d..f3c35c1f4 100644 --- a/linters/circleci/test_data/circleci_v0.1.28811_CUSTOM.check.shot +++ b/linters/circleci/test_data/circleci_v0.1.28811_CUSTOM.check.shot @@ -1,4 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +// trunk-upgrade-validation:RELEASE + exports[`Testing linter circleci test CUSTOM 1`] = ` { @@ -35,6 +37,8 @@ exports[`Testing linter circleci test CUSTOM 1`] = ` - | | | | - environment - | | | | - aws_auth - | | | | - auth + - | | | | Passed keys: + - | | | | - foo - | | | 2. [#/jobs/install-node-example/docker/1] required key [image] not found - | | 2. [#/jobs/install-node-example/steps/3] 0 subschemas matched instead of one - | | | 1. [#/jobs/install-node-example/steps/3] expected type: String, found: Mapping @@ -49,6 +53,8 @@ exports[`Testing linter circleci test CUSTOM 1`] = ` - | | | | Permitted keys: - | | | | - when - | | | | - unless + - | | | | Passed keys: + - | | | | - rerun - | | | 3. [#/jobs/install-node-example/steps/3/rerun] no subschema matched out of the total 2 subschemas - | | | | 1. [#/jobs/install-node-example/steps/3/rerun] expected type: Mapping, found: Sequence - | | | | | SCHEMA: diff --git a/linters/detekt/detekt.test.ts b/linters/detekt/detekt.test.ts index 2b818af41..d064c44e1 100644 --- a/linters/detekt/detekt.test.ts +++ b/linters/detekt/detekt.test.ts @@ -45,7 +45,7 @@ const gradlePreCheck: TestCallback = (driver) => { driver.writeFile(trunkYamlPath, newContents); driver.runTrunkSync(["install"]); - const javaPath = recurseLevels(path.resolve(DOWNLOAD_CACHE, "jdk-23"), 1); + const javaPath = recurseLevels(path.resolve(DOWNLOAD_CACHE, "jdk-13"), 1); const finalContents = newContents.concat(` environment: - name: JAVA_HOME value: ${javaPath} diff --git a/linters/eslint/README.md b/linters/eslint/README.md index d876f9bcb..cb23b3e87 100644 --- a/linters/eslint/README.md +++ b/linters/eslint/README.md @@ -6,86 +6,3 @@ [migration guide](https://eslint.org/docs/latest/use/migrate-to-9.0.0#flat-config)) in order to run. Trunk will automatically detect which config file you have and by default will only enable a compatible version. - -## Ignores - -Here is a conversion guide for -[ESLint-style ignores](https://eslint.org/docs/latest/use/configure/rules#disabling-rules) and -[trunk-ignores](https://docs.trunk.io/code-quality/linters/ignoring-issues-and-files): - -### Same Line - -```typescript -alert("foo"); // trunk-ignore(eslint) - -alert("foo"); // eslint-disable-line -``` - -### Next Line - -```typescript -// trunk-ignore(eslint) -alert("foo"); - -/* eslint-disable-next-line */ -alert("foo"); -``` - -### With Comments - -```typescript -// trunk-ignore(eslint): Expected alert -alert("foo"); - -/* eslint-disable-next-line -- Expected alert */ -alert("foo"); -``` - -### Specific Issue - -```typescript -// trunk-ignore(eslint/no-alert) -alert("foo"); - -/* eslint-disable-next-line no-alert */ -alert("foo"); -``` - -### Multiple Issues - -```typescript -// trunk-ignore(eslint/no-alert,eslint/quotes) -alert("foo"); - -/* eslint-disable-next-line no-alert, quotes */ -alert("foo"); -``` - -### Blocks - -```typescript -// trunk-ignore-begin(eslint/no-alert) -alert("foo"); -// trunk-ignore-end(eslint/no-alert) - -/* eslint-disable no-alert */ -alert("foo"); -/* eslint-enable no-alert */ -``` - -### Whole File - -```typescript -// trunk-ignore-all(eslint/no-alert) -alert("foo"); - -/* eslint-disable no-alert */ -alert("foo"); -``` - -### Notes - -Only `eslint-disable-line` and `eslint-disable-next-line` support `//` comments. All other -ESLint-style ignores must use `/* */` comments. The full set of rules and their applicable files can -be configured in an -[eslint config file](https://eslint.org/docs/latest/use/configure/rules#using-configuration-files). diff --git a/linters/gitleaks/test_data/basic.py b/linters/gitleaks/test_data/basic.py index 476a221a6..df29d6281 100644 --- a/linters/gitleaks/test_data/basic.py +++ b/linters/gitleaks/test_data/basic.py @@ -1,11 +1,4 @@ aws_access_key_id = "AKIAIO5FODNN7EXAMPLE" -aws_token = "AKIALALEMEL33243OLIA" -private_key = """-----BEGIN OPENSSH PRIVATE KEY----- -b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW -QyNTUxOQAAACA8YWKYztuuvxUIMomc3zv0OdXCT57Cc2cRYu3TMbX9XAAAAJDiKO3C4ijt -wgAAAAtzc2gtZWQyNTUxOQAAACA8YWKYztuuvxUIMomc3zv0OdXCT57Cc2cRYu3TMbX9XA -AAAECzmj8DGxg5YHtBK4AmBttMXDQHsPAaCyYHQjJ4YujRBTxhYpjO266/FQgyiZzfO/Q5 -1cJPnsJzZxFi7dMxtf1cAAAADHJvb3RAZGV2aG9zdAE= ------END OPENSSH PRIVATE KEY-----""" +aws_access_key_id = "AKIAIO5FODNN7EXAMPLE" diff --git a/linters/gitleaks/test_data/gitleaks_v8.1.3_basic.check.shot b/linters/gitleaks/test_data/gitleaks_v8.1.3_basic.check.shot index 32d0d885a..3eaf2efc2 100644 --- a/linters/gitleaks/test_data/gitleaks_v8.1.3_basic.check.shot +++ b/linters/gitleaks/test_data/gitleaks_v8.1.3_basic.check.shot @@ -23,36 +23,18 @@ exports[`Testing linter gitleaks test basic 1`] = ` }, { "code": "aws-access-token", - "column": "15", + "column": "23", "file": "test_data/basic.py", "issueClass": "ISSUE_CLASS_EXISTING", "level": "LEVEL_HIGH", - "line": "3", + "line": "4", "linter": "gitleaks", "message": "aws-access-token has detected secret for file test_data/basic.py.", "ranges": [ { "filePath": "test_data/basic.py", "length": "19", - "offset": "58", - }, - ], - "targetType": "ALL", - }, - { - "code": "OPENSSH-PK", - "column": "19", - "file": "test_data/basic.py", - "issueClass": "ISSUE_CLASS_EXISTING", - "level": "LEVEL_HIGH", - "line": "5", - "linter": "gitleaks", - "message": "OPENSSH-PK has detected secret for file test_data/basic.py.", - "ranges": [ - { - "filePath": "test_data/basic.py", - "length": "34", - "offset": "98", + "offset": "67", }, ], "targetType": "ALL", diff --git a/linters/gitleaks/test_data/gitleaks_v8.8.7_basic.check.shot b/linters/gitleaks/test_data/gitleaks_v8.8.7_basic.check.shot index 828b35564..3eaf2efc2 100644 --- a/linters/gitleaks/test_data/gitleaks_v8.8.7_basic.check.shot +++ b/linters/gitleaks/test_data/gitleaks_v8.8.7_basic.check.shot @@ -23,36 +23,18 @@ exports[`Testing linter gitleaks test basic 1`] = ` }, { "code": "aws-access-token", - "column": "15", + "column": "23", "file": "test_data/basic.py", "issueClass": "ISSUE_CLASS_EXISTING", "level": "LEVEL_HIGH", - "line": "3", + "line": "4", "linter": "gitleaks", "message": "aws-access-token has detected secret for file test_data/basic.py.", "ranges": [ { "filePath": "test_data/basic.py", "length": "19", - "offset": "58", - }, - ], - "targetType": "ALL", - }, - { - "code": "private-key", - "column": "19", - "file": "test_data/basic.py", - "issueClass": "ISSUE_CLASS_EXISTING", - "level": "LEVEL_HIGH", - "line": "5", - "linter": "gitleaks", - "message": "private-key has detected secret for file test_data/basic.py.", - "ranges": [ - { - "filePath": "test_data/basic.py", - "length": "396", - "offset": "98", + "offset": "67", }, ], "targetType": "ALL", diff --git a/linters/golangci-lint/golangci_lint.test.ts b/linters/golangci-lint/golangci_lint.test.ts index d0d4e7e69..9a5ba201a 100644 --- a/linters/golangci-lint/golangci_lint.test.ts +++ b/linters/golangci-lint/golangci_lint.test.ts @@ -1,67 +1,11 @@ import path from "path"; -import semver from "semver"; import { customLinterCheckTest } from "tests"; import { TrunkLintDriver } from "tests/driver"; import { skipOS, TEST_DATA } from "tests/utils"; -const testGenerator = ({ - args, - testName, - preCheck, - skipTestIf, -}: { - args: string; - testName: string; - preCheck?: (driver: TrunkLintDriver) => void; - skipTestIf?: (version?: string) => boolean; -}) => { - const skipTest = (v1: boolean) => (version?: string) => { - if (v1 && version === "Latest") { - return true; - } - - const parsedVersion = semver.parse(version); - if (!parsedVersion) { - return false; - } - if (v1 && parsedVersion.major >= 2) { - return true; - } else if (!v1 && parsedVersion.major < 2) { - return true; - } - - if (skipTestIf) { - return skipTestIf(version); - } - return false; - }; - - const preCheckV2 = (driver: TrunkLintDriver) => { - driver.moveFile(path.join(TEST_DATA, ".golangci.yml"), ".golangci2.yml"); - if (preCheck) { - preCheck(driver); - } - }; - - customLinterCheckTest({ - linterName: "golangci-lint", - args, - testName, - preCheck, - skipTestIf: skipTest(true), - }); - - customLinterCheckTest({ - linterName: "golangci-lint2", - args, - testName, - preCheck: preCheckV2, - skipTestIf: skipTest(false), - }); -}; - // Don't run on Windows since the typecheck errors are dependent on system libs, and the set of diagnostics seems to vary. -testGenerator({ +customLinterCheckTest({ + linterName: "golangci-lint", args: `${TEST_DATA} -y`, testName: "all", skipTestIf: skipOS(["win32"]), @@ -74,11 +18,12 @@ const addEmpty = (driver: TrunkLintDriver) => { // Don't run on Windows since the typecheck errors are dependent on system libs, and for the sake of these tests // it is easier to simply skip these tests than handle additional setup. -testGenerator({ - args: TEST_DATA, +customLinterCheckTest({ + linterName: "golangci-lint", testName: "empty", - skipTestIf: skipOS(["win32"]), + args: TEST_DATA, preCheck: addEmpty, + skipTestIf: skipOS(["win32"]), }); // Having an ignored file and no other files causes an error diagnostic to be surfaced. @@ -87,7 +32,8 @@ const setupUnbuildable = (driver: TrunkLintDriver) => { driver.deleteFile(TEST_DATA); }; -testGenerator({ +customLinterCheckTest({ + linterName: "golangci-lint", testName: "unbuildable", args: "unbuildable.go", preCheck: setupUnbuildable, diff --git a/linters/golangci-lint/plugin.yaml b/linters/golangci-lint/plugin.yaml index b47df3812..e9311d3ba 100644 --- a/linters/golangci-lint/plugin.yaml +++ b/linters/golangci-lint/plugin.yaml @@ -7,11 +7,6 @@ tools: package: github.com/golangci/golangci-lint/cmd/golangci-lint shims: [golangci-lint] known_good_version: 1.46.2 - - name: golangci-lint2 - runtime: go - package: github.com/golangci/golangci-lint/v2/cmd/golangci-lint - shims: [golangci-lint] - known_good_version: 2.0.0 lint: definitions: @@ -55,60 +50,6 @@ lint: run_from: ${root_or_parent_with(go.mod)} # TODO(Tyler): Audit golangci-lint running on upstream once sandboxing and relative path fix is landed. disable_upstream: true - suggest_if: never - direct_configs: - - .golangci.json - - .golangci.toml - - .golangci.yaml - - .golangci.yml - affects_cache: - - go.mod - - go.sum - issue_url_format: https://golangci-lint.run/usage/linters/ - known_good_version: 1.49.0 - version_command: - parse_regex: ${semver} - run: golangci-lint --version - run_timeout: 10m - - name: golangci-lint2 - files: [go] - tools: [golangci-lint2] - description: A powerful Go linter runner - environment: - - name: GOLANGCI_LINT_CACHE - value: ${cachedir} - # Needs to use system `diff` and `git` - - name: PATH - list: ["${env.PATH}"] - - name: GO111MODULE - value: auto - # May need to git clone with ssh authentication for private packages. - - name: SSH_AUTH_SOCK - value: ${env.SSH_AUTH_SOCK} - optional: true - commands: - - name: lint - output: sarif - read_output_from: tmp_file - # We need to run golangci-lint on directories since running on files only works for --fast - # and can also produce false positives. - target: ${parent} - # Exclude go linters we already include. - run: - golangci-lint run --output.sarif.path ${tmpfile} --timeout 10m --concurrency 1 - --allow-parallel-runners --issues-exit-code 0 ${target} - # exit codes - # 0 - success - # 1 - issues found -> we override this to be 0 - # 2 - warning in test - # 3 - failure - # 4 - timeout - # 5 - no go files - # 6 - no config file detected - # 7 - error logged - success_codes: [0, 2, 7] - run_from: ${root_or_parent_with(go.mod)} - disable_upstream: true suggest_if: files_present direct_configs: - .golangci.json @@ -119,7 +60,7 @@ lint: - go.mod - go.sum issue_url_format: https://golangci-lint.run/usage/linters/ - known_good_version: 2.0.0 + known_good_version: 1.49.0 version_command: parse_regex: ${semver} run: golangci-lint --version diff --git a/linters/hadolint/hadolint.test.ts b/linters/hadolint/hadolint.test.ts index 5c1873dcf..166239e36 100644 --- a/linters/hadolint/hadolint.test.ts +++ b/linters/hadolint/hadolint.test.ts @@ -1,15 +1,5 @@ import { customLinterCheckTest } from "tests"; import { TEST_DATA } from "tests/utils"; -const manualVersionReplacer = (version: string) => { - if (version === "2.12.0") { - // This version may segfault on certain versions on macOS. - // The beta version is identical except with upx compression disabled on the binary. - // See https://github.com/hadolint/hadolint/issues/919#issuecomment-1672031271 - return "2.12.1-beta"; - } - return version; -}; - // We have a number of different files to determine which are valid Dockerfiles, validated by lint actions in the snapshot -customLinterCheckTest({ linterName: "hadolint", args: TEST_DATA, manualVersionReplacer }); +customLinterCheckTest({ linterName: "hadolint", args: TEST_DATA }); diff --git a/linters/ktlint/ktlint.test.ts b/linters/ktlint/ktlint.test.ts index 4afc857ee..2f8b213e3 100644 --- a/linters/ktlint/ktlint.test.ts +++ b/linters/ktlint/ktlint.test.ts @@ -4,16 +4,6 @@ import { TrunkLintDriver } from "tests/driver"; // Grab the root .editorconfig const preCheck = (driver: TrunkLintDriver) => { driver.copyFileFromRoot(".editorconfig"); - - // Older versions of ktlint require an older jdk - const trunkYamlPath = ".trunk/trunk.yaml"; - const currentContents = driver.readFile(trunkYamlPath); - const newContents = currentContents.concat(`runtimes: - definitions: - - type: java - download: jdk-13 -`); - driver.writeFile(trunkYamlPath, newContents); }; linterFmtTest({ linterName: "ktlint", preCheck }); diff --git a/linters/kube-linter/plugin.yaml b/linters/kube-linter/plugin.yaml index 35d39188d..d040b35fc 100644 --- a/linters/kube-linter/plugin.yaml +++ b/linters/kube-linter/plugin.yaml @@ -5,7 +5,7 @@ tools: runtime: go package: golang.stackrox.io/kube-linter/cmd/kube-linter shims: [kube-linter] - known_good_version: 0.7.2 + known_good_version: 0.6.4 lint: definitions: - name: kube-linter @@ -20,5 +20,5 @@ lint: environment: - name: PATH list: ["${linter}"] - known_good_version: 0.7.2 + known_good_version: 0.6.4 suggest_if: never diff --git a/linters/markdownlint/plugin.yaml b/linters/markdownlint/plugin.yaml index 1aa1515d5..978bbdd0c 100644 --- a/linters/markdownlint/plugin.yaml +++ b/linters/markdownlint/plugin.yaml @@ -26,6 +26,9 @@ lint: - .markdownlint.yaml - .markdownlint.yml - .markdownlintrc + - .markdownlint-cli2.json + - .markdownlint-cli2.yaml + - .markdownlint-cli2.jsonc issue_url_format: https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md#{} known_good_version: 0.33.0 version_command: diff --git a/linters/markdownlint/test_data/markdownlint_v0.33.0_basic.check.shot b/linters/markdownlint/test_data/markdownlint_v0.33.0_basic.check.shot index 23278620e..2dad159fc 100644 --- a/linters/markdownlint/test_data/markdownlint_v0.33.0_basic.check.shot +++ b/linters/markdownlint/test_data/markdownlint_v0.33.0_basic.check.shot @@ -1,5 +1,4 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -// trunk-upgrade-validation:RELEASE exports[`Testing linter markdownlint test basic 1`] = ` { @@ -8,7 +7,7 @@ exports[`Testing linter markdownlint test basic 1`] = ` "code": "MD025", "file": "test_data/basic.in.md", "issueClass": "ISSUE_CLASS_EXISTING", - "issueUrl": "https://github.com/DavidAnson/markdownlint/blob/vx.x.x/doc/md025.md", + "issueUrl": "https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md#MD025", "level": "LEVEL_LOW", "line": "3", "linter": "markdownlint", diff --git a/linters/nixpkgs-fmt/nixpkgs_fmt.test.ts b/linters/nixpkgs-fmt/nixpkgs_fmt.test.ts index b72b5e68f..1ce6c05c1 100644 --- a/linters/nixpkgs-fmt/nixpkgs_fmt.test.ts +++ b/linters/nixpkgs-fmt/nixpkgs_fmt.test.ts @@ -1,6 +1,18 @@ -import { linterFmtTest } from "tests"; +import { linterFmtTest, TestCallback } from "tests"; import { osTimeoutMultiplier, skipOS } from "tests/utils"; jest.setTimeout(600000 * osTimeoutMultiplier); -linterFmtTest({ linterName: "nixpkgs-fmt", skipTestIf: skipOS(["win32"]) }); +// Earlier nixpkgs-fmt transitive dependencies are no longer +// supported through older rust runtime installs. +const preCheck: TestCallback = (driver) => { + const trunkYamlPath = ".trunk/trunk.yaml"; + const currentContents = driver.readFile(trunkYamlPath); + const newContents = currentContents.concat(`runtimes: + enabled: + - rust@1.71.1 +`); + driver.writeFile(trunkYamlPath, newContents); +}; + +linterFmtTest({ linterName: "nixpkgs-fmt", preCheck, skipTestIf: skipOS(["win32"]) }); diff --git a/linters/osv-scanner/expected_issues.json b/linters/osv-scanner/expected_issues.json index 367c09831..f62a00908 100644 --- a/linters/osv-scanner/expected_issues.json +++ b/linters/osv-scanner/expected_issues.json @@ -57,33 +57,33 @@ { "file": "test_data/Gemfile.lock", "line": "16", - "message": "Possible XSS Security Vulnerability in SafeBuffer#bytesplice. Current version of 'activesupport' is vulnerable: 5.2.8.1. Patch available: upgrade to 7.0.4.3 or higher.", - "code": "GHSA-pj73-v5mw-pm9j", - "level": "LEVEL_MEDIUM", + "message": "Active Support Possibly Discloses Locally Encrypted Files. Current version of 'activesupport' is vulnerable: 5.2.8.1. Patch available: upgrade to 6.1.7.5 or higher.", + "code": "GHSA-cr5q-6q9f-rq6q", + "level": "LEVEL_LOW", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-pj73-v5mw-pm9j", + "issueUrl": "https://osv.dev/GHSA-cr5q-6q9f-rq6q", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/Gemfile.lock", "line": "16", - "message": "ReDoS based DoS vulnerability in Active Support's underscore. Current version of 'activesupport' is vulnerable: 5.2.8.1. Patch available: upgrade to 6.1.7.1 or higher.", - "code": "GHSA-j6gc-792m-qgm2", - "level": "LEVEL_LOW", + "message": "Possible XSS Security Vulnerability in SafeBuffer#bytesplice. Current version of 'activesupport' is vulnerable: 5.2.8.1. Patch available: upgrade to 7.0.4.3 or higher.", + "code": "GHSA-pj73-v5mw-pm9j", + "level": "LEVEL_MEDIUM", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-j6gc-792m-qgm2", + "issueUrl": "https://osv.dev/GHSA-pj73-v5mw-pm9j", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/Gemfile.lock", "line": "16", - "message": "Active Support Possibly Discloses Locally Encrypted Files. Current version of 'activesupport' is vulnerable: 5.2.8.1. Patch available: upgrade to 6.1.7.5 or higher.", - "code": "GHSA-cr5q-6q9f-rq6q", + "message": "ReDoS based DoS vulnerability in Active Support's underscore. Current version of 'activesupport' is vulnerable: 5.2.8.1. Patch available: upgrade to 6.1.7.1 or higher.", + "code": "GHSA-j6gc-792m-qgm2", "level": "LEVEL_LOW", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-cr5q-6q9f-rq6q", + "issueUrl": "https://osv.dev/GHSA-j6gc-792m-qgm2", "targetType": "lockfile", "isSecurity": true }, @@ -131,17 +131,6 @@ "targetType": "lockfile", "isSecurity": true }, - { - "file": "test_data/Gemfile.lock", - "line": "97", - "message": "'Nokogiri' updates packaged libxml2 to v2.12.7 to resolve CVE-2024-34459. Current version of 'nokogiri' is vulnerable: 1.14.1. Patch available: upgrade to 1.16.5 or higher.", - "code": "GHSA-r95h-9x8f-r3f7", - "level": "LEVEL_LOW", - "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-r95h-9x8f-r3f7", - "targetType": "lockfile", - "isSecurity": true - }, { "file": "test_data/Gemfile.lock", "line": "97", @@ -232,21 +221,41 @@ }, { "file": "test_data/go.mod", - "message": "Comments in display names are incorrectly handled in net/mail. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2024-24784", + "message": "Improper handling of JavaScript whitespace in html/template. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2023-24540", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2024-24784", + "issueUrl": "https://osv.dev/CVE-2023-24540", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Panic due to crafted inputs in archive/zip. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2021-39293", + "message": "Excessive resource consumption in mime/multipart. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2022-41725", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2021-39293", + "issueUrl": "https://osv.dev/CVE-2022-41725", + "targetType": "lockfile", + "isSecurity": true + }, + { + "file": "test_data/go.mod", + "message": "Large RSA keys can cause high CPU usage in crypto/tls. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2023-29409", + "level": "LEVEL_HIGH", + "linter": "osv-scanner", + "issueUrl": "https://osv.dev/CVE-2023-29409", + "targetType": "lockfile", + "isSecurity": true + }, + { + "file": "test_data/go.mod", + "message": "Insufficient sanitization of Host header in net/http. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2023-29406", + "level": "LEVEL_HIGH", + "linter": "osv-scanner", + "issueUrl": "https://osv.dev/CVE-2023-29406", "targetType": "lockfile", "isSecurity": true }, @@ -272,211 +281,221 @@ }, { "file": "test_data/go.mod", - "message": "Improper handling of JavaScript whitespace in html/template. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2023-24540", + "message": "Improper handling of special tags within script contexts in html/template. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2023-39319", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2023-24540", + "issueUrl": "https://osv.dev/CVE-2023-39319", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Improper sanitization of CSS values in html/template. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2023-24539", + "message": "Denial of service via chunk extensions in net/http. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2023-39326", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2023-24539", + "issueUrl": "https://osv.dev/CVE-2023-39326", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Backticks not treated as string delimiters in html/template. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2023-24538", + "message": "Insecure parsing of Windows paths with a \\??\\ prefix in path/filepath. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2023-45283", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2023-24538", + "issueUrl": "https://osv.dev/CVE-2023-45283", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Stack exhaustion on crafted paths in path/filepath. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2022-30632", + "message": "Incorrect detection of reserved device names on Windows in path/filepath. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2023-45284", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2022-30632", + "issueUrl": "https://osv.dev/CVE-2023-45284", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Stack exhaustion when reading certain archives in compress/gzip. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2022-30631", + "message": "Before Go 1.20, the RSA based key exchange methods in crypto/tls may exhibit a timing side channel. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2023-45287", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2022-30631", + "issueUrl": "https://osv.dev/CVE-2023-45287", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Stack exhaustion in Glob on certain paths in io/fs. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2022-30630", + "message": "Incorrect forwarding of sensitive headers and cookies on HTTP redirect in net/http. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2023-45289", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2022-30630", + "issueUrl": "https://osv.dev/CVE-2023-45289", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Session tickets lack random ticket_age_add in crypto/tls. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2022-30629", + "message": "Memory exhaustion in multipart form parsing in net/textproto and net/http. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2023-45290", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2022-30629", + "issueUrl": "https://osv.dev/CVE-2023-45290", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Empty Cmd.Path can trigger unintended binary in os/exec on Windows. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2022-30580", + "message": "Verify panics on certificates with an unknown public key algorithm in crypto/x509. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2024-24783", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2022-30580", + "issueUrl": "https://osv.dev/CVE-2024-24783", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Path traversal via Clean on Windows in path/filepath. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2022-29804", + "message": "Comments in display names are incorrectly handled in net/mail. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2024-24784", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2022-29804", + "issueUrl": "https://osv.dev/CVE-2024-24784", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Incorrect sanitization of forwarded query parameters in net/http/httputil. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2022-2880", + "message": "Errors returned from JSON marshaling may break template escaping in html/template. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2024-24785", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2022-2880", + "issueUrl": "https://osv.dev/CVE-2024-24785", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Unbounded memory consumption when reading headers in archive/tar. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2022-2879", + "message": "HTTP/2 rapid reset can cause excessive work in net/http. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "GHSA-4374-p667-p6c8", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2022-2879", + "issueUrl": "https://osv.dev/GHSA-4374-p667-p6c8", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Panic due to large inputs affecting P-256 curves in crypto/elliptic. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2022-28327", + "message": "HTTP/2 CONTINUATION flood in net/http. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "GHSA-4v7x-pqxf-cx7m", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2022-28327", + "issueUrl": "https://osv.dev/GHSA-4v7x-pqxf-cx7m", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Stack exhaustion from deeply nested XML documents in encoding/xml. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2022-28131", + "message": "Denial of service in net/http and golang.org/x/net/http2. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "GHSA-69cg-p879-7622", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2022-28131", + "issueUrl": "https://osv.dev/GHSA-69cg-p879-7622", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Stack exhaustion when compiling deeply nested expressions in regexp. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2022-24921", + "message": "Panic due to large headers in net/http and golang.org/x/net/http/httpguts. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "GHSA-h86h-8ppg-mxmh", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2022-24921", + "issueUrl": "https://osv.dev/GHSA-h86h-8ppg-mxmh", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Stack overflow from a large amount of PEM data in encoding/pem. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2022-24675", + "message": "Incorrect privilege reporting in syscall and golang.org/x/sys/unix. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "GHSA-p782-xgp4-8hr8", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2022-24675", + "issueUrl": "https://osv.dev/GHSA-p782-xgp4-8hr8", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Incorrect computation for some invalid field elements in crypto/elliptic. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2022-23806", + "message": "Unbounded memory growth in net/http and golang.org/x/net/http2. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "GHSA-vc3p-29h2-gpcp", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2022-23806", + "issueUrl": "https://osv.dev/GHSA-vc3p-29h2-gpcp", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Uncontrolled memory consumption in math/big. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2022-23772", + "message": "Denial of service via crafted HTTP/2 stream in net/http and golang.org/x/net. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "GHSA-vvpx-j8f3-3w6h", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2022-23772", + "issueUrl": "https://osv.dev/GHSA-vvpx-j8f3-3w6h", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Stack exhaustion due to deeply nested types in go/parser. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2022-1962", + "message": "Excessive memory growth in net/http and golang.org/x/net/http2. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "GHSA-xrjj-mj9h-534m", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2022-1962", + "issueUrl": "https://osv.dev/GHSA-xrjj-mj9h-534m", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Improper sanitization of Transfer-Encoding headers in net/http. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2022-1705", + "message": "Incorrect calculation on P256 curves in crypto/internal/nistec. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2023-24532", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2022-1705", + "issueUrl": "https://osv.dev/CVE-2023-24532", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Misdirected I/O in syscall. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2021-44717", + "message": "Panic on large handshake records in crypto/tls. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2022-41724", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2021-44717", + "issueUrl": "https://osv.dev/CVE-2022-41724", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Indefinite hang with large buffers on Windows in crypto/rand. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2022-30634", + "message": "Improper sanitization of CSS values in html/template. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2023-24539", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2022-30634", + "issueUrl": "https://osv.dev/CVE-2023-24539", + "targetType": "lockfile", + "isSecurity": true + }, + { + "file": "test_data/go.mod", + "message": "Backticks not treated as string delimiters in html/template. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2023-24538", + "level": "LEVEL_HIGH", + "linter": "osv-scanner", + "issueUrl": "https://osv.dev/CVE-2023-24538", "targetType": "lockfile", "isSecurity": true }, @@ -512,121 +531,101 @@ }, { "file": "test_data/go.mod", - "message": "Incorrect calculation on P256 curves in crypto/internal/nistec. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2023-24532", + "message": "Cross-site scripting in net/http/cgi and net/http/fcgi. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2020-24553", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2023-24532", + "issueUrl": "https://osv.dev/CVE-2020-24553", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Excessive resource consumption in mime/multipart. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2022-41725", + "message": "Infinite loop when decoding inputs in encoding/xml. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2021-27918", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2022-41725", + "issueUrl": "https://osv.dev/CVE-2021-27918", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Excessive memory growth in net/http and golang.org/x/net/http2. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "GHSA-xrjj-mj9h-534m", + "message": "Incorrect operations on the P-224 curve in crypto/elliptic. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2021-3114", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-xrjj-mj9h-534m", + "issueUrl": "https://osv.dev/CVE-2021-3114", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Denial of service via crafted HTTP/2 stream in net/http and golang.org/x/net. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "GHSA-vvpx-j8f3-3w6h", + "message": "Improper sanitization when resolving values from DNS in net. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2021-33195", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-vvpx-j8f3-3w6h", + "issueUrl": "https://osv.dev/CVE-2021-33195", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Unbounded memory growth in net/http and golang.org/x/net/http2. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "GHSA-vc3p-29h2-gpcp", + "message": "Panic when reading certain archives in archive/zip. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2021-33196", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-vc3p-29h2-gpcp", + "issueUrl": "https://osv.dev/CVE-2021-33196", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Incorrect privilege reporting in syscall and golang.org/x/sys/unix. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "GHSA-p782-xgp4-8hr8", + "message": "Attacker can drop certain headers in net/http/httputil. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2021-33197", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-p782-xgp4-8hr8", + "issueUrl": "https://osv.dev/CVE-2021-33197", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Panic due to large headers in net/http and golang.org/x/net/http/httpguts. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "GHSA-h86h-8ppg-mxmh", + "message": "Panic on inputs with large exponents in math/big. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2021-33198", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-h86h-8ppg-mxmh", + "issueUrl": "https://osv.dev/CVE-2021-33198", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Denial of service in net/http and golang.org/x/net/http2. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "GHSA-69cg-p879-7622", + "message": "Panic on certain certificates in crypto/tls. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2021-34558", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-69cg-p879-7622", + "issueUrl": "https://osv.dev/CVE-2021-34558", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "HTTP/2 CONTINUATION flood in net/http. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "GHSA-4v7x-pqxf-cx7m", + "message": "Panic in ReverseProxy in net/http/httputil. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2021-36221", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-4v7x-pqxf-cx7m", + "issueUrl": "https://osv.dev/CVE-2021-36221", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "HTTP/2 rapid reset can cause excessive work in net/http. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "GHSA-4374-p667-p6c8", + "message": "Panic due to crafted inputs in archive/zip. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2021-39293", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-4374-p667-p6c8", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/go.mod", - "message": "Denial of service due to improper 100-continue handling in net/http. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2024-24791", - "level": "LEVEL_HIGH", - "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2024-24791", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/go.mod", - "message": "Unexpected behavior from Is methods for IPv4-mapped IPv6 addresses in net/netip. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2024-24790", - "level": "LEVEL_HIGH", - "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2024-24790", + "issueUrl": "https://osv.dev/CVE-2021-39293", "targetType": "lockfile", "isSecurity": true }, @@ -642,201 +641,201 @@ }, { "file": "test_data/go.mod", - "message": "Panic on large handshake records in crypto/tls. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2022-41724", + "message": "Panic when opening certain archives in archive/zip. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2021-41772", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2022-41724", + "issueUrl": "https://osv.dev/CVE-2021-41772", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Path traversal on Windows in path/filepath. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2022-41722", + "message": "Misdirected I/O in syscall. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2021-44717", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2022-41722", + "issueUrl": "https://osv.dev/CVE-2021-44717", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Mishandling of corrupt central directory record in archive/zip. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2024-24789", + "message": "Improper sanitization of Transfer-Encoding headers in net/http. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2022-1705", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2024-24789", + "issueUrl": "https://osv.dev/CVE-2022-1705", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Restricted file access on Windows in os and net/http. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2022-41720", + "message": "Stack exhaustion due to deeply nested types in go/parser. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2022-1962", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2022-41720", + "issueUrl": "https://osv.dev/CVE-2022-1962", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Errors returned from JSON marshaling may break template escaping in html/template. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2024-24785", + "message": "Uncontrolled memory consumption in math/big. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2022-23772", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2024-24785", + "issueUrl": "https://osv.dev/CVE-2022-23772", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Large RSA keys can cause high CPU usage in crypto/tls. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2023-29409", + "message": "Incorrect computation for some invalid field elements in crypto/elliptic. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2022-23806", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2023-29409", + "issueUrl": "https://osv.dev/CVE-2022-23806", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Verify panics on certificates with an unknown public key algorithm in crypto/x509. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2024-24783", + "message": "Stack overflow from a large amount of PEM data in encoding/pem. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2022-24675", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2024-24783", + "issueUrl": "https://osv.dev/CVE-2022-24675", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Memory exhaustion in multipart form parsing in net/textproto and net/http. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2023-45290", + "message": "Stack exhaustion when compiling deeply nested expressions in regexp. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2022-24921", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2023-45290", + "issueUrl": "https://osv.dev/CVE-2022-24921", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Incorrect forwarding of sensitive headers and cookies on HTTP redirect in net/http. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2023-45289", + "message": "Stack exhaustion from deeply nested XML documents in encoding/xml. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2022-28131", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2023-45289", + "issueUrl": "https://osv.dev/CVE-2022-28131", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Before Go 1.20, the RSA based key exchange methods in crypto/tls may exhibit a timing side channel. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2023-45287", + "message": "Panic due to large inputs affecting P-256 curves in crypto/elliptic. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2022-28327", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2023-45287", + "issueUrl": "https://osv.dev/CVE-2022-28327", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Incorrect detection of reserved device names on Windows in path/filepath. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2023-45284", + "message": "Unbounded memory consumption when reading headers in archive/tar. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2022-2879", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2023-45284", + "issueUrl": "https://osv.dev/CVE-2022-2879", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Insecure parsing of Windows paths with a \\??\\ prefix in path/filepath. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2023-45283", + "message": "Incorrect sanitization of forwarded query parameters in net/http/httputil. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2022-2880", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2023-45283", + "issueUrl": "https://osv.dev/CVE-2022-2880", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Denial of service via chunk extensions in net/http. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2023-39326", + "message": "Path traversal via Clean on Windows in path/filepath. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2022-29804", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2023-39326", + "issueUrl": "https://osv.dev/CVE-2022-29804", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Unsanitized NUL in environment variables on Windows in syscall and os/exec. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2022-41716", + "message": "Empty Cmd.Path can trigger unintended binary in os/exec on Windows. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2022-30580", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2022-41716", + "issueUrl": "https://osv.dev/CVE-2022-30580", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Memory exhaustion when compiling regular expressions in regexp/syntax. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2022-41715", + "message": "Session tickets lack random ticket_age_add in crypto/tls. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2022-30629", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2022-41715", + "issueUrl": "https://osv.dev/CVE-2022-30629", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Panic when opening certain archives in archive/zip. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2021-41772", + "message": "Stack exhaustion in Glob on certain paths in io/fs. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2022-30630", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2021-41772", + "issueUrl": "https://osv.dev/CVE-2022-30630", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Insufficient sanitization of Host header in net/http. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2023-29406", + "message": "Stack exhaustion when reading certain archives in compress/gzip. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2022-30631", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2023-29406", + "issueUrl": "https://osv.dev/CVE-2022-30631", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Panic when decoding Float and Rat types in math/big. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2022-32189", + "message": "Stack exhaustion on crafted paths in path/filepath. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2022-30632", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2022-32189", + "issueUrl": "https://osv.dev/CVE-2022-30632", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Exposure of client IP addresses in net/http. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2022-32148", + "message": "Stack exhaustion when unmarshaling certain documents in encoding/xml. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2022-30633", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2022-32148", + "issueUrl": "https://osv.dev/CVE-2022-30633", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Improper handling of special tags within script contexts in html/template. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2023-39319", + "message": "Indefinite hang with large buffers on Windows in crypto/rand. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2022-30634", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2023-39319", + "issueUrl": "https://osv.dev/CVE-2022-30634", "targetType": "lockfile", "isSecurity": true }, @@ -852,131 +851,91 @@ }, { "file": "test_data/go.mod", - "message": "Improper handling of HTML-like comments in script contexts in html/template. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2023-39318", - "level": "LEVEL_HIGH", - "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2023-39318", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/go.mod", - "message": "Cross-site scripting in net/http/cgi and net/http/fcgi. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2020-24553", - "level": "LEVEL_HIGH", - "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2020-24553", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/go.mod", - "message": "Infinite loop when decoding inputs in encoding/xml. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2021-27918", - "level": "LEVEL_HIGH", - "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2021-27918", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/go.mod", - "message": "Incorrect operations on the P-224 curve in crypto/elliptic. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2021-3114", - "level": "LEVEL_HIGH", - "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2021-3114", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/go.mod", - "message": "Improper sanitization when resolving values from DNS in net. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2021-33195", + "message": "Exposure of client IP addresses in net/http. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2022-32148", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2021-33195", + "issueUrl": "https://osv.dev/CVE-2022-32148", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Panic when reading certain archives in archive/zip. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2021-33196", + "message": "Panic when decoding Float and Rat types in math/big. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2022-32189", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2021-33196", + "issueUrl": "https://osv.dev/CVE-2022-32189", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Attacker can drop certain headers in net/http/httputil. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2021-33197", + "message": "Memory exhaustion when compiling regular expressions in regexp/syntax. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2022-41715", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2021-33197", + "issueUrl": "https://osv.dev/CVE-2022-41715", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Panic on inputs with large exponents in math/big. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2021-33198", + "message": "Unsanitized NUL in environment variables on Windows in syscall and os/exec. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2022-41716", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2021-33198", + "issueUrl": "https://osv.dev/CVE-2022-41716", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Panic on certain certificates in crypto/tls. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2021-34558", + "message": "Restricted file access on Windows in os and net/http. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2022-41720", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2021-34558", + "issueUrl": "https://osv.dev/CVE-2022-41720", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Panic in ReverseProxy in net/http/httputil. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2021-36221", + "message": "Path traversal on Windows in path/filepath. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2022-41722", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2021-36221", + "issueUrl": "https://osv.dev/CVE-2022-41722", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "message": "Stack exhaustion when unmarshaling certain documents in encoding/xml. Current version of 'stdlib' is vulnerable: 1.13.", - "code": "CVE-2022-30633", + "message": "Improper handling of HTML-like comments in script contexts in html/template. Current version of 'stdlib' is vulnerable: 1.13.", + "code": "CVE-2023-39318", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2022-30633", + "issueUrl": "https://osv.dev/CVE-2023-39318", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", "line": "7", - "message": "Gitea vulnerable to Argument Injection in 'code.gitea.io/gitea'. Current version is vulnerable: 1.9.0-dev.", - "code": "GHSA-w8xw-7crf-h23x", - "level": "LEVEL_HIGH", + "message": "Gitea erroneous repo clones. Current version of 'code.gitea.io/gitea' is vulnerable: 1.9.0-dev.", + "code": "GHSA-8j3v-68w3-3848", + "level": "LEVEL_MEDIUM", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-w8xw-7crf-h23x", + "issueUrl": "https://osv.dev/GHSA-8j3v-68w3-3848", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", "line": "7", - "message": "Stored Cross-site Scripting in gitea in 'code.gitea.io/gitea'. Current version is vulnerable: 1.9.0-dev.", + "message": "Stored Cross-site Scripting in gitea. Current version of 'code.gitea.io/gitea' is vulnerable: 1.9.0-dev.", "code": "GHSA-ph3w-2843-72mx", - "level": "LEVEL_HIGH", + "level": "LEVEL_MEDIUM", "linter": "osv-scanner", "issueUrl": "https://osv.dev/GHSA-ph3w-2843-72mx", "targetType": "lockfile", @@ -985,62 +944,29 @@ { "file": "test_data/go.mod", "line": "7", - "message": "Shell command injection in gitea in 'code.gitea.io/gitea'. Current version is vulnerable: 1.9.0-dev.", - "code": "GHSA-p5f9-c9j9-g8qx", - "level": "LEVEL_HIGH", - "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-p5f9-c9j9-g8qx", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/go.mod", - "line": "7", - "message": "Capture-replay in Gitea in 'code.gitea.io/gitea'. Current version is vulnerable: 1.9.0-dev.", - "code": "GHSA-jrpg-35hw-m4p9", - "level": "LEVEL_HIGH", - "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-jrpg-35hw-m4p9", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/go.mod", - "line": "7", - "message": "Gitea Missing Authorization vulnerability in 'code.gitea.io/gitea'. Current version is vulnerable: 1.9.0-dev.", - "code": "GHSA-jr9c-h74f-2v28", - "level": "LEVEL_HIGH", - "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-jr9c-h74f-2v28", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/go.mod", - "line": "7", - "message": "Path Traversal in Gitea in 'code.gitea.io/gitea'. Current version is vulnerable: 1.9.0-dev.", - "code": "GHSA-h3q4-vmw4-cpr5", + "message": "Gogs and Gitea SSRF Vulnerability. Current version of 'code.gitea.io/gitea' is vulnerable: 1.9.0-dev.", + "code": "GHSA-fg3x-rwq9-74cw", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-h3q4-vmw4-cpr5", + "issueUrl": "https://osv.dev/GHSA-fg3x-rwq9-74cw", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", "line": "7", - "message": "Cross-site Scripting in Gitea in 'code.gitea.io/gitea'. Current version is vulnerable: 1.9.0-dev.", - "code": "GHSA-g95p-88p4-76cm", - "level": "LEVEL_HIGH", + "message": "Gitea allowed assignment of private issues. Current version of 'code.gitea.io/gitea' is vulnerable: 1.9.0-dev.", + "code": "GHSA-fhv8-m4j4-cww2", + "level": "LEVEL_MEDIUM", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-g95p-88p4-76cm", + "issueUrl": "https://osv.dev/GHSA-fhv8-m4j4-cww2", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", "line": "7", - "message": "Arbitrary file deletion in gitea in 'code.gitea.io/gitea'. Current version is vulnerable: 1.9.0-dev.", + "message": "Arbitrary file deletion in gitea. Current version of 'code.gitea.io/gitea' is vulnerable: 1.9.0-dev.", "code": "GHSA-g7p7-x6w7-w6qg", "level": "LEVEL_HIGH", "linter": "osv-scanner", @@ -1051,88 +977,77 @@ { "file": "test_data/go.mod", "line": "7", - "message": "Denial of Service in Gitea in 'code.gitea.io/gitea'. Current version is vulnerable: 1.9.0-dev.", - "code": "GHSA-g2qx-6ghw-67hm", - "level": "LEVEL_HIGH", - "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-g2qx-6ghw-67hm", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/go.mod", - "line": "7", - "message": "Gitea allowed assignment of private issues in 'code.gitea.io/gitea'. Current version is vulnerable: 1.9.0-dev.", - "code": "GHSA-fhv8-m4j4-cww2", + "message": "Arbitrary Code Execution in Gitea. Current version of 'code.gitea.io/gitea' is vulnerable: 1.9.0-dev.", + "code": "GHSA-3h6c-c475-jm7v", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-fhv8-m4j4-cww2", + "issueUrl": "https://osv.dev/GHSA-3h6c-c475-jm7v", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", "line": "7", - "message": "Gogs and Gitea SSRF Vulnerability in 'code.gitea.io/gitea'. Current version is vulnerable: 1.9.0-dev.", - "code": "GHSA-fg3x-rwq9-74cw", - "level": "LEVEL_HIGH", + "message": "'code.gitea.io/gitea' Open Redirect vulnerability. Current version is vulnerable: 1.9.0-dev.", + "code": "GHSA-cf6v-9j57-v6r6", + "level": "LEVEL_LOW", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-fg3x-rwq9-74cw", + "issueUrl": "https://osv.dev/GHSA-cf6v-9j57-v6r6", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", "line": "7", - "message": "'code.gitea.io/gitea' Open Redirect vulnerability. Current version is vulnerable: 1.9.0-dev.", - "code": "GHSA-cf6v-9j57-v6r6", - "level": "LEVEL_HIGH", + "message": "Cross-site Scripting in Gitea. Current version of 'code.gitea.io/gitea' is vulnerable: 1.9.0-dev.", + "code": "GHSA-g95p-88p4-76cm", + "level": "LEVEL_MEDIUM", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-cf6v-9j57-v6r6", + "issueUrl": "https://osv.dev/GHSA-g95p-88p4-76cm", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", "line": "7", - "message": "Gitea erroneous repo clones in 'code.gitea.io/gitea'. Current version is vulnerable: 1.9.0-dev.", - "code": "GHSA-8j3v-68w3-3848", - "level": "LEVEL_HIGH", + "message": "Path Traversal in Gitea. Current version of 'code.gitea.io/gitea' is vulnerable: 1.9.0-dev.", + "code": "GHSA-h3q4-vmw4-cpr5", + "level": "LEVEL_MEDIUM", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-8j3v-68w3-3848", + "issueUrl": "https://osv.dev/GHSA-h3q4-vmw4-cpr5", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", "line": "7", - "message": "Gitea Open Redirect in 'code.gitea.io/gitea'. Current version is vulnerable: 1.9.0-dev.", - "code": "GHSA-4rqq-rxvc-v2rc", + "message": "Gitea Missing Authorization vulnerability. Current version of 'code.gitea.io/gitea' is vulnerable: 1.9.0-dev.", + "code": "GHSA-jr9c-h74f-2v28", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-4rqq-rxvc-v2rc", + "issueUrl": "https://osv.dev/GHSA-jr9c-h74f-2v28", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", "line": "7", - "message": "Gitea Cross-site Scripting Vulnerability in 'code.gitea.io/gitea'. Current version is vulnerable: 1.9.0-dev.", - "code": "GHSA-4h4p-553m-46qh", + "message": "Shell command injection in gitea. Current version of 'code.gitea.io/gitea' is vulnerable: 1.9.0-dev.", + "code": "GHSA-p5f9-c9j9-g8qx", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-4h4p-553m-46qh", + "issueUrl": "https://osv.dev/GHSA-p5f9-c9j9-g8qx", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", "line": "7", - "message": "Arbitrary Code Execution in Gitea. Current version of 'code.gitea.io/gitea' is vulnerable: 1.9.0-dev.", - "code": "GHSA-3h6c-c475-jm7v", - "level": "LEVEL_HIGH", + "message": "Gitea Open Redirect. Current version of 'code.gitea.io/gitea' is vulnerable: 1.9.0-dev.", + "code": "GHSA-4rqq-rxvc-v2rc", + "level": "LEVEL_MEDIUM", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-3h6c-c475-jm7v", + "issueUrl": "https://osv.dev/GHSA-4rqq-rxvc-v2rc", "targetType": "lockfile", "isSecurity": true }, @@ -1172,18 +1087,18 @@ { "file": "test_data/go.mod", "line": "58", - "message": "Gitea Improper Input Validation in 'github.com/go-gitea/gitea'. Current version is vulnerable: 1.2.3.", - "code": "GHSA-q47x-6mqq-4w92", - "level": "LEVEL_HIGH", + "message": "Open redirect in Gitea. Current version of 'github.com/go-gitea/gitea' is vulnerable: 1.2.3.", + "code": "GHSA-36h2-95gj-w488", + "level": "LEVEL_MEDIUM", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-q47x-6mqq-4w92", + "issueUrl": "https://osv.dev/GHSA-36h2-95gj-w488", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", "line": "58", - "message": "Cross Site Request Forgery in Gitea in 'github.com/go-gitea/gitea'. Current version is vulnerable: 1.2.3.", + "message": "Cross Site Request Forgery in Gitea. Current version of 'github.com/go-gitea/gitea' is vulnerable: 1.2.3.", "code": "GHSA-4wp3-8q92-mh8w", "level": "LEVEL_HIGH", "linter": "osv-scanner", @@ -1194,20 +1109,9 @@ { "file": "test_data/go.mod", "line": "58", - "message": "Open redirect in Gitea in 'github.com/go-gitea/gitea'. Current version is vulnerable: 1.2.3.", - "code": "GHSA-36h2-95gj-w488", - "level": "LEVEL_HIGH", - "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-36h2-95gj-w488", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/go.mod", - "line": "58", - "message": "Gitea displaying raw OpenID error in UI in 'github.com/go-gitea/gitea'. Current version is vulnerable: 1.2.3.", + "message": "Gitea displaying raw OpenID error in UI. Current version of 'github.com/go-gitea/gitea' is vulnerable: 1.2.3.", "code": "GHSA-8h8p-x289-vvqr", - "level": "LEVEL_HIGH", + "level": "LEVEL_MEDIUM", "linter": "osv-scanner", "issueUrl": "https://osv.dev/GHSA-8h8p-x289-vvqr", "targetType": "lockfile", @@ -1216,9 +1120,9 @@ { "file": "test_data/go.mod", "line": "58", - "message": "Gitea Exposes Private Email Addresses in 'github.com/go-gitea/gitea'. Current version is vulnerable: 1.2.3.", + "message": "Gitea Exposes Private Email Addresses. Current version of 'github.com/go-gitea/gitea' is vulnerable: 1.2.3.", "code": "GHSA-f5fj-7265-jxhj", - "level": "LEVEL_HIGH", + "level": "LEVEL_MEDIUM", "linter": "osv-scanner", "issueUrl": "https://osv.dev/GHSA-f5fj-7265-jxhj", "targetType": "lockfile", @@ -1238,31 +1142,31 @@ { "file": "test_data/go.mod", "line": "58", - "message": "Gitea vulnerable to Argument Injection. Current version of 'github.com/go-gitea/gitea' is vulnerable: 1.2.3.", - "code": "GHSA-w8xw-7crf-h23x", + "message": "Capture-replay in Gitea. Current version of 'github.com/go-gitea/gitea' is vulnerable: 1.2.3.", + "code": "GHSA-jrpg-35hw-m4p9", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-w8xw-7crf-h23x", + "issueUrl": "https://osv.dev/GHSA-jrpg-35hw-m4p9", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", "line": "58", - "message": "Improper Access Control in Gitea. Current version of 'github.com/go-gitea/gitea' is vulnerable: 1.2.3.", - "code": "GHSA-r7h7-chh4-5rvm", + "message": "Gitea Improper Input Validation. Current version of 'github.com/go-gitea/gitea' is vulnerable: 1.2.3.", + "code": "GHSA-q47x-6mqq-4w92", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-r7h7-chh4-5rvm", + "issueUrl": "https://osv.dev/GHSA-q47x-6mqq-4w92", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", "line": "58", - "message": "Cross-site Scripting in Gitea in 'github.com/go-gitea/gitea'. Current version is vulnerable: 1.2.3.", + "message": "Cross-site Scripting in Gitea. Current version of 'github.com/go-gitea/gitea' is vulnerable: 1.2.3.", "code": "GHSA-r3gq-wxqf-q4gh", - "level": "LEVEL_HIGH", + "level": "LEVEL_MEDIUM", "linter": "osv-scanner", "issueUrl": "https://osv.dev/GHSA-r3gq-wxqf-q4gh", "targetType": "lockfile", @@ -1271,53 +1175,64 @@ { "file": "test_data/go.mod", "line": "58", - "message": "Gitea Remote Code Execution in 'github.com/go-gitea/gitea'. Current version is vulnerable: 1.2.3.", - "code": "GHSA-hpmr-prr2-cqc4", + "message": "Improper Access Control in Gitea. Current version of 'github.com/go-gitea/gitea' is vulnerable: 1.2.3.", + "code": "GHSA-r7h7-chh4-5rvm", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-hpmr-prr2-cqc4", + "issueUrl": "https://osv.dev/GHSA-r7h7-chh4-5rvm", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", "line": "58", - "message": "Capture-replay in Gitea. Current version of 'github.com/go-gitea/gitea' is vulnerable: 1.2.3.", - "code": "GHSA-jrpg-35hw-m4p9", + "message": "Gitea vulnerable to Argument Injection. Current version of 'github.com/go-gitea/gitea' is vulnerable: 1.2.3.", + "code": "GHSA-w8xw-7crf-h23x", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-jrpg-35hw-m4p9", + "issueUrl": "https://osv.dev/GHSA-w8xw-7crf-h23x", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", - "line": "84", - "message": "Gophish before 0.12.0 vulnerable to Open Redirect in 'github.com/gophish/gophish'. Current version is vulnerable: 0.1.2.", - "code": "GHSA-hvw3-p9px-gpc9", + "line": "58", + "message": "Gitea Remote Code Execution. Current version of 'github.com/go-gitea/gitea' is vulnerable: 1.2.3.", + "code": "GHSA-hpmr-prr2-cqc4", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-hvw3-p9px-gpc9", + "issueUrl": "https://osv.dev/GHSA-hpmr-prr2-cqc4", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", "line": "84", - "message": "Gophish XSS Vulnerability in 'github.com/gophish/gophish'. Current version is vulnerable: 0.1.2.", - "code": "GHSA-9h9f-9q8g-6764", + "message": "Gophish vulnerable to Cross-site Scripting via crafted landing page. Current version of 'github.com/gophish/gophish' is vulnerable: 0.1.2.", + "code": "GHSA-55m9-hm92-xm8j", + "level": "LEVEL_MEDIUM", + "linter": "osv-scanner", + "issueUrl": "https://osv.dev/GHSA-55m9-hm92-xm8j", + "targetType": "lockfile", + "isSecurity": true + }, + { + "file": "test_data/go.mod", + "line": "84", + "message": "Gophish vulnerable to Denial of Service via crafted payload involving autofocus. Current version of 'github.com/gophish/gophish' is vulnerable: 0.1.2.", + "code": "GHSA-8gg8-wr4j-v2wr", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-9h9f-9q8g-6764", + "issueUrl": "https://osv.dev/GHSA-8gg8-wr4j-v2wr", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", "line": "84", - "message": "Gophish vulnerable to Server-Side Request Forgery in 'github.com/gophish/gophish'. Current version is vulnerable: 0.1.2.", + "message": "Gophish vulnerable to Server-Side Request Forgery. Current version of 'github.com/gophish/gophish' is vulnerable: 0.1.2.", "code": "GHSA-9c9w-9pq7-f35h", - "level": "LEVEL_HIGH", + "level": "LEVEL_MEDIUM", "linter": "osv-scanner", "issueUrl": "https://osv.dev/GHSA-9c9w-9pq7-f35h", "targetType": "lockfile", @@ -1326,44 +1241,44 @@ { "file": "test_data/go.mod", "line": "84", - "message": "Gophish vulnerable to Denial of Service via crafted payload involving autofocus. Current version of 'github.com/gophish/gophish' is vulnerable: 0.1.2.", - "code": "GHSA-8gg8-wr4j-v2wr", - "level": "LEVEL_HIGH", + "message": "Gophish XSS Vulnerability. Current version of 'github.com/gophish/gophish' is vulnerable: 0.1.2.", + "code": "GHSA-9h9f-9q8g-6764", + "level": "LEVEL_MEDIUM", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-8gg8-wr4j-v2wr", + "issueUrl": "https://osv.dev/GHSA-9h9f-9q8g-6764", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", "line": "84", - "message": "Gophish vulnerable to Cross-site Scripting via crafted landing page. Current version of 'github.com/gophish/gophish' is vulnerable: 0.1.2.", - "code": "GHSA-55m9-hm92-xm8j", + "message": "Gophish before 0.12.0 vulnerable to Open Redirect. Current version of 'github.com/gophish/gophish' is vulnerable: 0.1.2.", + "code": "GHSA-hvw3-p9px-gpc9", "level": "LEVEL_MEDIUM", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-55m9-hm92-xm8j", + "issueUrl": "https://osv.dev/GHSA-hvw3-p9px-gpc9", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", "line": "91", - "message": "pgx SQL Injection via Line Comment Creation. Current version of 'github.com/jackc/pgx' is vulnerable: 3.6.0+incompatible.", - "code": "GHSA-m7wr-2xf7-cm9p", + "message": "pgx SQL Injection via Protocol Message Size Overflow. Current version of 'github.com/jackc/pgx' is vulnerable: 3.6.0+incompatible.", + "code": "GHSA-7jwh-3vrq-q3m8", "level": "LEVEL_MEDIUM", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-m7wr-2xf7-cm9p", + "issueUrl": "https://osv.dev/GHSA-7jwh-3vrq-q3m8", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", "line": "91", - "message": "pgx SQL Injection via Protocol Message Size Overflow. Current version of 'github.com/jackc/pgx' is vulnerable: 3.6.0+incompatible.", - "code": "GHSA-7jwh-3vrq-q3m8", + "message": "pgx SQL Injection via Line Comment Creation. Current version of 'github.com/jackc/pgx' is vulnerable: 3.6.0+incompatible.", + "code": "GHSA-m7wr-2xf7-cm9p", "level": "LEVEL_MEDIUM", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-7jwh-3vrq-q3m8", + "issueUrl": "https://osv.dev/GHSA-m7wr-2xf7-cm9p", "targetType": "lockfile", "isSecurity": true }, @@ -1403,22 +1318,22 @@ { "file": "test_data/go.mod", "line": "161", - "message": "Path Traversal in 'github.com/unknwon/cae'. Current version is vulnerable: 1.0.0.", - "code": "GHSA-88jf-7rch-32qc", + "message": "Path traversal in 'github.com/unknwon/cae'. Current version is vulnerable: 1.0.0.", + "code": "GHSA-vpx7-vm66-qx8r", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-88jf-7rch-32qc", + "issueUrl": "https://osv.dev/GHSA-vpx7-vm66-qx8r", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", "line": "161", - "message": "Path traversal in 'github.com/unknwon/cae'. Current version is vulnerable: 1.0.0.", - "code": "GHSA-vpx7-vm66-qx8r", + "message": "Path Traversal in 'github.com/unknwon/cae'. Current version is vulnerable: 1.0.0.", + "code": "GHSA-88jf-7rch-32qc", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-vpx7-vm66-qx8r", + "issueUrl": "https://osv.dev/GHSA-88jf-7rch-32qc", "targetType": "lockfile", "isSecurity": true }, @@ -1521,17 +1436,6 @@ "targetType": "lockfile", "isSecurity": true }, - { - "file": "test_data/go.mod", - "line": "172", - "message": "Limited directory traversal vulnerability on Windows in 'golang.org/x/crypto'. Current version is vulnerable: 0.0.0-20190308221718-c2843e01d9a2.", - "code": "CVE-2022-30636", - "level": "LEVEL_HIGH", - "linter": "osv-scanner", - "issueUrl": "https://osv.dev/CVE-2022-30636", - "targetType": "lockfile", - "isSecurity": true - }, { "file": "test_data/go.mod", "line": "173", @@ -1546,11 +1450,11 @@ { "file": "test_data/go.mod", "line": "173", - "message": "Panic when parsing invalid palette-color images in 'golang.org/x/image'. Current version is vulnerable: 0.0.0-20190802002840-cff245a6509b.", - "code": "GHSA-9phm-fm57-rhg8", + "message": "Denial of service via crafted TIFF image in golang.org/x/image/tiff. Current version is vulnerable: 0.0.0-20190802002840-cff245a6509b.", + "code": "GHSA-qgc7-mgm3-q253", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-9phm-fm57-rhg8", + "issueUrl": "https://osv.dev/GHSA-qgc7-mgm3-q253", "targetType": "lockfile", "isSecurity": true }, @@ -1565,36 +1469,25 @@ "targetType": "lockfile", "isSecurity": true }, - { - "file": "test_data/go.mod", - "line": "173", - "message": "Denial of service via crafted TIFF image in golang.org/x/image/tiff. Current version is vulnerable: 0.0.0-20190802002840-cff245a6509b.", - "code": "GHSA-qgc7-mgm3-q253", - "level": "LEVEL_HIGH", - "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-qgc7-mgm3-q253", - "targetType": "lockfile", - "isSecurity": true - }, { "file": "test_data/go.mod", "line": "174", - "message": "Excessive memory growth in net/http and golang.org/x/net/http2. Current version is vulnerable: 0.0.0-20200324143707-d3edc9973b7e.", - "code": "GHSA-xrjj-mj9h-534m", + "message": "Denial of service in net/http and golang.org/x/net/http2. Current version is vulnerable: 0.0.0-20200324143707-d3edc9973b7e.", + "code": "GHSA-69cg-p879-7622", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-xrjj-mj9h-534m", + "issueUrl": "https://osv.dev/GHSA-69cg-p879-7622", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", "line": "174", - "message": "Unbounded memory growth in net/http and golang.org/x/net/http2. Current version is vulnerable: 0.0.0-20200324143707-d3edc9973b7e.", - "code": "GHSA-vc3p-29h2-gpcp", + "message": "Denial of service via crafted HTTP/2 stream in net/http and 'golang.org/x/net'. Current version is vulnerable: 0.0.0-20200324143707-d3edc9973b7e.", + "code": "GHSA-vvpx-j8f3-3w6h", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-vc3p-29h2-gpcp", + "issueUrl": "https://osv.dev/GHSA-vvpx-j8f3-3w6h", "targetType": "lockfile", "isSecurity": true }, @@ -1602,87 +1495,87 @@ "file": "test_data/go.mod", "line": "174", "message": "HTTP/2 Stream Cancellation Attack. Current version of 'golang.org/x/net' is vulnerable: 0.0.0-20200324143707-d3edc9973b7e.", - "code": "GHSA-qppj-fm5r-hxr3", + "code": "GHSA-2m7v-gc89-fjqf", "level": "LEVEL_MEDIUM", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-qppj-fm5r-hxr3", + "issueUrl": "https://osv.dev/GHSA-2m7v-gc89-fjqf", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", "line": "174", - "message": "Panic due to large headers in net/http and golang.org/x/net/http/httpguts. Current version is vulnerable: 0.0.0-20200324143707-d3edc9973b7e.", - "code": "GHSA-h86h-8ppg-mxmh", + "message": "Improper rendering of text nodes in golang.org/x/net/html. Current version is vulnerable: 0.0.0-20200324143707-d3edc9973b7e.", + "code": "GHSA-2wrh-6pvc-2jm9", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-h86h-8ppg-mxmh", + "issueUrl": "https://osv.dev/GHSA-2wrh-6pvc-2jm9", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", "line": "174", - "message": "Infinite loop when parsing inputs in golang.org/x/net/html. Current version is vulnerable: 0.0.0-20200324143707-d3edc9973b7e.", - "code": "GHSA-83g2-8m93-v3w7", + "message": "HTTP/2 rapid reset can cause excessive work in net/http. Current version of 'golang.org/x/net' is vulnerable: 0.0.0-20200324143707-d3edc9973b7e.", + "code": "GHSA-4374-p667-p6c8", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-83g2-8m93-v3w7", + "issueUrl": "https://osv.dev/GHSA-4374-p667-p6c8", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", "line": "174", - "message": "Denial of service in net/http and golang.org/x/net/http2. Current version is vulnerable: 0.0.0-20200324143707-d3edc9973b7e.", - "code": "GHSA-69cg-p879-7622", + "message": "HTTP/2 CONTINUATION flood in net/http. Current version of 'golang.org/x/net' is vulnerable: 0.0.0-20200324143707-d3edc9973b7e.", + "code": "GHSA-4v7x-pqxf-cx7m", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-69cg-p879-7622", + "issueUrl": "https://osv.dev/GHSA-4v7x-pqxf-cx7m", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", "line": "174", - "message": "HTTP/2 CONTINUATION flood in net/http. Current version of 'golang.org/x/net' is vulnerable: 0.0.0-20200324143707-d3edc9973b7e.", - "code": "GHSA-4v7x-pqxf-cx7m", + "message": "Excessive memory growth in net/http and golang.org/x/net/http2. Current version is vulnerable: 0.0.0-20200324143707-d3edc9973b7e.", + "code": "GHSA-xrjj-mj9h-534m", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-4v7x-pqxf-cx7m", + "issueUrl": "https://osv.dev/GHSA-xrjj-mj9h-534m", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", "line": "174", - "message": "HTTP/2 rapid reset can cause excessive work in net/http. Current version of 'golang.org/x/net' is vulnerable: 0.0.0-20200324143707-d3edc9973b7e.", - "code": "GHSA-4374-p667-p6c8", + "message": "Infinite loop when parsing inputs in golang.org/x/net/html. Current version is vulnerable: 0.0.0-20200324143707-d3edc9973b7e.", + "code": "GHSA-83g2-8m93-v3w7", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-4374-p667-p6c8", + "issueUrl": "https://osv.dev/GHSA-83g2-8m93-v3w7", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", "line": "174", - "message": "Improper rendering of text nodes in golang.org/x/net/html. Current version is vulnerable: 0.0.0-20200324143707-d3edc9973b7e.", - "code": "GHSA-2wrh-6pvc-2jm9", + "message": "Panic due to large headers in net/http and golang.org/x/net/http/httpguts. Current version is vulnerable: 0.0.0-20200324143707-d3edc9973b7e.", + "code": "GHSA-h86h-8ppg-mxmh", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-2wrh-6pvc-2jm9", + "issueUrl": "https://osv.dev/GHSA-h86h-8ppg-mxmh", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", "line": "174", - "message": "Denial of service via crafted HTTP/2 stream in net/http and 'golang.org/x/net'. Current version is vulnerable: 0.0.0-20200324143707-d3edc9973b7e.", - "code": "GHSA-vvpx-j8f3-3w6h", + "message": "Unbounded memory growth in net/http and golang.org/x/net/http2. Current version is vulnerable: 0.0.0-20200324143707-d3edc9973b7e.", + "code": "GHSA-vc3p-29h2-gpcp", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-vvpx-j8f3-3w6h", + "issueUrl": "https://osv.dev/GHSA-vc3p-29h2-gpcp", "targetType": "lockfile", "isSecurity": true }, @@ -1700,22 +1593,22 @@ { "file": "test_data/go.mod", "line": "179", - "message": "HTTP/2 Stream Cancellation Attack. Current version of 'google.golang.org/grpc' is vulnerable: 1.23.0.", - "code": "GHSA-qppj-fm5r-hxr3", - "level": "LEVEL_MEDIUM", + "message": "Denial of service from HTTP/2 Rapid Reset in 'google.golang.org/grpc'. Current version is vulnerable: 1.23.0.", + "code": "GHSA-m425-mq94-257g", + "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-qppj-fm5r-hxr3", + "issueUrl": "https://osv.dev/GHSA-m425-mq94-257g", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/go.mod", "line": "179", - "message": "Denial of service from HTTP/2 Rapid Reset in 'google.golang.org/grpc'. Current version is vulnerable: 1.23.0.", - "code": "GHSA-m425-mq94-257g", - "level": "LEVEL_HIGH", + "message": "HTTP/2 Stream Cancellation Attack. Current version of 'google.golang.org/grpc' is vulnerable: 1.23.0.", + "code": "GHSA-2m7v-gc89-fjqf", + "level": "LEVEL_MEDIUM", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-m425-mq94-257g", + "issueUrl": "https://osv.dev/GHSA-2m7v-gc89-fjqf", "targetType": "lockfile", "isSecurity": true }, @@ -1755,99 +1648,99 @@ { "file": "test_data/requirements.txt", "line": "1", - "message": "Arbitrary Code Execution in 'Pillow'. Current version of 'pillow' is vulnerable: 9.1.1. Patch available: upgrade to 10.2.0 or higher.", - "code": "GHSA-3f63-hfp8-52jq", - "level": "LEVEL_HIGH", + "message": "'Pillow' buffer overflow vulnerability. Current version of 'pillow' is vulnerable: 9.1.1. Patch available: upgrade to 10.3.0 or higher.", + "code": "GHSA-44wm-f244-xhp3", + "level": "LEVEL_MEDIUM", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-3f63-hfp8-52jq", + "issueUrl": "https://osv.dev/GHSA-44wm-f244-xhp3", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/requirements.txt", "line": "1", - "message": "'Pillow' versions before v10.0.1 bundled libwebp binaries in wheels that are vulnerable to CVE-2023-5129 (previously CVE-2023-4863). 'Pillow' v10.0.1 upgrades the bundled libwebp binary to v1.3.2. Current version of 'pillow' is vulnerable: 9.1.1. Patch available: upgrade to 10.0.1 or higher.", - "code": "PYSEC-2023-175", + "message": "'Pillow' before 9.2.0 performs Improper Handling of Highly Compressed GIF Data (Data Amplification). Current version of 'pillow' is vulnerable: 9.1.1. Patch available: upgrade to 9.2.0 or higher.", + "code": "GHSA-m2vv-5vj5-2hm7", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/PYSEC-2023-175", + "issueUrl": "https://osv.dev/GHSA-m2vv-5vj5-2hm7", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/requirements.txt", "line": "1", - "message": "'Pillow' buffer overflow vulnerability. Current version of 'pillow' is vulnerable: 9.1.1. Patch available: upgrade to 10.3.0 or higher.", - "code": "GHSA-44wm-f244-xhp3", - "level": "LEVEL_MEDIUM", + "message": "Invalid-free in _dealloc. Current version of 'pillow' is vulnerable: 9.1.1.", + "code": "OSV-2022-1074", + "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-44wm-f244-xhp3", + "issueUrl": "https://osv.dev/OSV-2022-1074", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/requirements.txt", "line": "1", - "message": "Bundled libwebp in 'Pillow' vulnerable. Current version of 'pillow' is vulnerable: 9.1.1. Patch available: upgrade to 10.0.1 or higher.", - "code": "GHSA-56pw-mpj4-fxww", + "message": "Segv on unknown address in jpeg_read_scanlines. Current version of 'pillow' is vulnerable: 9.1.1.", + "code": "OSV-2022-715", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-56pw-mpj4-fxww", + "issueUrl": "https://osv.dev/OSV-2022-715", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/requirements.txt", "line": "1", - "message": "An issue was discovered in 'Pillow' before 10.0.0. It is a Denial of Service that uncontrollably allocates memory to process a given task, potentially causing a service to crash by having it run out of memory. This occurs for truetype in ImageFont when textlength in an ImageDraw instance operates on a long text argument. Current version of 'pillow' is vulnerable: 9.1.1. Patch available: upgrade to 10.0.0 or higher.", - "code": "GHSA-8ghj-p4vj-mr35", + "message": "libwebp: OOB write in BuildHuffmanTable. Current version of 'pillow' is vulnerable: 9.1.1. Patch available: upgrade to 10.0.1 or higher.", + "code": "GHSA-j7hp-h8jx-5ppr", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-8ghj-p4vj-mr35", + "issueUrl": "https://osv.dev/GHSA-j7hp-h8jx-5ppr", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/requirements.txt", "line": "1", - "message": "libwebp: OOB write in BuildHuffmanTable. Current version of 'pillow' is vulnerable: 9.1.1. Patch available: upgrade to 10.0.1 or higher.", - "code": "GHSA-j7hp-h8jx-5ppr", + "message": "An issue was discovered in 'Pillow' before 10.0.0. It is a Denial of Service that uncontrollably allocates memory to process a given task, potentially causing a service to crash by having it run out of memory. This occurs for truetype in ImageFont when textlength in an ImageDraw instance operates on a long text argument. Current version of 'pillow' is vulnerable: 9.1.1. Patch available: upgrade to 10.0.0 or higher.", + "code": "GHSA-8ghj-p4vj-mr35", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-j7hp-h8jx-5ppr", + "issueUrl": "https://osv.dev/GHSA-8ghj-p4vj-mr35", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/requirements.txt", "line": "1", - "message": "'Pillow' before 9.2.0 performs Improper Handling of Highly Compressed GIF Data (Data Amplification). Current version of 'pillow' is vulnerable: 9.1.1. Patch available: upgrade to 9.2.0 or higher.", - "code": "GHSA-m2vv-5vj5-2hm7", + "message": "Bundled libwebp in 'Pillow' vulnerable. Current version of 'pillow' is vulnerable: 9.1.1. Patch available: upgrade to 10.0.1 or higher.", + "code": "GHSA-56pw-mpj4-fxww", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-m2vv-5vj5-2hm7", + "issueUrl": "https://osv.dev/GHSA-56pw-mpj4-fxww", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/requirements.txt", "line": "1", - "message": "Invalid-free in _dealloc. Current version of 'pillow' is vulnerable: 9.1.1.", - "code": "OSV-2022-1074", + "message": "'Pillow' versions before v10.0.1 bundled libwebp binaries in wheels that are vulnerable to CVE-2023-5129 (previously CVE-2023-4863). 'Pillow' v10.0.1 upgrades the bundled libwebp binary to v1.3.2. Current version of 'pillow' is vulnerable: 9.1.1. Patch available: upgrade to 10.0.1 or higher.", + "code": "PYSEC-2023-175", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/OSV-2022-1074", + "issueUrl": "https://osv.dev/PYSEC-2023-175", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/requirements.txt", "line": "1", - "message": "Segv on unknown address in jpeg_read_scanlines. Current version of 'pillow' is vulnerable: 9.1.1.", - "code": "OSV-2022-715", + "message": "Arbitrary Code Execution in 'Pillow'. Current version of 'pillow' is vulnerable: 9.1.1. Patch available: upgrade to 10.2.0 or higher.", + "code": "GHSA-3f63-hfp8-52jq", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/OSV-2022-715", + "issueUrl": "https://osv.dev/GHSA-3f63-hfp8-52jq", "targetType": "lockfile", "isSecurity": true }, @@ -1862,28 +1755,6 @@ "targetType": "lockfile", "isSecurity": true }, - { - "file": "test_data/requirements.txt", - "line": "2", - "message": "'Langchain' 0.0.171 is vulnerable to Arbitrary Code Execution. Current version of 'langchain' is vulnerable: 0.0.171. Patch available: upgrade to 0.0.225 or higher.", - "code": "GHSA-x32c-59v5-h7fg", - "level": "LEVEL_HIGH", - "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-x32c-59v5-h7fg", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/requirements.txt", - "line": "2", - "message": "'Langchain' Server-Side Request Forgery vulnerability. Current version of 'langchain' is vulnerable: 0.0.171. Patch available: upgrade to 0.0.329 or higher.", - "code": "GHSA-6h8p-4hx9-w66c", - "level": "LEVEL_HIGH", - "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-6h8p-4hx9-w66c", - "targetType": "lockfile", - "isSecurity": true - }, { "file": "test_data/requirements.txt", "line": "2", @@ -1898,55 +1769,55 @@ { "file": "test_data/requirements.txt", "line": "2", - "message": "'LangChain' before 0.0.317 allows SSRF via document_loaders/recursive_url_loader.py because crawling can proceed from an external server to an internal server. Current version of 'langchain' is vulnerable: 0.0.171. Patch available: upgrade to 0.0.317 or higher.", - "code": "GHSA-655w-fm8m-m478", + "message": "'Langchain' Server-Side Request Forgery vulnerability. Current version of 'langchain' is vulnerable: 0.0.171. Patch available: upgrade to 0.0.329 or higher.", + "code": "GHSA-6h8p-4hx9-w66c", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-655w-fm8m-m478", + "issueUrl": "https://osv.dev/GHSA-6h8p-4hx9-w66c", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/requirements.txt", "line": "2", - "message": "An issue in 'langchain' v.0.0.64 allows a remote attacker to execute arbitrary code via the PALChain parameter in the Python exec method. Current version is vulnerable: 0.0.171. Patch available: upgrade to 0.0.247 or higher.", - "code": "GHSA-57fc-8q82-gfp3", + "message": "'langchain' vulnerable to arbitrary code execution. Current version is vulnerable: 0.0.171. Patch available: upgrade to 0.0.312 or higher.", + "code": "GHSA-7gfq-f96f-g85j", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-57fc-8q82-gfp3", + "issueUrl": "https://osv.dev/GHSA-7gfq-f96f-g85j", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/requirements.txt", "line": "2", - "message": "An issue in 'langchain' v.0.0.199 allows an attacker to execute arbitrary code via the PALChain in the python exec method. Current version is vulnerable: 0.0.171. Patch available: upgrade to 0.0.247 or higher.", - "code": "GHSA-2qmj-7962-cjq8", + "message": "SQL injection vulnerability in 'langchain' v.0.0.64 allows a remote attacker to obtain sensitive information via the SQLDatabaseChain component. Current version is vulnerable: 0.0.171. Patch available: upgrade to 0.0.247 or higher.", + "code": "GHSA-7q94-qpjr-xpgm", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-2qmj-7962-cjq8", + "issueUrl": "https://osv.dev/GHSA-7q94-qpjr-xpgm", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/requirements.txt", "line": "2", - "message": "SQL injection vulnerability in 'langchain' v.0.0.64 allows a remote attacker to obtain sensitive information via the SQLDatabaseChain component. Current version is vulnerable: 0.0.171. Patch available: upgrade to 0.0.247 or higher.", - "code": "GHSA-7q94-qpjr-xpgm", + "message": "An issue in Harrison Chase 'langchain' v.0.0.194 and before allows a remote attacker to execute arbitrary code via the from_math_prompt and from_colored_object_prompt functions. Current version is vulnerable: 0.0.171. Patch available: upgrade to 0.0.195 or higher.", + "code": "GHSA-92j5-3459-qgp4", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-7q94-qpjr-xpgm", + "issueUrl": "https://osv.dev/GHSA-92j5-3459-qgp4", "targetType": "lockfile", "isSecurity": true }, { "file": "test_data/requirements.txt", "line": "2", - "message": "An issue in Harrison Chase 'langchain' v.0.0.194 and before allows a remote attacker to execute arbitrary code via the from_math_prompt and from_colored_object_prompt functions. Current version is vulnerable: 0.0.171. Patch available: upgrade to 0.0.195 or higher.", - "code": "GHSA-92j5-3459-qgp4", + "message": "'Langchain' 0.0.171 is vulnerable to Arbitrary Code Execution. Current version of 'langchain' is vulnerable: 0.0.171. Patch available: upgrade to 0.0.225 or higher.", + "code": "GHSA-x32c-59v5-h7fg", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-92j5-3459-qgp4", + "issueUrl": "https://osv.dev/GHSA-x32c-59v5-h7fg", "targetType": "lockfile", "isSecurity": true }, @@ -2019,11 +1890,33 @@ { "file": "test_data/requirements.txt", "line": "2", - "message": "'langchain' vulnerable to arbitrary code execution. Current version is vulnerable: 0.0.171. Patch available: upgrade to 0.0.312 or higher.", - "code": "GHSA-7gfq-f96f-g85j", + "message": "An issue in 'langchain' v.0.0.64 allows a remote attacker to execute arbitrary code via the PALChain parameter in the Python exec method. Current version is vulnerable: 0.0.171. Patch available: upgrade to 0.0.247 or higher.", + "code": "GHSA-57fc-8q82-gfp3", "level": "LEVEL_HIGH", "linter": "osv-scanner", - "issueUrl": "https://osv.dev/GHSA-7gfq-f96f-g85j", + "issueUrl": "https://osv.dev/GHSA-57fc-8q82-gfp3", + "targetType": "lockfile", + "isSecurity": true + }, + { + "file": "test_data/requirements.txt", + "line": "2", + "message": "An issue in 'langchain' v.0.0.199 allows an attacker to execute arbitrary code via the PALChain in the python exec method. Current version is vulnerable: 0.0.171. Patch available: upgrade to 0.0.247 or higher.", + "code": "GHSA-2qmj-7962-cjq8", + "level": "LEVEL_HIGH", + "linter": "osv-scanner", + "issueUrl": "https://osv.dev/GHSA-2qmj-7962-cjq8", + "targetType": "lockfile", + "isSecurity": true + }, + { + "file": "test_data/requirements.txt", + "line": "2", + "message": "'LangChain' before 0.0.317 allows SSRF via document_loaders/recursive_url_loader.py because crawling can proceed from an external server to an internal server. Current version of 'langchain' is vulnerable: 0.0.171. Patch available: upgrade to 0.0.317 or higher.", + "code": "GHSA-655w-fm8m-m478", + "level": "LEVEL_HIGH", + "linter": "osv-scanner", + "issueUrl": "https://osv.dev/GHSA-655w-fm8m-m478", "targetType": "lockfile", "isSecurity": true } diff --git a/linters/osv-scanner/plugin.yaml b/linters/osv-scanner/plugin.yaml index 5624aecfe..66847e8f6 100644 --- a/linters/osv-scanner/plugin.yaml +++ b/linters/osv-scanner/plugin.yaml @@ -1,7 +1,7 @@ version: 0.1 downloads: - name: osv-scanner - version: 2.0.1 + version: 1.3.6 executable: true downloads: - os: @@ -35,13 +35,13 @@ tools: - name: osv-scanner download: osv-scanner shims: [osv-scanner] - known_good_version: 2.0.1 + known_good_version: 1.3.6 lint: definitions: - name: osv-scanner files: [lockfile] tools: [osv-scanner] - known_good_version: 2.0.1 + known_good_version: 1.3.6 description: Checks for known vulnerabilities in your dependencies commands: - name: scan diff --git a/linters/php-cs-fixer/php-cs-fixer.test.ts b/linters/php-cs-fixer/php-cs-fixer.test.ts index 44d3f1008..5b52856fb 100644 --- a/linters/php-cs-fixer/php-cs-fixer.test.ts +++ b/linters/php-cs-fixer/php-cs-fixer.test.ts @@ -1,9 +1,7 @@ import { linterFmtTest } from "tests"; +import { skipOS } from "tests/utils"; linterFmtTest({ linterName: "php-cs-fixer", - // Next release will include support for php@8.4 - // https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/releases/tag/v3.65.0 - skipTestIf: () => true, - // skipTestIf: skipOS(["win32"]), + skipTestIf: skipOS(["win32"]), }); diff --git a/linters/phpstan/plugin.yaml b/linters/phpstan/plugin.yaml index 197664e8b..9f13e3501 100644 --- a/linters/phpstan/plugin.yaml +++ b/linters/phpstan/plugin.yaml @@ -4,7 +4,7 @@ tools: - name: phpstan runtime: php package: phpstan/phpstan - known_good_version: 2.0.3 + known_good_version: 1.10.58 shims: [phpstan] environment: - name: PATH @@ -16,7 +16,7 @@ lint: definitions: - name: phpstan main_tool: phpstan - known_good_version: 2.0.3 + known_good_version: 1.10.58 description: PHP Static Analysis Tool suggest_if: never commands: diff --git a/linters/phpstan/test_data/phpstan_v1.10.58_basic.check.shot b/linters/phpstan/test_data/phpstan_v1.10.58_basic.check.shot new file mode 100644 index 000000000..abf9957a7 --- /dev/null +++ b/linters/phpstan/test_data/phpstan_v1.10.58_basic.check.shot @@ -0,0 +1,51 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Testing linter phpstan test basic 1`] = ` +{ + "issues": [ + { + "code": "phpstan", + "file": "test_data/basic.in.php", + "issueClass": "ISSUE_CLASS_EXISTING", + "level": "LEVEL_HIGH", + "line": "5", + "linter": "phpstan", + "message": "Parameter $date of method HelloWorld::sayHello() has invalid type DateTimeImutable.", + "targetType": "php", + }, + { + "code": "phpstan", + "file": "test_data/basic.in.php", + "issueClass": "ISSUE_CLASS_EXISTING", + "level": "LEVEL_HIGH", + "line": "7", + "linter": "phpstan", + "message": "Call to method format() on an unknown class DateTimeImutable.", + "targetType": "php", + }, + ], + "lintActions": [ + { + "command": "lint", + "fileGroupName": "php", + "linter": "phpstan", + "paths": [ + "test_data/basic.in.php", + ], + "verb": "TRUNK_VERB_CHECK", + }, + { + "command": "lint", + "fileGroupName": "php", + "linter": "phpstan", + "paths": [ + "test_data/basic.in.php", + ], + "upstream": true, + "verb": "TRUNK_VERB_CHECK", + }, + ], + "taskFailures": [], + "unformattedFiles": [], +} +`; diff --git a/linters/plugin.yaml b/linters/plugin.yaml index 4b00387cd..ad0c73ec0 100644 --- a/linters/plugin.yaml +++ b/linters/plugin.yaml @@ -61,13 +61,6 @@ lint: - slashes-block - slashes-inline - - name: astro - extensions: - - astro - comments: - - html-tag - - brace-slashes-block - - name: bazel-build extensions: - BUILD @@ -177,18 +170,6 @@ lint: - slashes-block - name: cuda - inherit: - - cuda-header - - cuda-source - - - name: cuda-header - extensions: - - cuh - comments: - - slashes-block - - slashes-inline - - - name: cuda-source extensions: - cu comments: @@ -378,10 +359,6 @@ lint: # Conan (C++) - conan.lock - # csharp - - deps.json - - packages.config - # Golang - go.mod - go.sum @@ -390,10 +367,6 @@ lint: - buildscript-gradle.lockfile - gradle.lockfile - # Haskell - - cabal.project.freeze - - stack.yaml.lock - # Maven - pom.xml @@ -404,7 +377,6 @@ lint: - package-lock.json - pnpm-lock.yaml - yarn.lock - - bun.lock # NuGet (.NET) - packages.lock.json @@ -417,14 +389,10 @@ lint: - requirements.txt - Pipfile.lock - poetry.lock - - pdm.lock # Ruby - Gemfile.lock - # R - - renv.lock - - name: lua extensions: - lua @@ -483,6 +451,7 @@ lint: - name: postcss extensions: + # TODO(Tyler): Do we want to include css here as well? - pcss - postcss @@ -601,12 +570,6 @@ lint: - strings - stringsdict - - name: svelte - extensions: - - svelte - comments: - - html-tag - - name: svg extensions: - svg @@ -620,6 +583,7 @@ lint: - name: terraform extensions: - tf + - tf.json comments: - hash - slashes-inline @@ -627,18 +591,11 @@ lint: - name: textproto extensions: - - pbtxt - textpb - textproto - - txtpb comments: - hash - - name: tfvars - extensions: - # terraform/tofu can't format .tfvars.json files - - tfvars - - name: toml extensions: - toml @@ -715,6 +672,3 @@ lint: - linters: [osv-scanner] paths: ["**/go.sum"] - - - linters: [checkov, hadolint, snyk, terrascan, trivy] - paths: ["**/*.dockerignore"] diff --git a/linters/prettier/plugin.yaml b/linters/prettier/plugin.yaml index f01f16da8..283c7ab65 100644 --- a/linters/prettier/plugin.yaml +++ b/linters/prettier/plugin.yaml @@ -11,7 +11,6 @@ lint: - name: prettier files: - typescript - - yaml - css - postcss - sass diff --git a/linters/psscriptanalyzer/plugin.yaml b/linters/psscriptanalyzer/plugin.yaml index 78585b1a1..712730a33 100644 --- a/linters/psscriptanalyzer/plugin.yaml +++ b/linters/psscriptanalyzer/plugin.yaml @@ -2,18 +2,6 @@ version: 0.1 downloads: - name: psscriptanalyzer downloads: - - os: - linux: linux - windows: windows - macos: macos - version: <=1.22.0 - url: https://github.com/PowerShell/PSScriptAnalyzer/releases/download/${version}/PSScriptAnalyzer.${version}.nupkg - - os: - linux: linux - windows: windows - macos: macos - version: <=1.23.0 - url: https://github.com/PowerShell/PSScriptAnalyzer/releases/download/v${version}/PSScriptAnalyzer.${version}.nupkg - os: linux: linux windows: windows diff --git a/linters/pylint/plugin.yaml b/linters/pylint/plugin.yaml index def3cfe4b..4b870baec 100644 --- a/linters/pylint/plugin.yaml +++ b/linters/pylint/plugin.yaml @@ -12,6 +12,7 @@ lint: files: [python] description: Static code analysis for Python commands: + # lint should not be flaky - name: lint # Custom parser type defined in the trunk cli to handle pylint's JSON output. output: pylint diff --git a/linters/pyright/plugin.yaml b/linters/pyright/plugin.yaml index 9625a550f..9939a4d07 100644 --- a/linters/pyright/plugin.yaml +++ b/linters/pyright/plugin.yaml @@ -19,7 +19,7 @@ lint: success_codes: [0, 1] read_output_from: stdout batch: true - cache_results: false + cache_results: true parser: runtime: python run: python3 ${plugin}/linters/pyright/pyright_to_sarif.py diff --git a/linters/ruff/plugin.yaml b/linters/ruff/plugin.yaml index 3d6988a2d..d2cb7a7e3 100644 --- a/linters/ruff/plugin.yaml +++ b/linters/ruff/plugin.yaml @@ -9,23 +9,12 @@ tools: lint: definitions: - name: ruff + files: [python, python-interface] description: A Python linter and formatter commands: - - name: lint - # As of ruff v0.6.0, ruff runs by default on jupyter notebooks - version: ">=0.6.0" - files: [python, python-interface, jupyter] - run: ruff check --cache-dir ${cachedir} --output-format json ${target} - output: sarif - parser: - runtime: python - run: python3 ${cwd}/ruff_to_sarif.py 0 - batch: true - success_codes: [0, 1] - name: lint # As of ruff v0.1.0, --format is replaced with --output-format version: ">=0.1.0" - files: [python, python-interface] run: ruff check --cache-dir ${cachedir} --output-format json ${target} output: sarif parser: @@ -36,7 +25,6 @@ lint: - name: lint # As of ruff v0.0.266, column edits are 1-indexed version: ">=0.0.266" - files: [python, python-interface] run: ruff check --cache-dir ${cachedir} --format json ${target} output: sarif parser: @@ -45,7 +33,6 @@ lint: batch: true success_codes: [0, 1] - name: lint - files: [python, python-interface] run: ruff check --cache-dir ${cachedir} --format json ${target} output: sarif parser: @@ -54,7 +41,6 @@ lint: batch: true success_codes: [0, 1] - name: format - files: [python, python-interface] output: rewrite run: ruff format ${target} success_codes: [0] @@ -77,19 +63,18 @@ lint: parse_regex: ruff ${semver} run: ruff --version - # Not necessary if ruff>=0.6.0 - name: ruff-nbqa description: A Python linter for Jupyter notebooks files: [jupyter] commands: - name: lint - run: nbqa 'ruff check --cache-dir=${cachedir} --quiet' ${target} + run: nbqa ruff --cache-dir=${cachedir} ${target} output: pass_fail batch: true success_codes: [0, 1] runtime: python package: ruff - extra_packages: [nbqa==1.8.5] + extra_packages: [nbqa==1.6.3] direct_configs: [ruff.toml] affects_cache: - pyproject.toml diff --git a/linters/ruff/ruff.test.ts b/linters/ruff/ruff.test.ts index 4427e030a..253490de7 100644 --- a/linters/ruff/ruff.test.ts +++ b/linters/ruff/ruff.test.ts @@ -1,23 +1,8 @@ -import semver from "semver"; import { linterCheckTest, linterFmtTest } from "tests"; import { TrunkLintDriver } from "tests/driver"; import { skipOS } from "tests/utils"; -linterCheckTest({ linterName: "ruff", namedTestPrefixes: ["basic", "interface", "syntax"] }); - -const skipJupyterTestIf = (version?: string) => { - if (!version || !semver.valid(version)) { - // Run if version is KGV or a string, or error loudly if malformed. - return false; - } - return semver.lt(version, "0.6.0"); -}; - -linterCheckTest({ - linterName: "ruff", - namedTestPrefixes: ["basic_nb"], - skipTestIf: skipJupyterTestIf, -}); +linterCheckTest({ linterName: "ruff", namedTestPrefixes: ["basic", "interface"] }); // ruff-nbqa still runs correctly on Windows, but the diagnostics are slightly different from the assertions. linterCheckTest({ diff --git a/linters/ruff/ruff_to_sarif.py b/linters/ruff/ruff_to_sarif.py index 73e2afefc..20a81ace9 100755 --- a/linters/ruff/ruff_to_sarif.py +++ b/linters/ruff/ruff_to_sarif.py @@ -30,8 +30,7 @@ def get_region(entry, column_offset=0): continue filepath = result["filename"] - # Ruff will set code to null for syntax errors - rule_id = result["code"] or "E999" + rule_id = result["code"] message = result["message"] sarif_result = { diff --git a/linters/ruff/test_data/ruff_nbqa_v0.0.250_basic_nb.check.shot b/linters/ruff/test_data/ruff_nbqa_v0.0.250_basic_nb.check.shot index dbbfc7fac..a777a1de5 100644 --- a/linters/ruff/test_data/ruff_nbqa_v0.0.250_basic_nb.check.shot +++ b/linters/ruff/test_data/ruff_nbqa_v0.0.250_basic_nb.check.shot @@ -9,7 +9,9 @@ exports[`Testing linter ruff-nbqa test basic_nb 1`] = ` "issueClass": "ISSUE_CLASS_EXISTING", "level": "LEVEL_HIGH", "linter": "ruff-nbqa", - "message": "/tmp/plugins_/test_data/basic_nb.in.ipynb:cell_1:1:8: F401 [*] \`os\` imported but unused", + "message": "/tmp/plugins_/test_data/basic_nb.in.ipynb:cell_1:1:8: F401 [*] \`os\` imported but unused +Found 1 error. +[*] 1 potentially fixable with the --fix option.", "targetType": "jupyter", }, ], diff --git a/linters/ruff/test_data/ruff_nbqa_v0.1.0_basic_nb.check.shot b/linters/ruff/test_data/ruff_nbqa_v0.1.0_basic_nb.check.shot index dbbfc7fac..699819205 100644 --- a/linters/ruff/test_data/ruff_nbqa_v0.1.0_basic_nb.check.shot +++ b/linters/ruff/test_data/ruff_nbqa_v0.1.0_basic_nb.check.shot @@ -9,7 +9,9 @@ exports[`Testing linter ruff-nbqa test basic_nb 1`] = ` "issueClass": "ISSUE_CLASS_EXISTING", "level": "LEVEL_HIGH", "linter": "ruff-nbqa", - "message": "/tmp/plugins_/test_data/basic_nb.in.ipynb:cell_1:1:8: F401 [*] \`os\` imported but unused", + "message": "/tmp/plugins_/test_data/basic_nb.in.ipynb:cell_1:1:8: F401 [*] \`os\` imported but unused +Found 1 error. +[*] 1 fixable with the \`--fix\` option.", "targetType": "jupyter", }, ], diff --git a/linters/ruff/test_data/ruff_v0.2.1_format.fmt.shot b/linters/ruff/test_data/ruff_v0.2.1_format.fmt.shot index 66641ba30..328b072aa 100644 --- a/linters/ruff/test_data/ruff_v0.2.1_format.fmt.shot +++ b/linters/ruff/test_data/ruff_v0.2.1_format.fmt.shot @@ -6,6 +6,7 @@ exports[`Testing formatter ruff test format 1`] = ` # A malindented comment if __name__ == "__main__": a = 4 + 1 + b = 2 * 7 c = [1, 2, 3] print(a / b) diff --git a/linters/scalafmt/plugin.yaml b/linters/scalafmt/plugin.yaml index ca6c2656b..a1ce10dcb 100644 --- a/linters/scalafmt/plugin.yaml +++ b/linters/scalafmt/plugin.yaml @@ -46,5 +46,3 @@ lint: parse_regex: scalafmt ${semver} run: scalafmt --version known_good_version: 3.4.3 - # We don't support this semver format, and it's a prerelease - known_bad_versions: [3.8.4-RC1, 3.9.0] diff --git a/linters/semgrep/plugin.yaml b/linters/semgrep/plugin.yaml index f3213979a..9a0af399a 100644 --- a/linters/semgrep/plugin.yaml +++ b/linters/semgrep/plugin.yaml @@ -35,7 +35,7 @@ lint: - name: PATH list: ["${env.PATH}"] known_good_version: 1.33.2 - known_bad_versions: [1.5.1, 1.117.0] # Does not work on MacOS + known_bad_versions: [1.5.1] # Does not work on MacOS version_command: parse_regex: ${semver} run: semgrep --version diff --git a/linters/sqlfluff/plugin.yaml b/linters/sqlfluff/plugin.yaml index e02c5384e..139725a2c 100644 --- a/linters/sqlfluff/plugin.yaml +++ b/linters/sqlfluff/plugin.yaml @@ -27,20 +27,11 @@ lint: parser: runtime: python run: python3 ${plugin}/linters/sqlfluff/sqlfluff_to_sarif.py - - name: fix - version: ">=3.0.0" - run: sqlfluff fix ${target} --disable-progress-bar - output: rewrite - formatter: true - in_place: true - success_codes: [0, 1] - enabled: false - batch: true - name: fix run: sqlfluff fix ${target} --disable-progress-bar --force output: rewrite formatter: true in_place: true - success_codes: [0, 1] + success_codes: [0] enabled: false batch: true diff --git a/linters/sqlfluff/sqlfluff.test.ts b/linters/sqlfluff/sqlfluff.test.ts index 9d5076d23..6a8c24177 100644 --- a/linters/sqlfluff/sqlfluff.test.ts +++ b/linters/sqlfluff/sqlfluff.test.ts @@ -18,8 +18,4 @@ const fmtCallbacks: TestCallback = (driver) => { }; // An additional test to run 'sqlfluff fmt' with some additional test setup. -linterFmtTest({ - linterName: "sqlfluff", - namedTestPrefixes: ["basic_fmt", "basic_check"], - preCheck: fmtCallbacks, -}); +linterFmtTest({ linterName: "sqlfluff", namedTestPrefixes: ["basic_fmt"], preCheck: fmtCallbacks }); diff --git a/linters/svgo/svgo.config.js b/linters/svgo/svgo.config.js new file mode 100644 index 000000000..b257d1349 --- /dev/null +++ b/linters/svgo/svgo.config.js @@ -0,0 +1,14 @@ +module.exports = { + plugins: [ + { + name: "preset-default", + params: { + overrides: { + removeViewBox: false, // https://github.com/svg/svgo/issues/1128 + sortAttrs: true, + removeOffCanvasPaths: true, + }, + }, + }, + ], +}; diff --git a/linters/terraform/plugin.yaml b/linters/terraform/plugin.yaml index ebfd9ef95..adf728c2d 100644 --- a/linters/terraform/plugin.yaml +++ b/linters/terraform/plugin.yaml @@ -2,7 +2,7 @@ version: 0.1 lint: definitions: - name: terraform - files: [terraform, tfvars] + files: [terraform] tools: [terraform] description: Validate and format terraform files commands: diff --git a/linters/terrascan/terrascan.test.ts b/linters/terrascan/terrascan.test.ts index 5aadbec40..8089ac57c 100644 --- a/linters/terrascan/terrascan.test.ts +++ b/linters/terrascan/terrascan.test.ts @@ -20,5 +20,4 @@ const preCheck = (driver: TrunkLintDriver) => { driver.writeFile(trunkYamlPath, newContents); }; -// TODO(Tyler): Fix flakiness with this test. -linterCheckTest({ linterName: "terrascan", preCheck, skipTestIf: () => true }); +linterCheckTest({ linterName: "terrascan", preCheck }); diff --git a/linters/tofu/plugin.yaml b/linters/tofu/plugin.yaml index fffce9a0d..ef2cc66c2 100644 --- a/linters/tofu/plugin.yaml +++ b/linters/tofu/plugin.yaml @@ -2,7 +2,7 @@ version: 0.1 lint: definitions: - name: tofu - files: [terraform, tfvars] + files: [terraform] tools: [tofu] description: A Terraform validator and formatter commands: diff --git a/linters/trivy/plugin.yaml b/linters/trivy/plugin.yaml index abf3e5ef1..9bb7e9f7c 100644 --- a/linters/trivy/plugin.yaml +++ b/linters/trivy/plugin.yaml @@ -27,7 +27,7 @@ lint: definitions: - name: trivy tools: [trivy] - suggest_if: config_present + suggest_if: files_present description: A comprehensive and versatile security scanner known_good_version: 0.44.1 # trivy supports --format template --template "@contrib/sarif.tpl", but it reports the wrong filepaths. @@ -74,8 +74,7 @@ lint: parser: runtime: python run: python3 ${plugin}/linters/trivy/trivy_config_to_sarif.py - # trivy-secret.yaml is old config file https://aquasecurity.github.io/trivy/v0.27.1/docs/secret/configuration/ - direct_configs: [trivy.yaml, .trivyignore, .trivyignore.yaml, trivy-secret.yaml] + direct_configs: [trivy-secret.yaml] version_command: parse_regex: Version ${semver} run: trivy --version diff --git a/linters/trivy/trivy.test.ts b/linters/trivy/trivy.test.ts index 874f36a1f..a7616be51 100644 --- a/linters/trivy/trivy.test.ts +++ b/linters/trivy/trivy.test.ts @@ -12,20 +12,9 @@ const callbackGenerator = const trunkYamlPath = ".trunk/trunk.yaml"; const currentContents = driver.readFile(trunkYamlPath); const trivyRegex = /- trivy@(.+)\n/; - - // fs-vuln, config sometimes fail in CI to query DB concurrently. - const extraContents = ` - definitions: - - name: trivy - commands: - - name: fs-vuln - max_concurrency: 1 - - name: config - max_concurrency: 1 -`; const newContents = currentContents.replace( trivyRegex, - `- trivy@$1:\n commands: [${command}]\n${extraContents}`, + `- trivy@$1:\n commands: [${command}]\n`, ); driver.writeFile(trunkYamlPath, newContents); if (otherPreCheck) { @@ -53,7 +42,7 @@ fuzzyLinterCheckTest({ linterName: "trivy", testName: "fs-vuln", args: "-a", - fileIssueAssertionCallback: createFuzzyMatcher(() => vulnExpectedFileIssues, 40), + fileIssueAssertionCallback: createFuzzyMatcher(() => vulnExpectedFileIssues, 30), preCheck: callbackGenerator("fs-vuln"), }); diff --git a/linters/trivy/vuln_expected_issues.json b/linters/trivy/vuln_expected_issues.json index cd8958803..901231bd8 100644 --- a/linters/trivy/vuln_expected_issues.json +++ b/linters/trivy/vuln_expected_issues.json @@ -1,1122 +1,502 @@ [ { - "file": "test_data/Gemfile.lock", "line": "5", - "message": "Vulnerability in 'actionpack': rubygem-actionpack: Denial of Service in Action Dispatch. Current version is vulnerable: 5.2.8.1. Patch available: upgrade to ~> 5.2.8, >= 5.2.8.15, ~> 6.1.7, >= 6.1.7.1, >= 7.0.4.1 or higher.", "code": "CVE-2023-22792", "level": "LEVEL_HIGH", "linter": "trivy", "targetType": "lockfile", - "isSecurity": true + "isSecurity": true, + "message": "Vulnerability in 'actionpack': Denial of Service in Action Dispatch. Current version is vulnerable: 5.2.8.1. Patch available: upgrade to ~> 5.2.8, >= 5.2.8.15, ~> 6.1.7, >= 6.1.7.1, >= 7.0.4.1 or higher.", + "file": "test_data/Gemfile.lock" }, { - "file": "test_data/Gemfile.lock", "line": "5", - "message": "Vulnerability in 'actionpack': rubygem-actionpack: Denial of Service in Action Dispatch. Current version is vulnerable: 5.2.8.1. Patch available: upgrade to ~> 5.2.8, >= 5.2.8.15, ~> 6.1.7, >= 6.1.7.1, >= 7.0.4.1 or higher.", "code": "CVE-2023-22795", "level": "LEVEL_HIGH", "linter": "trivy", "targetType": "lockfile", - "isSecurity": true + "isSecurity": true, + "message": "Vulnerability in 'actionpack': Denial of Service in Action Dispatch. Current version is vulnerable: 5.2.8.1. Patch available: upgrade to ~> 5.2.8, >= 5.2.8.15, ~> 6.1.7, >= 6.1.7.1, >= 7.0.4.1 or higher.", + "file": "test_data/Gemfile.lock" }, { - "file": "test_data/Gemfile.lock", "line": "5", - "message": "Vulnerability in 'actionpack': actionpack: Possible XSS via User Supplied Values to redirect_to. Current version is vulnerable: 5.2.8.1. Patch available: upgrade to ~> 6.1.7.4, >= 7.0.5.1 or higher.", "code": "CVE-2023-28362", "level": "LEVEL_MEDIUM", "linter": "trivy", "targetType": "lockfile", - "isSecurity": true + "isSecurity": true, + "message": "Vulnerability in 'actionpack': Possible XSS via User Supplied Values to redirect_to. Current version is vulnerable: 5.2.8.1. Patch available: upgrade to ~> 6.1.7.4, >= 7.0.5.1 or higher.", + "file": "test_data/Gemfile.lock" }, { - "file": "test_data/Gemfile.lock", - "line": "5", - "message": "Vulnerability in 'actionpack': rubygem-actionpack: Possible ReDoS vulnerability in query parameter filtering in Action Dispatch. Current version is vulnerable: 5.2.8.1. Patch available: upgrade to ~> 6.1.7.9, ~> 7.0.8.5, ~> 7.1.4, >= 7.1.4.1, >= 7.2.1.1 or higher.", - "code": "CVE-2024-41128", - "level": "LEVEL_LOW", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/Gemfile.lock", - "line": "5", - "message": "Vulnerability in 'actionpack': rubygem-actionpack: Possible ReDoS vulnerability in HTTP Token authentication in Action Controller. Current version is vulnerable: 5.2.8.1. Patch available: upgrade to ~> 6.1.7.9, ~> 7.0.8.5, ~> 7.1.4, >= 7.1.4.1, >= 7.2.1.1 or higher.", - "code": "CVE-2024-47887", - "level": "LEVEL_LOW", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/Gemfile.lock", - "line": "8", - "message": "Vulnerability in 'actionmailer': rubygem-actionmailer: Possible ReDoS vulnerability in block_format in Action Mailer. Current version is vulnerable: 5.2.8.1. Patch available: upgrade to ~> 6.1.7.9, ~> 7.0.8.5, ~> 7.1.4, >= 7.1.4.1, >= 7.2.1.1 or higher.", - "code": "CVE-2024-47889", - "level": "LEVEL_LOW", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/Gemfile.lock", "line": "10", - "message": "Vulnerability in 'actionview': rails: DOM Based Cross-site Scripting in rails-ujs for contenteditable HTML Elements. Current version is vulnerable: 5.2.8.1. Patch available: upgrade to ~> 6.1.7.3, >= 7.0.4.3 or higher.", "code": "CVE-2023-23913", "level": "LEVEL_HIGH", "linter": "trivy", "targetType": "lockfile", - "isSecurity": true + "isSecurity": true, + "message": "Vulnerability in 'actionview': DOM Based Cross-site Scripting in rails-ujs for contenteditable HTML Elements. Current version is vulnerable: 5.2.8.1. Patch available: upgrade to ~> 6.1.7.3, >= 7.0.4.3 or higher.", + "file": "test_data/Gemfile.lock" }, { - "file": "test_data/Gemfile.lock", "line": "16", - "message": "Vulnerability in 'activesupport': rubygem-activesupport: File Disclosure of Locally Encrypted Files. Current version is vulnerable: 5.2.8.1. Patch available: upgrade to ~> 6.1.7, >= 6.1.7.5, >= 7.0.7.1 or higher.", - "code": "CVE-2023-38037", - "level": "LEVEL_LOW", + "code": "CVE-2023-22796", + "level": "LEVEL_HIGH", "linter": "trivy", "targetType": "lockfile", - "isSecurity": true + "isSecurity": true, + "message": "Vulnerability in 'activesupport': Regular Expression Denial of Service. Current version is vulnerable: 5.2.8.1. Patch available: upgrade to ~> 5.2.8, >= 5.2.8.15, ~> 6.1.7, >= 6.1.7.1, >= 7.0.4.1 or higher.", + "file": "test_data/Gemfile.lock" }, { - "file": "test_data/Gemfile.lock", "line": "16", - "message": "Vulnerability in 'activesupport': rubygem-activesupport: Possible XSS in SafeBuffer#bytesplice. Current version is vulnerable: 5.2.8.1. Patch available: upgrade to ~> 6.1.7, >= 6.1.7.3, >= 7.0.4.3 or higher.", "code": "CVE-2023-28120", "level": "LEVEL_MEDIUM", "linter": "trivy", "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/Gemfile.lock", - "line": "16", - "message": "Vulnerability in 'activesupport': rubygem-activesupport: Regular Expression Denial of Service. Current version is vulnerable: 5.2.8.1. Patch available: upgrade to ~> 5.2.8, >= 5.2.8.15, ~> 6.1.7, >= 6.1.7.1, >= 7.0.4.1 or higher.", - "code": "CVE-2023-22796", - "level": "LEVEL_HIGH", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true + "isSecurity": true, + "message": "Vulnerability in 'activesupport': Possible XSS in SafeBuffer#bytesplice. Current version is vulnerable: 5.2.8.1. Patch available: upgrade to ~> 6.1.7, >= 6.1.7.3, >= 7.0.4.3 or higher.", + "file": "test_data/Gemfile.lock" }, { - "file": "test_data/Gemfile.lock", "line": "34", - "message": "Vulnerability in 'activerecord': rubygem-activerecord: Denial of Service. Current version is vulnerable: 5.2.8.1. Patch available: upgrade to ~> 5.2.8, >= 5.2.8.15, ~> 6.1.7, >= 6.1.7.1, >= 7.0.4.1 or higher.", "code": "CVE-2022-44566", "level": "LEVEL_HIGH", "linter": "trivy", "targetType": "lockfile", - "isSecurity": true + "isSecurity": true, + "message": "Vulnerability in 'activerecord': Denial of Service. Current version is vulnerable: 5.2.8.1. Patch available: upgrade to ~> 5.2.8, >= 5.2.8.15, ~> 6.1.7, >= 6.1.7.1, >= 7.0.4.1 or higher.", + "file": "test_data/Gemfile.lock" }, { - "file": "test_data/Gemfile.lock", - "line": "38", - "message": "Vulnerability in 'activestorage': rubygem-activestorage: Possible Sensitive Session Information Leak in Active Storage. Current version is vulnerable: 5.2.8.1. Patch available: upgrade to ~> 6.1.7, >= 6.1.7.7, >= 7.0.8.1 or higher.", - "code": "CVE-2024-26144", - "level": "LEVEL_MEDIUM", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/Gemfile.lock", - "line": "97", - "message": "Vulnerability in 'nokogiri': Use-after-free in libxml2 via Nokogiri::XML::Reader. Current version is vulnerable: 1.14.1. Patch available: upgrade to ~> 1.15.6, >= 1.16.2 or higher.", - "code": "GHSA-xc9x-jj77-9p9j", - "level": "LEVEL_MEDIUM", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/Gemfile.lock", "line": "97", - "message": "Vulnerability in 'nokogiri': Use-after-free in libxml2 via Nokogiri::XML::Reader. Current version is vulnerable: 1.14.1. Patch available: upgrade to 1.15.6, 1.16.2 or higher.", - "code": "GHSA-vcc3-rw6f-jv97", - "level": "LEVEL_MEDIUM", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/Gemfile.lock", - "line": "97", - "message": "Vulnerability in 'nokogiri': Nokogiri updates packaged libxml2 to v2.12.7 to resolve CVE-2024-34459. Current version is vulnerable: 1.14.1. Patch available: upgrade to >= 1.16.5 or higher.", - "code": "GHSA-r95h-9x8f-r3f7", - "level": "LEVEL_LOW", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/Gemfile.lock", - "line": "97", - "message": "Vulnerability in 'nokogiri': Update packaged libxml2 to v2.10.4 to resolve multiple CVEs. Current version is vulnerable: 1.14.1. Patch available: upgrade to >= 1.14.3 or higher.", "code": "GHSA-pxvg-2qj5-37jq", "level": "LEVEL_MEDIUM", "linter": "trivy", "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/Gemfile.lock", - "line": "99", - "message": "Vulnerability in 'puma': rubygem-puma: Header normalization allows for client to clobber proxy set headers. Current version is vulnerable: 4.3.12. Patch available: upgrade to ~> 5.6.9, >= 6.4.3 or higher.", - "code": "CVE-2024-45614", - "level": "LEVEL_MEDIUM", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/Gemfile.lock", - "line": "99", - "message": "Vulnerability in 'puma': rubygem-puma: HTTP request smuggling when parsing chunked Transfer-Encoding Bodies. Current version is vulnerable: 4.3.12. Patch available: upgrade to ~> 5.6.8, >= 6.4.2 or higher.", - "code": "CVE-2024-21647", - "level": "LEVEL_MEDIUM", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/Gemfile.lock", - "line": "99", - "message": "Vulnerability in 'puma': rubygem-puma: HTTP request smuggling when parsing chunked transfer encoding bodies and zero-length content-length headers. Current version is vulnerable: 4.3.12. Patch available: upgrade to ~> 5.6.7, >= 6.3.1 or higher.", - "code": "CVE-2023-40175", - "level": "LEVEL_MEDIUM", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true + "isSecurity": true, + "message": "Vulnerability in 'nokogiri': Update packaged libxml2 to v2.10.4 to resolve multiple CVEs. Current version is vulnerable: 1.14.1. Patch available: upgrade to >= 1.14.3 or higher.", + "file": "test_data/Gemfile.lock" }, { - "file": "test_data/Gemfile.lock", "line": "102", - "message": "Vulnerability in 'rack': rubygem-rack: Denial of service in Multipart MIME parsing. Current version is vulnerable: 2.2.6.2. Patch available: upgrade to ~> 2.0.9, >= 2.0.9.3, ~> 2.1.4, >= 2.1.4.3, ~> 2.2.6, >= 2.2.6.3, >= 3.0.4.2 or higher.", "code": "CVE-2023-27530", "level": "LEVEL_HIGH", "linter": "trivy", "targetType": "lockfile", - "isSecurity": true + "isSecurity": true, + "message": "Vulnerability in 'rack': Denial of service in Multipart MIME parsing. Current version is vulnerable: 2.2.6.2. Patch available: upgrade to ~> 2.0.9, >= 2.0.9.3, ~> 2.1.4, >= 2.1.4.3, ~> 2.2.6, >= 2.2.6.3, >= 3.0.4.2 or higher.", + "file": "test_data/Gemfile.lock" }, { - "file": "test_data/Gemfile.lock", "line": "102", - "message": "Vulnerability in 'rack': rubygem-rack: Possible Denial of Service Vulnerability in Rack Header Parsing. Current version is vulnerable: 2.2.6.2. Patch available: upgrade to ~> 2.0.9, >= 2.0.9.4, ~> 2.1.4, >= 2.1.4.4, ~> 2.2.8, >= 2.2.8.1, >= 3.0.9.1 or higher.", - "code": "CVE-2024-26146", - "level": "LEVEL_MEDIUM", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/Gemfile.lock", - "line": "102", - "message": "Vulnerability in 'rack': rubygem-rack: denial of service in header parsing. Current version is vulnerable: 2.2.6.2. Patch available: upgrade to ~> 2.0, >= 2.2.6.4, >= 3.0.6.1 or higher.", "code": "CVE-2023-27539", "level": "LEVEL_MEDIUM", "linter": "trivy", "targetType": "lockfile", - "isSecurity": true + "isSecurity": true, + "message": "Vulnerability in 'rack': denial of service in header parsing. Current version is vulnerable: 2.2.6.2. Patch available: upgrade to ~> 2.0, >= 2.2.6.4, >= 3.0.6.1 or higher.", + "file": "test_data/Gemfile.lock" }, { - "file": "test_data/Gemfile.lock", - "line": "102", - "message": "Vulnerability in 'rack': rubygem-rack: Possible DoS Vulnerability with Range Header in Rack. Current version is vulnerable: 2.2.6.2. Patch available: upgrade to ~> 2.2.8, >= 2.2.8.1, >= 3.0.9.1 or higher.", - "code": "CVE-2024-26141", - "level": "LEVEL_MEDIUM", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/Gemfile.lock", - "line": "102", - "message": "Vulnerability in 'rack': rubygem-rack: Denial of Service Vulnerability in Rack Content-Type Parsing. Current version is vulnerable: 2.2.6.2. Patch available: upgrade to ~> 2.2.8, >= 2.2.8.1, >= 3.0.9.1 or higher.", - "code": "CVE-2024-25126", - "level": "LEVEL_MEDIUM", + "line": "7", + "code": "CVE-2022-30781", + "level": "LEVEL_HIGH", "linter": "trivy", "targetType": "lockfile", - "isSecurity": true + "isSecurity": true, + "message": "Vulnerability in 'code.gitea.io/gitea': Shell command injection in gitea. Current version is vulnerable: 1.9.0-dev. Patch available: upgrade to 1.16.7 or higher.", + "file": "test_data/go.mod" }, { - "file": "test_data/go.mod", "line": "7", - "message": "Vulnerability in 'code.gitea.io/gitea': code.gitea.io/gitea Open Redirect vulnerability. Current version is vulnerable: v1.9.0-dev. Patch available: upgrade to 1.19.4 or higher.", "code": "CVE-2023-3515", "level": "LEVEL_LOW", "linter": "trivy", "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/go.mod", - "line": "7", - "message": "Vulnerability in 'code.gitea.io/gitea': Gitea erroneous repo clones. Current version is vulnerable: v1.9.0-dev. Patch available: upgrade to 1.17.2 or higher.", - "code": "CVE-2022-38795", - "level": "LEVEL_MEDIUM", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/go.mod", - "line": "7", - "message": "Vulnerability in 'code.gitea.io/gitea': Gitea: Stored XSS due to improper sanitization. Current version is vulnerable: v1.9.0-dev. Patch available: upgrade to 1.22.1 or higher.", - "code": "CVE-2024-6886", - "level": "LEVEL_HIGH", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true + "isSecurity": true, + "message": "Vulnerability in 'code.gitea.io/gitea': code.gitea.io/gitea Open Redirect vulnerability. Current version is vulnerable: 1.9.0-dev. Patch available: upgrade to 1.19.4 or higher.", + "file": "test_data/go.mod" }, { - "file": "test_data/go.mod", "line": "7", - "message": "Vulnerability in 'code.gitea.io/gitea': Gitea allowed assignment of private issues. Current version is vulnerable: v1.9.0-dev. Patch available: upgrade to 1.16.9 or higher.", - "code": "CVE-2022-38183", + "code": "CVE-2021-28378", "level": "LEVEL_MEDIUM", "linter": "trivy", "targetType": "lockfile", - "isSecurity": true + "isSecurity": true, + "message": "Vulnerability in 'code.gitea.io/gitea': Cross-site Scripting in Gitea. Current version is vulnerable: 1.9.0-dev. Patch available: upgrade to 1.13.4 or higher.", + "file": "test_data/go.mod" }, { - "file": "test_data/go.mod", "line": "7", - "message": "Vulnerability in 'code.gitea.io/gitea': Shell command injection in gitea. Current version is vulnerable: v1.9.0-dev. Patch available: upgrade to 1.16.7 or higher.", - "code": "CVE-2022-30781", - "level": "LEVEL_HIGH", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/go.mod", - "line": "7", - "message": "Vulnerability in 'code.gitea.io/gitea': Arbitrary file deletion in gitea. Current version is vulnerable: v1.9.0-dev. Patch available: upgrade to 1.16.4 or higher.", "code": "CVE-2022-27313", "level": "LEVEL_HIGH", "linter": "trivy", "targetType": "lockfile", - "isSecurity": true + "isSecurity": true, + "message": "Vulnerability in 'code.gitea.io/gitea': Arbitrary file deletion in gitea. Current version is vulnerable: 1.9.0-dev. Patch available: upgrade to 1.16.4 or higher.", + "file": "test_data/go.mod" }, { - "file": "test_data/go.mod", "line": "7", - "message": "Vulnerability in 'code.gitea.io/gitea': Stored Cross-site Scripting in gitea. Current version is vulnerable: v1.9.0-dev. Patch available: upgrade to 1.16.9 or higher.", "code": "CVE-2022-1928", "level": "LEVEL_MEDIUM", "linter": "trivy", "targetType": "lockfile", - "isSecurity": true + "isSecurity": true, + "message": "Vulnerability in 'code.gitea.io/gitea': Stored Cross-site Scripting in gitea. Current version is vulnerable: 1.9.0-dev. Patch available: upgrade to 1.16.9 or higher.", + "file": "test_data/go.mod" }, { - "file": "test_data/go.mod", "line": "7", - "message": "Vulnerability in 'code.gitea.io/gitea': Gogs and Gitea SSRF Vulnerability. Current version is vulnerable: v1.9.0-dev. Patch available: upgrade to 1.16.0-rc1 or higher.", - "code": "CVE-2018-15192", - "level": "LEVEL_HIGH", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/go.mod", - "line": "7", - "message": "Vulnerability in 'code.gitea.io/gitea': Arbitrary Code Execution in Gitea. Current version is vulnerable: v1.9.0-dev. Patch available: upgrade to 1.12.6 or higher.", - "code": "CVE-2020-14144", - "level": "LEVEL_HIGH", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/go.mod", - "line": "7", - "message": "Vulnerability in 'code.gitea.io/gitea': Cross-site Scripting in Gitea. Current version is vulnerable: v1.9.0-dev. Patch available: upgrade to 1.13.4 or higher.", - "code": "CVE-2021-28378", - "level": "LEVEL_MEDIUM", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/go.mod", - "line": "7", - "message": "Vulnerability in 'code.gitea.io/gitea': Path Traversal in Gitea. Current version is vulnerable: v1.9.0-dev. Patch available: upgrade to 1.13.6 or higher.", - "code": "CVE-2021-29134", - "level": "LEVEL_MEDIUM", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/go.mod", - "line": "7", - "message": "Vulnerability in 'code.gitea.io/gitea': Gitea Missing Authorization vulnerability. Current version is vulnerable: v1.9.0-dev. Patch available: upgrade to 1.16.4 or higher.", "code": "CVE-2022-0905", "level": "LEVEL_HIGH", "linter": "trivy", "targetType": "lockfile", - "isSecurity": true + "isSecurity": true, + "message": "Vulnerability in 'code.gitea.io/gitea': Gitea Missing Authorization vulnerability. Current version is vulnerable: 1.9.0-dev. Patch available: upgrade to 1.16.4 or higher.", + "file": "test_data/go.mod" }, { - "file": "test_data/go.mod", "line": "7", - "message": "Vulnerability in 'code.gitea.io/gitea': Gitea Open Redirect. Current version is vulnerable: v1.9.0-dev. Patch available: upgrade to 1.16.5 or higher.", - "code": "CVE-2022-1058", + "code": "CVE-2021-29134", "level": "LEVEL_MEDIUM", "linter": "trivy", "targetType": "lockfile", - "isSecurity": true + "isSecurity": true, + "message": "Vulnerability in 'code.gitea.io/gitea': Path Traversal in Gitea. Current version is vulnerable: 1.9.0-dev. Patch available: upgrade to 1.13.6 or higher.", + "file": "test_data/go.mod" }, { - "file": "test_data/go.mod", "line": "40", - "message": "Vulnerability in 'github.com/dgrijalva/jwt-go': jwt-go: access restriction bypass vulnerability. Current version is vulnerable: v3.2.0+incompatible.", "code": "CVE-2020-26160", "level": "LEVEL_HIGH", "linter": "trivy", "targetType": "lockfile", - "isSecurity": true + "isSecurity": true, + "message": "Vulnerability in 'github.com/dgrijalva/jwt-go': jwt-go: access restriction bypass vulnerability. Current version is vulnerable: 3.2.0+incompatible.", + "file": "test_data/go.mod" }, { - "file": "test_data/go.mod", "line": "58", - "message": "Vulnerability in 'github.com/go-gitea/gitea': gitea: Sanitize and Escape refs in git backend. Current version is vulnerable: v1.2.3. Patch available: upgrade to 1.17.3 or higher.", - "code": "CVE-2022-42968", - "level": "LEVEL_HIGH", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/go.mod", - "line": "58", - "message": "Vulnerability in 'github.com/go-gitea/gitea': Cross-site Scripting in Gitea. Current version is vulnerable: v1.2.3. Patch available: upgrade to 1.5.1 or higher.", "code": "CVE-2021-45329", "level": "LEVEL_MEDIUM", "linter": "trivy", "targetType": "lockfile", - "isSecurity": true + "isSecurity": true, + "message": "Vulnerability in 'github.com/go-gitea/gitea': Cross-site Scripting in Gitea. Current version is vulnerable: 1.2.3. Patch available: upgrade to 1.5.1 or higher.", + "file": "test_data/go.mod" }, { - "file": "test_data/go.mod", "line": "58", - "message": "Vulnerability in 'github.com/go-gitea/gitea': Open redirect in Gitea. Current version is vulnerable: v1.2.3. Patch available: upgrade to 1.4.3 or higher.", - "code": "CVE-2021-45328", - "level": "LEVEL_MEDIUM", + "code": "CVE-2022-42968", + "level": "LEVEL_HIGH", "linter": "trivy", "targetType": "lockfile", - "isSecurity": true + "isSecurity": true, + "message": "Vulnerability in 'github.com/go-gitea/gitea': Sanitize and Escape refs in git backend. Current version is vulnerable: 1.2.3. Patch available: upgrade to 1.17.3 or higher.", + "file": "test_data/go.mod" }, { - "file": "test_data/go.mod", "line": "58", - "message": "Vulnerability in 'github.com/go-gitea/gitea': Capture-replay in Gitea. Current version is vulnerable: v1.2.3. Patch available: upgrade to 1.11.2 or higher.", "code": "CVE-2021-45327", "level": "LEVEL_HIGH", "linter": "trivy", "targetType": "lockfile", - "isSecurity": true + "isSecurity": true, + "message": "Vulnerability in 'github.com/go-gitea/gitea': Capture-replay in Gitea. Current version is vulnerable: 1.2.3. Patch available: upgrade to 1.11.2 or higher.", + "file": "test_data/go.mod" }, { - "file": "test_data/go.mod", "line": "58", - "message": "Vulnerability in 'github.com/go-gitea/gitea': Cross Site Request Forgery in Gitea. Current version is vulnerable: v1.2.3. Patch available: upgrade to 1.5.2 or higher.", "code": "CVE-2021-45326", "level": "LEVEL_HIGH", "linter": "trivy", "targetType": "lockfile", - "isSecurity": true + "isSecurity": true, + "message": "Vulnerability in 'github.com/go-gitea/gitea': Cross Site Request Forgery in Gitea. Current version is vulnerable: 1.2.3. Patch available: upgrade to 1.5.2 or higher.", + "file": "test_data/go.mod" }, { - "file": "test_data/go.mod", "line": "58", - "message": "Vulnerability in 'github.com/go-gitea/gitea': Gitea displaying raw OpenID error in UI. Current version is vulnerable: v1.2.3. Patch available: upgrade to 1.7.0 or higher.", "code": "CVE-2021-45325", "level": "LEVEL_MEDIUM", "linter": "trivy", "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/go.mod", - "line": "58", - "message": "Vulnerability in 'github.com/go-gitea/gitea': Improper Access Control in Gitea. Current version is vulnerable: v1.2.3. Patch available: upgrade to 1.12.6 or higher.", - "code": "CVE-2020-28991", - "level": "LEVEL_HIGH", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true + "isSecurity": true, + "message": "Vulnerability in 'github.com/go-gitea/gitea': Gitea displaying raw OpenID error in UI. Current version is vulnerable: 1.2.3. Patch available: upgrade to 1.7.0 or higher.", + "file": "test_data/go.mod" }, { - "file": "test_data/go.mod", "line": "58", - "message": "Vulnerability in 'github.com/go-gitea/gitea': Denial of Service in Gitea. Current version is vulnerable: v1.2.3. Patch available: upgrade to 1.12.0 or higher.", "code": "CVE-2020-13246", "level": "LEVEL_HIGH", "linter": "trivy", "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/go.mod", - "line": "58", - "message": "Vulnerability in 'github.com/go-gitea/gitea': Gitea Remote Code Execution. Current version is vulnerable: v1.2.3. Patch available: upgrade to 1.7.6 or higher.", - "code": "CVE-2019-11229", - "level": "LEVEL_HIGH", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true + "isSecurity": true, + "message": "Vulnerability in 'github.com/go-gitea/gitea': Denial of Service in Gitea. Current version is vulnerable: 1.2.3. Patch available: upgrade to 1.12.0 or higher.", + "file": "test_data/go.mod" }, { - "file": "test_data/go.mod", "line": "58", - "message": "Vulnerability in 'github.com/go-gitea/gitea': Gitea Improper Input Validation. Current version is vulnerable: v1.2.3. Patch available: upgrade to 1.7.6 or higher.", - "code": "CVE-2019-11228", - "level": "LEVEL_HIGH", + "code": "CVE-2021-45328", + "level": "LEVEL_MEDIUM", "linter": "trivy", "targetType": "lockfile", - "isSecurity": true + "isSecurity": true, + "message": "Vulnerability in 'github.com/go-gitea/gitea': Open redirect in Gitea. Current version is vulnerable: 1.2.3. Patch available: upgrade to 1.4.3 or higher.", + "file": "test_data/go.mod" }, { - "file": "test_data/go.mod", - "line": "58", - "message": "Vulnerability in 'github.com/go-gitea/gitea': Gitea Exposes Private Email Addresses. Current version is vulnerable: v1.2.3. Patch available: upgrade to 1.5.1 or higher.", - "code": "CVE-2018-1000803", + "line": "84", + "code": "CVE-2022-45004", "level": "LEVEL_MEDIUM", "linter": "trivy", "targetType": "lockfile", - "isSecurity": true + "isSecurity": true, + "message": "Vulnerability in 'github.com/gophish/gophish': Gophish vulnerable to Cross-site Scripting via crafted landing page. Current version is vulnerable: 0.1.2.", + "file": "test_data/go.mod" }, { - "file": "test_data/go.mod", "line": "84", - "message": "Vulnerability in 'github.com/gophish/gophish': Gophish vulnerable to Server-Side Request Forgery. Current version is vulnerable: v0.1.2. Patch available: upgrade to 0.11.0 or higher.", - "code": "CVE-2020-24710", + "code": "CVE-2022-25295", "level": "LEVEL_MEDIUM", "linter": "trivy", "targetType": "lockfile", - "isSecurity": true + "isSecurity": true, + "message": "Vulnerability in 'github.com/gophish/gophish': Gophish before 0.12.0 vulnerable to Open Redirect. Current version is vulnerable: 0.1.2. Patch available: upgrade to 0.12.0 or higher.", + "file": "test_data/go.mod" }, { - "file": "test_data/go.mod", "line": "84", - "message": "Vulnerability in 'github.com/gophish/gophish': Gophish vulnerable to Cross-site Scripting via crafted landing page. Current version is vulnerable: v0.1.2.", - "code": "CVE-2022-45004", + "code": "CVE-2019-16146", "level": "LEVEL_MEDIUM", "linter": "trivy", "targetType": "lockfile", - "isSecurity": true + "isSecurity": true, + "message": "Vulnerability in 'github.com/gophish/gophish': Gophish XSS Vulnerability. Current version is vulnerable: 0.1.2. Patch available: upgrade to 0.9.0 or higher.", + "file": "test_data/go.mod" }, { - "file": "test_data/go.mod", "line": "84", - "message": "Vulnerability in 'github.com/gophish/gophish': Gophish vulnerable to Denial of Service via crafted payload involving autofocus. Current version is vulnerable: v0.1.2.", "code": "CVE-2022-45003", "level": "LEVEL_HIGH", "linter": "trivy", "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/go.mod", - "line": "84", - "message": "Vulnerability in 'github.com/gophish/gophish': Gophish before 0.12.0 vulnerable to Open Redirect. Current version is vulnerable: v0.1.2. Patch available: upgrade to 0.12.0 or higher.", - "code": "CVE-2022-25295", - "level": "LEVEL_MEDIUM", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true + "isSecurity": true, + "message": "Vulnerability in 'github.com/gophish/gophish': Gophish vulnerable to Denial of Service via crafted payload involving autofocus. Current version is vulnerable: 0.1.2.", + "file": "test_data/go.mod" }, { - "file": "test_data/go.mod", "line": "84", - "message": "Vulnerability in 'github.com/gophish/gophish': Gophish XSS Vulnerability. Current version is vulnerable: v0.1.2. Patch available: upgrade to 0.9.0 or higher.", - "code": "CVE-2019-16146", + "code": "CVE-2020-24710", "level": "LEVEL_MEDIUM", "linter": "trivy", "targetType": "lockfile", - "isSecurity": true + "isSecurity": true, + "message": "Vulnerability in 'github.com/gophish/gophish': Gophish vulnerable to Server-Side Request Forgery. Current version is vulnerable: 0.1.2. Patch available: upgrade to 0.11.0 or higher.", + "file": "test_data/go.mod" }, { - "file": "test_data/go.mod", "line": "161", - "message": "Vulnerability in 'github.com/unknwon/cae': github.com/unknwon/cae Path Traversal vulnerability. Current version is vulnerable: v1.0.0. Patch available: upgrade to 1.0.1 or higher.", "code": "CVE-2020-7668", "level": "LEVEL_HIGH", "linter": "trivy", "targetType": "lockfile", - "isSecurity": true + "isSecurity": true, + "message": "Vulnerability in 'github.com/unknwon/cae': Path Traversal in github.com/unknwon/cae/tz. Current version is vulnerable: 1.0.0. Patch available: upgrade to 1.0.1 or higher.", + "file": "test_data/go.mod" }, { - "file": "test_data/go.mod", "line": "161", - "message": "Vulnerability in 'github.com/unknwon/cae': Path Traversal in github.com/unknwon/cae/zip. Current version is vulnerable: v1.0.0. Patch available: upgrade to 1.0.1 or higher.", "code": "CVE-2020-7664", "level": "LEVEL_HIGH", "linter": "trivy", "targetType": "lockfile", - "isSecurity": true + "isSecurity": true, + "message": "Vulnerability in 'github.com/unknwon/cae': Path Traversal in github.com/unknwon/cae/zip. Current version is vulnerable: 1.0.0. Patch available: upgrade to 1.0.1 or higher.", + "file": "test_data/go.mod" }, { - "file": "test_data/go.mod", "line": "172", - "message": "Vulnerability in 'golang.org/x/crypto': A message-forgery issue was discovered in crypto/openpgp/clearsign/cle ... Current version is vulnerable: v0.0.0-20190308221718-c2843e01d9a2. Patch available: upgrade to 0.0.0-20190424203555-c05e17bb3b2d or higher.", - "code": "CVE-2019-11841", - "level": "LEVEL_MEDIUM", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/go.mod", - "line": "172", - "message": "Vulnerability in 'golang.org/x/crypto': golang.org/x/crypto: Keystream loop in amd64 assembly when overflowing 32-bit counter. Current version is vulnerable: v0.0.0-20190308221718-c2843e01d9a2. Patch available: upgrade to 0.0.0-20190320223903-b7391e95e576 or higher.", - "code": "CVE-2019-11840", - "level": "LEVEL_MEDIUM", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/go.mod", - "line": "172", - "message": "Vulnerability in 'golang.org/x/crypto': golang: crypto/ssh: crafted authentication request can lead to nil pointer dereference. Current version is vulnerable: v0.0.0-20190308221718-c2843e01d9a2. Patch available: upgrade to 0.0.0-20201216223049-8b5274cf687f or higher.", - "code": "CVE-2020-29652", + "code": "CVE-2022-27191", "level": "LEVEL_HIGH", "linter": "trivy", "targetType": "lockfile", - "isSecurity": true + "isSecurity": true, + "message": "Vulnerability in 'golang.org/x/crypto': crash in a golang.org/x/crypto/ssh server. Current version is vulnerable: 0.0.0-20190308221718-c2843e01d9a2. Patch available: upgrade to 0.0.0-20220314234659-1baeb1ce4c0b or higher.", + "file": "test_data/go.mod" }, { - "file": "test_data/go.mod", "line": "172", - "message": "Vulnerability in 'golang.org/x/crypto': golang: Integer overflow on 32bit architectures via crafted certificate allows for denial of service. Current version is vulnerable: v0.0.0-20190308221718-c2843e01d9a2. Patch available: upgrade to 0.0.0-20200124225646-8b5121be2f68 or higher.", - "code": "CVE-2020-7919", + "code": "CVE-2021-43565", "level": "LEVEL_HIGH", "linter": "trivy", "targetType": "lockfile", - "isSecurity": true + "isSecurity": true, + "message": "Vulnerability in 'golang.org/x/crypto': empty plaintext packet causes panic. Current version is vulnerable: 0.0.0-20190308221718-c2843e01d9a2. Patch available: upgrade to 0.0.0-20211202192323-5770296d904e or higher.", + "file": "test_data/go.mod" }, { - "file": "test_data/go.mod", "line": "172", - "message": "Vulnerability in 'golang.org/x/crypto': golang.org/x/crypto: Processing of crafted ssh-ed25519 public keys allows for panic. Current version is vulnerable: v0.0.0-20190308221718-c2843e01d9a2. Patch available: upgrade to 0.0.0-20200220183623-bac4c82f6975 or higher.", "code": "CVE-2020-9283", "level": "LEVEL_HIGH", "linter": "trivy", "targetType": "lockfile", - "isSecurity": true + "isSecurity": true, + "message": "Vulnerability in 'golang.org/x/crypto': golang.org/x/crypto: Processing of crafted ssh-ed25519 public keys allows for panic. Current version is vulnerable: 0.0.0-20190308221718-c2843e01d9a2. Patch available: upgrade to 0.0.0-20200220183623-bac4c82f6975 or higher.", + "file": "test_data/go.mod" }, { - "file": "test_data/go.mod", "line": "172", - "message": "Vulnerability in 'golang.org/x/crypto': golang.org/x/crypto: empty plaintext packet causes panic. Current version is vulnerable: v0.0.0-20190308221718-c2843e01d9a2. Patch available: upgrade to 0.0.0-20211202192323-5770296d904e or higher.", - "code": "CVE-2021-43565", - "level": "LEVEL_HIGH", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/go.mod", - "line": "172", - "message": "Vulnerability in 'golang.org/x/crypto': golang: crash in a golang.org/x/crypto/ssh server. Current version is vulnerable: v0.0.0-20190308221718-c2843e01d9a2. Patch available: upgrade to 0.0.0-20220314234659-1baeb1ce4c0b or higher.", - "code": "CVE-2022-27191", + "code": "CVE-2020-7919", "level": "LEVEL_HIGH", "linter": "trivy", "targetType": "lockfile", - "isSecurity": true + "isSecurity": true, + "message": "Vulnerability in 'golang.org/x/crypto': golang: Integer overflow on 32bit architectures via crafted certificate allows for denial of service. Current version is vulnerable: 0.0.0-20190308221718-c2843e01d9a2. Patch available: upgrade to 0.0.0-20200124225646-8b5121be2f68 or higher.", + "file": "test_data/go.mod" }, { - "file": "test_data/go.mod", "line": "172", - "message": "Vulnerability in 'golang.org/x/crypto': ssh: Prefix truncation attack on Binary Packet Protocol (BPP). Current version is vulnerable: v0.0.0-20190308221718-c2843e01d9a2. Patch available: upgrade to 0.17.0 or higher.", - "code": "CVE-2023-48795", - "level": "LEVEL_MEDIUM", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/go.mod", - "line": "174", - "message": "Vulnerability in 'golang.org/x/net': HTTP/2: Multiple HTTP/2 enabled web servers are vulnerable to a DDoS attack (Rapid Reset Attack). Current version is vulnerable: v0.0.0-20200324143707-d3edc9973b7e. Patch available: upgrade to 0.17.0 or higher.", - "code": "CVE-2023-44487", - "level": "LEVEL_MEDIUM", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/go.mod", - "line": "174", - "message": "Vulnerability in 'golang.org/x/net': golang: net/http: excessive memory growth in a Go server accepting HTTP/2 requests. Current version is vulnerable: v0.0.0-20200324143707-d3edc9973b7e. Patch available: upgrade to 0.4.0 or higher.", - "code": "CVE-2022-41717", + "code": "CVE-2019-11840", "level": "LEVEL_MEDIUM", "linter": "trivy", "targetType": "lockfile", - "isSecurity": true + "isSecurity": true, + "message": "Vulnerability in 'golang.org/x/crypto': golang.org/x/crypto: Keystream loop in amd64 assembly when overflowing 32-bit counter. Current version is vulnerable: 0.0.0-20190308221718-c2843e01d9a2. Patch available: upgrade to 0.0.0-20190320223903-b7391e95e576 or higher.", + "file": "test_data/go.mod" }, { - "file": "test_data/go.mod", - "line": "174", - "message": "Vulnerability in 'golang.org/x/net': golang.org/x/net/http2: avoid quadratic complexity in HPACK decoding. Current version is vulnerable: v0.0.0-20200324143707-d3edc9973b7e. Patch available: upgrade to 0.7.0 or higher.", - "code": "CVE-2022-41723", + "line": "172", + "code": "CVE-2020-29652", "level": "LEVEL_HIGH", "linter": "trivy", "targetType": "lockfile", - "isSecurity": true + "isSecurity": true, + "message": "Vulnerability in 'golang.org/x/crypto': golang: crypto/ssh: crafted authentication request can lead to nil pointer dereference. Current version is vulnerable: 0.0.0-20190308221718-c2843e01d9a2. Patch available: upgrade to 0.0.0-20201216223049-8b5274cf687f or higher.", + "file": "test_data/go.mod" }, { - "file": "test_data/go.mod", "line": "174", - "message": "Vulnerability in 'golang.org/x/net': A malicious HTTP/2 client which rapidly creates requests and immediate ... Current version is vulnerable: v0.0.0-20200324143707-d3edc9973b7e. Patch available: upgrade to 0.17.0 or higher.", - "code": "CVE-2023-39325", + "code": "CVE-2021-33194", "level": "LEVEL_HIGH", "linter": "trivy", "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/go.mod", - "line": "174", - "message": "Vulnerability in 'golang.org/x/net': golang.org/x/net/html: Cross site scripting. Current version is vulnerable: v0.0.0-20200324143707-d3edc9973b7e. Patch available: upgrade to 0.13.0 or higher.", - "code": "CVE-2023-3978", - "level": "LEVEL_MEDIUM", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true + "isSecurity": true, + "message": "Vulnerability in 'golang.org/x/net': golang: x/net/html: infinite loop in ParseFragment. Current version is vulnerable: 0.0.0-20200324143707-d3edc9973b7e. Patch available: upgrade to 0.0.0-20210520170846-37e1c6afe023 or higher.", + "file": "test_data/go.mod" }, { - "file": "test_data/go.mod", "line": "174", - "message": "Vulnerability in 'golang.org/x/net': golang: net/http: handle server errors after sending GOAWAY. Current version is vulnerable: v0.0.0-20200324143707-d3edc9973b7e. Patch available: upgrade to 0.0.0-20220906165146-f3363e06e74c or higher.", - "code": "CVE-2022-27664", + "code": "CVE-2022-41723", "level": "LEVEL_HIGH", "linter": "trivy", "targetType": "lockfile", - "isSecurity": true + "isSecurity": true, + "message": "Vulnerability in 'golang.org/x/net': avoid quadratic complexity in HPACK decoding. Current version is vulnerable: 0.0.0-20200324143707-d3edc9973b7e. Patch available: upgrade to 0.7.0 or higher.", + "file": "test_data/go.mod" }, { - "file": "test_data/go.mod", "line": "174", - "message": "Vulnerability in 'golang.org/x/net': golang: net/http, x/net/http2: unlimited number of CONTINUATION frames causes DoS. Current version is vulnerable: v0.0.0-20200324143707-d3edc9973b7e. Patch available: upgrade to 0.23.0 or higher.", - "code": "CVE-2023-45288", - "level": "LEVEL_MEDIUM", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/go.mod", - "line": "174", - "message": "Vulnerability in 'golang.org/x/net': golang: x/net/html: infinite loop in ParseFragment. Current version is vulnerable: v0.0.0-20200324143707-d3edc9973b7e. Patch available: upgrade to 0.0.0-20210520170846-37e1c6afe023 or higher.", - "code": "CVE-2021-33194", + "code": "CVE-2022-27664", "level": "LEVEL_HIGH", "linter": "trivy", "targetType": "lockfile", - "isSecurity": true + "isSecurity": true, + "message": "Vulnerability in 'golang.org/x/net': handle server errors after sending GOAWAY. Current version is vulnerable: 0.0.0-20200324143707-d3edc9973b7e. Patch available: upgrade to 0.0.0-20220906165146-f3363e06e74c or higher.", + "file": "test_data/go.mod" }, { - "file": "test_data/go.mod", "line": "174", - "message": "Vulnerability in 'golang.org/x/net': golang: net/http: panic in ReadRequest and ReadResponse when reading a very large header. Current version is vulnerable: v0.0.0-20200324143707-d3edc9973b7e. Patch available: upgrade to 0.0.0-20210428140749-89ef3d95e781 or higher.", "code": "CVE-2021-31525", "level": "LEVEL_MEDIUM", "linter": "trivy", "targetType": "lockfile", - "isSecurity": true + "isSecurity": true, + "message": "Vulnerability in 'golang.org/x/net': golang: net/http: panic in ReadRequest and ReadResponse when reading a very large header. Current version is vulnerable: 0.0.0-20200324143707-d3edc9973b7e. Patch available: upgrade to 0.0.0-20210428140749-89ef3d95e781 or higher.", + "file": "test_data/go.mod" }, { - "file": "test_data/go.mod", "line": "175", - "message": "Vulnerability in 'golang.org/x/sys': golang: syscall: faccessat checks wrong group. Current version is vulnerable: v0.0.0-20200331124033-c3d80250170d. Patch available: upgrade to 0.0.0-20220412211240-33da011f77ad or higher.", "code": "CVE-2022-29526", "level": "LEVEL_MEDIUM", "linter": "trivy", "targetType": "lockfile", - "isSecurity": true + "isSecurity": true, + "message": "Vulnerability in 'golang.org/x/sys': faccessat checks wrong group. Current version is vulnerable: 0.0.0-20200331124033-c3d80250170d. Patch available: upgrade to 0.0.0-20220412211240-33da011f77ad or higher.", + "file": "test_data/go.mod" }, { - "file": "test_data/go.mod", - "line": "189", - "message": "Vulnerability in 'gopkg.in/src-d/go-git.v4': go-git: Maliciously crafted Git server replies can lead to path traversal and RCE on go-git clients. Current version is vulnerable: v4.11.0.", - "code": "CVE-2023-49569", - "level": "LEVEL_HIGH", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/go.mod", - "line": "189", - "message": "Vulnerability in 'gopkg.in/src-d/go-git.v4': go-git: Maliciously crafted Git server replies can cause DoS on go-git clients. Current version is vulnerable: v4.11.0.", - "code": "CVE-2023-49568", - "level": "LEVEL_HIGH", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/nested/requirements.txt", "line": "1", - "message": "Vulnerability in 'pillow': Pillow before 9.2.0 performs Improper Handling of Highly Compressed GI ... Current version is vulnerable: 9.1.1. Patch available: upgrade to 9.2.0 or higher.", "code": "CVE-2022-45198", "level": "LEVEL_HIGH", "linter": "trivy", "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/nested/requirements.txt", - "line": "1", - "message": "Vulnerability in 'pillow': python-pillow: uncontrolled resource consumption when textlength in an ImageDraw instance operates on a long text argument. Current version is vulnerable: 9.1.1. Patch available: upgrade to 10.0.0 or higher.", - "code": "CVE-2023-44271", - "level": "LEVEL_HIGH", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/nested/requirements.txt", - "line": "1", - "message": "Vulnerability in 'pillow': libwebp: Heap buffer overflow in WebP Codec. Current version is vulnerable: 9.1.1. Patch available: upgrade to 10.0.1 or higher.", - "code": "CVE-2023-4863", - "level": "LEVEL_HIGH", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/nested/requirements.txt", - "line": "1", - "message": "Vulnerability in 'pillow': pillow: Arbitrary Code Execution via the environment parameter. Current version is vulnerable: 9.1.1. Patch available: upgrade to 10.2.0 or higher.", - "code": "CVE-2023-50447", - "level": "LEVEL_HIGH", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/nested/requirements.txt", - "line": "1", - "message": "Vulnerability in 'pillow': python-pillow: buffer overflow in _imagingcms.c. Current version is vulnerable: 9.1.1. Patch available: upgrade to 10.3.0 or higher.", - "code": "CVE-2024-28219", - "level": "LEVEL_HIGH", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/nested/requirements.txt", - "line": "1", - "message": "Vulnerability in 'pillow': Bundled libwebp in Pillow vulnerable. Current version is vulnerable: 9.1.1. Patch available: upgrade to 10.0.1 or higher.", - "code": "GHSA-56pw-mpj4-fxww", - "level": "LEVEL_HIGH", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/no_errors/requirements.txt", - "line": "1", - "message": "Vulnerability in 'pillow': Bundled libwebp in Pillow vulnerable. Current version is vulnerable: 9.3.0. Patch available: upgrade to 10.0.1 or higher.", - "code": "GHSA-56pw-mpj4-fxww", - "level": "LEVEL_HIGH", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/no_errors/requirements.txt", - "line": "1", - "message": "Vulnerability in 'pillow': python-pillow: buffer overflow in _imagingcms.c. Current version is vulnerable: 9.3.0. Patch available: upgrade to 10.3.0 or higher.", - "code": "CVE-2024-28219", - "level": "LEVEL_HIGH", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/no_errors/requirements.txt", - "line": "1", - "message": "Vulnerability in 'pillow': pillow: Arbitrary Code Execution via the environment parameter. Current version is vulnerable: 9.3.0. Patch available: upgrade to 10.2.0 or higher.", - "code": "CVE-2023-50447", - "level": "LEVEL_HIGH", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/no_errors/requirements.txt", - "line": "1", - "message": "Vulnerability in 'pillow': libwebp: Heap buffer overflow in WebP Codec. Current version is vulnerable: 9.3.0. Patch available: upgrade to 10.0.1 or higher.", - "code": "CVE-2023-4863", - "level": "LEVEL_HIGH", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/no_errors/requirements.txt", - "line": "1", - "message": "Vulnerability in 'pillow': python-pillow: uncontrolled resource consumption when textlength in an ImageDraw instance operates on a long text argument. Current version is vulnerable: 9.3.0. Patch available: upgrade to 10.0.0 or higher.", - "code": "CVE-2023-44271", - "level": "LEVEL_HIGH", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/requirements.txt", - "line": "1", + "isSecurity": true, "message": "Vulnerability in 'pillow': Pillow before 9.2.0 performs Improper Handling of Highly Compressed GI ... Current version is vulnerable: 9.1.1. Patch available: upgrade to 9.2.0 or higher.", - "code": "CVE-2022-45198", - "level": "LEVEL_HIGH", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/requirements.txt", - "line": "1", - "message": "Vulnerability in 'pillow': python-pillow: uncontrolled resource consumption when textlength in an ImageDraw instance operates on a long text argument. Current version is vulnerable: 9.1.1. Patch available: upgrade to 10.0.0 or higher.", - "code": "CVE-2023-44271", - "level": "LEVEL_HIGH", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/requirements.txt", - "line": "1", - "message": "Vulnerability in 'pillow': libwebp: Heap buffer overflow in WebP Codec. Current version is vulnerable: 9.1.1. Patch available: upgrade to 10.0.1 or higher.", - "code": "CVE-2023-4863", - "level": "LEVEL_HIGH", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/requirements.txt", - "line": "1", - "message": "Vulnerability in 'pillow': pillow: Arbitrary Code Execution via the environment parameter. Current version is vulnerable: 9.1.1. Patch available: upgrade to 10.2.0 or higher.", - "code": "CVE-2023-50447", - "level": "LEVEL_HIGH", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true + "file": "test_data/nested/requirements.txt" }, { - "file": "test_data/requirements.txt", "line": "1", - "message": "Vulnerability in 'pillow': python-pillow: buffer overflow in _imagingcms.c. Current version is vulnerable: 9.1.1. Patch available: upgrade to 10.3.0 or higher.", - "code": "CVE-2024-28219", - "level": "LEVEL_HIGH", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/requirements.txt", - "line": "1", - "message": "Vulnerability in 'pillow': Bundled libwebp in Pillow vulnerable. Current version is vulnerable: 9.1.1. Patch available: upgrade to 10.0.1 or higher.", - "code": "GHSA-56pw-mpj4-fxww", - "level": "LEVEL_HIGH", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/requirements.txt", - "line": "2", - "message": "Vulnerability in 'langchain': langchain Code Injection vulnerability. Current version is vulnerable: 0.0.171. Patch available: upgrade to 0.0.236 or higher.", - "code": "CVE-2023-36095", - "level": "LEVEL_HIGH", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/requirements.txt", - "line": "2", - "message": "Vulnerability in 'langchain': langchain arbitrary code execution vulnerability. Current version is vulnerable: 0.0.171. Patch available: upgrade to 0.0.247 or higher.", - "code": "CVE-2023-36258", + "code": "CVE-2022-45198", "level": "LEVEL_HIGH", "linter": "trivy", "targetType": "lockfile", - "isSecurity": true + "isSecurity": true, + "message": "Vulnerability in 'pillow': Pillow before 9.2.0 performs Improper Handling of Highly Compressed GI ... Current version is vulnerable: 9.1.1. Patch available: upgrade to 9.2.0 or higher.", + "file": "test_data/requirements.txt" }, { - "file": "test_data/requirements.txt", "line": "2", - "message": "Vulnerability in 'langchain': langchain SQL Injection vulnerability. Current version is vulnerable: 0.0.171. Patch available: upgrade to 0.0.247 or higher.", "code": "CVE-2023-36189", "level": "LEVEL_HIGH", "linter": "trivy", "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/requirements.txt", - "line": "2", - "message": "Vulnerability in 'langchain': langchain vulnerable to arbitrary code execution. Current version is vulnerable: 0.0.171. Patch available: upgrade to 0.0.236 or higher.", - "code": "CVE-2023-36188", - "level": "LEVEL_HIGH", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/requirements.txt", - "line": "2", - "message": "Vulnerability in 'langchain': langchain vulnerable to arbitrary code execution. Current version is vulnerable: 0.0.171. Patch available: upgrade to 0.0.312 or higher.", - "code": "CVE-2023-36281", - "level": "LEVEL_HIGH", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true + "isSecurity": true, + "message": "Vulnerability in 'langchain': langchain SQL Injection vulnerability. Current version is vulnerable: 0.0.171.", + "file": "test_data/requirements.txt" }, { - "file": "test_data/requirements.txt", "line": "2", - "message": "Vulnerability in 'langchain': Langchain vulnerable to arbitrary code execution. Current version is vulnerable: 0.0.171. Patch available: upgrade to 0.0.247 or higher.", "code": "CVE-2023-34541", "level": "LEVEL_HIGH", "linter": "trivy", "targetType": "lockfile", - "isSecurity": true + "isSecurity": true, + "message": "Vulnerability in 'langchain': Langchain vulnerable to arbitrary code execution. Current version is vulnerable: 0.0.171.", + "file": "test_data/requirements.txt" }, { - "file": "test_data/requirements.txt", "line": "2", - "message": "Vulnerability in 'langchain': Langchain OS Command Injection vulnerability. Current version is vulnerable: 0.0.171. Patch available: upgrade to 0.0.225 or higher.", "code": "CVE-2023-34540", "level": "LEVEL_HIGH", "linter": "trivy", "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/requirements.txt", - "line": "2", - "message": "Vulnerability in 'langchain': Langchain Server-Side Request Forgery vulnerability. Current version is vulnerable: 0.0.171. Patch available: upgrade to 0.0.329 or higher.", - "code": "CVE-2023-32786", - "level": "LEVEL_HIGH", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/requirements.txt", - "line": "2", - "message": "Vulnerability in 'langchain': Langchain SQL Injection vulnerability. Current version is vulnerable: 0.0.171. Patch available: upgrade to 0.0.247 or higher.", - "code": "CVE-2023-32785", - "level": "LEVEL_HIGH", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/requirements.txt", - "line": "2", - "message": "Vulnerability in 'langchain': LangChain vulnerable to arbitrary code execution. Current version is vulnerable: 0.0.171. Patch available: upgrade to 0.0.247 or higher.", - "code": "CVE-2023-38860", - "level": "LEVEL_HIGH", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true + "isSecurity": true, + "message": "Vulnerability in 'langchain': Langchain OS Command Injection vulnerability. Current version is vulnerable: 0.0.171.", + "file": "test_data/requirements.txt" }, { - "file": "test_data/requirements.txt", "line": "2", - "message": "Vulnerability in 'langchain': LangChain vulnerable to arbitrary code execution. Current version is vulnerable: 0.0.171. Patch available: upgrade to 0.0.236 or higher.", - "code": "CVE-2023-38896", - "level": "LEVEL_HIGH", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/requirements.txt", - "line": "2", - "message": "Vulnerability in 'langchain': Langchain vulnerable to arbitrary code execution via the evaluate function in the numexpr library. Current version is vulnerable: 0.0.171. Patch available: upgrade to 0.0.308 or higher.", - "code": "CVE-2023-39631", - "level": "LEVEL_HIGH", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/requirements.txt", - "line": "2", - "message": "Vulnerability in 'langchain': LangChain vulnerable to arbitrary code execution. Current version is vulnerable: 0.0.171. Patch available: upgrade to 0.0.325 or higher.", - "code": "CVE-2023-39659", + "code": "CVE-2023-36188", "level": "LEVEL_HIGH", "linter": "trivy", "targetType": "lockfile", - "isSecurity": true + "isSecurity": true, + "message": "Vulnerability in 'langchain': langchain vulnerable to arbitrary code execution. Current version is vulnerable: 0.0.171.", + "file": "test_data/requirements.txt" }, { - "file": "test_data/requirements.txt", "line": "2", - "message": "Vulnerability in 'langchain': LangChain Server Side Request Forgery vulnerability. Current version is vulnerable: 0.0.171. Patch available: upgrade to 0.0.317 or higher.", - "code": "CVE-2023-46229", + "code": "CVE-2023-36258", "level": "LEVEL_HIGH", "linter": "trivy", "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/requirements.txt", - "line": "2", - "message": "Vulnerability in 'langchain': langchain Server-Side Request Forgery vulnerability. Current version is vulnerable: 0.0.171. Patch available: upgrade to 0.1.0 or higher.", - "code": "CVE-2024-0243", - "level": "LEVEL_LOW", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/requirements.txt", - "line": "2", - "message": "Vulnerability in 'langchain': LangChain directory traversal vulnerability. Current version is vulnerable: 0.0.171. Patch available: upgrade to 0.0.339 or higher.", - "code": "CVE-2024-28088", - "level": "LEVEL_LOW", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/requirements.txt", - "line": "2", - "message": "Vulnerability in 'langchain': Denial of service in langchain-community. Current version is vulnerable: 0.0.171. Patch available: upgrade to 0.2.5 or higher.", - "code": "CVE-2024-2965", - "level": "LEVEL_MEDIUM", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/requirements.txt", - "line": "2", - "message": "Vulnerability in 'langchain': langchain vulnerable to path traversal. Current version is vulnerable: 0.0.171. Patch available: upgrade to 0.0.353 or higher.", - "code": "CVE-2024-3571", - "level": "LEVEL_MEDIUM", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true - }, - { - "file": "test_data/requirements.txt", - "line": "2", - "message": "Vulnerability in 'langchain': langchain: SQL Injection in langchain-ai/langchain. Current version is vulnerable: 0.0.171. Patch available: upgrade to 0.2.0 or higher.", - "code": "CVE-2024-8309", - "level": "LEVEL_LOW", - "linter": "trivy", - "targetType": "lockfile", - "isSecurity": true + "isSecurity": true, + "message": "Vulnerability in 'langchain': langchain arbitrary code execution vulnerability. Current version is vulnerable: 0.0.171.", + "file": "test_data/requirements.txt" } ] diff --git a/linters/trunk-toolbox/plugin.yaml b/linters/trunk-toolbox/plugin.yaml index 25726eadd..5be873d4a 100644 --- a/linters/trunk-toolbox/plugin.yaml +++ b/linters/trunk-toolbox/plugin.yaml @@ -2,7 +2,7 @@ version: 0.1 downloads: - name: trunk-toolbox - version: 0.5.3 + version: 0.3.1 downloads: - os: linux: unknown-linux-gnu @@ -17,48 +17,21 @@ tools: - name: trunk-toolbox download: trunk-toolbox shims: [trunk-toolbox] - known_good_version: 0.5.3 + known_good_version: 0.3.1 lint: definitions: - name: trunk-toolbox - description: Repository level linting tools main_tool: trunk-toolbox files: [ALL] - affects_cache: [toolbox.toml, log4rs.yaml] - known_good_version: 0.5.3 + description: Collection of universal linting tools commands: - - name: lint - version: ">=0.5.3" - run: - trunk-toolbox --upstream=${upstream-ref} --cache-dir=${cachedir} --results=${tmpfile} - ${target} - output: sarif - batch: true - success_codes: [0] - read_output_from: tmp_file - cache_results: true - disable_upstream: false - direct_configs: [toolbox.toml] - max_concurrency: 1 - - name: lint - version: ">=0.4.1" - run: - trunk-toolbox --upstream=${upstream-ref} --cache-dir=${cachedir} --results=${tmpfile} - ${target} - output: sarif - batch: true - success_codes: [0] - read_output_from: tmp_file - disable_upstream: true - direct_configs: [toolbox.toml] - max_concurrency: 1 - name: lint run: trunk-toolbox --upstream=${upstream-ref} --results=${tmpfile} ${target} output: sarif batch: true success_codes: [0] - disable_upstream: true read_output_from: tmp_file + disable_upstream: true suggest_if: never version_command: parse_regex: ${semver} diff --git a/linters/vale/plugin.yaml b/linters/vale/plugin.yaml index a96504be5..81e3d99d4 100644 --- a/linters/vale/plugin.yaml +++ b/linters/vale/plugin.yaml @@ -25,8 +25,7 @@ tools: known_good_version: 3.4.1 environment: - name: PATH - # Needs access to shared libraries on Windows. - list: ["${tool}", "${env.PATH}"] + list: ["${tool}"] lint: definitions: diff --git a/package-lock.json b/package-lock.json index 77dfe596d..20a91a0de 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,38 +11,38 @@ "@jest/console": "^29.4.1", "@jest/reporters": "^29.4.1", "@jest/test-result": "^29.4.1", - "@trunkio/launcher": "^1.3.4", + "@trunkio/launcher": "^1.3.1", "@types/caller": "^1.0.2", "@types/debug": "^4.1.12", - "@types/jest": "^29.5.14", + "@types/jest": "^29.5.12", "@types/jest-specific-snapshot": "^0.5.9", - "@types/node": "^22.14.1", - "@types/semver": "^7.7.0", - "@typescript-eslint/eslint-plugin": "^8.29.1", - "@typescript-eslint/parser": "^8.29.1", + "@types/node": "^20.14.2", + "@types/semver": "^7.5.8", + "@typescript-eslint/eslint-plugin": "^7.12.0", + "@typescript-eslint/parser": "^7.12.0", "caller": "^1.1.0", - "debug": "^4.4.0", - "eslint": "9.14.0", - "eslint-config-prettier": "^10.1.2", - "eslint-import-resolver-typescript": "^4.3.2", - "eslint-plugin-import": "^2.31.0", - "eslint-plugin-import-x": "^4.10.3", - "eslint-plugin-jest": "^28.11.0", - "eslint-plugin-n": "^17.17.0", - "eslint-plugin-prettier": "^5.2.6", - "eslint-plugin-simple-import-sort": "^12.1.1", - "fast-sort": "^3.4.1", + "debug": "^4.3.5", + "eslint": "^8.57.0", + "eslint-config-prettier": "^9.1.0", + "eslint-import-resolver-typescript": "^3.5.2", + "eslint-plugin-import": "^2.29.1", + "eslint-plugin-import-x": "^0.5.1", + "eslint-plugin-jest": "^28.6.0", + "eslint-plugin-n": "^17.8.1", + "eslint-plugin-prettier": "^5.1.3", + "eslint-plugin-simple-import-sort": "^12.1.0", + "fast-sort": "^3.2.0", "jest": "^29.3.1", "jest-junit": "^16.0.0", "jest-specific-snapshot": "^8.0.0", - "semver": "^7.7.1", - "simple-git": "^3.27.0", - "ts-jest": "^29.3.2", + "semver": "^7.6.2", + "simple-git": "^3.24.0", + "ts-jest": "^29.1.4", "ts-node": "^10.9.2", "tsconfig-paths": "^4.1.2", - "typescript": "^5.8.3", - "typescript-eslint": "^8.29.1", - "yaml": "^2.7.1" + "typescript": "^5.4.5", + "typescript-eslint": "^7.12.0", + "yaml": "^2.4.5" }, "engines": { "node": ">=16" @@ -630,101 +630,37 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, - "node_modules/@emnapi/core": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.4.1.tgz", - "integrity": "sha512-4JFstCTaToCFrPqrGzgkF8N2NHjtsaY4uRh6brZQ5L9e4wbMieX8oDT8N7qfVFTQecHFEtkj4ve49VIZ3mKVqw==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/wasi-threads": "1.0.1", - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/runtime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.1.tgz", - "integrity": "sha512-LMshMVP0ZhACNjQNYXiU1iZJ6QCcv0lUdPDPugqGvCGXt5xtRVBPdtA0qU12pEXZzpWAhWlZYptfdAFq10DOVQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/wasi-threads": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.1.tgz", - "integrity": "sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.6.0.tgz", - "integrity": "sha512-WhCn7Z7TauhBtmzhvKpoQs0Wwb/kBcy4CwpuI0/eEIr2Lx2auxmulAzLr91wVZJaz47iUZdkXOK7WlAfxGKCnA==", + "version": "4.4.0", "dev": true, "license": "MIT", "dependencies": { - "eslint-visitor-keys": "^3.4.3" + "eslint-visitor-keys": "^3.3.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "funding": { - "url": "https://opencollective.com/eslint" - }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "node_modules/@eslint-community/regexpp": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", - "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "version": "4.10.0", "dev": true, + "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/@eslint/config-array": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz", - "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==", - "dev": true, - "dependencies": { - "@eslint/object-schema": "^2.1.4", - "debug": "^4.3.1", - "minimatch": "^3.1.2" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/core": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.7.0.tgz", - "integrity": "sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==", - "dev": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, "node_modules/@eslint/eslintrc": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", - "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", + "version": "2.1.4", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^10.0.1", - "globals": "^14.0.0", + "espree": "^9.6.0", + "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -732,75 +668,31 @@ "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/@eslint/js": { - "version": "9.14.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.14.0.tgz", - "integrity": "sha512-pFoEtFWCPyDOl+C6Ift+wC7Ro89otjigCf5vcuWqWgqNSQbRrpjSvdeE6ofLz4dHmyxD5f7gIdGT4+p36L6Twg==", - "dev": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/object-schema": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", - "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", - "dev": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/plugin-kit": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.3.tgz", - "integrity": "sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==", - "dev": true, - "dependencies": { - "levn": "^0.4.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@humanfs/core": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", - "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "version": "8.57.0", "dev": true, + "license": "MIT", "engines": { - "node": ">=18.18.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@humanfs/node": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", - "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@humanfs/core": "^0.19.1", - "@humanwhocodes/retry": "^0.3.0" + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" }, "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", - "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", - "dev": true, - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "node": ">=10.10.0" } }, "node_modules/@humanwhocodes/module-importer": { @@ -815,18 +707,10 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@humanwhocodes/retry": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", - "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.2", "dev": true, - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } + "license": "BSD-3-Clause" }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", @@ -1261,19 +1145,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.8.tgz", - "integrity": "sha512-OBlgKdX7gin7OIq4fadsjpg+cp2ZphvAIKucHsNfTdJiqdOmOEwQd/bHi0VwNrcw5xpBJyUw6cK/QilCqy1BSg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "^1.4.0", - "@emnapi/runtime": "^1.4.0", - "@tybys/wasm-util": "^0.9.0" - } - }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "dev": true, @@ -1307,9 +1178,7 @@ } }, "node_modules/@pkgr/core": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.2.tgz", - "integrity": "sha512-25L86MyPvnlQoX2MTIV2OiUcb6vJ6aRbFa9pbwByn95INKD5mFH2smgjDhq+fwJoqAgvgbdJLj6Tz7V9X5CFAQ==", + "version": "0.1.0", "dev": true, "license": "MIT", "engines": { @@ -1319,12 +1188,6 @@ "url": "https://opencollective.com/unts" } }, - "node_modules/@rtsao/scc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", - "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", - "dev": true - }, "node_modules/@sinclair/typebox": { "version": "0.27.8", "dev": true, @@ -1347,17 +1210,17 @@ } }, "node_modules/@trunkio/launcher": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/@trunkio/launcher/-/launcher-1.3.4.tgz", - "integrity": "sha512-4LCsFVvZtKht7EkbOq5gDsRLIBOH05ycNxm1Vrv+YzY+uOK2HueLBcLU8oejV9v01LTtWjfLJxonIgTSo7lwng==", + "version": "1.3.1", "dev": true, + "license": "ISC", "dependencies": { "semver": "^7.5.4", "tar": "^6.2.0", "yaml": "^2.2.0" }, "bin": { - "trunk": "trunk.js" + "trunk": "trunk.js", + "trunk_bash": "trunk" }, "engines": { "node": ">=18.0.0" @@ -1383,17 +1246,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@tybys/wasm-util": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz", - "integrity": "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, "node_modules/@types/babel__core": { "version": "7.20.1", "dev": true, @@ -1444,18 +1296,6 @@ "@types/ms": "*" } }, - "node_modules/@types/doctrine": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/@types/doctrine/-/doctrine-0.0.9.tgz", - "integrity": "sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==", - "dev": true - }, - "node_modules/@types/estree": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", - "dev": true - }, "node_modules/@types/graceful-fs": { "version": "4.1.5", "dev": true, @@ -1486,10 +1326,9 @@ } }, "node_modules/@types/jest": { - "version": "29.5.14", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", - "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", + "version": "29.5.12", "dev": true, + "license": "MIT", "dependencies": { "expect": "^29.0.0", "pretty-format": "^29.0.0" @@ -1503,12 +1342,6 @@ "@types/jest": "*" } }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true - }, "node_modules/@types/json5": { "version": "0.0.29", "dev": true, @@ -1520,21 +1353,19 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.14.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.14.1.tgz", - "integrity": "sha512-u0HuPQwe/dHrItgHHpmw3N2fYCR6x4ivMNbPHRkBVP4CvN+kiRrKHWk3i8tXiO/joPwXLMYvF9TTF0eqgHIuOw==", + "version": "20.14.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.2.tgz", + "integrity": "sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==", "dev": true, - "license": "MIT", "dependencies": { - "undici-types": "~6.21.0" + "undici-types": "~5.26.4" } }, "node_modules/@types/semver": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.0.tgz", - "integrity": "sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==", - "dev": true, - "license": "MIT" + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", + "dev": true }, "node_modules/@types/stack-utils": { "version": "2.0.1", @@ -1555,72 +1386,77 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.29.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.29.1.tgz", - "integrity": "sha512-ba0rr4Wfvg23vERs3eB+P3lfj2E+2g3lhWcCVukUuhtcdUx5lSIFZlGFEBHKr+3zizDa/TvZTptdNHVZWAkSBg==", + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.12.0.tgz", + "integrity": "sha512-7F91fcbuDf/d3S8o21+r3ZncGIke/+eWk0EpO21LXhDfLahriZF9CGj4fbAetEjlaBdjdSm9a6VeXbpbT6Z40Q==", "dev": true, - "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.29.1", - "@typescript-eslint/type-utils": "8.29.1", - "@typescript-eslint/utils": "8.29.1", - "@typescript-eslint/visitor-keys": "8.29.1", + "@typescript-eslint/scope-manager": "7.12.0", + "@typescript-eslint/type-utils": "7.12.0", + "@typescript-eslint/utils": "7.12.0", + "@typescript-eslint/visitor-keys": "7.12.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", - "ts-api-utils": "^2.0.1" + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@typescript-eslint/parser": { - "version": "8.29.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.29.1.tgz", - "integrity": "sha512-zczrHVEqEaTwh12gWBIJWj8nx+ayDcCJs06yoNMY0kwjMWDM6+kppljY+BxWI06d2Ja+h4+WdufDcwMnnMEWmg==", + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.12.0.tgz", + "integrity": "sha512-dm/J2UDY3oV3TKius2OUZIFHsomQmpHtsV0FTh1WO8EKgHLQ1QCADUqscPgTpU+ih1e21FQSRjXckHn3txn6kQ==", "dev": true, - "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.29.1", - "@typescript-eslint/types": "8.29.1", - "@typescript-eslint/typescript-estree": "8.29.1", - "@typescript-eslint/visitor-keys": "8.29.1", + "@typescript-eslint/scope-manager": "7.12.0", + "@typescript-eslint/types": "7.12.0", + "@typescript-eslint/typescript-estree": "7.12.0", + "@typescript-eslint/visitor-keys": "7.12.0", "debug": "^4.3.4" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.29.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.29.1.tgz", - "integrity": "sha512-2nggXGX5F3YrsGN08pw4XpMLO1Rgtnn4AzTegC2MDesv6q3QaTU5yU7IbS1tf1IwCR0Hv/1EFygLn9ms6LIpDA==", + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.12.0.tgz", + "integrity": "sha512-itF1pTnN6F3unPak+kutH9raIkL3lhH1YRPGgt7QQOh43DQKVJXmWkpb+vpc/TiDHs6RSd9CTbDsc/Y+Ygq7kg==", "dev": true, - "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.29.1", - "@typescript-eslint/visitor-keys": "8.29.1" + "@typescript-eslint/types": "7.12.0", + "@typescript-eslint/visitor-keys": "7.12.0" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -1628,37 +1464,39 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.29.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.29.1.tgz", - "integrity": "sha512-DkDUSDwZVCYN71xA4wzySqqcZsHKic53A4BLqmrWFFpOpNSoxX233lwGu/2135ymTCR04PoKiEEEvN1gFYg4Tw==", + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.12.0.tgz", + "integrity": "sha512-lib96tyRtMhLxwauDWUp/uW3FMhLA6D0rJ8T7HmH7x23Gk1Gwwu8UZ94NMXBvOELn6flSPiBrCKlehkiXyaqwA==", "dev": true, - "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.29.1", - "@typescript-eslint/utils": "8.29.1", + "@typescript-eslint/typescript-estree": "7.12.0", + "@typescript-eslint/utils": "7.12.0", "debug": "^4.3.4", - "ts-api-utils": "^2.0.1" + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@typescript-eslint/types": { - "version": "8.29.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.29.1.tgz", - "integrity": "sha512-VT7T1PuJF1hpYC3AGm2rCgJBjHL3nc+A/bhOp9sGMKfi5v0WufsX/sHCFBfNTx2F+zA6qBc/PD0/kLRLjdt8mQ==", + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.12.0.tgz", + "integrity": "sha512-o+0Te6eWp2ppKY3mLCU+YA9pVJxhUJE15FV7kxuD9jgwIAa+w/ycGJBMrYDTpVGUM/tgpa9SeMOugSabWFq7bg==", "dev": true, - "license": "MIT", "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -1666,30 +1504,31 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.29.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.29.1.tgz", - "integrity": "sha512-l1enRoSaUkQxOQnbi0KPUtqeZkSiFlqrx9/3ns2rEDhGKfTa+88RmXqedC1zmVTOWrLc2e6DEJrTA51C9iLH5g==", + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.12.0.tgz", + "integrity": "sha512-5bwqLsWBULv1h6pn7cMW5dXX/Y2amRqLaKqsASVwbBHMZSnHqE/HN4vT4fE0aFsiwxYvr98kqOWh1a8ZKXalCQ==", "dev": true, - "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.29.1", - "@typescript-eslint/visitor-keys": "8.29.1", + "@typescript-eslint/types": "7.12.0", + "@typescript-eslint/visitor-keys": "7.12.0", "debug": "^4.3.4", - "fast-glob": "^3.3.2", + "globby": "^11.1.0", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", - "ts-api-utils": "^2.0.1" + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependencies": { - "typescript": ">=4.8.4 <5.9.0" + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { @@ -1697,17 +1536,15 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -1719,292 +1556,53 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.29.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.29.1.tgz", - "integrity": "sha512-QAkFEbytSaB8wnmB+DflhUPz6CLbFWE2SnSCrRMEa+KnXIzDYbpsn++1HGvnfAsUY44doDXmvRkO5shlM/3UfA==", + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.12.0.tgz", + "integrity": "sha512-Y6hhwxwDx41HNpjuYswYp6gDbkiZ8Hin9Bf5aJQn1bpTs3afYY4GX+MPYxma8jtoIV2GRwTM/UJm/2uGCVv+DQ==", "dev": true, - "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.29.1", - "@typescript-eslint/types": "8.29.1", - "@typescript-eslint/typescript-estree": "8.29.1" + "@typescript-eslint/scope-manager": "7.12.0", + "@typescript-eslint/types": "7.12.0", + "@typescript-eslint/typescript-estree": "7.12.0" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" + "eslint": "^8.56.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.29.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.29.1.tgz", - "integrity": "sha512-RGLh5CRaUEf02viP5c1Vh1cMGffQscyHe7HPAzGpfmfflFg1wUz2rYxd+OZqwpeypYvZ8UxSxuIpF++fmOzEcg==", + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.12.0.tgz", + "integrity": "sha512-uZk7DevrQLL3vSnfFl5bj4sL75qC9D6EdjemIdbtkuUmIheWpuiiylSY01JxJE7+zGrOWDZrp1WxOuDntvKrHQ==", "dev": true, - "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.29.1", - "eslint-visitor-keys": "^4.2.0" + "@typescript-eslint/types": "7.12.0", + "eslint-visitor-keys": "^3.4.3" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", - "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@unrs/resolver-binding-darwin-arm64": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.5.0.tgz", - "integrity": "sha512-YmocNlEcX/AgJv8gI41bhjMOTcKcea4D2nRIbZj+MhRtSH5+vEU8r/pFuTuoF+JjVplLsBueU+CILfBPVISyGQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@unrs/resolver-binding-darwin-x64": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.5.0.tgz", - "integrity": "sha512-qpUrXgH4e/0xu1LOhPEdfgSY3vIXOxDQv370NEL8npN8h40HcQDA+Pl2r4HBW6tTXezWIjxUFcP7tj529RZtDw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@unrs/resolver-binding-freebsd-x64": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.5.0.tgz", - "integrity": "sha512-3tX8r8vgjvZzaJZB4jvxUaaFCDCb3aWDCpZN3EjhGnnwhztslI05KSG5NY/jNjlcZ5QWZ7dEZZ/rNBFsmTaSPw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.5.0.tgz", - "integrity": "sha512-FH+ixzBKaUU9fWOj3TYO+Yn/eO6kYvMLV9eNJlJlkU7OgrxkCmiMS6wUbyT0KA3FOZGxnEQ2z3/BHgYm2jqeLA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.5.0.tgz", - "integrity": "sha512-pxCgXMgwB/4PfqFQg73lMhmWwcC0j5L+dNXhZoz/0ek0iS/oAWl65fxZeT/OnU7fVs52MgdP2q02EipqJJXHSg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.5.0.tgz", - "integrity": "sha512-FX2FV7vpLE/+Z0NZX9/1pwWud5Wocm/2PgpUXbT5aSV3QEB10kBPJAzssOQylvdj8mOHoKl5pVkXpbCwww/T2g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm64-musl": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.5.0.tgz", - "integrity": "sha512-+gF97xst1BZb28T3nwwzEtq2ewCoMDGKsenYsZuvpmNrW0019G1iUAunZN+FG55L21y+uP7zsGX06OXDQ/viKw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.5.0.tgz", - "integrity": "sha512-5bEmVcQw9js8JYM2LkUBw5SeELSIxX+qKf9bFrfFINKAp4noZ//hUxLpbF7u/3gTBN1GsER6xOzIZlw/VTdXtA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.5.0.tgz", - "integrity": "sha512-GGk/8TPUsf1Q99F+lzMdjE6sGL26uJCwQ9TlvBs8zR3cLQNw/MIumPN7zrs3GFGySjnwXc8gA6J3HKbejywmqA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.5.0.tgz", - "integrity": "sha512-5uRkFYYVNAeVaA4W/CwugjFN3iDOHCPqsBLCCOoJiMfFMMz4evBRsg+498OFa9w6VcTn2bD5aI+RRayaIgk2Sw==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-x64-gnu": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.5.0.tgz", - "integrity": "sha512-j905CZH3nehYy6NimNqC2B14pxn4Ltd7guKMyPTzKehbFXTUgihQS/ZfHQTdojkMzbSwBOSgq1dOrY+IpgxDsA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-x64-musl": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.5.0.tgz", - "integrity": "sha512-dmLevQTuzQRwu5A+mvj54R5aye5I4PVKiWqGxg8tTaYP2k2oTs/3Mo8mgnhPk28VoYCi0fdFYpgzCd4AJndQvQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-wasm32-wasi": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.5.0.tgz", - "integrity": "sha512-LtJMhwu7avhoi+kKfAZOKN773RtzLBVVF90YJbB0wyMpUj9yQPeA+mteVUI9P70OG/opH47FeV5AWeaNWWgqJg==", - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@napi-rs/wasm-runtime": "^0.2.8" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.5.0.tgz", - "integrity": "sha512-FTZBxLL4SO1mgIM86KykzJmPeTPisBDHQV6xtfDXbTMrentuZ6SdQKJUV5BWaoUK3p8kIULlrCcucqdCnk8Npg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.5.0.tgz", - "integrity": "sha512-i5bB7vJ1waUsFciU/FKLd4Zw0VnAkvhiJ4//jYQXyDUuiLKodmtQZVTcOPU7pp97RrNgCFtXfC1gnvj/DHPJTw==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@unrs/resolver-binding-win32-x64-msvc": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.5.0.tgz", - "integrity": "sha512-wAvXp4k7jhioi4SebXW/yfzzYwsUCr9kIX4gCsUFKpCTUf8Mi7vScJXI3S+kupSUf0LbVHudR8qBbe2wFMSNUw==", - "cpu": [ - "x64" - ], + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "license": "ISC" }, "node_modules/acorn": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "version": "8.10.0", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -2014,9 +1612,8 @@ }, "node_modules/acorn-jsx": { "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, + "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } @@ -2031,9 +1628,8 @@ }, "node_modules/ajv": { "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -2111,37 +1707,30 @@ }, "node_modules/argparse": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "dev": true, + "license": "Python-2.0" }, "node_modules/array-buffer-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", - "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "version": "1.0.0", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/array-includes": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", - "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "version": "3.1.7", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", "is-string": "^1.0.7" }, "engines": { @@ -2151,18 +1740,24 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/array-union": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/array.prototype.findlastindex": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", - "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "version": "1.2.3", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.2.1" }, "engines": { "node": ">= 0.4" @@ -2206,18 +1801,15 @@ } }, "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", - "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "version": "1.0.1", "dev": true, + "license": "MIT", "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.2.1", - "get-intrinsic": "^1.2.3", - "is-array-buffer": "^3.0.4", + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", "is-shared-array-buffer": "^1.0.2" }, "engines": { @@ -2227,20 +1819,10 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/async": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", - "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", - "dev": true - }, "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "version": "1.0.5", "dev": true, - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -2411,19 +1993,12 @@ "license": "MIT" }, "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "version": "1.0.2", "dev": true, + "license": "MIT", "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2588,10 +2163,9 @@ "license": "MIT" }, "node_modules/cross-spawn": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.5.tgz", - "integrity": "sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==", + "version": "7.0.3", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -2601,64 +2175,13 @@ "node": ">= 8" } }, - "node_modules/data-view-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", - "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", - "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", - "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", "dev": true, "dependencies": { - "ms": "^2.1.3" + "ms": "2.1.2" }, "engines": { "node": ">=6.0" @@ -2695,30 +2218,11 @@ "node": ">=0.10.0" } }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "version": "1.2.0", "dev": true, + "license": "MIT", "dependencies": { - "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" }, @@ -2753,30 +2257,26 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/doctrine": { - "version": "3.0.0", + "node_modules/dir-glob": { + "version": "3.0.1", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "esutils": "^2.0.2" + "path-type": "^4.0.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=8" } }, - "node_modules/ejs": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", - "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "node_modules/doctrine": { + "version": "3.0.0", "dev": true, + "license": "Apache-2.0", "dependencies": { - "jake": "^10.8.5" - }, - "bin": { - "ejs": "bin/cli.js" + "esutils": "^2.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.0.0" } }, "node_modules/electron-to-chromium": { @@ -2801,9 +2301,9 @@ "license": "MIT" }, "node_modules/enhanced-resolve": { - "version": "5.17.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", - "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz", + "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==", "dev": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -2822,119 +2322,76 @@ } }, "node_modules/es-abstract": { - "version": "1.23.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", - "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "arraybuffer.prototype.slice": "^1.0.3", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "data-view-buffer": "^1.0.1", - "data-view-byte-length": "^1.0.1", - "data-view-byte-offset": "^1.0.0", - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.0.3", + "version": "1.22.1", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.1", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.4", - "get-symbol-description": "^1.0.2", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.2.1", + "get-symbol-description": "^1.0.0", "globalthis": "^1.0.3", "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", - "hasown": "^2.0.2", - "internal-slot": "^1.0.7", - "is-array-buffer": "^3.0.4", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.1", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.3", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.13", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", - "object-keys": "^1.1.1", - "object.assign": "^4.1.5", - "regexp.prototype.flags": "^1.5.2", - "safe-array-concat": "^1.1.2", - "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.9", - "string.prototype.trimend": "^1.0.8", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.2", - "typed-array-byte-length": "^1.0.1", - "typed-array-byte-offset": "^1.0.2", - "typed-array-length": "^1.0.6", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.15" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", - "dev": true, - "dependencies": { - "es-errors": "^1.3.0" + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.10", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.0", + "safe-array-concat": "^1.0.0", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.7", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.10" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/es-set-tostringtag": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", - "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "version": "2.0.1", "dev": true, + "license": "MIT", "dependencies": { - "get-intrinsic": "^1.2.4", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.1" + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" } }, "node_modules/es-shim-unscopables": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", - "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "version": "1.0.0", "dev": true, + "license": "MIT", "dependencies": { - "hasown": "^2.0.0" + "has": "^1.0.3" } }, "node_modules/es-to-primitive": { @@ -2973,69 +2430,63 @@ } }, "node_modules/eslint": { - "version": "9.14.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.14.0.tgz", - "integrity": "sha512-c2FHsVBr87lnUtjP4Yhvk4yEhKrQavGafRA/Se1ouse8PfbfC/Qh9Mxa00yWsZRlqeUB9raXip0aiiUZkgnr9g==", + "version": "8.57.0", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.18.0", - "@eslint/core": "^0.7.0", - "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.14.0", - "@eslint/plugin-kit": "^0.2.0", - "@humanfs/node": "^0.16.6", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.0", - "@types/estree": "^1.0.6", - "@types/json-schema": "^7.0.15", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", + "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.2.0", - "eslint-visitor-keys": "^4.2.0", - "espree": "^10.3.0", - "esquery": "^1.5.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^8.0.0", + "file-entry-cache": "^6.0.1", "find-up": "^5.0.0", "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", "text-table": "^0.2.0" }, "bin": { "eslint": "bin/eslint.js" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://eslint.org/donate" - }, - "peerDependencies": { - "jiti": "*" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - } + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-compat-utils": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz", - "integrity": "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.0.tgz", + "integrity": "sha512-dc6Y8tzEcSYZMHa+CMPLi/hyo1FzNeonbhJL7Ol0ccuKQkwopJcJBA9YL/xmMTLU1eKigXo9vj9nALElWYSowg==", "dev": true, "dependencies": { "semver": "^7.5.4" @@ -3048,9 +2499,7 @@ } }, "node_modules/eslint-config-prettier": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.2.tgz", - "integrity": "sha512-Epgp/EofAUeEpIdZkW60MHKvPyru1ruQJxPL+WIycnaPApuseK0Zpkrh/FwL9oIpQvIhJwV7ptOy0DWUjTlCiA==", + "version": "9.1.0", "dev": true, "license": "MIT", "bin": { @@ -3079,44 +2528,33 @@ } }, "node_modules/eslint-import-resolver-typescript": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-4.3.2.tgz", - "integrity": "sha512-T2LqBXj87ndEC9t1LrDiPkzalSFzD4rrXr6BTzGdgMx1jdQM4T972guQvg7Ih+LNO51GURXI/qMHS5GF3h1ilw==", + "version": "3.6.1", "dev": true, "license": "ISC", "dependencies": { - "debug": "^4.4.0", - "get-tsconfig": "^4.10.0", - "is-bun-module": "^2.0.0", - "stable-hash": "^0.0.5", - "tinyglobby": "^0.2.12", - "unrs-resolver": "^1.4.1" + "debug": "^4.3.4", + "enhanced-resolve": "^5.12.0", + "eslint-module-utils": "^2.7.4", + "fast-glob": "^3.3.1", + "get-tsconfig": "^4.5.0", + "is-core-module": "^2.11.0", + "is-glob": "^4.0.3" }, "engines": { - "node": "^16.17.0 || >=18.6.0" + "node": "^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://opencollective.com/eslint-import-resolver-typescript" + "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" }, "peerDependencies": { "eslint": "*", - "eslint-plugin-import": "*", - "eslint-plugin-import-x": "*" - }, - "peerDependenciesMeta": { - "eslint-plugin-import": { - "optional": true - }, - "eslint-plugin-import-x": { - "optional": true - } + "eslint-plugin-import": "*" } }, "node_modules/eslint-module-utils": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", - "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", + "version": "2.8.0", "dev": true, + "license": "MIT", "dependencies": { "debug": "^3.2.7" }, @@ -3138,88 +2576,76 @@ } }, "node_modules/eslint-plugin-es-x": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.8.0.tgz", - "integrity": "sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.6.0.tgz", + "integrity": "sha512-I0AmeNgevgaTR7y2lrVCJmGYF0rjoznpDvqV/kIkZSZbZ8Rw3eu4cGlvBBULScfkSOCzqKbff5LR4CNrV7mZHA==", "dev": true, - "funding": [ - "https://github.com/sponsors/ota-meshi", - "https://opencollective.com/eslint" - ], "dependencies": { "@eslint-community/eslint-utils": "^4.1.2", - "@eslint-community/regexpp": "^4.11.0", - "eslint-compat-utils": "^0.5.1" + "@eslint-community/regexpp": "^4.6.0", + "eslint-compat-utils": "^0.5.0" }, "engines": { "node": "^14.18.0 || >=16.0.0" }, + "funding": { + "url": "https://github.com/sponsors/ota-meshi" + }, "peerDependencies": { "eslint": ">=8" } }, "node_modules/eslint-plugin-import": { - "version": "2.31.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", - "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", + "version": "2.29.1", "dev": true, + "license": "MIT", "dependencies": { - "@rtsao/scc": "^1.1.0", - "array-includes": "^3.1.8", - "array.prototype.findlastindex": "^1.2.5", + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", "array.prototype.flat": "^1.3.2", "array.prototype.flatmap": "^1.3.2", "debug": "^3.2.7", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.12.0", - "hasown": "^2.0.2", - "is-core-module": "^2.15.1", + "eslint-module-utils": "^2.8.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", - "object.fromentries": "^2.0.8", - "object.groupby": "^1.0.3", - "object.values": "^1.2.0", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", "semver": "^6.3.1", - "string.prototype.trimend": "^1.0.8", "tsconfig-paths": "^3.15.0" }, "engines": { "node": ">=4" }, "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" } }, "node_modules/eslint-plugin-import-x": { - "version": "4.10.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-import-x/-/eslint-plugin-import-x-4.10.3.tgz", - "integrity": "sha512-Q7yx76tlOfzLGtXDt/sppdYrGNcbr9CrRXqJXTNIpM/7hfX9lRp1noE+PkYgN+xvW47TEeGZ0pgy29hlX9Y7UQ==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import-x/-/eslint-plugin-import-x-0.5.1.tgz", + "integrity": "sha512-2JK8bbFOLes+gG6tgdnM8safCxMAj4u2wjX8X1BRFPfnY7Ct2hFYESoIcVwABX/DDcdpQFLGtKmzbNEWJZD9iQ==", "dev": true, - "license": "MIT", "dependencies": { - "@pkgr/core": "^0.2.2", - "@types/doctrine": "^0.0.9", - "@typescript-eslint/utils": "^8.29.1", - "debug": "^4.4.0", + "@typescript-eslint/utils": "^7.4.0", + "debug": "^4.3.4", "doctrine": "^3.0.0", "eslint-import-resolver-node": "^0.3.9", - "get-tsconfig": "^4.10.0", + "get-tsconfig": "^4.7.3", "is-glob": "^4.0.3", - "minimatch": "^9.0.3 || ^10.0.1", - "semver": "^7.7.1", - "stable-hash": "^0.0.5", - "tslib": "^2.8.1", - "unrs-resolver": "^1.5.0" + "minimatch": "^9.0.3", + "semver": "^7.6.0", + "tslib": "^2.6.2" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint-plugin-import-x" + "node": ">=16" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" + "eslint": "^8.56.0 || ^9.0.0-0" } }, "node_modules/eslint-plugin-import-x/node_modules/brace-expansion": { @@ -3304,18 +2730,18 @@ } }, "node_modules/eslint-plugin-jest": { - "version": "28.11.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-28.11.0.tgz", - "integrity": "sha512-QAfipLcNCWLVocVbZW8GimKn5p5iiMcgGbRzz8z/P5q7xw+cNEpYqyzFMtIF/ZgF2HLOyy+dYBut+DoYolvqig==", + "version": "28.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-28.6.0.tgz", + "integrity": "sha512-YG28E1/MIKwnz+e2H7VwYPzHUYU4aMa19w0yGcwXnnmJH6EfgHahTJ2un3IyraUxNfnz/KUhJAFXNNwWPo12tg==", "dev": true, "dependencies": { - "@typescript-eslint/utils": "^6.0.0 || ^7.0.0 || ^8.0.0" + "@typescript-eslint/utils": "^6.0.0 || ^7.0.0" }, "engines": { "node": "^16.10.0 || ^18.12.0 || >=20.0.0" }, "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^6.0.0 || ^7.0.0 || ^8.0.0", + "@typescript-eslint/eslint-plugin": "^6.0.0 || ^7.0.0", "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0", "jest": "*" }, @@ -3329,20 +2755,19 @@ } }, "node_modules/eslint-plugin-n": { - "version": "17.17.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.17.0.tgz", - "integrity": "sha512-2VvPK7Mo73z1rDFb6pTvkH6kFibAmnTubFq5l83vePxu0WiY1s0LOtj2WHb6Sa40R3w4mnh8GFYbHBQyMlotKw==", + "version": "17.8.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.8.1.tgz", + "integrity": "sha512-KdG0h0voZms8UhndNu8DeWx1eM4sY+A4iXtsNo6kOfJLYHNeTGPacGalJ9GcvrbmOL3r/7QOMwVZDSw+1SqsrA==", "dev": true, - "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.5.0", - "enhanced-resolve": "^5.17.1", - "eslint-plugin-es-x": "^7.8.0", - "get-tsconfig": "^4.8.1", - "globals": "^15.11.0", - "ignore": "^5.3.2", - "minimatch": "^9.0.5", - "semver": "^7.6.3" + "@eslint-community/eslint-utils": "^4.4.0", + "enhanced-resolve": "^5.17.0", + "eslint-plugin-es-x": "^7.5.0", + "get-tsconfig": "^4.7.0", + "globals": "^15.0.0", + "ignore": "^5.2.4", + "minimatch": "^9.0.0", + "semver": "^7.5.3" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3364,9 +2789,9 @@ } }, "node_modules/eslint-plugin-n/node_modules/globals": { - "version": "15.11.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.11.0.tgz", - "integrity": "sha512-yeyNSjdbyVaWurlwCpcA6XNBrHTMIeDdj0/hnvX/OLJ9ekOXYbLsLinH/MucQyGvNnXhidTdNhTtJaffL2sMfw==", + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.3.0.tgz", + "integrity": "sha512-cCdyVjIUVTtX8ZsPkq1oCsOsLmGIswqnjZYMJJTGaNApj1yHtLSymKhwH51ttirREn75z3p4k051clwg7rvNKA==", "dev": true, "engines": { "node": ">=18" @@ -3376,9 +2801,9 @@ } }, "node_modules/eslint-plugin-n/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -3391,14 +2816,12 @@ } }, "node_modules/eslint-plugin-prettier": { - "version": "5.2.6", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.6.tgz", - "integrity": "sha512-mUcf7QG2Tjk7H055Jk0lGBjbgDnfrvqjhXh9t2xLMSCjZVcw9Rb1V6sVNXO0th3jgeO7zllWPTNRil3JW94TnQ==", + "version": "5.1.3", "dev": true, "license": "MIT", "dependencies": { "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.11.0" + "synckit": "^0.8.6" }, "engines": { "node": "^14.18.0 || >=16.0.0" @@ -3409,7 +2832,7 @@ "peerDependencies": { "@types/eslint": ">=8.0.0", "eslint": ">=8.0.0", - "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", + "eslint-config-prettier": "*", "prettier": ">=3.0.0" }, "peerDependenciesMeta": { @@ -3422,34 +2845,32 @@ } }, "node_modules/eslint-plugin-simple-import-sort": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-12.1.1.tgz", - "integrity": "sha512-6nuzu4xwQtE3332Uz0to+TxDQYRLTKRESSc2hefVT48Zc8JthmN23Gx9lnYhu0FtkRSL1oxny3kJ2aveVhmOVA==", + "version": "12.1.0", "dev": true, + "license": "MIT", "peerDependencies": { "eslint": ">=5.0.0" } }, - "node_modules/eslint-scope": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", - "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, + "license": "Apache-2.0", "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", "dev": true, - "license": "Apache-2.0", + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -3457,42 +2878,25 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", - "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", "dev": true, + "license": "BSD-2-Clause", "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=4.0" } }, "node_modules/espree": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", - "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", + "version": "9.6.1", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "acorn": "^8.14.0", + "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "eslint-visitor-keys": "^3.4.1" }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", - "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", - "dev": true, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -3521,11 +2925,18 @@ "node": ">=0.10" } }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, "node_modules/esrecurse": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -3533,11 +2944,10 @@ "node": ">=4.0" } }, - "node_modules/estraverse": { + "node_modules/esrecurse/node_modules/estraverse": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -3596,9 +3006,8 @@ }, "node_modules/fast-deep-equal": { "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-diff": { "version": "1.2.0", @@ -3606,10 +3015,9 @@ "license": "Apache-2.0" }, "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "version": "3.3.1", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -3643,10 +3051,9 @@ "license": "MIT" }, "node_modules/fast-sort": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/fast-sort/-/fast-sort-3.4.1.tgz", - "integrity": "sha512-76uvGPsF6So53sZAqenP9UVT3p5l7cyTHkLWVCMinh41Y8NDrK1IYXJgaBMfc1gk7nJiSRZp676kddFG2Aa5+A==", - "dev": true + "version": "3.4.0", + "dev": true, + "license": "MIT" }, "node_modules/fastq": { "version": "1.14.0", @@ -3665,45 +3072,14 @@ } }, "node_modules/file-entry-cache": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", - "dev": true, - "dependencies": { - "flat-cache": "^4.0.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/filelist": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", - "dev": true, - "dependencies": { - "minimatch": "^5.0.1" - } - }, - "node_modules/filelist/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/filelist/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "version": "6.0.1", "dev": true, + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" + "flat-cache": "^3.0.4" }, "engines": { - "node": ">=10" + "node": "^10.12.0 || >=12.0.0" } }, "node_modules/fill-range": { @@ -3733,29 +3109,26 @@ } }, "node_modules/flat-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", - "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "version": "3.0.4", "dev": true, + "license": "MIT", "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.4" + "flatted": "^3.1.0", + "rimraf": "^3.0.2" }, "engines": { - "node": ">=16" + "node": "^10.12.0 || >=12.0.0" } }, "node_modules/flatted": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", - "dev": true + "version": "3.2.7", + "dev": true, + "license": "ISC" }, "node_modules/for-each": { "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "dev": true, + "license": "MIT", "dependencies": { "is-callable": "^1.1.3" } @@ -3801,15 +3174,14 @@ } }, "node_modules/function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "version": "1.1.5", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" }, "engines": { "node": ">= 0.4" @@ -3820,9 +3192,8 @@ }, "node_modules/functions-have-names": { "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -3844,19 +3215,14 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "version": "1.2.1", "dev": true, + "license": "MIT", "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", + "function-bind": "^1.1.1", + "has": "^1.0.3", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" + "has-symbols": "^1.0.3" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3882,14 +3248,12 @@ } }, "node_modules/get-symbol-description": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", - "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "version": "1.0.0", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" }, "engines": { "node": ">= 0.4" @@ -3899,11 +3263,10 @@ } }, "node_modules/get-tsconfig": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.0.tgz", - "integrity": "sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==", + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.5.tgz", + "integrity": "sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==", "dev": true, - "license": "MIT", "dependencies": { "resolve-pkg-maps": "^1.0.0" }, @@ -3942,12 +3305,14 @@ } }, "node_modules/globals": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", - "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "version": "13.24.0", "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, "engines": { - "node": ">=18" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -3967,11 +3332,29 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/globby": { + "version": "11.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/gopd": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "dev": true, + "license": "MIT", "dependencies": { "get-intrinsic": "^1.1.3" }, @@ -3989,6 +3372,17 @@ "dev": true, "license": "MIT" }, + "node_modules/has": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, "node_modules/has-bigints": { "version": "1.0.2", "dev": true, @@ -4006,22 +3400,20 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "version": "1.0.0", "dev": true, + "license": "MIT", "dependencies": { - "es-define-property": "^1.0.0" + "get-intrinsic": "^1.1.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "version": "1.0.1", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -4041,12 +3433,11 @@ } }, "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "version": "1.0.0", "dev": true, + "license": "MIT", "dependencies": { - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -4056,10 +3447,9 @@ } }, "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "version": "2.0.0", "dev": true, + "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -4081,19 +3471,17 @@ } }, "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "version": "5.3.1", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/import-fresh": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, + "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -4146,13 +3534,12 @@ "license": "ISC" }, "node_modules/internal-slot": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", - "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "version": "1.0.5", "dev": true, + "license": "MIT", "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.0", + "get-intrinsic": "^1.2.0", + "has": "^1.0.3", "side-channel": "^1.0.4" }, "engines": { @@ -4160,16 +3547,13 @@ } }, "node_modules/is-array-buffer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", - "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "version": "3.0.2", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4191,35 +3575,14 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bun-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", - "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.7.1" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", + "node_modules/is-boolean-object": { + "version": "1.1.2", "dev": true, "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -4227,14 +3590,10 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-core-module": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", - "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "node_modules/is-callable": { + "version": "1.2.7", "dev": true, - "dependencies": { - "hasown": "^2.0.2" - }, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -4242,16 +3601,12 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-data-view": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", - "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "node_modules/is-core-module": { + "version": "2.13.1", "dev": true, + "license": "MIT", "dependencies": { - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4307,10 +3662,9 @@ } }, "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "version": "2.0.2", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -4340,11 +3694,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/is-regex": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -4357,15 +3718,11 @@ } }, "node_modules/is-shared-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", - "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "version": "1.0.2", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" + "call-bind": "^1.0.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4411,12 +3768,11 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "version": "1.1.12", "dev": true, + "license": "MIT", "dependencies": { - "which-typed-array": "^1.1.14" + "which-typed-array": "^1.1.11" }, "engines": { "node": ">= 0.4" @@ -4438,9 +3794,8 @@ }, "node_modules/isarray": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", @@ -4516,24 +3871,6 @@ "node": ">=8" } }, - "node_modules/jake": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.1.tgz", - "integrity": "sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w==", - "dev": true, - "dependencies": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.4", - "minimatch": "^3.1.2" - }, - "bin": { - "jake": "bin/cli.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/jest": { "version": "29.7.0", "dev": true, @@ -5101,9 +4438,8 @@ }, "node_modules/js-yaml": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -5122,12 +4458,6 @@ "node": ">=4" } }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "dev": true, @@ -5135,9 +4465,8 @@ }, "node_modules/json-schema-traverse": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", @@ -5155,15 +4484,6 @@ "node": ">=6" } }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "dependencies": { - "json-buffer": "3.0.1" - } - }, "node_modules/kleur": { "version": "3.0.3", "dev": true, @@ -5364,10 +4684,9 @@ } }, "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "version": "2.1.2", + "dev": true, + "license": "MIT" }, "node_modules/natural-compare": { "version": "1.4.0", @@ -5404,13 +4723,9 @@ } }, "node_modules/object-inspect": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", - "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "version": "1.12.3", "dev": true, - "engines": { - "node": ">= 0.4" - }, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -5424,13 +4739,12 @@ } }, "node_modules/object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "version": "4.1.4", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", "has-symbols": "^1.0.3", "object-keys": "^1.1.1" }, @@ -5442,15 +4756,13 @@ } }, "node_modules/object.fromentries": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", - "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "version": "2.0.7", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "engines": { "node": ">= 0.4" @@ -5460,28 +4772,24 @@ } }, "node_modules/object.groupby": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", - "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "version": "1.0.1", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2" - }, - "engines": { - "node": ">= 0.4" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1" } }, "node_modules/object.values": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", - "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "version": "1.1.7", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "engines": { "node": ">= 0.4" @@ -5566,9 +4874,8 @@ }, "node_modules/parent-module": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, + "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -5622,6 +4929,14 @@ "dev": true, "license": "MIT" }, + "node_modules/path-type": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/picocolors": { "version": "1.0.0", "dev": true, @@ -5705,15 +5020,6 @@ "node": ">=8" } }, - "node_modules/possible-typed-array-names": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/prelude-ls": { "version": "1.2.1", "dev": true, @@ -5786,9 +5092,8 @@ }, "node_modules/punycode": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -5833,15 +5138,13 @@ "license": "MIT" }, "node_modules/regexp.prototype.flags": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", - "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "version": "1.5.0", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "set-function-name": "^2.0.1" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "functions-have-names": "^1.2.3" }, "engines": { "node": ">= 0.4" @@ -5895,9 +5198,8 @@ }, "node_modules/resolve-from": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -5928,6 +5230,20 @@ "node": ">=0.10.0" } }, + "node_modules/rimraf": { + "version": "3.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "dev": true, @@ -5951,13 +5267,12 @@ } }, "node_modules/safe-array-concat": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", - "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "version": "1.0.0", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4", + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", "has-symbols": "^1.0.3", "isarray": "^2.0.5" }, @@ -5969,26 +5284,20 @@ } }, "node_modules/safe-regex-test": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", - "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "version": "1.0.0", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", "is-regex": "^1.1.4" }, - "engines": { - "node": ">= 0.4" - }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "version": "7.6.2", "dev": true, "license": "ISC", "bin": { @@ -5998,38 +5307,6 @@ "node": ">=10" } }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/shebang-command": { "version": "2.0.0", "dev": true, @@ -6050,18 +5327,13 @@ } }, "node_modules/side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "version": "1.0.4", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" - }, - "engines": { - "node": ">= 0.4" + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -6073,14 +5345,13 @@ "license": "ISC" }, "node_modules/simple-git": { - "version": "3.27.0", - "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.27.0.tgz", - "integrity": "sha512-ivHoFS9Yi9GY49ogc6/YAi3Fl9ROnF4VyubNylgCkA+RVqLaKWnDSzXOVzya8csELIaWaYNutsEuAhZrtOjozA==", + "version": "3.24.0", "dev": true, + "license": "MIT", "dependencies": { "@kwsites/file-exists": "^1.1.1", "@kwsites/promise-deferred": "^1.1.1", - "debug": "^4.3.5" + "debug": "^4.3.4" }, "funding": { "type": "github", @@ -6122,13 +5393,6 @@ "dev": true, "license": "BSD-3-Clause" }, - "node_modules/stable-hash": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.5.tgz", - "integrity": "sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==", - "dev": true, - "license": "MIT" - }, "node_modules/stack-utils": { "version": "2.0.6", "dev": true, @@ -6174,15 +5438,13 @@ } }, "node_modules/string.prototype.trim": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", - "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "version": "1.2.7", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.0", - "es-object-atoms": "^1.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" }, "engines": { "node": ">= 0.4" @@ -6192,31 +5454,26 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", - "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "version": "1.0.6", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "version": "1.0.6", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -6291,20 +5548,18 @@ } }, "node_modules/synckit": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.3.tgz", - "integrity": "sha512-szhWDqNNI9etJUvbZ1/cx1StnZx8yMmFxme48SwR4dty4ioSY50KEZlpv0qAfgc1fpRzuh9hBXEzoCpJ779dLg==", + "version": "0.8.8", "dev": true, "license": "MIT", "dependencies": { - "@pkgr/core": "^0.2.1", - "tslib": "^2.8.1" + "@pkgr/core": "^0.1.0", + "tslib": "^2.6.2" }, "engines": { "node": "^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://opencollective.com/synckit" + "url": "https://opencollective.com/unts" } }, "node_modules/tapable": { @@ -6351,54 +5606,8 @@ }, "node_modules/text-table": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/tinyglobby": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.12.tgz", - "integrity": "sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==", - "dev": true, - "license": "MIT", - "dependencies": { - "fdir": "^6.4.3", - "picomatch": "^4.0.2" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" - } - }, - "node_modules/tinyglobby/node_modules/fdir": { - "version": "6.4.3", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.3.tgz", - "integrity": "sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } + "license": "MIT" }, "node_modules/tmpl": { "version": "1.0.5", @@ -6425,35 +5634,30 @@ } }, "node_modules/ts-api-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.1.tgz", - "integrity": "sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==", + "version": "1.3.0", "dev": true, "license": "MIT", "engines": { - "node": ">=18.12" + "node": ">=16" }, "peerDependencies": { - "typescript": ">=4.8.4" + "typescript": ">=4.2.0" } }, "node_modules/ts-jest": { - "version": "29.3.2", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.3.2.tgz", - "integrity": "sha512-bJJkrWc6PjFVz5g2DGCNUo8z7oFEYaz1xP1NpeDU7KNLMWPpEyV8Chbpkn8xjzgRDpQhnGMyvyldoL7h8JXyug==", + "version": "29.1.4", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.4.tgz", + "integrity": "sha512-YiHwDhSvCiItoAgsKtoLFCuakDzDsJ1DLDnSouTaTmdOcOwIkSzbLXduaQ6M5DRVhuZC/NYaaZ/mtHbWMv/S6Q==", "dev": true, - "license": "MIT", "dependencies": { - "bs-logger": "^0.2.6", - "ejs": "^3.1.10", - "fast-json-stable-stringify": "^2.1.0", + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", "jest-util": "^29.0.0", "json5": "^2.2.3", - "lodash.memoize": "^4.1.2", - "make-error": "^1.3.6", - "semver": "^7.7.1", - "type-fest": "^4.39.1", - "yargs-parser": "^21.1.1" + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "^7.5.3", + "yargs-parser": "^21.0.1" }, "bin": { "ts-jest": "cli.js" @@ -6551,9 +5755,7 @@ } }, "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "version": "2.6.2", "dev": true, "license": "0BSD" }, @@ -6577,43 +5779,38 @@ } }, "node_modules/type-fest": { - "version": "4.39.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.39.1.tgz", - "integrity": "sha512-uW9qzd66uyHYxwyVBYiwS4Oi0qZyUqwjU+Oevr6ZogYiXt99EOYtwvzMSLw1c3lYo2HzJsep/NB23iEVEgjG/w==", + "version": "0.20.2", "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=16" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/typed-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", - "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "version": "1.0.0", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.13" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" }, "engines": { "node": ">= 0.4" } }, "node_modules/typed-array-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", - "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "version": "1.0.0", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.2", "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" }, "engines": { "node": ">= 0.4" @@ -6623,17 +5820,15 @@ } }, "node_modules/typed-array-byte-offset": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", - "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "version": "1.0.0", "dev": true, + "license": "MIT", "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" }, "engines": { "node": ">= 0.4" @@ -6643,29 +5838,20 @@ } }, "node_modules/typed-array-length": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", - "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "version": "1.0.4", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.2", "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" + "is-typed-array": "^1.1.9" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/typescript": { - "version": "5.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", - "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "version": "5.4.5", "dev": true, "license": "Apache-2.0", "bin": { @@ -6677,26 +5863,29 @@ } }, "node_modules/typescript-eslint": { - "version": "8.29.1", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.29.1.tgz", - "integrity": "sha512-f8cDkvndhbQMPcysk6CUSGBWV+g1utqdn71P5YKwMumVMOG/5k7cHq0KyG4O52nB0oKS4aN2Tp5+wB4APJGC+w==", + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-7.12.0.tgz", + "integrity": "sha512-D6HKNbQcnNu3BaN4HkQCR16tgG8Q2AMUWPgvhrJksOXu+d6ys07yC06ONiV2kcsEfWC22voB6C3PvK2MqlBZ7w==", "dev": true, - "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.29.1", - "@typescript-eslint/parser": "8.29.1", - "@typescript-eslint/utils": "8.29.1" + "@typescript-eslint/eslint-plugin": "7.12.0", + "@typescript-eslint/parser": "7.12.0", + "@typescript-eslint/utils": "7.12.0" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/unbox-primitive": { @@ -6714,40 +5903,10 @@ } }, "node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "version": "5.26.5", "dev": true, "license": "MIT" }, - "node_modules/unrs-resolver": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.5.0.tgz", - "integrity": "sha512-6aia3Oy7SEe0MuUGQm2nsyob0L2+g57w178K5SE/3pvSGAIp28BB2O921fKx424Ahc/gQ6v0DXFbhcpyhGZdOA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/JounQin" - }, - "optionalDependencies": { - "@unrs/resolver-binding-darwin-arm64": "1.5.0", - "@unrs/resolver-binding-darwin-x64": "1.5.0", - "@unrs/resolver-binding-freebsd-x64": "1.5.0", - "@unrs/resolver-binding-linux-arm-gnueabihf": "1.5.0", - "@unrs/resolver-binding-linux-arm-musleabihf": "1.5.0", - "@unrs/resolver-binding-linux-arm64-gnu": "1.5.0", - "@unrs/resolver-binding-linux-arm64-musl": "1.5.0", - "@unrs/resolver-binding-linux-ppc64-gnu": "1.5.0", - "@unrs/resolver-binding-linux-riscv64-gnu": "1.5.0", - "@unrs/resolver-binding-linux-s390x-gnu": "1.5.0", - "@unrs/resolver-binding-linux-x64-gnu": "1.5.0", - "@unrs/resolver-binding-linux-x64-musl": "1.5.0", - "@unrs/resolver-binding-wasm32-wasi": "1.5.0", - "@unrs/resolver-binding-win32-arm64-msvc": "1.5.0", - "@unrs/resolver-binding-win32-ia32-msvc": "1.5.0", - "@unrs/resolver-binding-win32-x64-msvc": "1.5.0" - } - }, "node_modules/update-browserslist-db": { "version": "1.0.10", "dev": true, @@ -6775,9 +5934,8 @@ }, "node_modules/uri-js": { "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } @@ -6851,16 +6009,15 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", - "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "version": "1.1.11", "dev": true, + "license": "MIT", "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.2" + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -6921,11 +6078,10 @@ "license": "ISC" }, "node_modules/yaml": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.1.tgz", - "integrity": "sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==", + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz", + "integrity": "sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==", "dev": true, - "license": "ISC", "bin": { "yaml": "bin.mjs" }, diff --git a/package.json b/package.json index fc0a74550..2a5c1a73d 100644 --- a/package.json +++ b/package.json @@ -9,38 +9,38 @@ "@jest/console": "^29.4.1", "@jest/reporters": "^29.4.1", "@jest/test-result": "^29.4.1", - "@trunkio/launcher": "^1.3.4", + "@trunkio/launcher": "^1.3.1", "@types/caller": "^1.0.2", "@types/debug": "^4.1.12", - "@types/jest": "^29.5.14", + "@types/jest": "^29.5.12", "@types/jest-specific-snapshot": "^0.5.9", - "@types/node": "^22.14.1", - "@types/semver": "^7.7.0", - "@typescript-eslint/eslint-plugin": "^8.29.1", - "@typescript-eslint/parser": "^8.29.1", + "@types/node": "^20.14.2", + "@types/semver": "^7.5.8", + "@typescript-eslint/eslint-plugin": "^7.12.0", + "@typescript-eslint/parser": "^7.12.0", "caller": "^1.1.0", - "debug": "^4.4.0", - "eslint": "9.14.0", - "eslint-config-prettier": "^10.1.2", - "eslint-import-resolver-typescript": "^4.3.2", - "eslint-plugin-import": "^2.31.0", - "eslint-plugin-import-x": "^4.10.3", - "eslint-plugin-jest": "^28.11.0", - "eslint-plugin-n": "^17.17.0", - "eslint-plugin-prettier": "^5.2.6", - "eslint-plugin-simple-import-sort": "^12.1.1", - "fast-sort": "^3.4.1", + "debug": "^4.3.5", + "eslint": "^8.57.0", + "eslint-config-prettier": "^9.1.0", + "eslint-import-resolver-typescript": "^3.5.2", + "eslint-plugin-import": "^2.29.1", + "eslint-plugin-import-x": "^0.5.1", + "eslint-plugin-jest": "^28.6.0", + "eslint-plugin-n": "^17.8.1", + "eslint-plugin-prettier": "^5.1.3", + "eslint-plugin-simple-import-sort": "^12.1.0", + "fast-sort": "^3.2.0", "jest": "^29.3.1", "jest-junit": "^16.0.0", "jest-specific-snapshot": "^8.0.0", - "semver": "^7.7.1", - "simple-git": "^3.27.0", - "ts-jest": "^29.3.2", + "semver": "^7.6.2", + "simple-git": "^3.24.0", + "ts-jest": "^29.1.4", "ts-node": "^10.9.2", "tsconfig-paths": "^4.1.2", - "typescript": "^5.8.3", - "typescript-eslint": "^8.29.1", - "yaml": "^2.7.1" + "typescript": "^5.4.5", + "typescript-eslint": "^7.12.0", + "yaml": "^2.4.5" }, "bundleDependencies": [ "tests" diff --git a/repo-tools/definition-checker/check.ts b/repo-tools/definition-checker/check.ts index c6bb04fc7..64ffaf2f8 100644 --- a/repo-tools/definition-checker/check.ts +++ b/repo-tools/definition-checker/check.ts @@ -1,6 +1,6 @@ import fs from "fs"; import path from "path"; -// trunk-ignore(eslint/import-x/no-extraneous-dependencies) +// trunk-ignore(eslint/import/no-extraneous-dependencies) import YAML from "yaml"; // Avoid strictly typing composite config diff --git a/runtimes/java/plugin.yaml b/runtimes/java/plugin.yaml index d470e3f50..d74abba50 100644 --- a/runtimes/java/plugin.yaml +++ b/runtimes/java/plugin.yaml @@ -4,16 +4,6 @@ downloads: # implementing the Java runtime. The Temurin releases are hosted on GitHub, which would allow us # to use "latest version query" logic on them, but their release naming isn't trivially compatible # with our current schema (e.g. JDK 11.0.17+8 has URL /jdk-11.0.17+8/[...]_11.0.17_8.tar.gz). - - name: jdk-23 - downloads: - - os: - linux: linux - macos: macosx - cpu: - x86_64: x64 - arm_64: aarch64 - url: https://cdn.azul.com/zulu/bin/zulu23.30.13-ca-jdk23.0.1-${os}_${cpu}.tar.gz - strip_components: 1 - name: jdk-17 downloads: @@ -63,7 +53,7 @@ downloads: runtimes: definitions: - type: java - download: jdk-23 + download: jdk-13 runtime_environment: - name: HOME value: ${env.HOME:-} diff --git a/runtimes/node/plugin.yaml b/runtimes/node/plugin.yaml index 6457ca6f6..09657f4b5 100644 --- a/runtimes/node/plugin.yaml +++ b/runtimes/node/plugin.yaml @@ -47,10 +47,6 @@ runtimes: - name: NPM_CONFIG_USERCONFIG value: ${env.NPM_CONFIG_USERCONFIG} optional: true - # Necessary for some Windows install scripts - - name: COMSPEC - value: ${env.COMSPEC} - optional: true linter_environment: - name: PATH list: ["${linter}/node_modules/.bin"] @@ -59,7 +55,7 @@ runtimes: - name: NODE_OPTIONS value: ${env.NODE_OPTIONS} optional: true - known_good_version: 18.20.5 + known_good_version: 18.12.1 version_commands: - run: node --version parse_regex: ${semver} diff --git a/runtimes/php/plugin.yaml b/runtimes/php/plugin.yaml index 653287088..bd4db0d78 100644 --- a/runtimes/php/plugin.yaml +++ b/runtimes/php/plugin.yaml @@ -2,13 +2,13 @@ version: 0.1 downloads: # Needed for the php runtime to install packages - name: composer executable: true - version: 2.8.3 + version: 2.5.1 downloads: - - version: 2.8.3 + - version: 2.5.1 gpg: CBB3D576F2A0946F - name: phive executable: true - version: 0.15.3 + version: 0.15.1 downloads: - url: https://github.com/phar-io/phive/releases/download/${version}/phive-${version}.phar runtimes: diff --git a/runtimes/python/plugin.yaml b/runtimes/python/plugin.yaml index e1161d33d..300eead83 100644 --- a/runtimes/python/plugin.yaml +++ b/runtimes/python/plugin.yaml @@ -66,22 +66,6 @@ downloads: version: <=3.11.6 url: https://github.com/indygreg/python-build-standalone/releases/download/20231002/cpython-${version}+20231002-${cpu}-${os}-install_only.tar.gz strip_components: 1 - - os: - linux: unknown-linux-gnu - macos: apple-darwin - cpu: - x86_64: x86_64 - arm_64: aarch64 - version: <=3.11.9 - url: https://github.com/indygreg/python-build-standalone/releases/download/20240415/cpython-${version}+20240415-${cpu}-${os}-install_only.tar.gz - strip_components: 1 - - os: - windows: pc-windows-msvc-shared - cpu: - x86_64: x86_64 - version: <=3.11.9 - url: https://github.com/indygreg/python-build-standalone/releases/download/20240415/cpython-${version}+20240415-${cpu}-${os}-install_only.tar.gz - strip_components: 1 # Note that older versions of pylint, djlint, flake8 are not compatible with python@3.12 - os: linux: unknown-linux-gnu diff --git a/runtimes/ruby/plugin.yaml b/runtimes/ruby/plugin.yaml index af8da07fa..a7355bbe0 100644 --- a/runtimes/ruby/plugin.yaml +++ b/runtimes/ruby/plugin.yaml @@ -1,15 +1,15 @@ version: 0.1 downloads: - name: ruby-build - version: 20250409 + version: 20240319 downloads: - os: linux: linux macos: macos - url: https://github.com/rbenv/ruby-build/archive/refs/tags/v20250409.tar.gz + url: https://github.com/rbenv/ruby-build/archive/refs/tags/v20240319.tar.gz strip_components: 1 - name: ruby-install - version: 3.4.2 + version: 3.1.4 downloads: # Functionally a separate download used for Windows only. Runs OOTB and does not require a prepare build step. - os: windows @@ -44,7 +44,7 @@ runtimes: - name: SYSTEMDRIVE value: ${env.SYSTEMDRIVE} optional: true - known_good_version: 3.4.2 + known_good_version: 3.1.4 version_commands: - run: ruby --version parse_regex: ruby ${semver}(p+.*)? diff --git a/runtimes/rust/plugin.yaml b/runtimes/rust/plugin.yaml index 1d16ec7b9..8dd7b4acc 100644 --- a/runtimes/rust/plugin.yaml +++ b/runtimes/rust/plugin.yaml @@ -35,7 +35,7 @@ runtimes: linter_environment: - name: PATH list: ["${linter}/bin"] - known_good_version: 1.82.0 + known_good_version: 1.71.1 version_commands: - run: rustc --version parse_regex: ${semver} diff --git a/tests/driver/driver.ts b/tests/driver/driver.ts index 6716ecc9a..478ca93b4 100644 --- a/tests/driver/driver.ts +++ b/tests/driver/driver.ts @@ -31,8 +31,8 @@ const UNINITIALIZED_ERROR = `You have attempted to modify the sandbox before it Please call this method after setup has been called.`; export const executionEnv = (sandbox: string) => { - // trunk-ignore(eslint/@typescript-eslint/no-unused-vars): Remove vars. - const { PWD, INIT_CWD, ...strippedEnv } = process.env; + // trunk-ignore(eslint/@typescript-eslint/no-unused-vars): Strip TRUNK_CLI_VERSION from CI-Debugger + const { PWD, INIT_CWD, TRUNK_CLI_VERSION, ...strippedEnv } = process.env; return { ...strippedEnv, // This keeps test downloads separate from manual trunk invocations diff --git a/tests/driver/lint_driver.ts b/tests/driver/lint_driver.ts index cee8ce1c9..6fd118492 100644 --- a/tests/driver/lint_driver.ts +++ b/tests/driver/lint_driver.ts @@ -94,7 +94,7 @@ runtimes: enabled: # required in order to query latest - go@1.21.0 - - node@18.20.5 + - node@18.12.1 - python@3.10.8 - ruby@3.1.4 plugins: @@ -126,7 +126,7 @@ lint: (this.getFullTrunkConfig().lint.definitions.find( ({ name }: { name: string }) => name === this.linter, )?.known_good_version as string) ?? ""; - // trunk-ignore(eslint/@typescript-eslint/no-unnecessary-template-expression): Convert kgv to string + // trunk-ignore(eslint/@typescript-eslint/no-useless-template-literals): Convert kgv to string if (this.linter === "include-what-you-use" && `${kgv}`.length === 3) { // TODO(Tyler): `trunk config print` does not correctly wrap quotes around kgv, so we must patch iwyu here return `${kgv}0`; @@ -149,7 +149,7 @@ lint: let newTrunkContents = ""; try { - // trunk-ignore(eslint/@typescript-eslint/no-unnecessary-template-expression): Cast to string to handle decimal case + // trunk-ignore(eslint/@typescript-eslint/no-useless-template-literals): Cast to string to handle decimal case const version = `${this.extractLinterVersion()}`; const versionString = version.length > 0 ? `@${version}` : ""; const linterVersionString = `${this.linter}${versionString}`; diff --git a/tests/driver/tool_driver.ts b/tests/driver/tool_driver.ts index d2ae68b6a..ff578b068 100644 --- a/tests/driver/tool_driver.ts +++ b/tests/driver/tool_driver.ts @@ -84,7 +84,7 @@ lint: return; } try { - // trunk-ignore(eslint/@typescript-eslint/no-unnecessary-template-expression): Cast to string to handle decimal case + // trunk-ignore(eslint/@typescript-eslint/no-useless-template-literals): Cast to string to handle decimal case const version = `${this.extractToolVersion()}`; const versionString = version.length > 0 ? `@${version}` : ""; const toolVersionString = `${this.tool}${versionString}`; @@ -158,35 +158,13 @@ lint: stdout: string; stderr: string; exitCode: number; - details?: string; }> => { try { const { stdout, stderr } = await this.runTrunk(["tools", "install", toolName, "--ci"]); - return { exitCode: 0, stdout, stderr, details: undefined }; + return { exitCode: 0, stdout, stderr }; } catch (e: any) { - let details = undefined; - /* eslint-disable-next-line - @typescript-eslint/no-unsafe-call, - @typescript-eslint/no-unsafe-member-access, - @typescript-eslint/no-unsafe-assignment - */ - const detailsPath = e.stdout.match(/\.trunk\/out\/(.+\.yaml)/); - if (detailsPath) { - details = await fs.promises.readFile( - /* eslint-disable-next-line @typescript-eslint/no-unsafe-argument,@typescript-eslint/no-unsafe-member-access */ - path.resolve(this.sandboxPath ?? "", detailsPath[0]), - "utf8", - ); - } - - /* eslint-disable @typescript-eslint/no-unsafe-member-access */ - return { - exitCode: e.code as number, - stdout: e.stdout as string, - stderr: e.stderr as string, - /* eslint-enable @typescript-eslint/no-unsafe-member-access */ - details, - }; + // trunk-ignore(eslint/@typescript-eslint/no-unsafe-member-access) + return { exitCode: e.code as number, stdout: e.stdout as string, stderr: e.stderr as string }; } }; diff --git a/tests/index.ts b/tests/index.ts index 3a470bc8c..ac114b6e5 100644 --- a/tests/index.ts +++ b/tests/index.ts @@ -252,15 +252,12 @@ export const toolInstallTest = ({ describe(`Testing tool ${toolName}`, () => { const driver = setUpTrunkToolDriverForHealthCheck(dirName, {}, toolName, toolVersion, preCheck); conditionalTest(skipTestIf(toolVersion), "tool ", async () => { - const installResult = await driver.runInstall(toolName); - expect(installResult).toMatchObject({ - exitCode: 0, - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment - stdout: expect.stringMatching(`${toolName}.+${toolVersion}(?!.*trunk)`), - stderr: "", - details: undefined, - }); - expect(installResult.stdout).not.toContain("Failures:"); + const { exitCode, stdout, stderr } = await driver.runInstall(toolName); + expect(exitCode).toEqual(0); + expect(stdout).toContain(toolName); + expect(stdout).toContain(toolVersion); + expect(stderr).toEqual(""); + expect(stdout).not.toContain("Failures:"); }); }); }; @@ -306,14 +303,10 @@ export const toolTest = ({ const driver = setupTrunkToolDriver(dirName, {}, toolName, toolVersion, preCheck); testConfigs.forEach(({ command, expectedOut, expectedErr, expectedExitCode, stdin }) => { conditionalTest(skipTestIf(toolVersion), command.join(" "), async () => { - const installResult = await driver.runTool(command, stdin); - expect(installResult).toMatchObject({ - exitCode: expectedExitCode, - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment - stdout: expect.stringContaining(expectedOut ?? ""), - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment - stderr: expect.stringContaining(expectedErr ?? ""), - }); + const { stdout, stderr, exitCode } = await driver.runTool(command, stdin); + expect(stdout).toContain(expectedOut); + expect(stderr).toContain(expectedErr); + expect(exitCode).toEqual(expectedExitCode); }); }); }); @@ -692,6 +685,12 @@ export const linterCheckTest = ({ postCheck?: TestCallback; manualVersionReplacer?: (version: string) => string; }) => { + if (linterName.startsWith("pretty")) { + throw new Error("`linterCheckTest` is not supported for pretty linters"); + } + if (linterName.startsWith("bio")) { + throw new Error("`linterCheckTest` is not supported for bio linters"); + } // Step 1a: Detect test files to run const linterTestTargets = detectTestTargets(dirname, namedTestPrefixes); diff --git a/tests/parse/index.ts b/tests/parse/index.ts index fa5d2eab2..3a4bd4602 100644 --- a/tests/parse/index.ts +++ b/tests/parse/index.ts @@ -11,14 +11,13 @@ import { } from "tests/types"; import { REPO_ROOT } from "tests/utils"; import { getTrunkVersion } from "tests/utils/trunk_config"; -import YAML from "yaml"; const RESULTS_FILE = path.resolve(REPO_ROOT, "results.json"); -const FAILURES_FILE = path.resolve(REPO_ROOT, "failures.yaml"); +const FAILURES_FILE = path.resolve(REPO_ROOT, "failures.json"); const RERUN_FILE = path.resolve(REPO_ROOT, "reruns.txt"); -const EXCLUDED_RERUN_LINTERS: string[] = ["snyk"]; -const VALIDATED_LINTER_BLOCKLIST: string[] = []; +// TODO(Tyler): Remove this blocklist once eslint-friendly release is out. +const VALIDATED_LINTER_BLOCKLIST = ["eslint"]; const RUN_ID = process.env.RUN_ID ?? ""; const TEST_REF = process.env.TEST_REF ?? "latest release"; @@ -301,11 +300,10 @@ const writeFailuresForNotification = (failures: FailedVersion[]) => { const blocks = allBlocks.length > 50 ? allBlocks.slice(0, 49).concat(remainingBlock) : allBlocks; const failuresObject = { - channel: process.env.SLACK_CHANNEL_ID, text: `${failures.length} failures encountered running plugins tests for ${TEST_REF}`, blocks, }; - const failuresString = YAML.stringify(failuresObject); + const failuresString = JSON.stringify(failuresObject); fs.writeFileSync(FAILURES_FILE, failuresString); console.log(`Wrote ${failures.length} failures out to ${FAILURES_FILE}:`); console.log(failuresString); @@ -358,14 +356,12 @@ const writeTestResults = (testResults: TestResultSummary) => { const allMetadata = Array.from(testFailureMetadata.values()); // Must have at least one assertion_failure and no other failure types in order to proactively generate snapshot. const shouldRerunTest = - !EXCLUDED_RERUN_LINTERS.includes(linter) && allMetadata.every( (failureMode) => failureMode === "assertion_failure" || failureMode === "skipped" || failureMode === "passed", - ) && - allMetadata.find((failureMode) => failureMode === "assertion_failure") !== undefined; + ) && allMetadata.find((failureMode) => failureMode === "assertion_failure") !== undefined; if (shouldRerunTest) { rerunPaths.push(testFilePath); } diff --git a/tests/repo_tests/config_check.test.ts b/tests/repo_tests/config_check.test.ts index 73ecb0384..183d9f86a 100644 --- a/tests/repo_tests/config_check.test.ts +++ b/tests/repo_tests/config_check.test.ts @@ -148,7 +148,7 @@ describe("Global config health check", () => { "dotenv-linter", "git-diff-check", "gofmt", - "golangci-lint2", + "golangci-lint", "hadolint", "haml-lint", "isort", @@ -165,6 +165,7 @@ describe("Global config health check", () => { "svgo", "taplo", "tflint", + "trivy", "trufflehog", "yamllint", ] diff --git a/tests/repo_tests/readme_inclusion.test.ts b/tests/repo_tests/readme_inclusion.test.ts index 60462d941..cb5715736 100644 --- a/tests/repo_tests/readme_inclusion.test.ts +++ b/tests/repo_tests/readme_inclusion.test.ts @@ -2,7 +2,7 @@ import fs from "fs"; import path from "path"; import { REPO_ROOT } from "tests/utils"; -const excludedLinters: string[] = []; +const excludedLinters: string[] = ["squawk", "snyk", "markdownlint-cli2"]; const abbreviationMapping = new Map([["iwyu", "include-what-you-use"]]); const readmeContents = fs.readFileSync(path.resolve(REPO_ROOT, "README.md"), { encoding: "utf-8" }); diff --git a/tests/types/index.ts b/tests/types/index.ts index fd4ed87c3..d2e8c1cfe 100644 --- a/tests/types/index.ts +++ b/tests/types/index.ts @@ -75,7 +75,7 @@ export interface FileIssue { targetPath?: string; autofixOptions?: Autofix[]; ranges?: any[]; - issueUrl?: string; + issueUrl: string; belowThreshold?: boolean; } diff --git a/tests/utils/landing_state.ts b/tests/utils/landing_state.ts index da433ca78..4a325fd2d 100644 --- a/tests/utils/landing_state.ts +++ b/tests/utils/landing_state.ts @@ -21,7 +21,8 @@ const normalizePlatformPath = (originalPath: string | undefined) => { return originalPath; }; -// These extract functions are used to filter down to deterministic fields. +// TODO(Tyler): These extract functions are used to filter down to deterministic fields. In the future +// we should preserve the original structure and use jest matchers on the non-deterministic fields. const extractLintActionFields = ({ actionDurationMs: _actionDurationMs, cacheHit: _cacheHit, @@ -75,7 +76,6 @@ const normalizeMessage = (message?: string) => .replaceAll("\\", "/") .replace(/\/plugins_.{6}/gm, "/plugins_") .replace(".dup.", ".") - .replace(/NBQA-CELL-SEP.{6}/gm, "NBQA-CELL-SEP") .trim(); // trunk-ignore(eslint/@typescript-eslint/no-non-null-assertion) @@ -86,14 +86,10 @@ const normalizeRange = ({ filePath: _filePath = undefined, ...rest }) => ({ ...rest, }); -const normalizeIssueUrl = (issueUrl: string) => - issueUrl.replace(/markdownlint\/blob\/v[0-9.]+\//gm, "markdownlint/blob/vx.x.x/").trim(); - const normalizeIssues = ({ message: _message, targetPath: _targetPath, file: _file, - issueUrl: _issueUrl, autofixOptions: _autofixOptions = [], ranges: _ranges, ...rest @@ -110,9 +106,6 @@ const normalizeIssues = ({ if (_autofixOptions.length > 0) { ret.autofixOptions = _autofixOptions.map(normalizeAutofix); } - if (_issueUrl) { - ret.issueUrl = normalizeIssueUrl(_issueUrl); - } return ret; }; diff --git a/tools/paratest/paratest.test.ts b/tools/paratest/paratest.test.ts index 10dd9d245..accc678bb 100644 --- a/tools/paratest/paratest.test.ts +++ b/tools/paratest/paratest.test.ts @@ -3,6 +3,6 @@ import { skipOS } from "tests/utils"; toolInstallTest({ toolName: "paratest", - toolVersion: "7.6.0", + toolVersion: "7.4.3", skipTestIf: skipOS(["win32"]), }); diff --git a/tools/paratest/plugin.yaml b/tools/paratest/plugin.yaml index 5bac06460..5c2eac5b8 100644 --- a/tools/paratest/plugin.yaml +++ b/tools/paratest/plugin.yaml @@ -4,8 +4,7 @@ tools: - name: paratest runtime: php package: brianium/paratest - # Minimum version compatible with php@8.4 - known_good_version: 7.6.0 + known_good_version: 7.4.3 shims: [paratest] environment: - name: PATH