diff --git a/.automation/test/google_java_format/google_java_format_bad_1.java b/.automation/test/google_java_format/gjf_bad_1.java similarity index 100% rename from .automation/test/google_java_format/google_java_format_bad_1.java rename to .automation/test/google_java_format/gjf_bad_1.java diff --git a/.automation/test/google_java_format/google_java_format_bad_2.java b/.automation/test/google_java_format/gjf_bad_2.java similarity index 100% rename from .automation/test/google_java_format/google_java_format_bad_2.java rename to .automation/test/google_java_format/gjf_bad_2.java diff --git a/.automation/test/google_java_format/gjf_good_1.java b/.automation/test/google_java_format/gjf_good_1.java new file mode 100644 index 00000000000..d067507e604 --- /dev/null +++ b/.automation/test/google_java_format/gjf_good_1.java @@ -0,0 +1,7 @@ +/** Represents a good Java file. */ +public static class JavaGood { + // Prints "Hello, World" to the terminal window. + private void helloWorld() { + System.out.println("Hello, World"); + } +} diff --git a/.automation/test/google_java_format/google_java_format_good_2.java b/.automation/test/google_java_format/gjf_good_2.java similarity index 99% rename from .automation/test/google_java_format/google_java_format_good_2.java rename to .automation/test/google_java_format/gjf_good_2.java index 376cef1fe8f..6c0763c40f3 100644 --- a/.automation/test/google_java_format/google_java_format_good_2.java +++ b/.automation/test/google_java_format/gjf_good_2.java @@ -9,5 +9,4 @@ public class Application { public static void main(final String[] args) { SpringApplication.run(Application.class, args); } - } diff --git a/.automation/test/google_java_format/google_java_format_good_1.java b/.automation/test/google_java_format/google_java_format_good_1.java deleted file mode 100644 index 70f50e7c860..00000000000 --- a/.automation/test/google_java_format/google_java_format_good_1.java +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Represents a good Java file. -*/ -public static class JavaGood { - // Prints "Hello, World" to the terminal window. - private void helloWorld() { - System.out.println("Hello, World"); - } -} diff --git a/.automation/test/json/.dotfile_json_bad_2.json b/.automation/test/json/.dotfile_json_bad_2.json new file mode 100644 index 00000000000..096c082ac5f --- /dev/null +++ b/.automation/test/json/.dotfile_json_bad_2.json @@ -0,0 +1,12 @@ +{ + "arrow_spacing": { + "level": ["ignore"] + }, + "foo": "bar", + "foo": "baz", + "braces_spacing": { + "level": 'ignore', + "spaces": 0 + "empty_object_spaces": 0 + } +} diff --git a/.automation/test/json/.dotfile_json_good_2.json b/.automation/test/json/.dotfile_json_good_2.json new file mode 100644 index 00000000000..de60584a5a6 --- /dev/null +++ b/.automation/test/json/.dotfile_json_good_2.json @@ -0,0 +1,10 @@ +{ + "arrow_spacing": { + "level": "ignore" + }, + "braces_spacing": { + "level": "ignore", + "spaces": 0, + "empty_object_spaces": 0 + } +} diff --git a/.automation/test/terraform_fmt/README.md b/.automation/test/terraform_fmt/README.md new file mode 100644 index 00000000000..3318dfc7c3d --- /dev/null +++ b/.automation/test/terraform_fmt/README.md @@ -0,0 +1,15 @@ +# Terraform Format Test Cases. + +This folder holds the test cases for **Terraform Formatting**. + +## Additional Docs + +No Additional information is needed for this test case. + +## Good Test Cases + +The test cases denoted: `LANGUAGE_good_FILE.EXTENSION` are all valid, and should pass successfully when formatted. + +## Bad Test Cases + +The test cases denoted: `LANGUAGE_bad_FILE.EXTENSION` are **NOT** valid, and should trigger errors when formatted. diff --git a/.automation/test/terraform_fmt/bad/terraform_fmt_bad_1.tf b/.automation/test/terraform_fmt/bad/terraform_fmt_bad_1.tf new file mode 100644 index 00000000000..0ed579926c5 --- /dev/null +++ b/.automation/test/terraform_fmt/bad/terraform_fmt_bad_1.tf @@ -0,0 +1,18 @@ +resource "aws_instance" "instanceWithVpc" { + ami = "some-id" + instance_type = "t2.micro" + + monitoring = true + ebs_optimized = true + + vpc_security_group_ids = ["sg-12345678901234567"] + subnet_id = "subnet-12345678901234567" + + metadata_options { + http_endpoint = "disabled" + } + + tags = { + Name = "HelloWorld" + } +} diff --git a/.automation/test/terraform_fmt/good/terraform_fmt_good_1.tf b/.automation/test/terraform_fmt/good/terraform_fmt_good_1.tf new file mode 100644 index 00000000000..d30b5f829da --- /dev/null +++ b/.automation/test/terraform_fmt/good/terraform_fmt_good_1.tf @@ -0,0 +1,18 @@ +resource "aws_instance" "instanceWithVpc" { + ami = "some-id" + instance_type = "t2.micro" + + monitoring = true + ebs_optimized = true + + vpc_security_group_ids = ["sg-12345678901234567"] + subnet_id = "subnet-12345678901234567" + + metadata_options { + http_endpoint = "disabled" + } + + tags = { + Name = "HelloWorld" + } +} diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 67fe2dd6059..00000000000 --- a/.eslintignore +++ /dev/null @@ -1 +0,0 @@ -!.automation diff --git a/.github/linters/.ansible-lint.yml b/.github/linters/.ansible-lint.yml deleted file mode 100644 index a009ca1586a..00000000000 --- a/.github/linters/.ansible-lint.yml +++ /dev/null @@ -1,27 +0,0 @@ ---- -######################## -# Make output parsable # -######################## -parseable: true - -################ -# Tags to skip # -################ -skip_list: - - 'empty-string-compare' # Allow compare to empty string - - '204' # Allow string length greater than 160 chars - - 'no-changed-when' # False positives for running command shells - - 'command-instead-of-module' # Allow git commands for push, add, etc... - - 'command-instead-of-shell' # Allow use of shell when you want - - 'no-handler' # Allow step to run like handler - - 'unnamed-task' # Allow tasks without a name - -############# -# Use rules # -############# -use_default_rules: true - -################# -# Set verbosity # -################# -verbosity: 2 diff --git a/.github/linters/.eslintrc.yml b/.github/linters/.eslintrc.yml deleted file mode 100644 index 9bfb975f065..00000000000 --- a/.github/linters/.eslintrc.yml +++ /dev/null @@ -1,73 +0,0 @@ ---- -############################# -############################# -## JavaScript Linter rules ## -############################# -############################# - -############ -# Env Vars # -############ -env: - browser: true - es6: true - jest: true - -############### -# Global Vars # -############### -globals: - Atomics: readonly - SharedArrayBuffer: readonly - -############### -# Parser vars # -############### -parser: '@typescript-eslint/parser' -parserOptions: - ecmaVersion: 2018 - sourceType: module - -########### -# Plugins # -########### -plugins: - - '@typescript-eslint' - -######### -# Rules # -######### -rules: { } - - -############################## -# Overrides for JSON parsing # -############################## -overrides: - - # JSON files - - files: - - "*.json" - extends: - - plugin:jsonc/recommended-with-json - parser: jsonc-eslint-parser - parserOptions: - jsonSyntax: JSON - - # JSONC files - - files: - - "*.jsonc" - extends: - - plugin:jsonc/recommended-with-jsonc - parser: jsonc-eslint-parser - parserOptions: - jsonSyntax: JSONC - - # JSON5 files - - files: - - "*.json5" - extends: - - plugin:jsonc/recommended-with-json5 - parser: jsonc-eslint-parser - parserOptions: - jsonSyntax: JSON5 diff --git a/.github/linters/.powershell-psscriptanalyzer.psd1 b/.github/linters/.powershell-psscriptanalyzer.psd1 new file mode 100644 index 00000000000..79a672ce7cf --- /dev/null +++ b/.github/linters/.powershell-psscriptanalyzer.psd1 @@ -0,0 +1,5 @@ +@{ + ExcludeRules = @( + 'PSMissingModuleManifestField' + ) +} diff --git a/.github/linters/actionlint.yaml b/.github/linters/actionlint.yaml new file mode 100644 index 00000000000..8aac9b37f6f --- /dev/null +++ b/.github/linters/actionlint.yaml @@ -0,0 +1,3 @@ +self-hosted-runner: + labels: + - ubuntu-20.04-8core-sl diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml new file mode 100644 index 00000000000..795ea87eaf0 --- /dev/null +++ b/.github/workflows/cd.yml @@ -0,0 +1,102 @@ +name: Publish Images + +on: + push: + branches: + - main + +jobs: + test: + name: Build and Test + runs-on: ubuntu-20.04-8core-sl + concurrency: + group: ${{ github.workflow }}-main-${{ matrix.images.target }} + cancel-in-progress: true + permissions: + contents: read + deployments: write + issues: write + packages: write + strategy: + fail-fast: false + matrix: + images: + - environment: Production-SLIM + prefix: slim- + target: slim + - environment: Production + prefix: "" + image-id: standard + timeout-minutes: 60 + steps: + - name: Checkout Code + uses: actions/checkout@v3 + + - name: Retrieve Datetime + run: echo "BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> "${GITHUB_ENV}" + + - name: Login to Docker Hub + uses: docker/login-action@v2.1.0 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Login to GHCR + uses: docker/login-action@v2.1.0 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Start ${{ matrix.images.environment }} Deployment + uses: bobheadxi/deployments@v1.3.0 + id: deployment + with: + step: start + token: ${{ secrets.GITHUB_TOKEN }} + env: ${{ matrix.images.environment }} + + - name: Build and Push Image + uses: docker/build-push-action@v3 + with: + context: . + file: ./Dockerfile + build-args: | + BUILD_DATE=${{ env.BUILD_DATE }} + BUILD_REVISION=${{ github.sha }} + BUILD_VERSION=${{ github.sha }} + load: false + push: true + secrets: | + GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }} + tags: | + github/super-linter:${{ matrix.images.prefix }}latest + ghcr.io/github/super-linter:${{ matrix.images.prefix }}latest + target: "${{ matrix.images.target }}" + + - name: Update ${{ matrix.images.environment }} Deployment + uses: bobheadxi/deployments@v1.3.0 + if: always() + with: + step: finish + token: ${{ secrets.GITHUB_TOKEN }} + status: ${{ job.status }} + deployment_id: ${{ steps.deployment.outputs.deployment_id }} + env: ${{ steps.deployment.outputs.env }} + env_url: https://github.com/github/super-linter + + - name: Create Issue on Failure + uses: actions/github-script@v6 + if: failure() + with: + github-token: ${{secrets.GITHUB_TOKEN}} + script: | + const create = await github.rest.issues.create({ + owner: context.repo.owner, + repo: context.repo.repo, + title: "Failed to deploy to production", + body: "Automation has failed us!\nMore information can be found at:\n - ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" + assignees: [ + "lindluni" + ] + }) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000000..1b210165daa --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,93 @@ +name: Build and Test + +on: + pull_request: + +jobs: + test: + name: Build and Test + runs-on: ubuntu-20.04-8core-sl + permissions: + contents: read + concurrency: + group: ${{ github.workflow }}-${{ github.ref }}-${{ matrix.images.target }} + cancel-in-progress: true + strategy: + fail-fast: false + matrix: + images: + - target: slim + - target: standard + timeout-minutes: 60 + steps: + - name: Checkout Code + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Update action.yml + run: yq '.runs.image = "docker://ghcr.io/github/super-linter:${{ matrix.images.target }}"' -i action.yml + + - name: Retrieve Datetime + run: echo "BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> "${GITHUB_ENV}" + + - name: Build Image + uses: docker/build-push-action@v3 + with: + context: . + file: ./Dockerfile + build-args: | + BUILD_DATE=${{ env.BUILD_DATE }} + BUILD_REVISION=${{ github.sha }} + BUILD_VERSION=${{ github.sha }} + load: true + push: false + secrets: | + GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }} + tags: ghcr.io/github/super-linter:${{ matrix.images.target }} + target: "${{ matrix.images.target }}" + + - name: Test Local Action + uses: ./ + env: + ACTIONS_RUNNER_DEBUG: true + ERROR_ON_MISSING_EXEC_BIT: true + VALIDATE_ALL_CODEBASE: false + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + DEFAULT_BRANCH: main + LOCAL_UPDATES: true + + - name: Run Test Suite + run: make IMAGE=${{ matrix.images.target }} test + + - name: Upload Code Coverage Report + uses: codacy/codacy-coverage-reporter-action@v1 + continue-on-error: true + with: + project-token: ${{ secrets.CODACY_PROJECT_TOKEN }} + coverage-reports: test/reports/cobertura/runTests.sh/cobertura.xml + + - name: Run Super-Linter Tests + run: | + docker run \ + -e RUN_LOCAL=true \ + -e TEST_CASE_RUN=true \ + -e ANSIBLE_DIRECTORY=.automation/test/ansible \ + -e ACTIONS_RUNNER_DEBUG=true \ + -e ERROR_ON_MISSING_EXEC_BIT=true \ + -v "${GITHUB_WORKSPACE}:/tmp/lint" \ + "ghcr.io/github/super-linter:${tag}" + env: + tag: ${{ matrix.images.target }} + + - name: Lint Entire Codebase + run: | + docker run \ + -e RUN_LOCAL=true \ + -e OUTPUT_DETAILS=detailed \ + -e ACTIONS_RUNNER_DEBUG=true \ + -e ERROR_ON_MISSING_EXEC_BIT=true \ + -v "${GITHUB_WORKSPACE}:/tmp/lint" \ + "ghcr.io/github/super-linter:${tag}" + env: + tag: ${{ matrix.images.target }} diff --git a/.github/workflows/deploy-production.yml b/.github/workflows/deploy-production.yml deleted file mode 100644 index 5e2ac38ba46..00000000000 --- a/.github/workflows/deploy-production.yml +++ /dev/null @@ -1,229 +0,0 @@ ---- -name: Build, test, and eventually deploy super-linter container images - -on: - pull_request: - push: - -jobs: - build: - name: Build, test, and eventually push the container image - runs-on: ubuntu-latest - permissions: - contents: read - deployments: write - issues: write - packages: write - strategy: - fail-fast: false - matrix: - images: - - container-build-target: final_slim - container-image-id-prefix: slim- - deployment-environment-identifier: Production-SLIM - image-id: slim - - container-build-target: final_standard - container-image-id-prefix: "" - deployment-environment-identifier: Production - image-id: standard - timeout-minutes: 60 - - steps: - - name: Checkout Code - uses: actions/checkout@v3 - with: - # Full git history is needed to get a proper list - # of changed files within `super-linter` - fetch-depth: 0 - - - name: Get current date and make it available as an environment variable - run: | - echo "Appending the build date contents to GITHUB_ENV..." - echo "BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> "${GITHUB_ENV}" - - - name: Setup Docker BuildX - uses: docker/setup-buildx-action@v2.2.1 - - - name: Build Docker image - ${{ matrix.images.image-id }} - if: ${{ github.repository == 'github/super-linter' && github.ref != 'refs/heads/main' }} - uses: docker/build-push-action@v3.1.1 - with: - context: . - file: ./Dockerfile - build-args: | - BUILD_DATE=${{ env.BUILD_DATE }} - BUILD_REVISION=${{ github.sha }} - BUILD_VERSION=${{ github.sha }} - load: true - push: false - tags: | - ghcr.io/github/super-linter:${{ matrix.images.container-image-id-prefix }}${{ github.sha }} - ghcr.io/github/super-linter:${{ matrix.images.container-image-id-prefix }}test - target: "${{ matrix.images.container-build-target }}" - - - name: Run container image label test cases - if: ${{ github.repository == 'github/super-linter' && github.ref != 'refs/heads/main' }} - shell: bash - run: .automation/validate-docker-labels.sh "${{ matrix.images.image-id }}" - - - name: Edit an action.yml file for test local build - if: ${{ github.repository == 'github/super-linter' && github.ref != 'refs/heads/main' }} - run: | - sed -i "s/super-linter:.*/super-linter:${{ matrix.images.container-image-id-prefix }}${GITHUB_SHA}'/g" action.yml - - - name: Gather information about the runtime environment - if: ${{ github.repository == 'github/super-linter' && github.ref != 'refs/heads/main' }} - shell: bash - run: | - make info - - ############################################################ - # Test the built image in the actions context. # - # Not the container directly, and not using RUN_LOCAL=true # - ############################################################ - - name: Test the local action - if: ${{ github.repository == 'github/super-linter' && github.ref != 'refs/heads/main' }} - uses: ./ - env: - ACTIONS_RUNNER_DEBUG: true - ERROR_ON_MISSING_EXEC_BIT: true - VALIDATE_ALL_CODEBASE: false - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - DEFAULT_BRANCH: main - LOCAL_UPDATES: true - - # Workaround for https://github.com/actions/runner/issues/434 - - name: Fix file and directory ownership - if: ${{ github.repository == 'github/super-linter' && github.ref != 'refs/heads/main' }} - shell: bash - run: | - sudo chown -R "$(id -u)":"$(id -g)" "$(pwd)" - - - name: Run the test suite - if: ${{ github.repository == 'github/super-linter' && github.ref != 'refs/heads/main' }} - shell: bash - run: | - make IMAGE=${{ matrix.images.image-id }} test - - - name: Upload the code coverage report - if: ${{ github.repository == 'github/super-linter' && github.ref != 'refs/heads/main' }} - uses: codacy/codacy-coverage-reporter-action@v1.1 - # Sometimes this fails when user does not have permissions to secrets - continue-on-error: true - with: - project-token: ${{ secrets.CODACY_PROJECT_TOKEN }} - coverage-reports: test/reports/cobertura/runTests.sh/cobertura.xml - - - name: Run test cases - ${{ matrix.images.image-id }} - if: ${{ github.repository == 'github/super-linter' && github.ref != 'refs/heads/main' }} - shell: bash - run: | - docker run \ - -e RUN_LOCAL=true \ - -e TEST_CASE_RUN=true \ - -e ANSIBLE_DIRECTORY=.automation/test/ansible \ - -e ACTIONS_RUNNER_DEBUG=true \ - -e ERROR_ON_MISSING_EXEC_BIT=true \ - -v "${GITHUB_WORKSPACE}:/tmp/lint" \ - "ghcr.io/github/super-linter:${{ matrix.images.container-image-id-prefix }}${GITHUB_SHA}" - - - name: Clean the working directory for additional testing - if: ${{ github.repository == 'github/super-linter' && github.ref != 'refs/heads/main' }} - shell: bash - run: .automation/clean-code-base-for-tests.sh - - - name: Run against all code base - ${{ matrix.images.image-id }} - if: ${{ github.repository == 'github/super-linter' && github.ref != 'refs/heads/main' }} - shell: bash - run: | - docker run \ - -e RUN_LOCAL=true \ - -e OUTPUT_DETAILS=detailed \ - -e ACTIONS_RUNNER_DEBUG=true \ - -e ERROR_ON_MISSING_EXEC_BIT=true \ - -v "${GITHUB_WORKSPACE}:/tmp/lint" \ - "ghcr.io/github/super-linter:${{ matrix.images.container-image-id-prefix }}${GITHUB_SHA}" - - - name: Login to Docker Hub - if: ${{ github.repository == 'github/super-linter' && github.ref == 'refs/heads/main' }} - uses: docker/login-action@v2.0.0 - with: - username: ${{ secrets.DOCKER_USERNAME }} - password: ${{ secrets.DOCKER_PASSWORD }} - - - name: Login to GitHub Container Registry - if: ${{ github.repository == 'github/super-linter' && github.ref == 'refs/heads/main' }} - uses: docker/login-action@v2.0.0 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Start the deployment for the ${{ matrix.images.deployment-environment-identifier }} environment - if: ${{ github.repository == 'github/super-linter' && github.ref == 'refs/heads/main' }} - uses: bobheadxi/deployments@v1.3.0 - id: deployment - with: - step: start - token: ${{ secrets.GITHUB_TOKEN }} - env: ${{ matrix.images.deployment-environment-identifier }} - - - name: Build the container image and push it - ${{ matrix.images.image-id }} - if: ${{ github.repository == 'github/super-linter' && github.ref == 'refs/heads/main' }} - uses: docker/build-push-action@v3.1.1 - with: - context: . - file: ./Dockerfile - build-args: | - BUILD_DATE=${{ env.BUILD_DATE }} - BUILD_REVISION=${{ github.sha }} - BUILD_VERSION=${{ github.sha }} - load: false - push: true - tags: | - github/super-linter:${{ matrix.images.container-image-id-prefix }}latest - ghcr.io/github/super-linter:${{ matrix.images.container-image-id-prefix }}latest - target: "${{ matrix.images.container-build-target }}" - - - name: Update the deployment status for the ${{ matrix.images.deployment-environment-identifier }} environment - if: ${{ github.repository == 'github/super-linter' && github.ref == 'refs/heads/main' }} - uses: bobheadxi/deployments@v1.3.0 - with: - step: finish - token: ${{ secrets.GITHUB_TOKEN }} - status: ${{ job.status }} - deployment_id: ${{ steps.deployment.outputs.deployment_id }} - env: ${{ steps.deployment.outputs.env }} - env_url: https://github.com/github/super-linter - - - name: Create a GitHub issue on failure - if: ${{ github.repository == 'github/super-linter' && github.ref == 'refs/heads/main' && failure() }} - uses: actions/github-script@v6 - id: create-issue - with: - # https://octokit.github.io/rest.js/v18#issues-create - github-token: ${{secrets.GITHUB_TOKEN}} - script: | - const create = await github.rest.issues.create({ - owner: context.repo.owner, - repo: context.repo.repo, - title: "Failed to deploy to production", - body: "Automation has failed us!\nMore information can be found at:\n - ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" - }) - console.log('create', create) - return create.data.number - - - name: Assign admins to the issue created on failure - uses: actions/github-script@v6 - if: ${{ github.repository == 'github/super-linter' && github.ref == 'refs/heads/main' && failure() }} - with: - github-token: ${{secrets.GITHUB_TOKEN}} - script: | - github.rest.issues.addAssignees({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: "${{ steps.create-issue.outputs.result }}", - assignees: [ - 'lindluni' - ] - }) diff --git a/.github/workflows/deploy-release.yml b/.github/workflows/release.yml similarity index 66% rename from .github/workflows/deploy-release.yml rename to .github/workflows/release.yml index 981109d0ab4..2df2ad8ff6c 100644 --- a/.github/workflows/deploy-release.yml +++ b/.github/workflows/release.yml @@ -1,5 +1,5 @@ --- -name: Deploy super-linter release container images +name: Release on: release: @@ -12,8 +12,8 @@ on: default: 'v' jobs: - build: - name: Deploy container image - Release + release: + name: Release Images runs-on: ubuntu-latest permissions: contents: read @@ -24,10 +24,10 @@ jobs: fail-fast: false matrix: images: - - container-image-id-prefix: slim- - deployment-environment-identifier: Release-SLIM - - container-image-id-prefix: "" - deployment-environment-identifier: Release + - prefix: slim- + environment: Release-SLIM + - prefix: "" + environment: Release timeout-minutes: 60 steps: @@ -40,17 +40,17 @@ jobs: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - - name: Login to GitHub Container Registry + - name: Login to GHCR uses: docker/login-action@v2.0.0 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - - name: Get current release identifier + - name: Retrieve Current Release Version # shellcheck disable=SC2062 run: | - RELESE_VERSION="${{ github.event.release.name }}" + RELEASE_VERSION="${{ github.event.release.name }}" if [ -z "${RELEASE_VERSION}" ]; then echo "No release version found in environment, using input..." @@ -69,33 +69,33 @@ jobs: fi { - echo "RELEASE_VERSION=${RELESE_VERSION}" + echo "RELEASE_VERSION=${RELEASE_VERSION}" echo "SEMVER_VERSION=${RELEASE_VERSION#v}" echo "SEMVER_MAJOR_VERSION=${SEMVER_VERSION%%.*}" echo "SEMVER_MAJOR_VERSION_WITH_PREFIX=v${SEMVER_MAJOR_VERSION}" } >> "${GITHUB_ENV}" - - name: Start deployment for the ${{ matrix.images.deployment-environment-identifier }} environment + - name: Start ${{ matrix.images.environment }} Deployment uses: bobheadxi/deployments@v1.3.0 id: deployment with: step: start token: ${{ secrets.GITHUB_TOKEN }} - env: ${{ matrix.images.deployment-environment-identifier }} + env: ${{ matrix.images.environment }} # We don't rebuild the image to avoid that the latest tag and the release tags don't point to what the release tag is pointing to. # Instead, we pull the latest image and tag it. - - name: Add release tags and push image + - name: Retag and Push Images uses: akhilerm/tag-push-action@v2.1.0 with: - src: ghcr.io/github/super-linter:${{ matrix.images.container-image-id-prefix }}latest + src: ghcr.io/github/super-linter:${{ matrix.images.prefix }}latest dst: | - github/super-linter:${{ matrix.images.container-image-id-prefix }}v4 - github/super-linter:${{ matrix.images.container-image-id-prefix }}${{ env.RELEASE_VERSION }} - ghcr.io/github/super-linter:${{ matrix.images.container-image-id-prefix }}v4 - ghcr.io/github/super-linter:${{ matrix.images.container-image-id-prefix }}${{ env.RELEASE_VERSION }} + github/super-linter:${{ matrix.images.prefix }}v4 + github/super-linter:${{ matrix.images.prefix }}${{ env.RELEASE_VERSION }} + ghcr.io/github/super-linter:${{ matrix.images.prefix }}v4 + ghcr.io/github/super-linter:${{ matrix.images.prefix }}${{ env.RELEASE_VERSION }} - - name: Checkout code + - name: Checkout Code uses: actions/checkout@v3 with: # Full git history is needed to get a proper list of commits and tags @@ -105,13 +105,13 @@ jobs: # Then, we use that reference to create new tags, so that the new tags point to the commit # the original tag was pointing to, and not to the original tag. # This notation is documented at https://git-scm.com/docs/gitrevisions#Documentation/gitrevisions.txt-emltrevgtemegemv0998em - - name: Update the major version and latest tags + - name: Update Major Version and Latest Git Tag run: | git tag --force "${SEMVER_MAJOR_VERSION_WITH_PREFIX}" "${RELEASE_VERSION}^{}" git tag --force latest "${RELEASE_VERSION}^{}" git push --force origin "refs/tags/${SEMVER_MAJOR_VERSION_WITH_PREFIX}" "refs/tags/latest" - - name: Update the deployment status for the ${{ matrix.images.deployment-environment-identifier }} environment + - name: Update ${{ matrix.images.environment }} Deployment uses: bobheadxi/deployments@v1.3.0 if: always() with: @@ -122,12 +122,10 @@ jobs: env: ${{ steps.deployment.outputs.env }} env_url: https://github.com/github/super-linter/releases/tag/${{ env.RELEASE_VERSION }} - - name: Create a GitHub issue on failure + - name: Create Issue on Failure if: failure() uses: actions/github-script@v6 - id: create-issue with: - # https://octokit.github.io/rest.js/v18#issues-create github-token: ${{secrets.GITHUB_TOKEN}} script: | const create = await github.rest.issues.create({ @@ -135,20 +133,6 @@ jobs: repo: context.repo.repo, title: "Failed to deploy release to production", body: "Automation has failed us! Failed to push release ${{ env.RELEASE_VERSION }}\nMore information can be found at:\n - ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" - }) - console.log('create', create) - return create.data.number - - - name: Assign admins to the issue created on failure - uses: actions/github-script@v6 - if: failure() - with: - github-token: ${{secrets.GITHUB_TOKEN}} - script: | - github.rest.issues.addAssignees({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: "${{ steps.create-issue.outputs.result }}", assignees: [ 'lindluni' ] diff --git a/.github/workflows/stack-linter.yml b/.github/workflows/stack-linter.yml deleted file mode 100644 index 55f261dd6c7..00000000000 --- a/.github/workflows/stack-linter.yml +++ /dev/null @@ -1,55 +0,0 @@ ---- -############################ -############################ -## Preflight Stack Linter ## -############################ -############################ - -# -# Documentation: -# https://help.github.com/en/articles/workflow-syntax-for-github-actions -# - -name: Stack Linter - -############################# -# Start the job on all push # -############################# -on: - push: - pull_request: - -############### -# Set the Job # -############### -jobs: - build: - # Name the Job - name: Stack linter - # Set the agent to run on - runs-on: ubuntu-latest - timeout-minutes: 60 - ################## - # Load all steps # - ################## - steps: - ########################## - # Checkout the code base # - ########################## - - name: Checkout Code - uses: actions/checkout@v3 - with: - # Full git history is needed to get a proper list of changed files within `super-linter` - fetch-depth: 0 - - ################################ - # Run Linter against code base # - ################################ - - name: Lint Code Base - uses: docker://ghcr.io/github/super-linter:latest - env: - ACTIONS_RUNNER_DEBUG: true - ERROR_ON_MISSING_EXEC_BIT: true - VALIDATE_ALL_CODEBASE: false - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - DEFAULT_BRANCH: main diff --git a/Dockerfile b/Dockerfile index c29f4f9f006..80b9a9dd6ce 100644 --- a/Dockerfile +++ b/Dockerfile @@ -10,13 +10,13 @@ FROM alpine/terragrunt:1.3.6 as terragrunt FROM tenable/terrascan:1.17.1 as terrascan FROM assignuser/chktex-alpine:v0.1.1 as chktex -FROM cljkondo/clj-kondo:2022.12.10-alpine as clj-kondo +FROM cljkondo/clj-kondo:2023.01.12-alpine as clj-kondo FROM dotenvlinter/dotenv-linter:3.3.0 as dotenv-linter FROM ghcr.io/awkbar-devops/clang-format:v1.0.2 as clang-format FROM ghcr.io/terraform-linters/tflint-bundle:v0.44.1.0 as tflint FROM golangci/golangci-lint:v1.50.1 as golangci-lint FROM hadolint/hadolint:latest-alpine as dockerfile-lint -FROM hashicorp/terraform:1.3.6 as terraform +FROM hashicorp/terraform:1.3.7 as terraform FROM koalaman/shellcheck:v0.9.0 as shellcheck FROM mstruebing/editorconfig-checker:2.4.0 as editorconfig-checker FROM mvdan/shfmt:v3.6.0 as shfmt @@ -33,10 +33,6 @@ FROM python:3.11.1-alpine3.17 as base_image ################################ # Set ARG values used in Build # ################################ -# arm-ttk Linter -ARG ARM_TTK_NAME='master.zip' -ARG ARM_TTK_URI='https://github.com/Azure/arm-ttk/archive/master.zip' -ARG ARM_TTK_DIRECTORY='/usr/lib/microsoft' ARG CHECKSTYLE_VERSION='10.3.4' # Dart Linter ## stable dart sdk: https://dart.dev/get-dart#release-channels @@ -46,9 +42,9 @@ ARG GOOGLE_JAVA_FORMAT_VERSION='1.15.0' ARG GLIBC_VERSION='2.34-r0' ARG KTLINT_VERSION='0.47.1' # PowerShell & PSScriptAnalyzer linter -ARG PSSA_VERSION='latest' +ARG PSSA_VERSION='1.21.0' ARG PWSH_DIRECTORY='/usr/lib/microsoft/powershell' -ARG PWSH_VERSION='latest' +ARG PWSH_VERSION='v7.3.1' # Kubeval Version ARG KUBEVAL_VERSION='v0.16.1' @@ -97,17 +93,10 @@ RUN apk add --no-cache \ ######################################## COPY dependencies/* / -################################ -# Installs python dependencies # -################################ -RUN npm config set package-lock true \ - && npm config set loglevel error \ - && npm --no-cache install \ - && npm audit fix --audit-level=critical \ - ############################## - # Installs ruby dependencies # - ############################## - && bundle install +############################# +# Install Dependencies # +############################# +RUN npm install && bundle install ############################## # Installs Perl dependencies # @@ -198,10 +187,8 @@ COPY --from=actionlint /usr/local/bin/actionlint /usr/bin/ ################# # Install Lintr # ################# -RUN mkdir -p /home/r-library \ - && cp -r /usr/lib/R/library/ /home/r-library/ \ - && Rscript -e "install.packages(c('lintr','purrr'), repos = 'https://cloud.r-project.org/')" \ - && R -e "install.packages(list.dirs('/home/r-library',recursive = FALSE), repos = NULL, type = 'source')" +COPY scripts/install-lintr.sh / +RUN /install-lintr.sh && rm -rf /install-lintr.sh # Source: https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub # Store the key here because the above host is sometimes down, and breaks our builds @@ -210,72 +197,15 @@ COPY dependencies/sgerrand.rsa.pub /etc/apk/keys/sgerrand.rsa.pub ################### # Install Kubeval # ################### -RUN wget --tries=5 -q -O kubeval-linux-amd64.tar.gz https://github.com/instrumenta/kubeval/releases/download/${KUBEVAL_VERSION}/kubeval-linux-amd64.tar.gz \ - && tar xf kubeval-linux-amd64.tar.gz \ - && mv kubeval /usr/local/bin \ - && rm kubeval-linux-amd64.tar.gz \ - ################## - # Install ktlint # - ################## - && curl --retry 5 --retry-delay 5 -sSLO "https://github.com/pinterest/ktlint/releases/download/${KTLINT_VERSION}/ktlint" \ - && chmod a+x ktlint \ - && mv "ktlint" /usr/bin/ \ - && terrascan init \ - && cd ~ && touch .chktexrc \ - #################### - # Install dart-sdk # - #################### - && wget --tries=5 -q https://github.com/sgerrand/alpine-pkg-glibc/releases/download/${GLIBC_VERSION}/glibc-${GLIBC_VERSION}.apk \ - && apk add --no-cache --force-overwrite glibc-${GLIBC_VERSION}.apk \ - && rm glibc-${GLIBC_VERSION}.apk \ - && wget --tries=5 -q https://storage.googleapis.com/dart-archive/channels/stable/release/${DART_VERSION}/sdk/dartsdk-linux-x64-release.zip -O - -q | unzip -q - \ - && chmod +x dart-sdk/bin/dart* \ - && mv dart-sdk/bin/* /usr/bin/ && mv dart-sdk/lib/* /usr/lib/ && mv dart-sdk/include/* /usr/include/ \ - && rm -r dart-sdk/ \ - ################################ - # Create and install Bash-Exec # - ################################ - && printf '#!/bin/bash \n\nif [[ -x "$1" ]]; then exit 0; else echo "Error: File:[$1] is not executable"; exit 1; fi' > /usr/bin/bash-exec \ - && chmod +x /usr/bin/bash-exec +COPY scripts/install-kubeval.sh / +RUN --mount=type=secret,id=GITHUB_TOKEN /install-kubeval.sh && rm -rf /install-kubeval.sh ################################################# # Install Raku and additional Edge dependencies # ################################################# # Basic setup, programs and init -RUN apk add --no-cache rakudo zef \ - ###################### - # Install CheckStyle # - ###################### - && curl --retry 5 --retry-delay 5 --show-error -sSL "https://github.com/checkstyle/checkstyle/releases/download/checkstyle-${CHECKSTYLE_VERSION}/checkstyle-${CHECKSTYLE_VERSION}-all.jar" \ - --output /usr/bin/checkstyle \ - ############################## - # Install google-java-format # - ############################## - && curl --retry 5 --retry-delay 5 --show-error -sSL "https://github.com/google/google-java-format/releases/download/v${GOOGLE_JAVA_FORMAT_VERSION}/google-java-format-${GOOGLE_JAVA_FORMAT_VERSION}-all-deps.jar" \ - --output /usr/bin/google-java-format \ - ################################# - # Install luacheck and luarocks # - ################################# - && wget --tries=5 -q https://www.lua.org/ftp/lua-5.3.5.tar.gz -O - -q | tar -xzf - \ - && cd lua-5.3.5 \ - && make linux \ - && make install \ - && cd .. && rm -r lua-5.3.5/ \ - && wget --tries=5 -q https://github.com/cvega/luarocks/archive/v3.3.1-super-linter.tar.gz -O - -q | tar -xzf - \ - && cd luarocks-3.3.1-super-linter \ - && ./configure --with-lua-include=/usr/local/include \ - && make \ - && make -b install \ - && cd .. \ - && rm -r luarocks-3.3.1-super-linter/ \ - && luarocks install luacheck \ - && luarocks install argparse \ - && luarocks install luafilesystem \ - && mv /etc/R/* /usr/lib/R/etc/ \ - && find /node_modules/ -type f -name 'LICENSE' -exec rm {} + \ - && find /node_modules/ -type f -name '*.md' -exec rm {} + \ - && find /node_modules/ -type f -name '*.txt' -exec rm {} + \ - && find /usr/ -type f -name '*.md' -exec rm {} + +COPY scripts/install-raku.sh / +RUN --mount=type=secret,id=GITHUB_TOKEN /install-raku.sh && rm -rf /install-raku.sh ################################################################################ # Grab small clean image to build python packages ############################## @@ -287,9 +217,9 @@ WORKDIR /stage RUN ./build-venvs.sh ################################################################################ -# Grab small clean image to build final_slim ################################### +# Grab small clean image to build slim ################################### ################################################################################ -FROM alpine:3.17.0 as final_slim +FROM alpine:3.17.1 as slim ############################ # Get the build arguements # @@ -330,37 +260,16 @@ ENV IMAGE="slim" # Store the key here because the above host is sometimes down, and breaks our builds COPY dependencies/sgerrand.rsa.pub /etc/apk/keys/sgerrand.rsa.pub -###################################### -# Install Phive dependencies and git # -###################################### -RUN wget --tries=5 -q https://github.com/sgerrand/alpine-pkg-glibc/releases/download/${GLIBC_VERSION}/glibc-${GLIBC_VERSION}.apk \ - && apk update && apk upgrade && apk add --no-cache --force-overwrite \ - bash \ - ca-certificates \ - curl \ - git git-lfs \ - glibc-${GLIBC_VERSION}.apk \ - tar zstd \ - gnupg \ - php81 php81-curl php81-ctype php81-dom php81-iconv php81-mbstring \ - php81-openssl php81-phar php81-simplexml php81-tokenizer php81-xmlwriter \ - && rm glibc-${GLIBC_VERSION}.apk \ - && wget -q --tries=5 -O /tmp/libz.tar.zst https://www.archlinux.org/packages/core/x86_64/zlib/download \ - && mkdir /tmp/libz \ - && tar -xf /tmp/libz.tar.zst -C /tmp/libz --zstd \ - && mv /tmp/libz/usr/lib/libz.so* /usr/glibc-compat/lib \ - && rm -rf /tmp/libz /tmp/libz.tar.zst \ - && wget -q --tries=5 -O phive.phar https://phar.io/releases/phive.phar \ - && wget -q --tries=5 -O phive.phar.asc https://phar.io/releases/phive.phar.asc \ - && PHAR_KEY_ID="0x9D8A98B29B2D5D79" \ - && gpg --keyserver hkps://keyserver.ubuntu.com --recv-keys "$PHAR_KEY_ID" \ - && gpg --verify phive.phar.asc phive.phar \ - && chmod +x phive.phar \ - && mv phive.phar /usr/local/bin/phive \ - && rm phive.phar.asc \ - && phive --no-progress install --trust-gpg-keys \ - 31C7E470E2138192,CF1A108D0E7AE720,8A03EA3B385DBAA1,12CE0F1D262429A5 \ - --target /usr/bin phpstan@^1.3.3 psalm@^4.18.1 phpcs@^3.6.2 +############### +# Install Git # +############### +RUN apk add --no-cache bash git git-lfs + +############################## +# Install Phive dependencies # +############################## +COPY scripts/install-phive.sh / +RUN --mount=type=secret,id=GITHUB_TOKEN /install-phive.sh && rm -rf /install-phive.sh #################################################### # Install Composer after all Libs have been copied # @@ -438,26 +347,22 @@ RUN ACTIONS_RUNNER_DEBUG=true WRITE_LINTER_VERSIONS_FILE=true IMAGE="${IMAGE}" / ENTRYPOINT ["/action/lib/linter.sh"] ################################################################################ -# Grab small clean image to build final_standard ############################### +# Grab small clean image to build standard ############################### ################################################################################ -FROM final_slim as final_standard +FROM slim as standard ############### # Set up args # ############### -# arm-ttk -ARG ARM_TTK_NAME='master.zip' -ARG ARM_TTK_URI='https://github.com/Azure/arm-ttk/archive/master.zip' -ARG ARM_TTK_DIRECTORY='/usr/lib/microsoft' -# PowerShell & PSScriptAnalyzer +ARG GITHUB_TOKEN ARG PWSH_VERSION='latest' ARG PWSH_DIRECTORY='/usr/lib/microsoft/powershell' -ARG PSSA_VERSION='latest' +ARG PSSA_VERSION='1.21.0' ################ # Set ENV vars # ################ -ENV ARM_TTK_PSD1="${ARM_TTK_DIRECTORY}/arm-ttk-master/arm-ttk/arm-ttk.psd1" +ENV ARM_TTK_PSD1="/usr/lib/microsoft/arm-ttk/arm-ttk.psd1" ENV IMAGE="standard" ENV PATH="${PATH}:/var/cache/dotnet/tools:/usr/share/dotnet" @@ -469,60 +374,27 @@ COPY --from=dotenv-linter /dotenv-linter /usr/bin/ ################################### # Install DotNet and Dependencies # ################################### -RUN wget --tries=5 -q -O dotnet-install.sh https://dot.net/v1/dotnet-install.sh \ - && chmod +x dotnet-install.sh \ - && ./dotnet-install.sh --install-dir /usr/share/dotnet -channel Current -version latest \ - && /usr/share/dotnet/dotnet tool install --tool-path /usr/bin dotnet-format --version 5.0.211103 +COPY scripts/install-dotnet.sh / +RUN /install-dotnet.sh && rm -rf /install-dotnet.sh ############################## # Install rustfmt & clippy # ############################## ENV CRYPTOGRAPHY_DONT_BUILD_RUST=1 -RUN ln -s /usr/bin/rustup-init /usr/bin/rustup \ - && rustup toolchain install stable-x86_64-unknown-linux-musl \ - && rustup component add rustfmt --toolchain=stable-x86_64-unknown-linux-musl \ - && rustup component add clippy --toolchain=stable-x86_64-unknown-linux-musl \ - && mv /root/.rustup /usr/lib/.rustup \ - && ln -fsv /usr/lib/.rustup/toolchains/stable-x86_64-unknown-linux-musl/bin/rustfmt /usr/bin/rustfmt \ - && ln -fsv /usr/lib/.rustup/toolchains/stable-x86_64-unknown-linux-musl/bin/rustc /usr/bin/rustc \ - && ln -fsv /usr/lib/.rustup/toolchains/stable-x86_64-unknown-linux-musl/bin/cargo /usr/bin/cargo \ - && ln -fsv /usr/lib/.rustup/toolchains/stable-x86_64-unknown-linux-musl/bin/cargo-clippy /usr/bin/cargo-clippy \ - && echo '#!/usr/bin/env bash' > /usr/bin/clippy \ - && echo 'pushd $(dirname $1)' >> /usr/bin/clippy \ - && echo 'cargo-clippy' >> /usr/bin/clippy \ - && echo 'rc=$?' >> /usr/bin/clippy \ - && echo 'popd' >> /usr/bin/clippy \ - && echo 'exit $rc' >> /usr/bin/clippy \ - && chmod +x /usr/bin/clippy +COPY scripts/install-rustfmt.sh / +RUN /install-rustfmt.sh && rm -rf /install-rustfmt.sh ######################################### # Install Powershell + PSScriptAnalyzer # ######################################### -# Reference: https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-linux?view=powershell-7 -# Slightly modified to always retrieve latest stable Powershell version -# If changing PWSH_VERSION='latest' to a specific version, use format PWSH_VERSION='tags/v7.0.2' -RUN mkdir -p ${PWSH_DIRECTORY} \ - && curl --retry 5 --retry-delay 5 --show-error -s https://api.github.com/repos/powershell/powershell/releases/${PWSH_VERSION} \ - | grep browser_download_url \ - | grep linux-alpine-x64 \ - | cut -d '"' -f 4 \ - | xargs -n 1 wget -q -O - \ - | tar -xzC ${PWSH_DIRECTORY} \ - && chmod +x ${PWSH_DIRECTORY}/pwsh \ - && ln -sf ${PWSH_DIRECTORY}/pwsh /usr/bin/pwsh \ - && pwsh -c 'Install-Module -Name PSScriptAnalyzer -RequiredVersion ${PSSA_VERSION} -Scope AllUsers -Force' +COPY scripts/install-pwsh.sh / +RUN --mount=type=secret,id=GITHUB_TOKEN /install-pwsh.sh && rm -rf /install-pwsh.sh ############################################################# # Install Azure Resource Manager Template Toolkit (arm-ttk) # ############################################################# -# Depends on PowerShell -# Reference https://github.com/Azure/arm-ttk -# Reference https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/test-toolkit -ENV ARM_TTK_PSD1="${ARM_TTK_DIRECTORY}/arm-ttk-master/arm-ttk/arm-ttk.psd1" -RUN curl --retry 5 --retry-delay 5 --show-error -sLO "${ARM_TTK_URI}" \ - && unzip "${ARM_TTK_NAME}" -d "${ARM_TTK_DIRECTORY}" \ - && rm "${ARM_TTK_NAME}" \ - && ln -sTf "${ARM_TTK_PSD1}" /usr/bin/arm-ttk +COPY scripts/install-arm-ttk.sh / +RUN --mount=type=secret,id=GITHUB_TOKEN /install-arm-ttk.sh && rm -rf /install-arm-ttk.sh ######################################################################################## # Run to build version file and validate image again because we installed more linters # diff --git a/Makefile b/Makefile index 3ef2bbcdc81..b2cac022489 100644 --- a/Makefile +++ b/Makefile @@ -75,10 +75,10 @@ SUPER_LINTER_TEST_CONTINER_URL := '' DOCKERFILE := '' IMAGE := '' ifeq ($(IMAGE),slim) - SUPER_LINTER_TEST_CONTINER_URL := "ghcr.io/github/super-linter:slim-test" + SUPER_LINTER_TEST_CONTINER_URL := "ghcr.io/github/super-linter:slim" IMAGE := "slim" else - SUPER_LINTER_TEST_CONTINER_URL := "ghcr.io/github/super-linter:test" + SUPER_LINTER_TEST_CONTINER_URL := "ghcr.io/github/super-linter:standard" IMAGE := "standard" endif @@ -103,3 +103,13 @@ inspec: inspec-check ## Run InSpec tests -t "docker://$${SUPER_LINTER_TEST_CONTAINER_ID}" \ && docker ps \ && docker kill "$(SUPER_LINTER_TEST_CONTAINER_NAME)" + +.phony: docker +docker: + @if [ -z "${GITHUB_TOKEN}" ]; then echo "GITHUB_TOKEN environment variable not set. Please set your GitHub Personal Access Token."; exit 1; fi + DOCKER_BUILDKIT=1 docker buildx build --load \ + --build-arg BUILD_DATE=$(shell date -u +'%Y-%m-%dT%H:%M:%SZ') \ + --build-arg BUILD_REVISION=$(shell git rev-parse --short HEAD) \ + --build-arg BUILD_VERSION=$(shell git rev-parse --short HEAD) \ + --secret id=GITHUB_TOKEN,env=GITHUB_TOKEN \ + -t ghcr.io/github/super-linter . diff --git a/README.md b/README.md index 0c2f4a9dc9c..5145b3c4096 100644 --- a/README.md +++ b/README.md @@ -93,11 +93,11 @@ Developers on **GitHub** can call the **GitHub Action** to lint their codebase w | **Rust** | [Rustfmt](https://github.com/rust-lang/rustfmt) / [Clippy](https://github.com/rust-lang/rust-clippy) | | **Scala** | [scalafmt](https://github.com/scalameta/scalafmt) | | **Secrets** | [GitLeaks](https://github.com/zricethezav/gitleaks) | -| **Shell** | [ShellCheck](https://github.com/koalaman/shellcheck) / [executable bit check] / [shfmt](https://github.com/mvdan/sh) | +| **Shell** | [ShellCheck](https://github.com/koalaman/shellcheck) / `executable bit check` / [shfmt](https://github.com/mvdan/sh) | | **Snakemake** | [snakefmt](https://github.com/snakemake/snakefmt/) / [snakemake --lint](https://snakemake.readthedocs.io/en/stable/snakefiles/writing_snakefiles.html#best-practices) | | **SQL** | [sql-lint](https://github.com/joereynolds/sql-lint) / [sqlfluff](https://github.com/sqlfluff/sqlfluff) | | **Tekton** | [tekton-lint](https://github.com/IBM/tekton-lint) | -| **Terraform** | [tflint](https://github.com/terraform-linters/tflint) / [terrascan](https://github.com/accurics/terrascan) | +| **Terraform** | [fmt](https://developer.hashicorp.com/terraform/cli/commands/fmt) / [tflint](https://github.com/terraform-linters/tflint) / [terrascan](https://github.com/accurics/terrascan)| | **Terragrunt** | [terragrunt](https://github.com/gruntwork-io/terragrunt) | | **TypeScript** | [ESLint](https://eslint.org/) / [standard js](https://standardjs.com/) | | **XML** | [LibXML](http://xmlsoft.org/) | @@ -123,7 +123,7 @@ To use this **GitHub** Action you will need to complete the following: In your repository you should have a `.github/workflows` folder with **GitHub** Action similar to below: - `.github/workflows/linter.yml` - - Example file can be found at [`TEMPLATES/linter.yml`](/TEMPLATES/linter.yml) + - Example file can be found at [`TEMPLATES/linter.yml`](TEMPLATES/linter.yml) This file should have the following code: @@ -273,6 +273,7 @@ But if you wish to select or exclude specific linters, we give you full control | **ACTIONS_RUNNER_DEBUG** | `false` | Flag to enable additional information about the linter, versions, and additional output. | | **ANSIBLE_CONFIG_FILE** | `.ansible-lint.yml` | Filename for [Ansible-lint configuration](https://ansible-lint.readthedocs.io/en/latest/configuring.html#configuration-file) (ex: `.ansible-lint`, `.ansible-lint.yml`) | | **ANSIBLE_DIRECTORY** | `/ansible` | Flag to set the root directory for Ansible file location(s), relative to `DEFAULT_WORKSPACE`. Set to `.` to use the top-level of the `DEFAULT_WORKSPACE`. | +| **CREATE_LOG_FILE** | `false` | If set to `true`, it creates the log file. You can set the log filename using the `LOG_FILE` environment variable. | | **CSS_FILE_NAME** | `.stylelintrc.json` | Filename for [Stylelint configuration](https://github.com/stylelint/stylelint) (ex: `.stylelintrc.yml`, `.stylelintrc.yaml`) | | **DEFAULT_BRANCH** | `master` | The name of the repository default branch. | | **DEFAULT_WORKSPACE** | `/tmp/lint` | The location containing files to lint if you are running locally. | @@ -283,7 +284,6 @@ But if you wish to select or exclude specific linters, we give you full control | **FILTER_REGEX_EXCLUDE** | `none` | Regular expression defining which files will be excluded from linting (ex: `.*src/test.*`) | | **FILTER_REGEX_INCLUDE** | `all` | Regular expression defining which files will be processed by linters (ex: `.*src/.*`) | | **GITHUB_ACTIONS_CONFIG_FILE** | `actionlint.yml` | Filename for [Actionlint configuration](https://github.com/rhysd/actionlint/blob/main/docs/config.md) (ex: `actionlint.yml`) | -| **GITHUB_ACTIONS_COMMAND_ARGS** | `null` | Additional arguments passed to `actionlint` command. Useful to [ignore some errors](https://github.com/rhysd/actionlint/blob/main/docs/usage.md#ignore-some-errors) | | **GITHUB_CUSTOM_API_URL** | `https://api.github.com` | Specify a custom GitHub API URL in case GitHub Enterprise is used: e.g. `https://github.myenterprise.com/api/v3` | | **GITHUB_DOMAIN** | `github.com` | Specify a custom GitHub domain in case GitHub Enterprise is used: e.g. `github.myenterprise.com` | | **GITLEAKS_CONFIG_FILE** | `.gitleaks.toml` | Filename for [GitLeaks configuration](https://github.com/zricethezav/gitleaks#configuration) (ex: `.geatleaks.toml`) | @@ -393,6 +393,7 @@ But if you wish to select or exclude specific linters, we give you full control | **VALIDATE_SQL** | `true` | Flag to enable or disable the linting process of the SQL language. | | **VALIDATE_SQLFLUFF** | `true` | Flag to enable or disable the linting process of the SQL language. (Utilizing: sqlfuff) | | **VALIDATE_TEKTON** | `true` | Flag to enable or disable the linting process of the Tekton language. | +| **VALIDATE_TERRAFORM_FMT** | `true` | Flag to enable or disable the formatting process of the Terraform files. | | **VALIDATE_TERRAFORM_TERRASCAN** | `true` | Flag to enable or disable the linting process of the Terraform language for security related issues. | | **VALIDATE_TERRAFORM_TFLINT** | `true` | Flag to enable or disable the linting process of the Terraform language. (Utilizing tflint) | | **VALIDATE_TERRAGRUNT** | `true` | Flag to enable or disable the linting process for Terragrunt files. | diff --git a/TEMPLATES/.eslintrc.yml b/TEMPLATES/.eslintrc.yml index b5c6439dd6d..55f854b2f50 100644 --- a/TEMPLATES/.eslintrc.yml +++ b/TEMPLATES/.eslintrc.yml @@ -20,6 +20,10 @@ globals: Atomics: readonly SharedArrayBuffer: readonly +ignorePatterns: + - "!.*" + - "**/node_modules/.*" + ############### # Parser vars # ############### diff --git a/TEMPLATES/.powershell-psscriptanalyzer.psd1 b/TEMPLATES/.powershell-psscriptanalyzer.psd1 index f4bbd6b5f3f..19866505425 100644 --- a/TEMPLATES/.powershell-psscriptanalyzer.psd1 +++ b/TEMPLATES/.powershell-psscriptanalyzer.psd1 @@ -1,4 +1,4 @@ -#Documentation: https://github.com/PowerShell/PSScriptAnalyzer/blob/master/docs/markdown/Invoke-ScriptAnalyzer.md#-settings +#Documentation: https://github.com/PowerShell/PSScriptAnalyzer/blob/master/docs/Cmdlets/Invoke-ScriptAnalyzer.md#-settings @{ #CustomRulePath='path\to\CustomRuleModule.psm1' #RecurseCustomRulePath='path\of\customrules' diff --git a/TEMPLATES/linter.yml b/TEMPLATES/linter.yml index 2b6701241a7..402f4a6e0a6 100644 --- a/TEMPLATES/linter.yml +++ b/TEMPLATES/linter.yml @@ -39,7 +39,7 @@ jobs: # Checkout the code base # ########################## - name: Checkout Code - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: # Full git history is needed to get a proper # list of changed files within `super-linter` diff --git a/action.yml b/action.yml index 9a624f5939d..a50d928d4ec 100644 --- a/action.yml +++ b/action.yml @@ -4,7 +4,7 @@ author: 'GitHub' description: 'It is a simple combination of various linters, written in bash, to help validate your source code.' runs: using: 'docker' - image: 'docker://ghcr.io/github/super-linter:v4.10.0' + image: 'docker://ghcr.io/github/super-linter:v4.10.1' branding: icon: 'check-square' color: 'white' diff --git a/dependencies/Gemfile b/dependencies/Gemfile index 326f7dd1c6b..7276cc23548 100644 --- a/dependencies/Gemfile +++ b/dependencies/Gemfile @@ -4,10 +4,10 @@ source "https://rubygems.org" git_source(:github) { |repo_name| "https://github.com/#{repo_name}" } -gem "rubocop", "~> 1.42.0" -gem "rubocop-github", "~> 0.18.0" -gem "rubocop-minitest", "~> 0.25.1" +gem "rubocop", "~> 1.43.0" +gem "rubocop-github", "~> 0.20.0" +gem "rubocop-minitest", "~> 0.26.0" gem "rubocop-performance", "~>1.15.2" gem "rubocop-rails", "~> 2.17" gem "rubocop-rake", "~> 0.6.0" -gem "rubocop-rspec", "~> 2.16.0" +gem "rubocop-rspec", "~> 2.18.0" diff --git a/dependencies/Gemfile.lock b/dependencies/Gemfile.lock index 85bd55458a1..be71ca92d48 100644 --- a/dependencies/Gemfile.lock +++ b/dependencies/Gemfile.lock @@ -11,7 +11,7 @@ GEM i18n (1.12.0) concurrent-ruby (~> 1.0) json (2.6.3) - minitest (5.16.3) + minitest (5.17.0) parallel (1.22.1) parser (3.2.0.0) ast (~> 2.4.1) @@ -19,23 +19,25 @@ GEM rainbow (3.1.1) regexp_parser (2.6.1) rexml (3.2.5) - rubocop (1.42.0) + rubocop (1.43.0) json (~> 2.3) parallel (~> 1.10) - parser (>= 3.1.2.1) + parser (>= 3.2.0.0) rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 1.8, < 3.0) rexml (>= 3.2.5, < 4.0) rubocop-ast (>= 1.24.1, < 2.0) ruby-progressbar (~> 1.7) - unicode-display_width (>= 1.4.0, < 3.0) + unicode-display_width (>= 2.4.0, < 3.0) rubocop-ast (1.24.1) parser (>= 3.1.1.0) - rubocop-github (0.18.0) - rubocop (>= 1.0.0) - rubocop-performance - rubocop-rails - rubocop-minitest (0.25.1) + rubocop-capybara (2.17.0) + rubocop (~> 1.41) + rubocop-github (0.20.0) + rubocop (>= 1.37) + rubocop-performance (>= 1.15) + rubocop-rails (>= 2.17) + rubocop-minitest (0.26.0) rubocop (>= 0.90, < 2.0) rubocop-performance (1.15.2) rubocop (>= 1.7.0, < 2.0) @@ -46,24 +48,25 @@ GEM rubocop (>= 1.33.0, < 2.0) rubocop-rake (0.6.0) rubocop (~> 1.0) - rubocop-rspec (2.16.0) + rubocop-rspec (2.18.0) rubocop (~> 1.33) + rubocop-capybara ruby-progressbar (1.11.0) tzinfo (2.0.5) concurrent-ruby (~> 1.0) - unicode-display_width (2.4.1) + unicode-display_width (2.4.2) PLATFORMS ruby DEPENDENCIES - rubocop (~> 1.42.0) - rubocop-github (~> 0.18.0) - rubocop-minitest (~> 0.25.1) + rubocop (~> 1.43.0) + rubocop-github (~> 0.20.0) + rubocop-minitest (~> 0.26.0) rubocop-performance (~> 1.15.2) rubocop-rails (~> 2.17) rubocop-rake (~> 0.6.0) - rubocop-rspec (~> 2.16.0) + rubocop-rspec (~> 2.18.0) BUNDLED WITH 2.3.5 diff --git a/dependencies/package-lock.json b/dependencies/package-lock.json index 2b627ef0ed4..ee906661d4e 100644 --- a/dependencies/package-lock.json +++ b/dependencies/package-lock.json @@ -10,34 +10,34 @@ "@react-native-community/eslint-config": "^3.2.0", "@react-native-community/eslint-plugin": "^1.3.0", "@stoplight/spectral": "^6.5.0", - "@typescript-eslint/eslint-plugin": "^5.48.0", - "@typescript-eslint/parser": "^5.48.0", - "asl-validator": "^3.0.8", + "@typescript-eslint/eslint-plugin": "^5.48.2", + "@typescript-eslint/parser": "^5.48.2", + "asl-validator": "^3.1.0", "axios": "^1.2.2", "babel-eslint": "^10.1.0", - "eslint": "^8.31.0", + "eslint": "^8.32.0", "eslint-config-airbnb": "^19.0.4", "eslint-config-airbnb-typescript": "^17.0.0", "eslint-config-prettier": "^8.6.0", - "eslint-plugin-jest": "^27.2.0", + "eslint-plugin-jest": "^27.2.1", "eslint-plugin-json": "^3.1.0", - "eslint-plugin-jsonc": "^2.5.0", - "eslint-plugin-jsx-a11y": "^6.6.1", + "eslint-plugin-jsonc": "^2.6.0", + "eslint-plugin-jsx-a11y": "^6.7.1", "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-react": "^7.31.11", + "eslint-plugin-react": "^7.32.1", "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-vue": "^9.8.0", + "eslint-plugin-vue": "^9.9.0", "gherkin-lint": "^4.2.2", "htmlhint": "^1.1.4", - "immer": "^9.0.17", + "immer": "^9.0.18", "ini": "^3.0.1", "jscpd": "^3.5.3", "lodash": "^4.17.21", - "markdownlint-cli": "^0.32.2", + "markdownlint-cli": "^0.33.0", "node-fetch": "^3.3.0", "npm-groovy-lint": "^11.1.1", "postcss-less": "^6.0.0", - "prettier": "^2.8.1", + "prettier": "^2.8.3", "prettyjson": "^1.2.5", "pug": "^3.0.2", "sql-lint": "1.0.0", @@ -51,7 +51,7 @@ "stylelint-prettier": "^2.0.0", "stylelint-scss": "^4.3.0", "tekton-lint": "^0.6.0", - "textlint": "^12.4.0", + "textlint": "^12.5.1", "textlint-filter-rule-allowlist": "^4.0.0", "textlint-filter-rule-comments": "^1.2.2", "textlint-rule-terminology": "^3.0.4", @@ -437,23 +437,11 @@ } }, "node_modules/@babel/runtime": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.1.tgz", - "integrity": "sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg==", - "dependencies": { - "regenerator-runtime": "^0.13.10" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/runtime-corejs3": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.18.0.tgz", - "integrity": "sha512-G5FaGZOWORq9zthDjIrjib5XlcddeqLbIiDO3YQsut6j7aGf76xn0umUC/pA6+nApk3hQJF4JzLzg5PCl6ewJg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.7.tgz", + "integrity": "sha512-UF0tvkUtxwAgZ5W/KrkHf0Rn0fdnLDU9ScxBrEVNUprE/MzirjK4MJUX1/BVDv00Sv8cljtukVK1aky++X1SjQ==", "dependencies": { - "core-js-pure": "^3.20.2", - "regenerator-runtime": "^0.13.4" + "regenerator-runtime": "^0.13.11" }, "engines": { "node": ">=6.9.0" @@ -1568,31 +1556,31 @@ "integrity": "sha512-ke5hlKy/xZ/vQt6j+h4k9GradJPDsV3FKsUqWpCpF/X8qWCU2zM4e1SMUAFjoUcLuF9in+eXIQ71Qm/AdjjkZQ==" }, "node_modules/@textlint/ast-tester": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/ast-tester/-/ast-tester-12.3.0.tgz", - "integrity": "sha512-f135pLEv/6epjRNlSTpxHX/3lutzB+l1GCHjVlm+PRCWEunKBvcZxyBCf1mp00vKNQdOpLnSPFDHIa/KgsZ/nQ==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/ast-tester/-/ast-tester-12.5.0.tgz", + "integrity": "sha512-osHf1OFLC3RnjGyoSBynn2u5pgj7qkik8TNaxgPekVwlLWtJTcyh22PHo+mXPF47XWM5gJQmy/72nUrqtbDMPg==", "dependencies": { "@textlint/ast-node-types": "^12.3.0", "debug": "^4.3.4" } }, "node_modules/@textlint/ast-traverse": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/ast-traverse/-/ast-traverse-12.3.0.tgz", - "integrity": "sha512-WkDOgs7LJNf9kq7yGIi10FuBkW0wpbgMR6unLegRBwT+xN7JxynFnlLVHUfyJs3S0VPYFHX6Dvybg4As7iM4Tw==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/ast-traverse/-/ast-traverse-12.5.0.tgz", + "integrity": "sha512-TAbfxz8x8Q/sn7D/h7OikzYp5NqPDrRExm3N+3v9yj+gq++fxHtskas48tm1TYcChTMq6BbPU+EGbdlMo3rWWA==", "dependencies": { "@textlint/ast-node-types": "^12.3.0" } }, "node_modules/@textlint/config-loader": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@textlint/config-loader/-/config-loader-12.3.1.tgz", - "integrity": "sha512-iKCrif/McG0dCokvyoxvXcH6G9FaiSDF3DtNYo4GlxavqVtKxKxuFvkeQahWL0QWM9Z+yXlGUcBJdYj6Zxevkw==", - "dependencies": { - "@textlint/kernel": "^12.3.0", - "@textlint/module-interop": "^12.3.0", - "@textlint/types": "^12.3.0", - "@textlint/utils": "^12.3.0", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/config-loader/-/config-loader-12.5.0.tgz", + "integrity": "sha512-g706+XwdsUGpVXzqW7OFcBO8XdxH1AqbD0D3UYEjlfUONXD0c4Bymctdjk49hzOwTVDGqj+CCyvL+cB/X2bG+Q==", + "dependencies": { + "@textlint/kernel": "^12.5.0", + "@textlint/module-interop": "^12.5.0", + "@textlint/types": "^12.5.0", + "@textlint/utils": "^12.5.0", "debug": "^4.3.4", "rc-config-loader": "^4.1.1", "try-resolve": "^1.0.1" @@ -1610,17 +1598,17 @@ } }, "node_modules/@textlint/feature-flag": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/feature-flag/-/feature-flag-12.3.0.tgz", - "integrity": "sha512-7WgC2d6gk+aeQLPz6M24Ngt4hsZkUL701CjP9R9P2RnLFMVOxwJ7YzpxcGTrlK5pmMNZ06xfbHpBd4rE0d567Q==" + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/feature-flag/-/feature-flag-12.5.0.tgz", + "integrity": "sha512-GdyRbbIsWRuZieWKvRxQA8j5wX5hzq+QqEmuputBrU/KKapNfkg6uNY2GOY6SWvC8QcwD0dYh3Dy1x2txT8p8Q==" }, "node_modules/@textlint/fixer-formatter": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-12.4.0.tgz", - "integrity": "sha512-pCo/EuW8CUdF+AMPI/AhfCuDusQ19BORlKznLfCQoPBvTweSo3M2yDTDeHhi2PLNnKy812KpcJBBpZryALe2nA==", + "version": "12.5.1", + "resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-12.5.1.tgz", + "integrity": "sha512-dzOsgpkl5lIB25BHgW0saAohRW4ZF0s/SyK/FbweYtkDGd190USLGpCibx2M8/mAEFDs5YsnTqZlkbp1FLLuyQ==", "dependencies": { - "@textlint/module-interop": "^12.3.0", - "@textlint/types": "^12.3.0", + "@textlint/module-interop": "^12.5.0", + "@textlint/types": "^12.5.0", "chalk": "^4.1.2", "debug": "^4.3.4", "diff": "^4.0.2", @@ -1637,31 +1625,31 @@ "integrity": "sha512-J3cG1pl2llYD4ZaZMe0qVgVaHT8RvT+/SW1FHQ8HRceNalMM9O0Y8iIgtl4GGOx4vMghoIPKFVLASw8P8bJ3ZA==" }, "node_modules/@textlint/kernel": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/kernel/-/kernel-12.3.0.tgz", - "integrity": "sha512-ENNaAeIc3DkuIIA/igkEwu9QIUv6YiLpsZu0lh1+11gdIPbyqwZoF+OO35VColZNFpcIYjeODjZukXAUtKZNCA==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/kernel/-/kernel-12.5.0.tgz", + "integrity": "sha512-9UspUHtS2FShTO9pWnrZjadjIvJzFIdIZDKIYCdZuUdU8dEhJqwOdYosqM4N5Wy40aMKnv4Voxp80Ssaq7zZaA==", "dependencies": { "@textlint/ast-node-types": "^12.3.0", - "@textlint/ast-tester": "^12.3.0", - "@textlint/ast-traverse": "^12.3.0", - "@textlint/feature-flag": "^12.3.0", - "@textlint/source-code-fixer": "^12.3.0", - "@textlint/types": "^12.3.0", - "@textlint/utils": "^12.3.0", + "@textlint/ast-tester": "^12.5.0", + "@textlint/ast-traverse": "^12.5.0", + "@textlint/feature-flag": "^12.5.0", + "@textlint/source-code-fixer": "^12.5.0", + "@textlint/types": "^12.5.0", + "@textlint/utils": "^12.5.0", "debug": "^4.3.4", "deep-equal": "^1.1.1", "structured-source": "^3.0.2" } }, "node_modules/@textlint/linter-formatter": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-12.3.1.tgz", - "integrity": "sha512-n6elvyIBux/lefhmQBZUjgN2EZQ347b6v1waUPAGKmljsndoVCyY+m6RbNhAQtVsNTA1sdO7cJDIxvnX4g1kaA==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-12.5.0.tgz", + "integrity": "sha512-cJ87VGmyqDyjxT2aL3492g/YyGh6AU7/3QqxKN9q8rxJtzaY2e1uJrUKdpj0oOj1xZzYYv8zPeIpFaiFtNW02Q==", "dependencies": { "@azu/format-text": "^1.0.1", "@azu/style-format": "^1.0.0", - "@textlint/module-interop": "^12.3.0", - "@textlint/types": "^12.3.0", + "@textlint/module-interop": "^12.5.0", + "@textlint/types": "^12.5.0", "chalk": "^4.1.2", "debug": "^4.3.4", "is-file": "^1.0.0", @@ -1702,9 +1690,9 @@ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" }, "node_modules/@textlint/markdown-to-ast": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-12.3.0.tgz", - "integrity": "sha512-gyLVU5WTJOIYJlGOPixENCzoj8SC4mpDkB+ADVFoqWCK4AOiZOHxDCH69g2AQQWKJYNmw7is4ZnyKA6q+OCPAw==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-12.5.0.tgz", + "integrity": "sha512-+fUslPm0+ukMnRVMPUQwKv1DEwmDP/rXFuzc5+k5tCMhighZ/Fv/e3Y9MUe7SgNDte7ilajTa3/uP0Iurr60WA==", "dependencies": { "@textlint/ast-node-types": "^12.3.0", "debug": "^4.3.4", @@ -1718,9 +1706,9 @@ } }, "node_modules/@textlint/module-interop": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-12.3.0.tgz", - "integrity": "sha512-Qc7yamUIagaN8XW9cToIrtxOD2dqZeJBCf/Y/P+16aPYU+z186EQ4JNNWPXGss5XNtHNFA5Ztjh17NXpmowk2w==" + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-12.5.0.tgz", + "integrity": "sha512-NmkHL5tt+HEqLm00JSW1f03KTbEqOzupliboSZ2HeNhOqZxSX4wR3lBlGqVeVi5dImMWrt40oa+AbkqkD78b9Q==" }, "node_modules/@textlint/regexp-string-matcher": { "version": "1.1.1", @@ -1744,50 +1732,50 @@ } }, "node_modules/@textlint/source-code-fixer": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/source-code-fixer/-/source-code-fixer-12.3.0.tgz", - "integrity": "sha512-ma5HN8BbmeE6UnIiVWRdMigwqGHGG9R+kTBJBro5tsCyaktGPArnbg1EynJeBVz/C7vMll4RXcuOFyvEtaMsOw==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/source-code-fixer/-/source-code-fixer-12.5.0.tgz", + "integrity": "sha512-7LebJ6Y64Rb4fVYyokpU8FnjNLdx+TehcHQJ9L/fi8PYVjpS/08klYtYfRtKWmi/vrWED7U0aGhb8Xr26NuWFw==", "dependencies": { - "@textlint/types": "^12.3.0", + "@textlint/types": "^12.5.0", "debug": "^4.3.4" } }, "node_modules/@textlint/text-to-ast": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/text-to-ast/-/text-to-ast-12.3.0.tgz", - "integrity": "sha512-eRNy+yUvh5ZkgB+2WrHYVu6HwBopLJwn0cw6bEcgYbUyxYNu7gjwaBp6vyg0qjzLQ3ujA4pkW17v6Q+shm6Oqw==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/text-to-ast/-/text-to-ast-12.5.0.tgz", + "integrity": "sha512-wOWYX+d821ThwNYNk5hfxOBxvkqKUpNOBKkDaic4V+dkuBoAS0D9lE9fA9Ps62kL/I1uQwhU5d4qsAHWnFmQkw==", "dependencies": { "@textlint/ast-node-types": "^12.3.0" } }, "node_modules/@textlint/textlint-plugin-markdown": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-markdown/-/textlint-plugin-markdown-12.3.0.tgz", - "integrity": "sha512-luLU4a3n96jcBjOkybcaRmxQWJX1gMlM48B5HWj0cfgtxCAUmeCFI+fHbWcp6THJR6nPNqWnvzyEuMwYAI9LYQ==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-markdown/-/textlint-plugin-markdown-12.5.0.tgz", + "integrity": "sha512-1B4mTmA1NOvK2kAk4Rl/TW3QFB80iwhsOKSJ16nCH/yvF82xgH+Gu4gQB/prNpACb4TivmzwvBRYp7rzhOTTyA==", "dependencies": { - "@textlint/markdown-to-ast": "^12.3.0" + "@textlint/markdown-to-ast": "^12.5.0" } }, "node_modules/@textlint/textlint-plugin-text": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-text/-/textlint-plugin-text-12.3.0.tgz", - "integrity": "sha512-Z2ZYsKMIma6hOa0wjCUhl7UNFLb2DJFhNYSJkoaiW+TO55WMz0hzBvwXss4fvc8dKit2afMwmGlLKYcie000BA==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-text/-/textlint-plugin-text-12.5.0.tgz", + "integrity": "sha512-ec3rZaJYytoscwpAtuxD4UM3bUPqNAeWKia+LMaVMWREULwKfntlSAqSNmudujEkxdsKr028CkzYuP78q8Xmuw==", "dependencies": { - "@textlint/text-to-ast": "^12.3.0" + "@textlint/text-to-ast": "^12.5.0" } }, "node_modules/@textlint/types": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/types/-/types-12.3.0.tgz", - "integrity": "sha512-6IcKqGJyIISaH4JqkUEsG+3FIg0CVSz1iHFfwMA16YgRuKtSDuySPyo3LfpcQ3dqUeonr29yWgfi2f1QM8SCDw==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/types/-/types-12.5.0.tgz", + "integrity": "sha512-Po5qOubilL/g3dx+ZUgaQzNXbROADBF4Z5xy7qqgV6pBQIEE/06INZDmmLE1Eesm2zoDpygoG/1f/0/Cy5Yupw==", "dependencies": { "@textlint/ast-node-types": "^12.3.0" } }, "node_modules/@textlint/utils": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/utils/-/utils-12.3.0.tgz", - "integrity": "sha512-O9WuQqN+hEs1tVWSd3HQYCPQZyKTW/JjKoaMxYsKtvHwu592094iONppyBFwKpmlQCU/woelvbIRQruDRggVVQ==" + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/utils/-/utils-12.5.0.tgz", + "integrity": "sha512-bQWrQ7Xaru1DRLQhAQQJgNnfGQIwgTgWUigdS5wSwpbmfLDnaMzHu3AG0lk5hEnELMKTCIej5uCR0+YscyUckg==" }, "node_modules/@tootallnate/once": { "version": "1.1.2", @@ -1904,13 +1892,13 @@ "integrity": "sha512-BgeaZuElf7DEYZhWYDTc/XcLZXdVgFkVSTa13BqKvbnmUrxr3TJFKofUxCtDO9UQOdhnV+HPOESdHiHKZOJV1A==" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.48.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.48.0.tgz", - "integrity": "sha512-SVLafp0NXpoJY7ut6VFVUU9I+YeFsDzeQwtK0WZ+xbRN3mtxJ08je+6Oi2N89qDn087COdO0u3blKZNv9VetRQ==", + "version": "5.48.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.48.2.tgz", + "integrity": "sha512-sR0Gja9Ky1teIq4qJOl0nC+Tk64/uYdX+mi+5iB//MH8gwyx8e3SOyhEzeLZEFEEfCaLf8KJq+Bd/6je1t+CAg==", "dependencies": { - "@typescript-eslint/scope-manager": "5.48.0", - "@typescript-eslint/type-utils": "5.48.0", - "@typescript-eslint/utils": "5.48.0", + "@typescript-eslint/scope-manager": "5.48.2", + "@typescript-eslint/type-utils": "5.48.2", + "@typescript-eslint/utils": "5.48.2", "debug": "^4.3.4", "ignore": "^5.2.0", "natural-compare-lite": "^1.4.0", @@ -1936,13 +1924,13 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.48.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.48.0.tgz", - "integrity": "sha512-1mxNA8qfgxX8kBvRDIHEzrRGrKHQfQlbW6iHyfHYS0Q4X1af+S6mkLNtgCOsGVl8+/LUPrqdHMssAemkrQ01qg==", + "version": "5.48.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.48.2.tgz", + "integrity": "sha512-38zMsKsG2sIuM5Oi/olurGwYJXzmtdsHhn5mI/pQogP+BjYVkK5iRazCQ8RGS0V+YLk282uWElN70zAAUmaYHw==", "dependencies": { - "@typescript-eslint/scope-manager": "5.48.0", - "@typescript-eslint/types": "5.48.0", - "@typescript-eslint/typescript-estree": "5.48.0", + "@typescript-eslint/scope-manager": "5.48.2", + "@typescript-eslint/types": "5.48.2", + "@typescript-eslint/typescript-estree": "5.48.2", "debug": "^4.3.4" }, "engines": { @@ -1962,12 +1950,12 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.48.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.48.0.tgz", - "integrity": "sha512-0AA4LviDtVtZqlyUQnZMVHydDATpD9SAX/RC5qh6cBd3xmyWvmXYF+WT1oOmxkeMnWDlUVTwdODeucUnjz3gow==", + "version": "5.48.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.48.2.tgz", + "integrity": "sha512-zEUFfonQid5KRDKoI3O+uP1GnrFd4tIHlvs+sTJXiWuypUWMuDaottkJuR612wQfOkjYbsaskSIURV9xo4f+Fw==", "dependencies": { - "@typescript-eslint/types": "5.48.0", - "@typescript-eslint/visitor-keys": "5.48.0" + "@typescript-eslint/types": "5.48.2", + "@typescript-eslint/visitor-keys": "5.48.2" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1978,12 +1966,12 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.48.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.48.0.tgz", - "integrity": "sha512-vbtPO5sJyFjtHkGlGK4Sthmta0Bbls4Onv0bEqOGm7hP9h8UpRsHJwsrCiWtCUndTRNQO/qe6Ijz9rnT/DB+7g==", + "version": "5.48.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.48.2.tgz", + "integrity": "sha512-QVWx7J5sPMRiOMJp5dYshPxABRoZV1xbRirqSk8yuIIsu0nvMTZesKErEA3Oix1k+uvsk8Cs8TGJ6kQ0ndAcew==", "dependencies": { - "@typescript-eslint/typescript-estree": "5.48.0", - "@typescript-eslint/utils": "5.48.0", + "@typescript-eslint/typescript-estree": "5.48.2", + "@typescript-eslint/utils": "5.48.2", "debug": "^4.3.4", "tsutils": "^3.21.0" }, @@ -2004,9 +1992,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.48.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.48.0.tgz", - "integrity": "sha512-UTe67B0Ypius0fnEE518NB2N8gGutIlTojeTg4nt0GQvikReVkurqxd2LvYa9q9M5MQ6rtpNyWTBxdscw40Xhw==", + "version": "5.48.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.48.2.tgz", + "integrity": "sha512-hE7dA77xxu7ByBc6KCzikgfRyBCTst6dZQpwaTy25iMYOnbNljDT4hjhrGEJJ0QoMjrfqrx+j1l1B9/LtKeuqA==", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -2016,12 +2004,12 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.48.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.48.0.tgz", - "integrity": "sha512-7pjd94vvIjI1zTz6aq/5wwE/YrfIyEPLtGJmRfyNR9NYIW+rOvzzUv3Cmq2hRKpvt6e9vpvPUQ7puzX7VSmsEw==", + "version": "5.48.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.48.2.tgz", + "integrity": "sha512-bibvD3z6ilnoVxUBFEgkO0k0aFvUc4Cttt0dAreEr+nrAHhWzkO83PEVVuieK3DqcgL6VAK5dkzK8XUVja5Zcg==", "dependencies": { - "@typescript-eslint/types": "5.48.0", - "@typescript-eslint/visitor-keys": "5.48.0", + "@typescript-eslint/types": "5.48.2", + "@typescript-eslint/visitor-keys": "5.48.2", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -2042,15 +2030,15 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.48.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.48.0.tgz", - "integrity": "sha512-x2jrMcPaMfsHRRIkL+x96++xdzvrdBCnYRd5QiW5Wgo1OB4kDYPbC1XjWP/TNqlfK93K/lUL92erq5zPLgFScQ==", + "version": "5.48.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.48.2.tgz", + "integrity": "sha512-2h18c0d7jgkw6tdKTlNaM7wyopbLRBiit8oAxoP89YnuBOzCZ8g8aBCaCqq7h208qUTroL7Whgzam7UY3HVLow==", "dependencies": { "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.48.0", - "@typescript-eslint/types": "5.48.0", - "@typescript-eslint/typescript-estree": "5.48.0", + "@typescript-eslint/scope-manager": "5.48.2", + "@typescript-eslint/types": "5.48.2", + "@typescript-eslint/typescript-estree": "5.48.2", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0", "semver": "^7.3.7" @@ -2067,11 +2055,11 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.48.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.48.0.tgz", - "integrity": "sha512-5motVPz5EgxQ0bHjut3chzBkJ3Z3sheYVcSwS5BpHZpLqSptSmELNtGixmgj65+rIfhvtQTz5i9OP2vtzdDH7Q==", + "version": "5.48.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.48.2.tgz", + "integrity": "sha512-z9njZLSkwmjFWUelGEwEbdf4NwKvfHxvGC0OcGN1Hp/XNDIcJ7D5DpPNPv6x6/mFvc1tQHsaWmpD/a4gOvvCJQ==", "dependencies": { - "@typescript-eslint/types": "5.48.0", + "@typescript-eslint/types": "5.48.2", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -2250,17 +2238,45 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "node_modules/aria-query": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", - "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", "dependencies": { - "@babel/runtime": "^7.10.2", - "@babel/runtime-corejs3": "^7.10.2" + "deep-equal": "^2.0.5" + } + }, + "node_modules/aria-query/node_modules/deep-equal": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.0.tgz", + "integrity": "sha512-RdpzE0Hv4lhowpIUKKMJfeH6C1pXdtT1/it80ubgWqwI3qpuxUBpC1S4hnHg+zjnuOoDkzUtUCEEkG+XG5l3Mw==", + "dependencies": { + "call-bind": "^1.0.2", + "es-get-iterator": "^1.1.2", + "get-intrinsic": "^1.1.3", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.1", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" }, - "engines": { - "node": ">=6.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/aria-query/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + }, "node_modules/array-includes": { "version": "3.1.6", "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", @@ -2363,9 +2379,9 @@ } }, "node_modules/asl-validator": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/asl-validator/-/asl-validator-3.0.8.tgz", - "integrity": "sha512-ku2hkt137ebImA6DNySVoBtymffl/62TQHWKBb54yI3twrcsQyi78fPtvRi+PMob89vLeb0BbGezr5+4rQcJ7Q==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/asl-validator/-/asl-validator-3.1.0.tgz", + "integrity": "sha512-J2OmT6lkj2RHojDLWyqh33BNCBfpOIAEl1z01cd/4WiGt8Sjgqx+gbX7WsgVKGS4uF/pGwc1EkrZvm0mSRMcWA==", "dependencies": { "ajv": "^8.11.0", "asl-path-validator": "^0.11.0", @@ -2439,10 +2455,21 @@ "node": ">= 4.0.0" } }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/axe-core": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.5.2.tgz", - "integrity": "sha512-u2MVsXfew5HBvjsczCv+xlwdNnB1oQR9HlAcsejZttNjKKSkeDNVwB1vMThIUIFI9GoT57Vtk8iQLwqOfAkboA==", + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.6.2.tgz", + "integrity": "sha512-b1WlTV8+XKLj9gZy2DZXgQiyDp9xkkoe2a6U6UbYccScq2wgH/YwCeI2/Jq2mgo0HzQxqJOjWZBLeA/mqsk5Mg==", "engines": { "node": ">=4" } @@ -2458,9 +2485,44 @@ } }, "node_modules/axobject-query": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.1.1.tgz", + "integrity": "sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==", + "dependencies": { + "deep-equal": "^2.0.5" + } + }, + "node_modules/axobject-query/node_modules/deep-equal": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", - "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==" + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.0.tgz", + "integrity": "sha512-RdpzE0Hv4lhowpIUKKMJfeH6C1pXdtT1/it80ubgWqwI3qpuxUBpC1S4hnHg+zjnuOoDkzUtUCEEkG+XG5l3Mw==", + "dependencies": { + "call-bind": "^1.0.2", + "es-get-iterator": "^1.1.2", + "get-intrinsic": "^1.1.3", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.1", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axobject-query/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" }, "node_modules/babel-eslint": { "version": "10.1.0", @@ -2951,16 +3013,6 @@ "url": "https://opencollective.com/core-js" } }, - "node_modules/core-js-pure": { - "version": "3.22.6", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.22.6.tgz", - "integrity": "sha512-u5yG2VL6NKXz9BZHr9RAm6eWD1DTNjG7jJnJgLGR+Im0whdPcPXqwqxd+dcUrZvpvPan5KMgn/3pI+Q/aGqPOA==", - "hasInstallScript": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", @@ -3371,6 +3423,30 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-get-iterator/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + }, "node_modules/es-shim-unscopables": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", @@ -3491,9 +3567,9 @@ } }, "node_modules/eslint": { - "version": "8.31.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.31.0.tgz", - "integrity": "sha512-0tQQEVdmPZ1UtUKXjX7EMm9BlgJ08G90IhWh0PKDCb3ZLsgAOHI8fYSIzYVZej92zsgq+ft0FGsxhJ3xo2tbuA==", + "version": "8.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.32.0.tgz", + "integrity": "sha512-nETVXpnthqKPFyuY2FNjz/bEd6nbosRgKbkgS/y1C7LJop96gYHWpiguLecMHQ2XCPxn77DS0P+68WzG6vkZSQ==", "dependencies": { "@eslint/eslintrc": "^1.4.1", "@humanwhocodes/config-array": "^0.11.8", @@ -3851,9 +3927,9 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "node_modules/eslint-plugin-jest": { - "version": "27.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.2.0.tgz", - "integrity": "sha512-KGIYtelk4rIhKocxRKUEeX+kJ0ZCab/CiSgS8BMcKD7AY7YxXhlg/d51oF5jq2rOrtuJEDYWRwXD95l6l2vtrA==", + "version": "27.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.2.1.tgz", + "integrity": "sha512-l067Uxx7ZT8cO9NJuf+eJHvt6bqJyz2Z29wykyEdz/OtmcELQl2MQGQLX8J94O1cSJWAwUSEvCjwjA7KEK3Hmg==", "dependencies": { "@typescript-eslint/utils": "^5.10.0" }, @@ -3886,9 +3962,9 @@ } }, "node_modules/eslint-plugin-jsonc": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsonc/-/eslint-plugin-jsonc-2.5.0.tgz", - "integrity": "sha512-G257khwkrOQ5MJpSzz4yQh5K12W4xFZRcHmVlhVFWh2GCLDX+JwHnmkQoUoFDbOieSPBMsPFZDTJScwrXiWlIg==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsonc/-/eslint-plugin-jsonc-2.6.0.tgz", + "integrity": "sha512-4bA9YTx58QaWalua1Q1b82zt7eZMB7i+ed8q8cKkbKP75ofOA2SXbtFyCSok7RY6jIXeCqQnKjN9If8zCgv6PA==", "dependencies": { "eslint-utils": "^3.0.0", "jsonc-eslint-parser": "^2.0.4", @@ -3905,22 +3981,25 @@ } }, "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz", - "integrity": "sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q==", + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz", + "integrity": "sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==", "dependencies": { - "@babel/runtime": "^7.18.9", - "aria-query": "^4.2.2", - "array-includes": "^3.1.5", + "@babel/runtime": "^7.20.7", + "aria-query": "^5.1.3", + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", "ast-types-flow": "^0.0.7", - "axe-core": "^4.4.3", - "axobject-query": "^2.2.0", + "axe-core": "^4.6.2", + "axobject-query": "^3.1.1", "damerau-levenshtein": "^1.0.8", "emoji-regex": "^9.2.2", "has": "^1.0.3", - "jsx-ast-utils": "^3.3.2", - "language-tags": "^1.0.5", + "jsx-ast-utils": "^3.3.3", + "language-tags": "=1.0.5", "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", "semver": "^6.3.0" }, "engines": { @@ -4002,9 +4081,9 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.31.11", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.31.11.tgz", - "integrity": "sha512-TTvq5JsT5v56wPa9OYHzsrOlHzKZKjV+aLgS+55NJP/cuzdiQPC7PfYoUjMoxlffKtvijpk7vA/jmuqRb9nohw==", + "version": "7.32.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.1.tgz", + "integrity": "sha512-vOjdgyd0ZHBXNsmvU+785xY8Bfe57EFbTYYk8XrROzWpr9QBvpjITvAXt9xqcE6+8cjR/g1+mfumPToxsl1www==", "dependencies": { "array-includes": "^3.1.6", "array.prototype.flatmap": "^1.3.1", @@ -4018,7 +4097,7 @@ "object.hasown": "^1.1.2", "object.values": "^1.1.6", "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.3", + "resolve": "^2.0.0-next.4", "semver": "^6.3.0", "string.prototype.matchall": "^4.0.8" }, @@ -4069,12 +4148,16 @@ } }, "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.3", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", - "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", + "version": "2.0.0-next.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", + "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4089,9 +4172,9 @@ } }, "node_modules/eslint-plugin-vue": { - "version": "9.8.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.8.0.tgz", - "integrity": "sha512-E/AXwcTzunyzM83C2QqDHxepMzvI2y6x+mmeYHbVDQlKFqmKYvRrhaVixEeeG27uI44p9oKDFiyCRw4XxgtfHA==", + "version": "9.9.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.9.0.tgz", + "integrity": "sha512-YbubS7eK0J7DCf0U2LxvVP7LMfs6rC6UltihIgval3azO3gyDwEGVgsCMe1TmDiEkl6GdMKfRpaME6QxIYtzDQ==", "dependencies": { "eslint-utils": "^3.0.0", "natural-compare": "^1.4.0", @@ -4625,6 +4708,14 @@ } } }, + "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==", + "dependencies": { + "is-callable": "^1.1.3" + } + }, "node_modules/form-data": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", @@ -5114,6 +5205,17 @@ "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", "integrity": "sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=" }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", @@ -5381,9 +5483,9 @@ } }, "node_modules/immer": { - "version": "9.0.17", - "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.17.tgz", - "integrity": "sha512-+hBruaLSQvkPfxRiTLK/mi4vLH+/VQS6z2KJahdoxlleFOI8ARqzOF17uy12eFDlqWmPoygwc5evgwcp+dlHhg==", + "version": "9.0.18", + "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.18.tgz", + "integrity": "sha512-eAPNpsj7Ax1q6Y/3lm2PmlwRcFzpON7HSNQ3ru5WQH1/PSpnyed/HpNOELl2CxLKoj4r+bAHgdyKqW5gc2Se1A==", "funding": { "type": "opencollective", "url": "https://opencollective.com/immer" @@ -5451,11 +5553,11 @@ } }, "node_modules/internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.4.tgz", + "integrity": "sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==", "dependencies": { - "get-intrinsic": "^1.1.0", + "get-intrinsic": "^1.1.3", "has": "^1.0.3", "side-channel": "^1.0.4" }, @@ -5516,6 +5618,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-array-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.1.tgz", + "integrity": "sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -5715,6 +5830,14 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/is-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-negative-zero": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", @@ -5813,6 +5936,14 @@ "node": ">=6" } }, + "node_modules/is-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-shared-array-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", @@ -5863,11 +5994,37 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-utf8": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" }, + "node_modules/is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -5879,6 +6036,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-weakset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", @@ -6297,30 +6466,29 @@ } }, "node_modules/markdownlint": { - "version": "0.26.2", - "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.26.2.tgz", - "integrity": "sha512-2Am42YX2Ex5SQhRq35HxYWDfz1NLEOZWWN25nqd2h3AHRKsGRE+Qg1gt1++exW792eXTrR4jCNHfShfWk9Nz8w==", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.27.0.tgz", + "integrity": "sha512-HtfVr/hzJJmE0C198F99JLaeada+646B5SaG2pVoEakLFI6iRGsvMqrnnrflq8hm1zQgwskEgqSnhDW11JBp0w==", "dependencies": { "markdown-it": "13.0.1" }, "engines": { - "node": ">=14" + "node": ">=14.18.0" } }, "node_modules/markdownlint-cli": { - "version": "0.32.2", - "resolved": "https://registry.npmjs.org/markdownlint-cli/-/markdownlint-cli-0.32.2.tgz", - "integrity": "sha512-xmJT1rGueUgT4yGNwk6D0oqQr90UJ7nMyakXtqjgswAkEhYYqjHew9RY8wDbOmh2R270IWjuKSeZzHDEGPAUkQ==", + "version": "0.33.0", + "resolved": "https://registry.npmjs.org/markdownlint-cli/-/markdownlint-cli-0.33.0.tgz", + "integrity": "sha512-zMK1oHpjYkhjO+94+ngARiBBrRDEUMzooDHBAHtmEIJ9oYddd9l3chCReY2mPlecwH7gflQp1ApilTo+o0zopQ==", "dependencies": { - "commander": "~9.4.0", + "commander": "~9.4.1", "get-stdin": "~9.0.0", "glob": "~8.0.3", - "ignore": "~5.2.0", + "ignore": "~5.2.4", "js-yaml": "^4.1.0", - "jsonc-parser": "~3.1.0", - "markdownlint": "~0.26.2", - "markdownlint-rule-helpers": "~0.17.2", - "minimatch": "~5.1.0", + "jsonc-parser": "~3.2.0", + "markdownlint": "~0.27.0", + "minimatch": "~5.1.2", "run-con": "~1.2.11" }, "bin": { @@ -6347,14 +6515,14 @@ } }, "node_modules/markdownlint-cli/node_modules/jsonc-parser": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", - "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==" + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==" }, "node_modules/markdownlint-cli/node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg==", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -6362,14 +6530,6 @@ "node": ">=10" } }, - "node_modules/markdownlint-rule-helpers": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/markdownlint-rule-helpers/-/markdownlint-rule-helpers-0.17.2.tgz", - "integrity": "sha512-XaeoW2NYSlWxMCZM2B3H7YTG6nlaLfkEZWMBhr4hSPlq9MuY2sy83+Xr89jXOqZMZYjvi5nBCGoFh7hHoPKZmA==", - "engines": { - "node": ">=12" - } - }, "node_modules/mathml-tag-names": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", @@ -7925,9 +8085,9 @@ } }, "node_modules/prettier": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.1.tgz", - "integrity": "sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg==", + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.3.tgz", + "integrity": "sha512-tJ/oJ4amDihPoufT5sM0Z1SKEuKay8LfVAMlbbhnnkvt6BUserZylqo2PN+p9KeljLr0OHa2rXHU1T8reeoTrw==", "bin": { "prettier": "bin-prettier.js" }, @@ -9115,6 +9275,17 @@ "node": ">= 0.8" } }, + "node_modules/stop-iteration-iterator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", + "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "dependencies": { + "internal-slot": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/string_decoder": { "version": "0.10.31", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", @@ -9572,22 +9743,22 @@ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" }, "node_modules/textlint": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/textlint/-/textlint-12.4.0.tgz", - "integrity": "sha512-n8WAsOf+JtDXTj12A8DF+kuaV+YVawaf8DUzdEc00AFK/qMUsvUZ79X60SBO1sEYwkjExErQv1JRIFHwOp/XEw==", + "version": "12.5.1", + "resolved": "https://registry.npmjs.org/textlint/-/textlint-12.5.1.tgz", + "integrity": "sha512-LoFU1yBIm/gxM++jDdvdfS2diW14NBHsimRyChi8Kb5h5pUHcG0rGfW2PflUzfYcHF0XykgW9WBdPd1WWnyS7Q==", "dependencies": { "@textlint/ast-node-types": "^12.3.0", - "@textlint/ast-traverse": "^12.3.0", - "@textlint/config-loader": "^12.3.1", - "@textlint/feature-flag": "^12.3.0", - "@textlint/fixer-formatter": "^12.4.0", - "@textlint/kernel": "^12.3.0", - "@textlint/linter-formatter": "^12.3.1", - "@textlint/module-interop": "^12.3.0", - "@textlint/textlint-plugin-markdown": "^12.3.0", - "@textlint/textlint-plugin-text": "^12.3.0", - "@textlint/types": "^12.3.0", - "@textlint/utils": "^12.3.0", + "@textlint/ast-traverse": "^12.5.0", + "@textlint/config-loader": "^12.5.0", + "@textlint/feature-flag": "^12.5.0", + "@textlint/fixer-formatter": "^12.5.1", + "@textlint/kernel": "^12.5.0", + "@textlint/linter-formatter": "^12.5.0", + "@textlint/module-interop": "^12.5.0", + "@textlint/textlint-plugin-markdown": "^12.5.0", + "@textlint/textlint-plugin-text": "^12.5.0", + "@textlint/types": "^12.5.0", + "@textlint/utils": "^12.5.0", "debug": "^4.3.4", "deep-equal": "^1.1.1", "file-entry-cache": "^5.0.1", @@ -10124,9 +10295,9 @@ } }, "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dependencies": { "minimist": "^1.2.0" }, @@ -10607,6 +10778,39 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dependencies": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/winreg": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/winreg/-/winreg-1.2.4.tgz", @@ -11115,20 +11319,11 @@ "integrity": "sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==" }, "@babel/runtime": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.1.tgz", - "integrity": "sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.7.tgz", + "integrity": "sha512-UF0tvkUtxwAgZ5W/KrkHf0Rn0fdnLDU9ScxBrEVNUprE/MzirjK4MJUX1/BVDv00Sv8cljtukVK1aky++X1SjQ==", "requires": { - "regenerator-runtime": "^0.13.10" - } - }, - "@babel/runtime-corejs3": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.18.0.tgz", - "integrity": "sha512-G5FaGZOWORq9zthDjIrjib5XlcddeqLbIiDO3YQsut6j7aGf76xn0umUC/pA6+nApk3hQJF4JzLzg5PCl6ewJg==", - "requires": { - "core-js-pure": "^3.20.2", - "regenerator-runtime": "^0.13.4" + "regenerator-runtime": "^0.13.11" } }, "@babel/template": { @@ -12003,31 +12198,31 @@ "integrity": "sha512-ke5hlKy/xZ/vQt6j+h4k9GradJPDsV3FKsUqWpCpF/X8qWCU2zM4e1SMUAFjoUcLuF9in+eXIQ71Qm/AdjjkZQ==" }, "@textlint/ast-tester": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/ast-tester/-/ast-tester-12.3.0.tgz", - "integrity": "sha512-f135pLEv/6epjRNlSTpxHX/3lutzB+l1GCHjVlm+PRCWEunKBvcZxyBCf1mp00vKNQdOpLnSPFDHIa/KgsZ/nQ==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/ast-tester/-/ast-tester-12.5.0.tgz", + "integrity": "sha512-osHf1OFLC3RnjGyoSBynn2u5pgj7qkik8TNaxgPekVwlLWtJTcyh22PHo+mXPF47XWM5gJQmy/72nUrqtbDMPg==", "requires": { "@textlint/ast-node-types": "^12.3.0", "debug": "^4.3.4" } }, "@textlint/ast-traverse": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/ast-traverse/-/ast-traverse-12.3.0.tgz", - "integrity": "sha512-WkDOgs7LJNf9kq7yGIi10FuBkW0wpbgMR6unLegRBwT+xN7JxynFnlLVHUfyJs3S0VPYFHX6Dvybg4As7iM4Tw==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/ast-traverse/-/ast-traverse-12.5.0.tgz", + "integrity": "sha512-TAbfxz8x8Q/sn7D/h7OikzYp5NqPDrRExm3N+3v9yj+gq++fxHtskas48tm1TYcChTMq6BbPU+EGbdlMo3rWWA==", "requires": { "@textlint/ast-node-types": "^12.3.0" } }, "@textlint/config-loader": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@textlint/config-loader/-/config-loader-12.3.1.tgz", - "integrity": "sha512-iKCrif/McG0dCokvyoxvXcH6G9FaiSDF3DtNYo4GlxavqVtKxKxuFvkeQahWL0QWM9Z+yXlGUcBJdYj6Zxevkw==", - "requires": { - "@textlint/kernel": "^12.3.0", - "@textlint/module-interop": "^12.3.0", - "@textlint/types": "^12.3.0", - "@textlint/utils": "^12.3.0", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/config-loader/-/config-loader-12.5.0.tgz", + "integrity": "sha512-g706+XwdsUGpVXzqW7OFcBO8XdxH1AqbD0D3UYEjlfUONXD0c4Bymctdjk49hzOwTVDGqj+CCyvL+cB/X2bG+Q==", + "requires": { + "@textlint/kernel": "^12.5.0", + "@textlint/module-interop": "^12.5.0", + "@textlint/types": "^12.5.0", + "@textlint/utils": "^12.5.0", "debug": "^4.3.4", "rc-config-loader": "^4.1.1", "try-resolve": "^1.0.1" @@ -12047,17 +12242,17 @@ } }, "@textlint/feature-flag": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/feature-flag/-/feature-flag-12.3.0.tgz", - "integrity": "sha512-7WgC2d6gk+aeQLPz6M24Ngt4hsZkUL701CjP9R9P2RnLFMVOxwJ7YzpxcGTrlK5pmMNZ06xfbHpBd4rE0d567Q==" + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/feature-flag/-/feature-flag-12.5.0.tgz", + "integrity": "sha512-GdyRbbIsWRuZieWKvRxQA8j5wX5hzq+QqEmuputBrU/KKapNfkg6uNY2GOY6SWvC8QcwD0dYh3Dy1x2txT8p8Q==" }, "@textlint/fixer-formatter": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-12.4.0.tgz", - "integrity": "sha512-pCo/EuW8CUdF+AMPI/AhfCuDusQ19BORlKznLfCQoPBvTweSo3M2yDTDeHhi2PLNnKy812KpcJBBpZryALe2nA==", + "version": "12.5.1", + "resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-12.5.1.tgz", + "integrity": "sha512-dzOsgpkl5lIB25BHgW0saAohRW4ZF0s/SyK/FbweYtkDGd190USLGpCibx2M8/mAEFDs5YsnTqZlkbp1FLLuyQ==", "requires": { - "@textlint/module-interop": "^12.3.0", - "@textlint/types": "^12.3.0", + "@textlint/module-interop": "^12.5.0", + "@textlint/types": "^12.5.0", "chalk": "^4.1.2", "debug": "^4.3.4", "diff": "^4.0.2", @@ -12074,31 +12269,31 @@ "integrity": "sha512-J3cG1pl2llYD4ZaZMe0qVgVaHT8RvT+/SW1FHQ8HRceNalMM9O0Y8iIgtl4GGOx4vMghoIPKFVLASw8P8bJ3ZA==" }, "@textlint/kernel": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/kernel/-/kernel-12.3.0.tgz", - "integrity": "sha512-ENNaAeIc3DkuIIA/igkEwu9QIUv6YiLpsZu0lh1+11gdIPbyqwZoF+OO35VColZNFpcIYjeODjZukXAUtKZNCA==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/kernel/-/kernel-12.5.0.tgz", + "integrity": "sha512-9UspUHtS2FShTO9pWnrZjadjIvJzFIdIZDKIYCdZuUdU8dEhJqwOdYosqM4N5Wy40aMKnv4Voxp80Ssaq7zZaA==", "requires": { "@textlint/ast-node-types": "^12.3.0", - "@textlint/ast-tester": "^12.3.0", - "@textlint/ast-traverse": "^12.3.0", - "@textlint/feature-flag": "^12.3.0", - "@textlint/source-code-fixer": "^12.3.0", - "@textlint/types": "^12.3.0", - "@textlint/utils": "^12.3.0", + "@textlint/ast-tester": "^12.5.0", + "@textlint/ast-traverse": "^12.5.0", + "@textlint/feature-flag": "^12.5.0", + "@textlint/source-code-fixer": "^12.5.0", + "@textlint/types": "^12.5.0", + "@textlint/utils": "^12.5.0", "debug": "^4.3.4", "deep-equal": "^1.1.1", "structured-source": "^3.0.2" } }, "@textlint/linter-formatter": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-12.3.1.tgz", - "integrity": "sha512-n6elvyIBux/lefhmQBZUjgN2EZQ347b6v1waUPAGKmljsndoVCyY+m6RbNhAQtVsNTA1sdO7cJDIxvnX4g1kaA==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-12.5.0.tgz", + "integrity": "sha512-cJ87VGmyqDyjxT2aL3492g/YyGh6AU7/3QqxKN9q8rxJtzaY2e1uJrUKdpj0oOj1xZzYYv8zPeIpFaiFtNW02Q==", "requires": { "@azu/format-text": "^1.0.1", "@azu/style-format": "^1.0.0", - "@textlint/module-interop": "^12.3.0", - "@textlint/types": "^12.3.0", + "@textlint/module-interop": "^12.5.0", + "@textlint/types": "^12.5.0", "chalk": "^4.1.2", "debug": "^4.3.4", "is-file": "^1.0.0", @@ -12138,9 +12333,9 @@ } }, "@textlint/markdown-to-ast": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-12.3.0.tgz", - "integrity": "sha512-gyLVU5WTJOIYJlGOPixENCzoj8SC4mpDkB+ADVFoqWCK4AOiZOHxDCH69g2AQQWKJYNmw7is4ZnyKA6q+OCPAw==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-12.5.0.tgz", + "integrity": "sha512-+fUslPm0+ukMnRVMPUQwKv1DEwmDP/rXFuzc5+k5tCMhighZ/Fv/e3Y9MUe7SgNDte7ilajTa3/uP0Iurr60WA==", "requires": { "@textlint/ast-node-types": "^12.3.0", "debug": "^4.3.4", @@ -12154,9 +12349,9 @@ } }, "@textlint/module-interop": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-12.3.0.tgz", - "integrity": "sha512-Qc7yamUIagaN8XW9cToIrtxOD2dqZeJBCf/Y/P+16aPYU+z186EQ4JNNWPXGss5XNtHNFA5Ztjh17NXpmowk2w==" + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-12.5.0.tgz", + "integrity": "sha512-NmkHL5tt+HEqLm00JSW1f03KTbEqOzupliboSZ2HeNhOqZxSX4wR3lBlGqVeVi5dImMWrt40oa+AbkqkD78b9Q==" }, "@textlint/regexp-string-matcher": { "version": "1.1.1", @@ -12179,50 +12374,50 @@ } }, "@textlint/source-code-fixer": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/source-code-fixer/-/source-code-fixer-12.3.0.tgz", - "integrity": "sha512-ma5HN8BbmeE6UnIiVWRdMigwqGHGG9R+kTBJBro5tsCyaktGPArnbg1EynJeBVz/C7vMll4RXcuOFyvEtaMsOw==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/source-code-fixer/-/source-code-fixer-12.5.0.tgz", + "integrity": "sha512-7LebJ6Y64Rb4fVYyokpU8FnjNLdx+TehcHQJ9L/fi8PYVjpS/08klYtYfRtKWmi/vrWED7U0aGhb8Xr26NuWFw==", "requires": { - "@textlint/types": "^12.3.0", + "@textlint/types": "^12.5.0", "debug": "^4.3.4" } }, "@textlint/text-to-ast": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/text-to-ast/-/text-to-ast-12.3.0.tgz", - "integrity": "sha512-eRNy+yUvh5ZkgB+2WrHYVu6HwBopLJwn0cw6bEcgYbUyxYNu7gjwaBp6vyg0qjzLQ3ujA4pkW17v6Q+shm6Oqw==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/text-to-ast/-/text-to-ast-12.5.0.tgz", + "integrity": "sha512-wOWYX+d821ThwNYNk5hfxOBxvkqKUpNOBKkDaic4V+dkuBoAS0D9lE9fA9Ps62kL/I1uQwhU5d4qsAHWnFmQkw==", "requires": { "@textlint/ast-node-types": "^12.3.0" } }, "@textlint/textlint-plugin-markdown": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-markdown/-/textlint-plugin-markdown-12.3.0.tgz", - "integrity": "sha512-luLU4a3n96jcBjOkybcaRmxQWJX1gMlM48B5HWj0cfgtxCAUmeCFI+fHbWcp6THJR6nPNqWnvzyEuMwYAI9LYQ==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-markdown/-/textlint-plugin-markdown-12.5.0.tgz", + "integrity": "sha512-1B4mTmA1NOvK2kAk4Rl/TW3QFB80iwhsOKSJ16nCH/yvF82xgH+Gu4gQB/prNpACb4TivmzwvBRYp7rzhOTTyA==", "requires": { - "@textlint/markdown-to-ast": "^12.3.0" + "@textlint/markdown-to-ast": "^12.5.0" } }, "@textlint/textlint-plugin-text": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-text/-/textlint-plugin-text-12.3.0.tgz", - "integrity": "sha512-Z2ZYsKMIma6hOa0wjCUhl7UNFLb2DJFhNYSJkoaiW+TO55WMz0hzBvwXss4fvc8dKit2afMwmGlLKYcie000BA==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-text/-/textlint-plugin-text-12.5.0.tgz", + "integrity": "sha512-ec3rZaJYytoscwpAtuxD4UM3bUPqNAeWKia+LMaVMWREULwKfntlSAqSNmudujEkxdsKr028CkzYuP78q8Xmuw==", "requires": { - "@textlint/text-to-ast": "^12.3.0" + "@textlint/text-to-ast": "^12.5.0" } }, "@textlint/types": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/types/-/types-12.3.0.tgz", - "integrity": "sha512-6IcKqGJyIISaH4JqkUEsG+3FIg0CVSz1iHFfwMA16YgRuKtSDuySPyo3LfpcQ3dqUeonr29yWgfi2f1QM8SCDw==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/types/-/types-12.5.0.tgz", + "integrity": "sha512-Po5qOubilL/g3dx+ZUgaQzNXbROADBF4Z5xy7qqgV6pBQIEE/06INZDmmLE1Eesm2zoDpygoG/1f/0/Cy5Yupw==", "requires": { "@textlint/ast-node-types": "^12.3.0" } }, "@textlint/utils": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/utils/-/utils-12.3.0.tgz", - "integrity": "sha512-O9WuQqN+hEs1tVWSd3HQYCPQZyKTW/JjKoaMxYsKtvHwu592094iONppyBFwKpmlQCU/woelvbIRQruDRggVVQ==" + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/utils/-/utils-12.5.0.tgz", + "integrity": "sha512-bQWrQ7Xaru1DRLQhAQQJgNnfGQIwgTgWUigdS5wSwpbmfLDnaMzHu3AG0lk5hEnELMKTCIej5uCR0+YscyUckg==" }, "@tootallnate/once": { "version": "1.1.2", @@ -12336,13 +12531,13 @@ "integrity": "sha512-BgeaZuElf7DEYZhWYDTc/XcLZXdVgFkVSTa13BqKvbnmUrxr3TJFKofUxCtDO9UQOdhnV+HPOESdHiHKZOJV1A==" }, "@typescript-eslint/eslint-plugin": { - "version": "5.48.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.48.0.tgz", - "integrity": "sha512-SVLafp0NXpoJY7ut6VFVUU9I+YeFsDzeQwtK0WZ+xbRN3mtxJ08je+6Oi2N89qDn087COdO0u3blKZNv9VetRQ==", + "version": "5.48.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.48.2.tgz", + "integrity": "sha512-sR0Gja9Ky1teIq4qJOl0nC+Tk64/uYdX+mi+5iB//MH8gwyx8e3SOyhEzeLZEFEEfCaLf8KJq+Bd/6je1t+CAg==", "requires": { - "@typescript-eslint/scope-manager": "5.48.0", - "@typescript-eslint/type-utils": "5.48.0", - "@typescript-eslint/utils": "5.48.0", + "@typescript-eslint/scope-manager": "5.48.2", + "@typescript-eslint/type-utils": "5.48.2", + "@typescript-eslint/utils": "5.48.2", "debug": "^4.3.4", "ignore": "^5.2.0", "natural-compare-lite": "^1.4.0", @@ -12352,48 +12547,48 @@ } }, "@typescript-eslint/parser": { - "version": "5.48.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.48.0.tgz", - "integrity": "sha512-1mxNA8qfgxX8kBvRDIHEzrRGrKHQfQlbW6iHyfHYS0Q4X1af+S6mkLNtgCOsGVl8+/LUPrqdHMssAemkrQ01qg==", + "version": "5.48.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.48.2.tgz", + "integrity": "sha512-38zMsKsG2sIuM5Oi/olurGwYJXzmtdsHhn5mI/pQogP+BjYVkK5iRazCQ8RGS0V+YLk282uWElN70zAAUmaYHw==", "requires": { - "@typescript-eslint/scope-manager": "5.48.0", - "@typescript-eslint/types": "5.48.0", - "@typescript-eslint/typescript-estree": "5.48.0", + "@typescript-eslint/scope-manager": "5.48.2", + "@typescript-eslint/types": "5.48.2", + "@typescript-eslint/typescript-estree": "5.48.2", "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "5.48.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.48.0.tgz", - "integrity": "sha512-0AA4LviDtVtZqlyUQnZMVHydDATpD9SAX/RC5qh6cBd3xmyWvmXYF+WT1oOmxkeMnWDlUVTwdODeucUnjz3gow==", + "version": "5.48.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.48.2.tgz", + "integrity": "sha512-zEUFfonQid5KRDKoI3O+uP1GnrFd4tIHlvs+sTJXiWuypUWMuDaottkJuR612wQfOkjYbsaskSIURV9xo4f+Fw==", "requires": { - "@typescript-eslint/types": "5.48.0", - "@typescript-eslint/visitor-keys": "5.48.0" + "@typescript-eslint/types": "5.48.2", + "@typescript-eslint/visitor-keys": "5.48.2" } }, "@typescript-eslint/type-utils": { - "version": "5.48.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.48.0.tgz", - "integrity": "sha512-vbtPO5sJyFjtHkGlGK4Sthmta0Bbls4Onv0bEqOGm7hP9h8UpRsHJwsrCiWtCUndTRNQO/qe6Ijz9rnT/DB+7g==", + "version": "5.48.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.48.2.tgz", + "integrity": "sha512-QVWx7J5sPMRiOMJp5dYshPxABRoZV1xbRirqSk8yuIIsu0nvMTZesKErEA3Oix1k+uvsk8Cs8TGJ6kQ0ndAcew==", "requires": { - "@typescript-eslint/typescript-estree": "5.48.0", - "@typescript-eslint/utils": "5.48.0", + "@typescript-eslint/typescript-estree": "5.48.2", + "@typescript-eslint/utils": "5.48.2", "debug": "^4.3.4", "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "5.48.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.48.0.tgz", - "integrity": "sha512-UTe67B0Ypius0fnEE518NB2N8gGutIlTojeTg4nt0GQvikReVkurqxd2LvYa9q9M5MQ6rtpNyWTBxdscw40Xhw==" + "version": "5.48.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.48.2.tgz", + "integrity": "sha512-hE7dA77xxu7ByBc6KCzikgfRyBCTst6dZQpwaTy25iMYOnbNljDT4hjhrGEJJ0QoMjrfqrx+j1l1B9/LtKeuqA==" }, "@typescript-eslint/typescript-estree": { - "version": "5.48.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.48.0.tgz", - "integrity": "sha512-7pjd94vvIjI1zTz6aq/5wwE/YrfIyEPLtGJmRfyNR9NYIW+rOvzzUv3Cmq2hRKpvt6e9vpvPUQ7puzX7VSmsEw==", + "version": "5.48.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.48.2.tgz", + "integrity": "sha512-bibvD3z6ilnoVxUBFEgkO0k0aFvUc4Cttt0dAreEr+nrAHhWzkO83PEVVuieK3DqcgL6VAK5dkzK8XUVja5Zcg==", "requires": { - "@typescript-eslint/types": "5.48.0", - "@typescript-eslint/visitor-keys": "5.48.0", + "@typescript-eslint/types": "5.48.2", + "@typescript-eslint/visitor-keys": "5.48.2", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -12402,26 +12597,26 @@ } }, "@typescript-eslint/utils": { - "version": "5.48.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.48.0.tgz", - "integrity": "sha512-x2jrMcPaMfsHRRIkL+x96++xdzvrdBCnYRd5QiW5Wgo1OB4kDYPbC1XjWP/TNqlfK93K/lUL92erq5zPLgFScQ==", + "version": "5.48.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.48.2.tgz", + "integrity": "sha512-2h18c0d7jgkw6tdKTlNaM7wyopbLRBiit8oAxoP89YnuBOzCZ8g8aBCaCqq7h208qUTroL7Whgzam7UY3HVLow==", "requires": { "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.48.0", - "@typescript-eslint/types": "5.48.0", - "@typescript-eslint/typescript-estree": "5.48.0", + "@typescript-eslint/scope-manager": "5.48.2", + "@typescript-eslint/types": "5.48.2", + "@typescript-eslint/typescript-estree": "5.48.2", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0", "semver": "^7.3.7" } }, "@typescript-eslint/visitor-keys": { - "version": "5.48.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.48.0.tgz", - "integrity": "sha512-5motVPz5EgxQ0bHjut3chzBkJ3Z3sheYVcSwS5BpHZpLqSptSmELNtGixmgj65+rIfhvtQTz5i9OP2vtzdDH7Q==", + "version": "5.48.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.48.2.tgz", + "integrity": "sha512-z9njZLSkwmjFWUelGEwEbdf4NwKvfHxvGC0OcGN1Hp/XNDIcJ7D5DpPNPv6x6/mFvc1tQHsaWmpD/a4gOvvCJQ==", "requires": { - "@typescript-eslint/types": "5.48.0", + "@typescript-eslint/types": "5.48.2", "eslint-visitor-keys": "^3.3.0" } }, @@ -12539,12 +12734,42 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "aria-query": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", - "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", "requires": { - "@babel/runtime": "^7.10.2", - "@babel/runtime-corejs3": "^7.10.2" + "deep-equal": "^2.0.5" + }, + "dependencies": { + "deep-equal": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.0.tgz", + "integrity": "sha512-RdpzE0Hv4lhowpIUKKMJfeH6C1pXdtT1/it80ubgWqwI3qpuxUBpC1S4hnHg+zjnuOoDkzUtUCEEkG+XG5l3Mw==", + "requires": { + "call-bind": "^1.0.2", + "es-get-iterator": "^1.1.2", + "get-intrinsic": "^1.1.3", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.1", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + } + }, + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + } } }, "array-includes": { @@ -12625,9 +12850,9 @@ } }, "asl-validator": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/asl-validator/-/asl-validator-3.0.8.tgz", - "integrity": "sha512-ku2hkt137ebImA6DNySVoBtymffl/62TQHWKBb54yI3twrcsQyi78fPtvRi+PMob89vLeb0BbGezr5+4rQcJ7Q==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/asl-validator/-/asl-validator-3.1.0.tgz", + "integrity": "sha512-J2OmT6lkj2RHojDLWyqh33BNCBfpOIAEl1z01cd/4WiGt8Sjgqx+gbX7WsgVKGS4uF/pGwc1EkrZvm0mSRMcWA==", "requires": { "ajv": "^8.11.0", "asl-path-validator": "^0.11.0", @@ -12683,10 +12908,15 @@ "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" }, + "available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" + }, "axe-core": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.5.2.tgz", - "integrity": "sha512-u2MVsXfew5HBvjsczCv+xlwdNnB1oQR9HlAcsejZttNjKKSkeDNVwB1vMThIUIFI9GoT57Vtk8iQLwqOfAkboA==" + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.6.2.tgz", + "integrity": "sha512-b1WlTV8+XKLj9gZy2DZXgQiyDp9xkkoe2a6U6UbYccScq2wgH/YwCeI2/Jq2mgo0HzQxqJOjWZBLeA/mqsk5Mg==" }, "axios": { "version": "1.2.2", @@ -12699,9 +12929,43 @@ } }, "axobject-query": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", - "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==" + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.1.1.tgz", + "integrity": "sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==", + "requires": { + "deep-equal": "^2.0.5" + }, + "dependencies": { + "deep-equal": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.0.tgz", + "integrity": "sha512-RdpzE0Hv4lhowpIUKKMJfeH6C1pXdtT1/it80ubgWqwI3qpuxUBpC1S4hnHg+zjnuOoDkzUtUCEEkG+XG5l3Mw==", + "requires": { + "call-bind": "^1.0.2", + "es-get-iterator": "^1.1.2", + "get-intrinsic": "^1.1.3", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.1", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + } + }, + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + } + } }, "babel-eslint": { "version": "10.1.0", @@ -13043,11 +13307,6 @@ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.4.tgz", "integrity": "sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw==" }, - "core-js-pure": { - "version": "3.22.6", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.22.6.tgz", - "integrity": "sha512-u5yG2VL6NKXz9BZHr9RAm6eWD1DTNjG7jJnJgLGR+Im0whdPcPXqwqxd+dcUrZvpvPan5KMgn/3pI+Q/aGqPOA==" - }, "core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", @@ -13360,6 +13619,29 @@ "has-property-descriptors": "^1.0.0" } }, + "es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + } + } + }, "es-shim-unscopables": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", @@ -13443,9 +13725,9 @@ } }, "eslint": { - "version": "8.31.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.31.0.tgz", - "integrity": "sha512-0tQQEVdmPZ1UtUKXjX7EMm9BlgJ08G90IhWh0PKDCb3ZLsgAOHI8fYSIzYVZej92zsgq+ft0FGsxhJ3xo2tbuA==", + "version": "8.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.32.0.tgz", + "integrity": "sha512-nETVXpnthqKPFyuY2FNjz/bEd6nbosRgKbkgS/y1C7LJop96gYHWpiguLecMHQ2XCPxn77DS0P+68WzG6vkZSQ==", "requires": { "@eslint/eslintrc": "^1.4.1", "@humanwhocodes/config-array": "^0.11.8", @@ -13760,9 +14042,9 @@ } }, "eslint-plugin-jest": { - "version": "27.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.2.0.tgz", - "integrity": "sha512-KGIYtelk4rIhKocxRKUEeX+kJ0ZCab/CiSgS8BMcKD7AY7YxXhlg/d51oF5jq2rOrtuJEDYWRwXD95l6l2vtrA==", + "version": "27.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.2.1.tgz", + "integrity": "sha512-l067Uxx7ZT8cO9NJuf+eJHvt6bqJyz2Z29wykyEdz/OtmcELQl2MQGQLX8J94O1cSJWAwUSEvCjwjA7KEK3Hmg==", "requires": { "@typescript-eslint/utils": "^5.10.0" } @@ -13777,9 +14059,9 @@ } }, "eslint-plugin-jsonc": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsonc/-/eslint-plugin-jsonc-2.5.0.tgz", - "integrity": "sha512-G257khwkrOQ5MJpSzz4yQh5K12W4xFZRcHmVlhVFWh2GCLDX+JwHnmkQoUoFDbOieSPBMsPFZDTJScwrXiWlIg==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsonc/-/eslint-plugin-jsonc-2.6.0.tgz", + "integrity": "sha512-4bA9YTx58QaWalua1Q1b82zt7eZMB7i+ed8q8cKkbKP75ofOA2SXbtFyCSok7RY6jIXeCqQnKjN9If8zCgv6PA==", "requires": { "eslint-utils": "^3.0.0", "jsonc-eslint-parser": "^2.0.4", @@ -13787,22 +14069,25 @@ } }, "eslint-plugin-jsx-a11y": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz", - "integrity": "sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q==", + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz", + "integrity": "sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==", "requires": { - "@babel/runtime": "^7.18.9", - "aria-query": "^4.2.2", - "array-includes": "^3.1.5", + "@babel/runtime": "^7.20.7", + "aria-query": "^5.1.3", + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", "ast-types-flow": "^0.0.7", - "axe-core": "^4.4.3", - "axobject-query": "^2.2.0", + "axe-core": "^4.6.2", + "axobject-query": "^3.1.1", "damerau-levenshtein": "^1.0.8", "emoji-regex": "^9.2.2", "has": "^1.0.3", - "jsx-ast-utils": "^3.3.2", - "language-tags": "^1.0.5", + "jsx-ast-utils": "^3.3.3", + "language-tags": "=1.0.5", "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", "semver": "^6.3.0" }, "dependencies": { @@ -13850,9 +14135,9 @@ "requires": {} }, "eslint-plugin-react": { - "version": "7.31.11", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.31.11.tgz", - "integrity": "sha512-TTvq5JsT5v56wPa9OYHzsrOlHzKZKjV+aLgS+55NJP/cuzdiQPC7PfYoUjMoxlffKtvijpk7vA/jmuqRb9nohw==", + "version": "7.32.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.1.tgz", + "integrity": "sha512-vOjdgyd0ZHBXNsmvU+785xY8Bfe57EFbTYYk8XrROzWpr9QBvpjITvAXt9xqcE6+8cjR/g1+mfumPToxsl1www==", "requires": { "array-includes": "^3.1.6", "array.prototype.flatmap": "^1.3.1", @@ -13866,7 +14151,7 @@ "object.hasown": "^1.1.2", "object.values": "^1.1.6", "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.3", + "resolve": "^2.0.0-next.4", "semver": "^6.3.0", "string.prototype.matchall": "^4.0.8" }, @@ -13880,12 +14165,13 @@ } }, "resolve": { - "version": "2.0.0-next.3", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", - "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", + "version": "2.0.0-next.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", + "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" } }, "semver": { @@ -13916,9 +14202,9 @@ "integrity": "sha512-9aEPf1JEpiTjcFAmmyw8eiIXmcNZOqaZyHO77wgm0/dWfT/oxC1SrIq8ET38pMxHYrcB6Uew+TzUVsBeczF88g==" }, "eslint-plugin-vue": { - "version": "9.8.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.8.0.tgz", - "integrity": "sha512-E/AXwcTzunyzM83C2QqDHxepMzvI2y6x+mmeYHbVDQlKFqmKYvRrhaVixEeeG27uI44p9oKDFiyCRw4XxgtfHA==", + "version": "9.9.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.9.0.tgz", + "integrity": "sha512-YbubS7eK0J7DCf0U2LxvVP7LMfs6rC6UltihIgval3azO3gyDwEGVgsCMe1TmDiEkl6GdMKfRpaME6QxIYtzDQ==", "requires": { "eslint-utils": "^3.0.0", "natural-compare": "^1.4.0", @@ -14213,6 +14499,14 @@ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.0.tgz", "integrity": "sha512-aExlJShTV4qOUOL7yF1U5tvLCB0xQuudbf6toyYA0E/acBNw71mvjFTnLaRp50aQaYocMR0a/RMMBIHeZnGyjQ==" }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "requires": { + "is-callable": "^1.1.3" + } + }, "form-data": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", @@ -14584,6 +14878,14 @@ "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", "integrity": "sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=" }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "requires": { + "get-intrinsic": "^1.1.3" + } + }, "graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", @@ -14772,9 +15074,9 @@ "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==" }, "immer": { - "version": "9.0.17", - "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.17.tgz", - "integrity": "sha512-+hBruaLSQvkPfxRiTLK/mi4vLH+/VQS6z2KJahdoxlleFOI8ARqzOF17uy12eFDlqWmPoygwc5evgwcp+dlHhg==" + "version": "9.0.18", + "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.18.tgz", + "integrity": "sha512-eAPNpsj7Ax1q6Y/3lm2PmlwRcFzpON7HSNQ3ru5WQH1/PSpnyed/HpNOELl2CxLKoj4r+bAHgdyKqW5gc2Se1A==" }, "import-fresh": { "version": "3.3.0", @@ -14820,11 +15122,11 @@ "integrity": "sha512-it4HyVAUTKBc6m8e1iXWvXSTdndF7HbdN713+kvLrymxTaU4AUBWrJ4vEooP+V7fexnVD3LKcBshjGGPefSMUQ==" }, "internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.4.tgz", + "integrity": "sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==", "requires": { - "get-intrinsic": "^1.1.0", + "get-intrinsic": "^1.1.3", "has": "^1.0.3", "side-channel": "^1.0.4" } @@ -14865,6 +15167,16 @@ "has-tostringtag": "^1.0.0" } }, + "is-array-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.1.tgz", + "integrity": "sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-typed-array": "^1.1.10" + } + }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -15006,6 +15318,11 @@ "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==" }, + "is-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==" + }, "is-negative-zero": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", @@ -15071,6 +15388,11 @@ "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-2.1.0.tgz", "integrity": "sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA==" }, + "is-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==" + }, "is-shared-array-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", @@ -15100,11 +15422,28 @@ "has-symbols": "^1.0.2" } }, + "is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + } + }, "is-utf8": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" }, + "is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==" + }, "is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -15113,6 +15452,15 @@ "call-bind": "^1.0.2" } }, + "is-weakset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, "isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", @@ -15448,27 +15796,26 @@ } }, "markdownlint": { - "version": "0.26.2", - "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.26.2.tgz", - "integrity": "sha512-2Am42YX2Ex5SQhRq35HxYWDfz1NLEOZWWN25nqd2h3AHRKsGRE+Qg1gt1++exW792eXTrR4jCNHfShfWk9Nz8w==", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.27.0.tgz", + "integrity": "sha512-HtfVr/hzJJmE0C198F99JLaeada+646B5SaG2pVoEakLFI6iRGsvMqrnnrflq8hm1zQgwskEgqSnhDW11JBp0w==", "requires": { "markdown-it": "13.0.1" } }, "markdownlint-cli": { - "version": "0.32.2", - "resolved": "https://registry.npmjs.org/markdownlint-cli/-/markdownlint-cli-0.32.2.tgz", - "integrity": "sha512-xmJT1rGueUgT4yGNwk6D0oqQr90UJ7nMyakXtqjgswAkEhYYqjHew9RY8wDbOmh2R270IWjuKSeZzHDEGPAUkQ==", + "version": "0.33.0", + "resolved": "https://registry.npmjs.org/markdownlint-cli/-/markdownlint-cli-0.33.0.tgz", + "integrity": "sha512-zMK1oHpjYkhjO+94+ngARiBBrRDEUMzooDHBAHtmEIJ9oYddd9l3chCReY2mPlecwH7gflQp1ApilTo+o0zopQ==", "requires": { - "commander": "~9.4.0", + "commander": "~9.4.1", "get-stdin": "~9.0.0", "glob": "~8.0.3", - "ignore": "~5.2.0", + "ignore": "~5.2.4", "js-yaml": "^4.1.0", - "jsonc-parser": "~3.1.0", - "markdownlint": "~0.26.2", - "markdownlint-rule-helpers": "~0.17.2", - "minimatch": "~5.1.0", + "jsonc-parser": "~3.2.0", + "markdownlint": "~0.27.0", + "minimatch": "~5.1.2", "run-con": "~1.2.11" }, "dependencies": { @@ -15486,25 +15833,20 @@ "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==" }, "jsonc-parser": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", - "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==" + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==" }, "minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg==", "requires": { "brace-expansion": "^2.0.1" } } } }, - "markdownlint-rule-helpers": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/markdownlint-rule-helpers/-/markdownlint-rule-helpers-0.17.2.tgz", - "integrity": "sha512-XaeoW2NYSlWxMCZM2B3H7YTG6nlaLfkEZWMBhr4hSPlq9MuY2sy83+Xr89jXOqZMZYjvi5nBCGoFh7hHoPKZmA==" - }, "mathml-tag-names": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", @@ -16626,9 +16968,9 @@ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" }, "prettier": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.1.tgz", - "integrity": "sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg==" + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.3.tgz", + "integrity": "sha512-tJ/oJ4amDihPoufT5sM0Z1SKEuKay8LfVAMlbbhnnkvt6BUserZylqo2PN+p9KeljLr0OHa2rXHU1T8reeoTrw==" }, "prettier-linter-helpers": { "version": "1.0.0", @@ -17516,6 +17858,14 @@ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" }, + "stop-iteration-iterator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", + "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "requires": { + "internal-slot": "^1.0.4" + } + }, "string_decoder": { "version": "0.10.31", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", @@ -17852,22 +18202,22 @@ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" }, "textlint": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/textlint/-/textlint-12.4.0.tgz", - "integrity": "sha512-n8WAsOf+JtDXTj12A8DF+kuaV+YVawaf8DUzdEc00AFK/qMUsvUZ79X60SBO1sEYwkjExErQv1JRIFHwOp/XEw==", + "version": "12.5.1", + "resolved": "https://registry.npmjs.org/textlint/-/textlint-12.5.1.tgz", + "integrity": "sha512-LoFU1yBIm/gxM++jDdvdfS2diW14NBHsimRyChi8Kb5h5pUHcG0rGfW2PflUzfYcHF0XykgW9WBdPd1WWnyS7Q==", "requires": { "@textlint/ast-node-types": "^12.3.0", - "@textlint/ast-traverse": "^12.3.0", - "@textlint/config-loader": "^12.3.1", - "@textlint/feature-flag": "^12.3.0", - "@textlint/fixer-formatter": "^12.4.0", - "@textlint/kernel": "^12.3.0", - "@textlint/linter-formatter": "^12.3.1", - "@textlint/module-interop": "^12.3.0", - "@textlint/textlint-plugin-markdown": "^12.3.0", - "@textlint/textlint-plugin-text": "^12.3.0", - "@textlint/types": "^12.3.0", - "@textlint/utils": "^12.3.0", + "@textlint/ast-traverse": "^12.5.0", + "@textlint/config-loader": "^12.5.0", + "@textlint/feature-flag": "^12.5.0", + "@textlint/fixer-formatter": "^12.5.1", + "@textlint/kernel": "^12.5.0", + "@textlint/linter-formatter": "^12.5.0", + "@textlint/module-interop": "^12.5.0", + "@textlint/textlint-plugin-markdown": "^12.5.0", + "@textlint/textlint-plugin-text": "^12.5.0", + "@textlint/types": "^12.5.0", + "@textlint/utils": "^12.5.0", "debug": "^4.3.4", "deep-equal": "^1.1.1", "file-entry-cache": "^5.0.1", @@ -18255,9 +18605,9 @@ }, "dependencies": { "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "requires": { "minimist": "^1.2.0" } @@ -18600,6 +18950,30 @@ "is-symbol": "^1.0.3" } }, + "which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "requires": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + } + }, + "which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + } + }, "winreg": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/winreg/-/winreg-1.2.4.tgz", diff --git a/dependencies/package.json b/dependencies/package.json index 6d4f13d1671..b711ddb85c4 100644 --- a/dependencies/package.json +++ b/dependencies/package.json @@ -3,35 +3,35 @@ "dependencies": { "@coffeelint/cli": "^5.2.11", "@stoplight/spectral": "^6.5.0", - "@typescript-eslint/eslint-plugin": "^5.48.0", - "@typescript-eslint/parser": "^5.48.0", - "asl-validator": "^3.0.8", + "@typescript-eslint/eslint-plugin": "^5.48.2", + "@typescript-eslint/parser": "^5.48.2", + "asl-validator": "^3.1.0", "axios": "^1.2.2", "babel-eslint": "^10.1.0", - "eslint": "^8.31.0", + "eslint": "^8.32.0", "eslint-config-airbnb": "^19.0.4", "eslint-config-airbnb-typescript": "^17.0.0", "eslint-config-prettier": "^8.6.0", "@react-native-community/eslint-config": "^3.2.0", "@react-native-community/eslint-plugin": "^1.3.0", - "eslint-plugin-jest": "^27.2.0", + "eslint-plugin-jest": "^27.2.1", "eslint-plugin-json": "^3.1.0", - "eslint-plugin-jsonc": "^2.5.0", - "eslint-plugin-jsx-a11y": "^6.6.1", + "eslint-plugin-jsonc": "^2.6.0", + "eslint-plugin-jsx-a11y": "^6.7.1", "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-react": "^7.31.11", + "eslint-plugin-react": "^7.32.1", "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-vue": "^9.8.0", + "eslint-plugin-vue": "^9.9.0", "gherkin-lint": "^4.2.2", "htmlhint": "^1.1.4", - "immer": "^9.0.17", + "immer": "^9.0.18", "ini": "^3.0.1", "jscpd": "^3.5.3", "lodash": "^4.17.21", - "markdownlint-cli": "^0.32.2", + "markdownlint-cli": "^0.33.0", "node-fetch": "^3.3.0", "npm-groovy-lint": "^11.1.1", - "prettier": "^2.8.1", + "prettier": "^2.8.3", "prettyjson": "^1.2.5", "pug": "^3.0.2", "sql-lint": "1.0.0", @@ -46,7 +46,7 @@ "postcss-less": "^6.0.0", "stylelint-scss": "^4.3.0", "tekton-lint": "^0.6.0", - "textlint": "^12.4.0", + "textlint": "^12.5.1", "textlint-filter-rule-allowlist": "^4.0.0", "textlint-filter-rule-comments": "^1.2.2", "textlint-rule-terminology": "^3.0.4", diff --git a/dependencies/python/ansible-lint.txt b/dependencies/python/ansible-lint.txt index 57c5b74cfec..dc77976bd04 100644 --- a/dependencies/python/ansible-lint.txt +++ b/dependencies/python/ansible-lint.txt @@ -13,7 +13,7 @@ Jinja2==3.1.2 jsonschema==4.17.3 MarkupSafe==2.1.1 mypy-extensions==0.4.3 -packaging==22.0 +packaging==23.0 pathspec==0.10.3 platformdirs==2.6.2 pycparser==2.21 @@ -21,10 +21,10 @@ Pygments==2.14.0 pyrsistent==0.19.3 PyYAML==6.0 resolvelib==0.8.1 -rich==13.0.0 +rich==13.1.0 ruamel.yaml==0.17.21 ruamel.yaml.clib==0.2.7 subprocess-tee==0.4.1 tomli==2.0.1 wcmatch==8.4.1 -yamllint==1.28.0 +yamllint==1.29.0 diff --git a/dependencies/python/cfn-lint.txt b/dependencies/python/cfn-lint.txt index c1b5d506e07..d5e6cf5b617 100644 --- a/dependencies/python/cfn-lint.txt +++ b/dependencies/python/cfn-lint.txt @@ -1,21 +1,23 @@ attrs==22.2.0 -aws-sam-translator==1.55.0 -boto3==1.26.42 -botocore==1.29.42 -cfn-lint==0.72.6 +aws-sam-translator==1.57.0 +boto3==1.26.50 +botocore==1.29.50 +cfn-lint==0.72.8 jmespath==1.0.1 jschema-to-python==1.2.3 jsonpatch==1.32 jsonpickle==3.0.1 jsonpointer==2.3 -jsonschema==3.2.0 +jsonschema==4.17.3 junit-xml==1.9 networkx==2.8.8 -pbr==5.11.0 +pbr==5.11.1 +pydantic==1.10.4 pyrsistent==0.19.3 python-dateutil==2.8.2 PyYAML==6.0 s3transfer==0.6.0 sarif-om==1.0.4 six==1.16.0 -urllib3==1.26.13 +typing_extensions==4.4.0 +urllib3==1.26.14 diff --git a/dependencies/python/pylint.txt b/dependencies/python/pylint.txt index 3fe9d59c537..9ec21d17816 100644 --- a/dependencies/python/pylint.txt +++ b/dependencies/python/pylint.txt @@ -1,10 +1,11 @@ -astroid==2.12.13 +astroid==2.13.2 dill==0.3.6 isort==5.11.4 -lazy-object-proxy==1.8.0 +lazy-object-proxy==1.9.0 mccabe==0.7.0 platformdirs==2.6.2 -pylint==2.15.9 +pylint==2.15.10 tomli==2.0.1 tomlkit==0.11.6 +typing_extensions==4.4.0 wrapt==1.14.1 diff --git a/dependencies/python/snakemake.txt b/dependencies/python/snakemake.txt index 55caaf14ddc..504dfa7cc9c 100644 --- a/dependencies/python/snakemake.txt +++ b/dependencies/python/snakemake.txt @@ -1,28 +1,28 @@ appdirs==1.4.4 attrs==22.2.0 certifi==2022.12.7 -charset-normalizer==2.1.1 +charset-normalizer==3.0.1 ConfigArgParse==1.5.3 connection-pool==0.0.3 datrie==0.8.2 docutils==0.19 -dpath==2.1.3 +dpath==2.1.4 fastjsonschema==2.16.2 gitdb==4.0.10 GitPython==3.1.30 idna==3.4 Jinja2==3.1.2 jsonschema==4.17.3 -jupyter_core==5.1.2 +jupyter_core==5.1.3 MarkupSafe==2.1.1 -nbformat==5.7.1 +nbformat==5.7.3 plac==1.3.5 platformdirs==2.6.2 psutil==5.9.4 PuLP==2.7.0 pyrsistent==0.19.3 PyYAML==6.0 -requests==2.28.1 +requests==2.28.2 reretry==0.11.8 smart-open==6.3.0 smmap==5.0.0 @@ -30,8 +30,8 @@ snakemake==7.19.1 stopit==1.1.2 tabulate==0.9.0 throttler==1.2.2 -toposort==1.7 -traitlets==5.8.0 -urllib3==1.26.13 +toposort==1.9 +traitlets==5.8.1 +urllib3==1.26.14 wrapt==1.14.1 yte==1.5.1 diff --git a/dependencies/python/sqlfluff.txt b/dependencies/python/sqlfluff.txt index 8fc8d00207d..1788900d7a0 100644 --- a/dependencies/python/sqlfluff.txt +++ b/dependencies/python/sqlfluff.txt @@ -5,14 +5,14 @@ click==8.1.3 colorama==0.4.6 diff-cover==7.3.0 exceptiongroup==1.1.0 -iniconfig==1.1.1 +iniconfig==2.0.0 Jinja2==3.1.2 MarkupSafe==2.1.1 -packaging==22.0 +packaging==23.0 pathspec==0.10.3 pluggy==1.0.0 Pygments==2.14.0 -pytest==7.2.0 +pytest==7.2.1 PyYAML==6.0 regex==2022.10.31 sqlfluff==1.4.5 diff --git a/dependencies/python/yamllint.txt b/dependencies/python/yamllint.txt index 44eb81bc682..94b36007f19 100644 --- a/dependencies/python/yamllint.txt +++ b/dependencies/python/yamllint.txt @@ -1,3 +1,3 @@ pathspec==0.10.3 PyYAML==6.0 -yamllint==1.28.0 +yamllint==1.29.0 diff --git a/lib/functions/buildFileList.sh b/lib/functions/buildFileList.sh index a7dff9095fe..731ecb277ca 100755 --- a/lib/functions/buildFileList.sh +++ b/lib/functions/buildFileList.sh @@ -438,8 +438,10 @@ function BuildFileList() { ######################## # Get the GROOVY files # ######################## + # Use BASE_FILE here because FILE_TYPE is not reliable when there is no file extension elif [ "$FILE_TYPE" == "groovy" ] || [ "$FILE_TYPE" == "jenkinsfile" ] || - [ "$FILE_TYPE" == "gradle" ] || [ "$FILE_TYPE" == "nf" ]; then + [ "$FILE_TYPE" == "gradle" ] || [ "$FILE_TYPE" == "nf" ] || + [[ "$BASE_FILE" =~ .*jenkinsfile.* ]]; then ################################ # Append the file to the array # ################################ @@ -723,6 +725,7 @@ function BuildFileList() { ################################ FILE_ARRAY_TERRAFORM_TFLINT+=("${FILE}") FILE_ARRAY_TERRAFORM_TERRASCAN+=("${FILE}") + FILE_ARRAY_TERRAFORM_FMT+=("${FILE}") ############################ # Get the Terragrunt files # diff --git a/lib/functions/worker.sh b/lib/functions/worker.sh index 209ec0f63fc..d77a2372ff4 100755 --- a/lib/functions/worker.sh +++ b/lib/functions/worker.sh @@ -39,6 +39,10 @@ function LintCodebase() { SKIP_FLAG=0 INDEX=0 + # We use these flags to check how many "bad" and "good" test cases we ran + BAD_TEST_CASES_COUNT=0 + GOOD_TEST_CASES_COUNT=0 + ############################################################ # Check to see if we need to go through array or all files # ############################################################ @@ -300,6 +304,9 @@ function LintCodebase() { # Check for if it was supposed to pass # ######################################## if [[ ${FILE_STATUS} == "good" ]]; then + # Increase the good test cases count + (("GOOD_TEST_CASES_COUNT++")) + ############################## # Check the shell for errors # ############################## @@ -333,6 +340,10 @@ function LintCodebase() { ####################################### # File status = bad, this should fail # ####################################### + + # Increase the bad test cases count + (("BAD_TEST_CASES_COUNT++")) + ############################## # Check the shell for errors # ############################## @@ -372,14 +383,30 @@ function LintCodebase() { ) done - ############################## - # Validate we ran some tests # - ############################## - if [ "${TEST_CASE_RUN}" = "true" ] && [ "${INDEX}" -eq 0 ]; then - ################################################# - # We failed to find files and no tests were ran # - ################################################# - error "Failed to find any tests ran for the Linter:[${LINTER_NAME}]!" - fatal "Validate logic and that tests exist for linter: ${LINTER_NAME}" + if [ "${TEST_CASE_RUN}" = "true" ]; then + + debug "The ${LINTER_NAME} (linter: ${LINTER_NAME}) test suite has ${INDEX} test, of which ${BAD_TEST_CASES_COUNT} 'bad' (supposed to fail), ${GOOD_TEST_CASES_COUNT} 'good' (supposed to pass)." + + # Check if we ran at least one test + if [ "${INDEX}" -eq 0 ]; then + error "Failed to find any tests ran for the Linter:[${LINTER_NAME}]!" + fatal "Validate logic and that tests exist for linter: ${LINTER_NAME}" + fi + + # Check if we ran 'bad' tests + if [ "${BAD_TEST_CASES_COUNT}" -eq 0 ]; then + if [ "${FILE_TYPE}" = "ANSIBLE" ]; then + debug "There are no 'bad' tests for ${FILE_TYPE}, but it's a corner case that we allow because ${LINTER_NAME} is supposed to lint entire directories and the test suite doesn't support this corner case for 'bad' tests yet." + else + error "Failed to find any tests that are expected to fail for the Linter:[${LINTER_NAME}]!" + fatal "Validate logic and that tests that are expected to fail exist for linter: ${LINTER_NAME}" + fi + fi + + # Check if we ran 'good' tests + if [ "${GOOD_TEST_CASES_COUNT}" -eq 0 ]; then + error "Failed to find any tests that are expected to pass for the Linter:[${LINTER_NAME}]!" + fatal "Validate logic and that tests that are expected to pass exist for linter: ${LINTER_NAME}" + fi fi } diff --git a/lib/linter.sh b/lib/linter.sh index 3b466a7fa7a..683dfcb9f1f 100755 --- a/lib/linter.sh +++ b/lib/linter.sh @@ -20,6 +20,8 @@ IMAGE="${IMAGE:-standard}" # Version of the Super-lin ################################################################## LOG_FILE="${LOG_FILE:-super-linter.log}" # Default log file name (located in GITHUB_WORKSPACE folder) LOG_LEVEL="${LOG_LEVEL:-VERBOSE}" # Default log level (VERBOSE, DEBUG, TRACE) +CREATE_LOG_FILE="${CREATE_LOG_FILE:-"false"}" +export CREATE_LOG_FILE if [[ ${ACTIONS_RUNNER_DEBUG} == true ]]; then LOG_LEVEL="DEBUG"; fi # Boolean to see trace logs @@ -259,8 +261,8 @@ LANGUAGE_ARRAY=('ANSIBLE' 'ARM' 'BASH' 'BASH_EXEC' 'CLANG_FORMAT' 'PYTHON_FLAKE8' 'PYTHON_ISORT' 'PYTHON_MYPY' 'R' 'RAKU' 'RUBY' 'RUST_2015' 'RUST_2018' 'RUST_2021' 'RUST_CLIPPY' 'SCALAFMT' 'SHELL_SHFMT' 'SNAKEMAKE_LINT' 'SNAKEMAKE_SNAKEFMT' 'STATES' 'SQL' 'SQLFLUFF' 'TEKTON' - 'TERRAFORM_TFLINT' 'TERRAFORM_TERRASCAN' 'TERRAGRUNT' 'TSX' 'TYPESCRIPT_ES' - "${TYPESCRIPT_STYLE_NAME}" 'XML' 'YAML') + 'TERRAFORM_FMT' 'TERRAFORM_TFLINT' 'TERRAFORM_TERRASCAN' 'TERRAGRUNT' 'TSX' + 'TYPESCRIPT_ES' "${TYPESCRIPT_STYLE_NAME}" 'XML' 'YAML') ############################## # Linter command names array # @@ -330,6 +332,7 @@ LINTER_NAMES_ARRAY['STATES']="asl-validator" LINTER_NAMES_ARRAY['SQL']="sql-lint" LINTER_NAMES_ARRAY['SQLFLUFF']="sqlfluff" LINTER_NAMES_ARRAY['TEKTON']="tekton-lint" +LINTER_NAMES_ARRAY['TERRAFORM_FMT']="terraform" LINTER_NAMES_ARRAY['TERRAFORM_TFLINT']="tflint" LINTER_NAMES_ARRAY['TERRAFORM_TERRASCAN']="terrascan" LINTER_NAMES_ARRAY['TERRAGRUNT']="terragrunt" @@ -799,18 +802,24 @@ UpdateLoopsForImage() { done fi } -################################################################################ -#### Function Cleanup ########################################################## + # shellcheck disable=SC2317 cleanup() { local -ri EXIT_CODE=$? - - sh -c "cat ${LOG_TEMP} >> ${GITHUB_WORKSPACE}/${LOG_FILE}" || true + local LOG_FILE_PATH="${GITHUB_WORKSPACE}/${LOG_FILE}" + debug "CREATE_LOG_FILE: ${CREATE_LOG_FILE}, LOG_FILE_PATH: ${LOG_FILE_PATH}" + if [ "${CREATE_LOG_FILE}" = "true" ]; then + debug "Creating log file: ${LOG_FILE_PATH}" + sh -c "cat ${LOG_TEMP} >> ${LOG_FILE_PATH}" || true + else + debug "Skipping the log file creation" + fi exit "${EXIT_CODE}" trap - 0 1 2 3 6 14 15 } trap 'cleanup' 0 1 2 3 6 14 15 + ################################################################################ ############################### MAIN ########################################### ################################################################################ @@ -879,7 +888,7 @@ GetStandardRules "typescript" # Define linter commands # ########################## declare -A LINTER_COMMANDS_ARRAY -LINTER_COMMANDS_ARRAY['ANSIBLE']="ansible-lint -vv -c ${ANSIBLE_LINTER_RULES}" +LINTER_COMMANDS_ARRAY['ANSIBLE']="ansible-lint -c ${ANSIBLE_LINTER_RULES}" LINTER_COMMANDS_ARRAY['ARM']="Import-Module ${ARM_TTK_PSD1} ; \${config} = \$(Import-PowerShellDataFile -Path ${ARM_LINTER_RULES}) ; Test-AzTemplate @config -TemplatePath" LINTER_COMMANDS_ARRAY['BASH']="shellcheck --color --external-sources" LINTER_COMMANDS_ARRAY['BASH_EXEC']="bash-exec" @@ -899,10 +908,10 @@ if [ "${GITHUB_ACTIONS_COMMAND_ARGS}" = "null" ]; then else LINTER_COMMANDS_ARRAY['GITHUB_ACTIONS']="actionlint -config-file ${GITHUB_ACTIONS_LINTER_RULES} ${GITHUB_ACTIONS_COMMAND_ARGS}" fi -LINTER_COMMANDS_ARRAY['GITLEAKS']="gitleaks detect --no-git -c ${GITLEAKS_LINTER_RULES} -v -s" +LINTER_COMMANDS_ARRAY['GITLEAKS']="gitleaks detect --no-banner --no-git -c ${GITLEAKS_LINTER_RULES} -v -s" LINTER_COMMANDS_ARRAY['GHERKIN']="gherkin-lint -c ${GHERKIN_LINTER_RULES}" LINTER_COMMANDS_ARRAY['GO']="golangci-lint run --fast -c ${GO_LINTER_RULES}" -LINTER_COMMANDS_ARRAY['GOOGLE_JAVA_FORMAT']="java -jar /usr/bin/google-java-format" +LINTER_COMMANDS_ARRAY['GOOGLE_JAVA_FORMAT']="java -jar /usr/bin/google-java-format --dry-run --set-exit-if-changed" LINTER_COMMANDS_ARRAY['GROOVY']="npm-groovy-lint -c ${GROOVY_LINTER_RULES} --failon warning --no-insight" LINTER_COMMANDS_ARRAY['HTML']="htmlhint --config ${HTML_LINTER_RULES}" LINTER_COMMANDS_ARRAY['JAVA']="java -jar /usr/bin/checkstyle -c ${JAVA_LINTER_RULES}" @@ -966,6 +975,7 @@ LINTER_COMMANDS_ARRAY['STATES']="asl-validator --json-path" LINTER_COMMANDS_ARRAY['SQL']="sql-lint --config ${SQL_LINTER_RULES}" LINTER_COMMANDS_ARRAY['SQLFLUFF']="sqlfluff lint --config ${SQLFLUFF_LINTER_RULES}" LINTER_COMMANDS_ARRAY['TEKTON']="tekton-lint" +LINTER_COMMANDS_ARRAY['TERRAFORM_FMT']="terraform fmt -check -diff" LINTER_COMMANDS_ARRAY['TERRAFORM_TFLINT']="tflint -c ${TERRAFORM_TFLINT_LINTER_RULES}" LINTER_COMMANDS_ARRAY['TERRAFORM_TERRASCAN']="terrascan scan -i terraform -t all -c ${TERRAFORM_TERRASCAN_LINTER_RULES} -f" LINTER_COMMANDS_ARRAY['TERRAGRUNT']="terragrunt hclfmt --terragrunt-check --terragrunt-log-level error --terragrunt-hclfmt-file" diff --git a/scripts/install-arm-ttk.sh b/scripts/install-arm-ttk.sh new file mode 100755 index 00000000000..09d104fa244 --- /dev/null +++ b/scripts/install-arm-ttk.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +set -euo pipefail + +# Depends on PowerShell +# Reference https://github.com/Azure/arm-ttk +# Reference https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/test-toolkit + +url=$(curl -s \ + -H "Accept: application/vnd.github+json" \ + -H "Authorization: Bearer $(cat /run/secrets/GITHUB_TOKEN)" \ + https://api.github.com/repos/Azure/arm-ttk/releases/latest | jq -r '.tarball_url') +mkdir -p /usr/lib/microsoft +curl --retry 5 --retry-delay 5 -sL \ + -H "Accept: application/vnd.github+json" \ + -H "Authorization: Bearer $(cat /run/secrets/GITHUB_TOKEN)" \ + "${url}" | tar -xz -C /usr/lib/microsoft +mv /usr/lib/microsoft/Azure-arm-ttk-*/arm-ttk /usr/lib/microsoft/arm-ttk +rm -rf /usr/lib/microsoft/Azure-arm-ttk-* +chmod a+x /usr/lib/microsoft/arm-ttk/arm-ttk.psd1 +ln -sTf /usr/lib/microsoft/arm-ttk/arm-ttk.psd1 /usr/bin/arm-ttk diff --git a/scripts/install-dotnet.sh b/scripts/install-dotnet.sh new file mode 100755 index 00000000000..fc89e553b4c --- /dev/null +++ b/scripts/install-dotnet.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +set -euo pipefail + +curl --retry 5 --retry-delay 5 -sLO https://dot.net/v1/dotnet-install.sh +chmod +x dotnet-install.sh +./dotnet-install.sh --install-dir /usr/share/dotnet -channel STS -version latest +/usr/share/dotnet/dotnet tool install --tool-path /usr/bin dotnet-format --version 5.0.211103 diff --git a/scripts/install-kubeval.sh b/scripts/install-kubeval.sh new file mode 100755 index 00000000000..be57f6e18df --- /dev/null +++ b/scripts/install-kubeval.sh @@ -0,0 +1,57 @@ +#!/usr/bin/env bash + +set -euo pipefail + +url=$(curl -s \ + -H "Accept: application/vnd.github+json" \ + -H "Authorization: Bearer $(cat /run/secrets/GITHUB_TOKEN)" \ + "https://api.github.com/repos/instrumenta/kubeval/releases/tags/${KUBEVAL_VERSION}" | + jq -r '.assets | .[] | select(.name | contains("linux-amd")) | .url') +curl --retry 5 --retry-delay 5 -sL \ + -H "Accept: application/octet-stream" \ + -H "Authorization: Bearer $(cat /run/secrets/GITHUB_TOKEN)" \ + "${url}" | tar -xz +mv kubeval /usr/local/bin + +################## +# Install ktlint # +################## +url=$(curl -s \ + -H "Accept: application/vnd.github+json" \ + -H "Authorization: Bearer $(cat /run/secrets/GITHUB_TOKEN)" \ + "https://api.github.com/repos/pinterest/ktlint/releases/tags/${KTLINT_VERSION}" | + jq -r '.assets | .[] | select(.name=="ktlint") | .url') +curl --retry 5 --retry-delay 5 -sL -o "/usr/bin/ktlint" \ + -H "Accept: application/octet-stream" \ + -H "Authorization: Bearer $(cat /run/secrets/GITHUB_TOKEN)" \ + "${url}" +chmod a+x /usr/bin/ktlint +terrascan init +cd ~ && touch .chktexrc + +#################### +# Install dart-sdk # +#################### +url=$(curl -s \ + -H "Accept: application/vnd.github+json" \ + -H "Authorization: Bearer $(cat /run/secrets/GITHUB_TOKEN)" \ + "https://api.github.com/repos/sgerrand/alpine-pkg-glibc/releases/tags/${GLIBC_VERSION}" | + jq --arg name "glibc-${GLIBC_VERSION}.apk" -r '.assets | .[] | select(.name | contains($name)) | .url') +curl --retry 5 --retry-delay 5 -sL -o "glibc-${GLIBC_VERSION}.apk" \ + -H "Accept: application/octet-stream" \ + -H "Authorization: Bearer $(cat /run/secrets/GITHUB_TOKEN)" \ + "${url}" +apk add --no-cache --force-overwrite "glibc-${GLIBC_VERSION}.apk" +rm "glibc-${GLIBC_VERSION}.apk" + +curl --retry 5 --retry-delay 5 -sO "https://storage.googleapis.com/dart-archive/channels/stable/release/${DART_VERSION}/sdk/dartsdk-linux-x64-release.zip" +unzip -q dartsdk-linux-x64-release.zip +chmod +x dart-sdk/bin/dart* && mv dart-sdk/bin/* /usr/bin/ && mv dart-sdk/lib/* /usr/lib/ && mv dart-sdk/include/* /usr/include/ +rm -r dart-sdk/ dartsdk-linux-x64-release.zip + +################################ +# Create and install Bash-Exec # +################################ +# shellcheck disable=SC2016 +printf '#!/bin/bash\nif [[ -x "$1" ]]; then exit 0; else echo "Error: File:[$1] is not executable"; exit 1; fi' >/usr/bin/bash-exec +chmod +x /usr/bin/bash-exec diff --git a/scripts/install-lintr.sh b/scripts/install-lintr.sh new file mode 100755 index 00000000000..03a8a772aea --- /dev/null +++ b/scripts/install-lintr.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +set -euo pipefail + +mkdir -p /home/r-library +cp -r /usr/lib/R/library/ /home/r-library/ +Rscript -e "install.packages(c('lintr','purrr'), repos = 'https://cloud.r-project.org/')" +R -e "install.packages(list.dirs('/home/r-library',recursive = FALSE), repos = NULL, type = 'source')" diff --git a/scripts/install-phive.sh b/scripts/install-phive.sh new file mode 100755 index 00000000000..45ca42ac11a --- /dev/null +++ b/scripts/install-phive.sh @@ -0,0 +1,36 @@ +#!/usr/bin/env bash + +set -euo pipefail +set -x + +apk add curl jq +url=$(curl -s \ + -H "Accept: application/vnd.github+json" \ + -H "Authorization: Bearer $(cat /run/secrets/GITHUB_TOKEN)" \ + "https://api.github.com/repos/sgerrand/alpine-pkg-glibc/releases/tags/${GLIBC_VERSION}" | + jq --arg name "glibc-${GLIBC_VERSION}.apk" -r '.assets | .[] | select(.name | contains($name)) | .url') +curl --retry 5 --retry-delay 5 -sL -o "glibc-${GLIBC_VERSION}.apk" \ + -H "Accept: application/octet-stream" \ + -H "Authorization: Bearer $(cat /run/secrets/GITHUB_TOKEN)" \ + "${url}" +apk add --no-cache --force-overwrite \ + bash \ + ca-certificates \ + "glibc-${GLIBC_VERSION}.apk" \ + gnupg \ + php81 php81-curl php81-ctype php81-dom php81-iconv php81-mbstring \ + php81-openssl php81-phar php81-simplexml php81-tokenizer php81-xmlwriter \ + tar zstd +rm "glibc-${GLIBC_VERSION}.apk" +mkdir /tmp/libz +curl --retry 5 --retry-delay 5 -sL https://www.archlinux.org/packages/core/x86_64/zlib/download | tar -x --zstd -C /tmp/libz +mv /tmp/libz/usr/lib/libz.so* /usr/glibc-compat/lib +rm -rf /tmp/libz +curl --retry 5 --retry-delay 5 -sLO https://phar.io/releases/phive.phar +curl --retry 5 --retry-delay 5 -sLO https://phar.io/releases/phive.phar.asc +gpg --keyserver hkps://keyserver.ubuntu.com --recv-keys "0x9D8A98B29B2D5D79" +gpg --verify phive.phar.asc phive.phar +chmod +x phive.phar +mv phive.phar /usr/local/bin/phive +rm phive.phar.asc +phive --no-progress install --trust-gpg-keys 31C7E470E2138192,CF1A108D0E7AE720,8A03EA3B385DBAA1,12CE0F1D262429A5 --target /usr/bin phpstan@^1.3.3 psalm@^4.18.1 phpcs@^3.6.2 diff --git a/scripts/install-pwsh.sh b/scripts/install-pwsh.sh new file mode 100755 index 00000000000..41a2f127261 --- /dev/null +++ b/scripts/install-pwsh.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +set -euo pipefail + +# Reference: https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-linux?view=powershell-7 +# Slightly modified to always retrieve latest stable Powershell version +# If changing PWSH_VERSION='latest' to a specific version, use format PWSH_VERSION='tags/v7.0.2' + +mkdir -p "${PWSH_DIRECTORY}" +url=$(curl -s \ + -H "Accept: application/vnd.github+json" \ + -H "Authorization: Bearer $(cat /run/secrets/GITHUB_TOKEN)" \ + "https://api.github.com/repos/powershell/powershell/releases/${PWSH_VERSION}" | + jq -r '.assets | .[] | select(.name | contains("linux-alpine-x64")) | .url') +curl --retry 5 --retry-delay 5 -sL \ + -H "Accept: application/octet-stream" \ + -H "Authorization: Bearer $(cat /run/secrets/GITHUB_TOKEN)" \ + "${url}" | tar -xz -C "${PWSH_DIRECTORY}" +chmod +x "${PWSH_DIRECTORY}/pwsh" +ln -sf "${PWSH_DIRECTORY}/pwsh" /usr/bin/pwsh +pwsh -c "Install-Module -Name PSScriptAnalyzer -RequiredVersion ${PSSA_VERSION} -Scope AllUsers -Force" diff --git a/scripts/install-raku.sh b/scripts/install-raku.sh new file mode 100755 index 00000000000..90503aa38d1 --- /dev/null +++ b/scripts/install-raku.sh @@ -0,0 +1,63 @@ +#!/usr/bin/env bash + +set -euo pipefail + +apk add --no-cache rakudo zef + +###################### +# Install CheckStyle # +###################### +url=$(curl -s \ + -H "Accept: application/vnd.github+json" \ + -H "Authorization: Bearer $(cat /run/secrets/GITHUB_TOKEN)" \ + "https://api.github.com/repos/checkstyle/checkstyle/releases/tags/checkstyle-${CHECKSTYLE_VERSION}" | + jq --arg name "checkstyle-${CHECKSTYLE_VERSION}-all.jar" -r '.assets | .[] | select(.name==$name) | .url') +curl --retry 5 --retry-delay 5 -sL -o /usr/bin/checkstyle \ + -H "Accept: application/octet-stream" \ + -H "Authorization: Bearer $(cat /run/secrets/GITHUB_TOKEN)" \ + "${url}" +chmod a+x /usr/bin/checkstyle + +############################## +# Install google-java-format # +############################## +url=$(curl -s \ + -H "Accept: application/vnd.github+json" \ + -H "Authorization: Bearer $(cat /run/secrets/GITHUB_TOKEN)" \ + "https://api.github.com/repos/google/google-java-format/releases/tags/v${GOOGLE_JAVA_FORMAT_VERSION}" | + jq --arg name "google-java-format-${GOOGLE_JAVA_FORMAT_VERSION}-all-deps.jar" -r '.assets | .[] | select(.name==$name) | .url') +curl --retry 5 --retry-delay 5 -sL -o /usr/bin/google-java-format \ + -H "Accept: application/octet-stream" \ + -H "Authorization: Bearer $(cat /run/secrets/GITHUB_TOKEN)" \ + "${url}" +chmod a+x /usr/bin/google-java-format + +################################# +# Install luacheck and luarocks # +################################# +curl --retry 5 --retry-delay 5 -s https://www.lua.org/ftp/lua-5.3.5.tar.gz | tar -xz +cd lua-5.3.5 +make linux +make install +cd .. && rm -r lua-5.3.5/ + +url=$(curl -s \ + -H "Accept: application/vnd.github+json" \ + -H "Authorization: Bearer $(cat /run/secrets/GITHUB_TOKEN)" \ + https://api.github.com/repos/cvega/luarocks/releases/latest | jq -r '.tarball_url') +curl --retry 5 --retry-delay 5 -sL \ + -H "Accept: application/vnd.github+json" \ + -H "Authorization: Bearer $(cat /run/secrets/GITHUB_TOKEN)" \ + "${url}" | tar -xz +cd cvega-luarocks-6b1aee6 +./configure --with-lua-include=/usr/local/include +make +make -b install +cd .. +rm -r cvega-luarocks-6b1aee6 + +luarocks install luacheck +luarocks install argparse +luarocks install luafilesystem +mv /etc/R/* /usr/lib/R/etc/ +find /usr/ -type f -name '*.md' -exec rm {} + diff --git a/scripts/install-rustfmt.sh b/scripts/install-rustfmt.sh new file mode 100755 index 00000000000..a1c72166a7a --- /dev/null +++ b/scripts/install-rustfmt.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env bash +# shellcheck disable=SC2016 +# shellcheck disable=SC2129 + +set -euo pipefail + +ln -s /usr/bin/rustup-init /usr/bin/rustup +rustup toolchain install stable-x86_64-unknown-linux-musl +rustup component add rustfmt --toolchain=stable-x86_64-unknown-linux-musl +rustup component add clippy --toolchain=stable-x86_64-unknown-linux-musl +mv /root/.rustup /usr/lib/.rustup +ln -fsv /usr/lib/.rustup/toolchains/stable-x86_64-unknown-linux-musl/bin/rustfmt /usr/bin/rustfmt +ln -fsv /usr/lib/.rustup/toolchains/stable-x86_64-unknown-linux-musl/bin/rustc /usr/bin/rustc +ln -fsv /usr/lib/.rustup/toolchains/stable-x86_64-unknown-linux-musl/bin/cargo /usr/bin/cargo +ln -fsv /usr/lib/.rustup/toolchains/stable-x86_64-unknown-linux-musl/bin/cargo-clippy /usr/bin/cargo-clippy + +echo '#!/usr/bin/env bash' >/usr/bin/clippy +echo 'pushd $(dirname $1)' >>/usr/bin/clippy +echo 'cargo-clippy' >>/usr/bin/clippy +echo 'rc=$?' >>/usr/bin/clippy +echo 'popd' >>/usr/bin/clippy +echo 'exit $rc' >>/usr/bin/clippy +chmod +x /usr/bin/clippy diff --git a/slim/action.yml b/slim/action.yml index 4eae2fe789c..65281d487f8 100644 --- a/slim/action.yml +++ b/slim/action.yml @@ -4,7 +4,7 @@ author: 'GitHub' description: 'It is a simple combination of various linters, written in bash, to help validate your source code.' runs: using: 'docker' - image: 'docker://ghcr.io/github/super-linter:slim-v4.10.0' + image: 'docker://ghcr.io/github/super-linter:slim-v4.10.1' branding: icon: 'check-square' color: 'white' diff --git a/test/inspec/super-linter/controls/super_linter.rb b/test/inspec/super-linter/controls/super_linter.rb index 83bdccd28e2..698ef311855 100644 --- a/test/inspec/super-linter/controls/super_linter.rb +++ b/test/inspec/super-linter/controls/super_linter.rb @@ -68,7 +68,7 @@ ) packages.each do |item| - if(image == "slim" && SLIM_IMAGE_REMOVED_PACKAGES.include?(item)) + if (image == "slim" && SLIM_IMAGE_REMOVED_PACKAGES.include?(item)) next else describe package(item) do @@ -149,6 +149,7 @@ { linter_name: "standard"}, { linter_name: "stylelint"}, { linter_name: "tekton-lint"}, + { linter_name: "terraform"}, { linter_name: "terragrunt"}, { linter_name: "terrascan", version_option: "version"}, { linter_name: "tflint"}, @@ -171,10 +172,10 @@ # command because the vast majority of linters have name == command linter_command = "" - if(image == "slim" && SLIM_IMAGE_REMOVED_LINTERS.include?(linter[:linter_name])) + if (image == "slim" && SLIM_IMAGE_REMOVED_LINTERS.include?(linter[:linter_name])) next else - if(linter.key?(:linter_command)) + if (linter.key?(:linter_command)) linter_command = linter[:linter_command] else linter_command = linter[:linter_name] @@ -185,12 +186,12 @@ end # A few linters have a command that it's different than linter_command - if(linter.key?(:version_command)) + if (linter.key?(:version_command)) version_command = linter[:version_command] else # Check if the linter needs an option that is different from the one that # the vast majority of linters use to get the version - if(linter.key?(:version_option)) + if (linter.key?(:version_option)) version_option = linter[:version_option] else version_option = default_version_option @@ -198,13 +199,13 @@ version_command = "#{linter_command} #{version_option}" - if(linter.key?(:expected_exit_status)) + if (linter.key?(:expected_exit_status)) expected_exit_status = linter[:expected_exit_status] else expected_exit_status = default_version_expected_exit_status end - if(linter.key?(:expected_stdout_regex)) + if (linter.key?(:expected_stdout_regex)) expected_stdout_regex = linter[:expected_stdout_regex] else expected_stdout_regex = default_expected_stdout_regex @@ -332,7 +333,7 @@ ) dirs.each do |item| - if(image == "slim" && SLIM_IMAGE_REMOVED_DIRS.include?(item)) + if (image == "slim" && SLIM_IMAGE_REMOVED_DIRS.include?(item)) next else describe directory(item) do @@ -421,7 +422,7 @@ title "Super-Linter validate Powershell Modules" desc "Check that Powershell modules that Super-Linter needs are installed." - if(image == "slim") + if (image == "slim") next else describe command("pwsh -c \"(Get-Module -Name PSScriptAnalyzer -ListAvailable | Select-Object -First 1).Name\" 2>&1") do