diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index d302fff967..0000000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,105 +0,0 @@ -version: 2.1 - -orbs: - win: circleci/windows@2.4.0 - -commands: - update-yarn: - steps: - - run: - name: Update yarn - command: yarn global add yarn@latest - install: - steps: - - run: - name: Install dependencies - command: yarn install --ignore-engines --frozen-lockfile - audit: - steps: - - run: - name: Audit dependencies - command: yarn audit - build: - steps: - - run: - name: Build packages - command: yarn build - lint: - steps: - - run: - name: Lint project - command: yarn lint - format: - steps: - - run: - name: Format project - command: yarn format - deps: - steps: - - run: - name: Check dependencies - command: yarn deps - test: - steps: - - run: - name: Test - command: yarn test-ci - save-cache: - steps: - - save_cache: - key: v{{ .Environment.CIRCLE_CACHE_VERSION }}-{{ arch }}-npm-lock-{{ .Branch }}-{{ .Environment.CIRCLE_JOB }}-{{ checksum "yarn.lock" }} - paths: - - node_modules - run-all: - steps: - - checkout - - restore_cache: - keys: - - v1-dependencies-{{ checksum "yarn.lock" }} - - update-yarn - - install - - save-cache - - build - - lint - - format - - deps - - test - run-tests: - steps: - - checkout - - restore_cache: - keys: - - v1-dependencies-{{ checksum "yarn.lock" }} - - update-yarn - - install - - save-cache - - build - - test -jobs: - v12: - docker: - - image: node:12-buster - steps: - - run-all - v14: - docker: - - image: node:14-buster - steps: - - run-tests - v16: - docker: - - image: node:16-buster - steps: - - run-tests - windows-v12: - executor: win/default - steps: - - run-tests - -workflows: - node: - jobs: - - v12 - - v14 - - v16 - - windows-v12 diff --git a/.codesandbox/ci.json b/.codesandbox/ci.json new file mode 100644 index 0000000000..d8bd46360b --- /dev/null +++ b/.codesandbox/ci.json @@ -0,0 +1,5 @@ +{ + "node": "18", + "packages": ["@alias/*", "@commitlint/*"], + "sandboxes": [] +} diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index df93c1ca68..08d0eac7e9 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,13 +1,17 @@ { "name": "commitlint-dev", - "dockerComposeFile": ["../docker-compose.yml"], + "dockerComposeFile": ["../compose.yaml"], "service": "commitlint", "workspaceFolder": "/root/repo", "shutdownAction": "stopCompose", - "extensions": [ - "editorconfig.editorconfig", - "ms-vsliveshare.vsliveshare-pack", - "ms-azuretools.vscode-docker", - "esbenp.prettier-vscode" - ] + "customizations": { + "vscode": { + "extensions": [ + "editorconfig.editorconfig", + "esbenp.prettier-vscode", + "ms-azuretools.vscode-docker", + "ms-vsliveshare.vsliveshare-pack" + ] + } + } } diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index b1e8dbd975..0000000000 --- a/.eslintignore +++ /dev/null @@ -1,4 +0,0 @@ -lib/ -coverage/ -node_modules/ -fixtures/ diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 148b0fa619..0000000000 --- a/.eslintrc.js +++ /dev/null @@ -1,75 +0,0 @@ -module.exports = { - root: true, - plugins: ['@typescript-eslint', 'jest', 'import'], - env: { - es6: true, - node: true, - }, - parserOptions: { - sourceType: 'module', - ecmaVersion: 11, - ecmaFeatures: { - jsx: false, - }, - }, - extends: ['eslint:recommended', 'prettier'], - rules: { - // disallow non-import statements appearing before import statements - 'import/first': 'error', - // Forbid import of modules using absolute paths - 'import/no-absolute-path': 'error', - // disallow AMD require/define - 'import/no-amd': 'error', - // Forbid mutable exports - 'import/no-mutable-exports': 'error', - // Prevent importing the default as if it were named - 'import/no-named-default': 'error', - // Forbid a module from importing itself - 'import/no-self-import': 'error', - - // Forbid the use of extraneous packages - 'import/no-extraneous-dependencies': [ - 'error', - { - devDependencies: ['**/*.test.js', '**/*.test.ts'], - }, - ], - }, - overrides: [ - { - files: ['*.ts'], - parser: '@typescript-eslint/parser', - extends: [ - 'plugin:@typescript-eslint/eslint-recommended', - 'plugin:@typescript-eslint/recommended', - 'prettier', - ], - rules: { - '@typescript-eslint/no-unused-vars': 'off', - '@typescript-eslint/no-use-before-define': 'off', - '@typescript-eslint/no-explicit-any': 'off', - '@typescript-eslint/explicit-function-return-type': 'off', - '@typescript-eslint/no-var-requires': 'off', - '@typescript-eslint/no-inferrable-types': 'off', - '@typescript-eslint/no-non-null-assertion': 'off', - - // TODO: enable those rules? - 'no-empty': 'off', - 'no-var': 'off', - }, - }, - { - files: ['*.test.ts', '*.test.js'], - env: { - jest: true, - }, - extends: ['plugin:jest/recommended'], - rules: { - '@typescript-eslint/no-explicit-any': 'off', - '@typescript-eslint/no-var-requires': 'off', - // disallow non-import statements appearing before import statements - 'import/first': 'off', - }, - }, - ], -}; diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 9227d107c7..be7921be0c 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -38,7 +38,7 @@ Please consider these guidelines when filing a pull request: _ What you added _ What you removed -## Coding Rules +### Coding Rules To keep the code base of commitlint neat and tidy the following rules apply to every change @@ -48,7 +48,7 @@ To keep the code base of commitlint neat and tidy the following rules apply to e - Favor micro library over swiss army knives (rimraf, ncp vs. fs-extra) - Be awesome -## Commit Rules +### Commit Rules To help everyone with understanding the commit history of commitlint the following commit rules are enforced. To make your life easier commitlint is commitizen-friendly and provides the npm run-script `commit`. @@ -60,3 +60,121 @@ To make your life easier commitlint is commitizen-friendly and provides the npm - present tense - maximum of 100 characters - message format of `$type($scope): $message` + +### Environment setup + +This project uses `yarn`, so be sure that it is available in your shell environment. + +After cloning the repo run + +```sh +yarn install +``` + +### Testing + +From the project root directory, use the following commands to run the test suite + +```sh +yarn build +yarn test +``` + +### Documentation updates + +Documentation uses `vitepress`. +To run and edit the documentation locally run: + +```sh +yarn docs-dev +``` + +To have a preview of the deployed doc run: + +```sh +yarn docs-build +yarn docs-serve +``` + +For more information refer to [vitepress documentation](https://vitepress.dev). + +## Package dependency overview + +![commitlint-dependencies](https://user-images.githubusercontent.com/4248851/58385093-34b79780-7feb-11e9-8f27-bffc4aca3eba.png) + +(Partly outdated) + +## Publishing a release + +```sh +npm login +nvm use (if you have nvm installed) +``` + +- [nvm](https://github.com/nvm-sh/nvm) +- [asdf](https://asdf-vm.com/) is supported as well + +```sh +yarn clean +yarn install +yarn build +yarn test +yarn run publish --otp +``` + +If something in between fails (like a new package was added and needs to be published for the +first time but you forgot) you can use `lerna publish from-package` to publish anything that +has not been published yet. + +### Create GitHub release + +1. Copy changelog entry for the new version +1. Create release for the new tag: https://github.com/conventional-changelog/commitlint/releases +1. Post in the [commitlint Slack-channel][12] + +### Publish a `next` release (or i.e. patch release) + +```sh +npm login +nvm use (if you have nvm installed) +``` + +```sh +yarn clean +yarn install +yarn build +yarn test +npx lerna publish --conventional-commits --dist-tag [`next` | `next` | `[release-vXX(BRANCH)]`] --otp +``` + +If for some reason this stops in between, you can manually publish missing packages like this: + +```sh +npm publish --tag [`latest` | `next` | `[release-vXX(BRANCH)]`] --otp +``` + +Depending on the state of the packages you might need to run `npm pack` in each failed package and then publish it. + +#### Publishing (new) packages for the first time + +```sh +npm publish [PACKAGE_NAME] --access public +``` + +From within the folder first i.e. `cd @commitlint/new-packages`. + +#### Move `next` to `latest` + +```sh +npm login +``` + +```sh +npx lerna exec --no-bail --no-private --no-sort --stream -- '[ -n "$(npm v . dist-tags.next)" ] && npm dist-tag add ${LERNA_PACKAGE_NAME}@$(npm v . dist-tags.next) latest --otp ' +``` + +Remove next: + +```sh +npx lerna exec --no-bail --no-private --no-sort --stream -- '[ -n "$(npm v . dist-tags.next)" ] && npm dist-tag rm ${LERNA_PACKAGE_NAME} next --otp ' +``` diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md deleted file mode 100644 index 05a7b16e0b..0000000000 --- a/.github/ISSUE_TEMPLATE.md +++ /dev/null @@ -1,54 +0,0 @@ - - -## Expected Behavior - - - - -## Current Behavior - - - - -## Affected packages - -- [ ] cli -- [ ] core -- [ ] prompt -- [ ] config-angular - -## Possible Solution - - - - -## Steps to Reproduce (for bugs) - - - - -1. First step -2. Second step - -
- commitlint.config.js - - -```js -``` -
- -## Context - - - - -## Your Environment - - - -| Executable | Version | -| ---------------------: | :------ | -| `commitlint --version` | VERSION | -| `git --version` | VERSION | -| `node --version` | VERSION | diff --git a/.github/ISSUE_TEMPLATE/BUG_REPORT.yml b/.github/ISSUE_TEMPLATE/BUG_REPORT.yml new file mode 100644 index 0000000000..7e1df48553 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/BUG_REPORT.yml @@ -0,0 +1,81 @@ +name: "🐛 Bug Report" +description: Create a new ticket for a bug. +title: "fix: " +labels: ["bug"] +body: + - type: markdown + attributes: + value: | + Provide a general summary of the issue in the Title above + - type: textarea + id: steps-to-reproduce + attributes: + label: "Steps to Reproduce" + description: Provide a link to a live example, or an unambiguous set of steps to reproduce this bug. Include code to reproduce, if relevant + value: | + 1. First step + 2. Second step + render: bash + validations: + required: true + - type: textarea + id: current-behavior + attributes: + label: "Current Behavior" + description: Tell us what happens instead of the expected behavior + validations: + required: false + - type: textarea + id: expected-behavior + attributes: + label: "Expected Behavior" + description: Tell us what should happen + placeholder: Short and explicit description of your incident... + validations: + required: true + - type: checkboxes + id: affected-packages + attributes: + label: "Affected packages" + options: + - label: cli + - label: core + - label: prompt + - label: config-angular + - type: textarea + id: possible-solution + attributes: + label: "Possible Solution" + description: Not obligatory, but suggest a fix/reason for the bug, or ideas how to implement the addition or change + validations: + required: false + - type: textarea + id: context + attributes: + label: "Context" + description: | + How has this issue affected you? What are you trying to accomplish? + Providing context helps us come up with a solution that is most useful in the real world + validations: + required: false + - type: input + id: commitlint-version + attributes: + label: "commitlint --version" + placeholder: "@commitlint/cli@x.x.x" + validations: + required: true + - type: input + id: git-version + attributes: + label: "git --version" + placeholder: vx.x.x + validations: + required: true + - type: input + id: node-version + attributes: + label: "node --version" + placeholder: vx.x.x + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/FEATURE_REQUEST.yml b/.github/ISSUE_TEMPLATE/FEATURE_REQUEST.yml new file mode 100644 index 0000000000..063dd15fe4 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/FEATURE_REQUEST.yml @@ -0,0 +1,49 @@ +name: "✨ Feature Request" +description: Create a new ticket for a new feature request +title: "feat: <title>" +labels: ["feature"] +body: + - type: markdown + attributes: + value: | + Provide a general summary of the issue in the Title above + - type: textarea + id: expected-behavior + attributes: + label: "Expected Behavior" + description: Tell us how it should work + placeholder: Short and explicit description of your request... + validations: + required: true + - type: textarea + id: current-behavior + attributes: + label: "Current Behavior" + description: Explain the difference from current behavior + validations: + required: false + - type: checkboxes + id: affected-packages + attributes: + label: "Affected packages" + options: + - label: cli + - label: core + - label: prompt + - label: config-angular + - type: textarea + id: possible-solution + attributes: + label: "Possible Solution" + description: Ideas how to implement the addition or change + validations: + required: false + - type: textarea + id: context + attributes: + label: "Context" + description: | + How has this issue affected you? What are you trying to accomplish? + Providing context helps us come up with a solution that is most useful in the real world + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000000..0086358db1 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1 @@ +blank_issues_enabled: true diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index cca22af6cb..3f26ef9948 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -36,7 +36,7 @@ echo "your commit message here" | commitlint # fails/passes ## Checklist: -<!--- Go over all the following points, and put an `x` in all the boxes that apply. --> +<!--- Go over all the following points, and put an `x` in all the boxes that apply. See the README for information on testing. --> <!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! --> - [ ] My change requires a change to the documentation. diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml new file mode 100644 index 0000000000..27f3c361cc --- /dev/null +++ b/.github/workflows/CI.yml @@ -0,0 +1,87 @@ +name: CI + +on: + push: + branches: + - "**" + pull_request: + types: [opened, synchronize] + + workflow_dispatch: + + # to execute once a day (more info see https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#schedule ) + schedule: + - cron: "0 0 * * *" + +jobs: + build: + strategy: + matrix: + os: [ubuntu-22.04, ubuntu-24.04, windows-2022, windows-2025] + node: [18, 20] + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node }} + cache: yarn + + - name: Install dependencies + run: yarn install --ignore-engines --frozen-lockfile + + - name: Build packages + run: yarn build + + - name: Test + run: yarn test + + codeQuality: + name: Code quality + needs: [build] + runs-on: ubuntu-24.04 + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-node@v4 + with: + node-version: 20 + cache: yarn + + - name: Install dependencies + run: yarn install --ignore-engines --frozen-lockfile + + - name: Check format + run: yarn format || (yarn format-fix; git diff --exit-code) + + - name: Lint + run: yarn lint + + nodeJsBaselineAptCompatibility: + name: NodeJS installed from stock Ubuntu-LTS packages (not external sources) + runs-on: ubuntu-24.04 + container: + image: "ubuntu:24.04" + steps: + - uses: actions/checkout@v4 + + - name: Install dependencies + run: | + apt update --yes + + # NOTE: do not change the below with an `actions/setup-node` step! or it + # would make this CI job entirely pointless + apt install --yes npm + + npm install --global yarn + yarn install + + - name: Print versions + run: node --version && npm --version && yarn --version + + - name: Build + run: yarn build + + - name: Run Tests + run: yarn test diff --git a/.github/workflows/commitlint.yml b/.github/workflows/commitlint.yml new file mode 100644 index 0000000000..9bcc37d685 --- /dev/null +++ b/.github/workflows/commitlint.yml @@ -0,0 +1,47 @@ +name: Conventional Commitlint + +on: + push: + pull_request: + workflow_dispatch: + +permissions: + contents: read + +jobs: + commitlint: + name: Commitlint + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: lts/* + cache: yarn + + - name: Install dependencies + run: yarn install --frozen-lockfile + + - name: Build packages + run: yarn build + + - name: Print versions + run: | + git --version + node --version + npm --version + yarn --version + yarn commitlint --version + + - name: Validate current commit (last commit) with commitlint + if: github.event_name == 'push' || github.event_name == 'workflow_dispatch' + run: yarn commitlint --last --verbose + + - name: Validate PR commits with commitlint + if: github.event_name == 'pull_request' + run: yarn commitlint --from ${{ github.event.pull_request.base.sha }} --to ${{ github.event.pull_request.head.sha }} --verbose diff --git a/.github/workflows/container-build.yml b/.github/workflows/container-build.yml new file mode 100644 index 0000000000..6bc4cc1816 --- /dev/null +++ b/.github/workflows/container-build.yml @@ -0,0 +1,45 @@ +name: container build +on: + push: + tags: + - "**" + schedule: + - cron: "0 0 * * *" + pull_request: + paths: + - "Dockerfile.ci" +jobs: + container-build: + if: github.repository == 'conventional-changelog/commitlint' + runs-on: ubuntu-latest + steps: + - name: checkout + uses: actions/checkout@v4 + - name: Set up QEMU + uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 # v3.6.0 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1 + - name: Log into registry + uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Docker meta + id: meta + uses: docker/metadata-action@902fa8ec7d6ecbf8d84d538b9b233a880e428804 # v5.7.0 + with: + images: commitlint/commitlint + tags: | + type=semver,pattern={{version}} + type=edge,branch=master + type=ref,event=branch + type=sha,prefix=,format=short + - name: Build and push container image + uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0 + with: + context: . + file: Dockerfile.ci + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + platforms: linux/amd64,linux/arm64 diff --git a/.github/workflows/docs-deploy.yml b/.github/workflows/docs-deploy.yml new file mode 100644 index 0000000000..c7c7891a64 --- /dev/null +++ b/.github/workflows/docs-deploy.yml @@ -0,0 +1,63 @@ +name: Deploy docs site to Pages + +on: + push: + branches: [master] + + workflow_dispatch: + +permissions: + contents: read + pages: write + id-token: write + +concurrency: + group: pages + cancel-in-progress: false + +jobs: + # Build job + build: + if: github.repository == 'conventional-changelog/commitlint' + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: 18 + cache: yarn + + - name: Setup Pages + uses: actions/configure-pages@v5 + + - name: Install dependencies + run: yarn install + + - name: Build with VitePress + run: | + yarn docs-build + touch ./docs/.vitepress/dist/.nojekyll + + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + with: + path: ./docs/.vitepress/dist + + # Deployment job + deploy: + if: github.repository == 'conventional-changelog/commitlint' + environment: + name: docs + url: ${{ steps.deployment.outputs.page_url }} + needs: build + runs-on: ubuntu-latest + name: Deploy + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/.gitignore b/.gitignore index c9d515cd7d..e9a4fbe8ce 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,10 @@ package.json.lerna_backup /*.iml tsconfig.tsbuildinfo coverage +dist + +docs/.vitepress/dist +docs/.vitepress/cache + +# For testing nested workspaces does not have the package's dependencies name in the scope +!**/config-lerna-scopes/fixtures/nested-workspaces/**/node_modules diff --git a/.husky/.gitignore b/.husky/.gitignore deleted file mode 100644 index 31354ec138..0000000000 --- a/.husky/.gitignore +++ /dev/null @@ -1 +0,0 @@ -_ diff --git a/.husky/commit-msg b/.husky/commit-msg old mode 100755 new mode 100644 index effdb7aaed..3b8df8ca71 --- a/.husky/commit-msg +++ b/.husky/commit-msg @@ -1,4 +1 @@ -#!/bin/sh -. "$(dirname "$0")/_/husky.sh" - -node @commitlint/cli/lib/cli.js --edit $1 \ No newline at end of file +node @commitlint/cli/lib/cli.js --edit $1 diff --git a/.husky/pre-commit b/.husky/pre-commit old mode 100755 new mode 100644 index dc0378c348..53f08ae2a9 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,4 +1,5 @@ -#!/bin/sh -. "$(dirname "$0")/_/husky.sh" +yarn lint-staged -yarn lint-staged \ No newline at end of file +# be sure to build with up to date source +# before running pre-commit hook which is using `@commitlint/cli/lib/cli.js` +yarn build diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000000..521a9f7c07 --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +legacy-peer-deps=true diff --git a/.nvmrc b/.nvmrc index 5a80a7e912..25bf17fc5a 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -12.22.3 +18 \ No newline at end of file diff --git a/.nxignore b/.nxignore new file mode 100644 index 0000000000..5758b6a456 --- /dev/null +++ b/.nxignore @@ -0,0 +1,3 @@ +# Having fixtures with a package.json and project.json leads to a duplicate package resolution issue. +# see https://github.com/nrwl/nx/issues/20959 +@commitlint/*/fixtures/** diff --git a/.tool-versions b/.tool-versions new file mode 100644 index 0000000000..0e9804f101 --- /dev/null +++ b/.tool-versions @@ -0,0 +1 @@ +nodejs 18.20.8 diff --git a/@alias/commitlint-config-angular/CHANGELOG.md b/@alias/commitlint-config-angular/CHANGELOG.md index 1cac620dd9..5c8046ab9d 100644 --- a/@alias/commitlint-config-angular/CHANGELOG.md +++ b/@alias/commitlint-config-angular/CHANGELOG.md @@ -3,7 +3,7 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. -# [13.1.0](https://github.com/conventional-changelog/commitlint/compare/v13.0.0...v13.1.0) (2021-07-24) +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) **Note:** Version bump only for package commitlint-config-angular @@ -11,21 +11,158 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) +## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) + +**Note:** Version bump only for package commitlint-config-angular + + + + + +# [19.8.0](https://github.com/conventional-changelog/commitlint/compare/v19.7.1...v19.8.0) (2025-03-07) + +**Note:** Version bump only for package commitlint-config-angular + + + + + +## [19.7.1](https://github.com/conventional-changelog/commitlint/compare/v19.7.0...v19.7.1) (2025-02-02) + +**Note:** Version bump only for package commitlint-config-angular + + + + + +# [19.7.0](https://github.com/conventional-changelog/commitlint/compare/v19.6.1...v19.7.0) (2025-01-04) + +**Note:** Version bump only for package commitlint-config-angular + + + + + +# [19.6.0](https://github.com/conventional-changelog/commitlint/compare/v19.5.0...v19.6.0) (2024-11-19) + +**Note:** Version bump only for package commitlint-config-angular + + + + + +# [19.5.0](https://github.com/conventional-changelog/commitlint/compare/v19.4.1...v19.5.0) (2024-09-11) + +**Note:** Version bump only for package commitlint-config-angular + + + + + +## [19.4.1](https://github.com/conventional-changelog/commitlint/compare/v19.4.0...v19.4.1) (2024-08-28) +**Note:** Version bump only for package commitlint-config-angular + + + + + +# [19.3.0](https://github.com/conventional-changelog/commitlint/compare/v19.2.2...v19.3.0) (2024-04-23) + +**Note:** Version bump only for package commitlint-config-angular + + + + + +## [19.2.2](https://github.com/conventional-changelog/commitlint/compare/v19.2.1...v19.2.2) (2024-04-14) + +**Note:** Version bump only for package commitlint-config-angular + + + + + +# [19.1.0](https://github.com/conventional-changelog/commitlint/compare/v19.0.3...v19.1.0) (2024-03-12) + +**Note:** Version bump only for package commitlint-config-angular -* chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) + + + + +## [19.0.3](https://github.com/conventional-changelog/commitlint/compare/v19.0.2...v19.0.3) (2024-02-28) + +**Note:** Version bump only for package commitlint-config-angular + + + + + +# [19.0.0](https://github.com/conventional-changelog/commitlint/compare/v18.6.2...v19.0.0) (2024-02-27) + + +* feat!: migrate to pure ESM (#3850) ([3423735](https://github.com/conventional-changelog/commitlint/commit/342373559bdf7c783c4ef37ff05dc38a5f681159)), closes [#3850](https://github.com/conventional-changelog/commitlint/issues/3850) + + +### Reverts + +* Revert "chore!: minimum node version v20" ([2816783](https://github.com/conventional-changelog/commitlint/commit/2816783d00e7eb967de3ac9347c2fc43dc8b94fa)) ### BREAKING CHANGES -* minimum node version is 12 +* migrate to pure ESM +* feat: migrate to pure ESM +* chore: update snapshot +* fix: load `parserPreset` with another `await` +* test: migrate to vitest -## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) +* test: remove no replacement `--runInBand` test-ci script + +* chore: fix code reviews + +* refactor(load): rewrite resolve logic + +* fix(config-nx-scopes): fix syntax error + +* feat(resolve-extends): add resolveFrom and loadParserPreset + +* feat(load): use resolveFrom and loadParserPreset from resolve-extends + +* test: include only @commitlint/* packages src in coverage + +* test: explicit import vitest utilities + +* test: remove @jest/globals from dependencies + +* fix(resolve-extends): `resolveFrom` output should be platform aware + +* test: restore NO_COLOR to test script + +* chore: fix linting issues + +* fix: should use fileURLToPath instead of pathname for Windows compatibility + +* Apply suggestions from code review + +* fix: should reuse `cli` instead call `yargs()` + +* feat(cli): set terminalWidth as wrap to avoid work break on help + +* Update .eslintrc.cjs + +* feat: migrate @commitlint/config-conventional to pure ESM + + + + + +## [18.6.1](https://github.com/conventional-changelog/commitlint/compare/v18.6.0...v18.6.1) (2024-02-13) **Note:** Version bump only for package commitlint-config-angular @@ -33,7 +170,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) +# [18.6.0](https://github.com/conventional-changelog/commitlint/compare/v18.5.1...v18.6.0) (2024-01-25) **Note:** Version bump only for package commitlint-config-angular @@ -41,7 +178,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) +# [18.5.0](https://github.com/conventional-changelog/commitlint/compare/v18.4.4...v18.5.0) (2024-01-22) **Note:** Version bump only for package commitlint-config-angular @@ -49,7 +186,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) +## [18.4.4](https://github.com/conventional-changelog/commitlint/compare/v18.4.3...v18.4.4) (2024-01-04) **Note:** Version bump only for package commitlint-config-angular @@ -57,7 +194,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) +## [18.4.3](https://github.com/conventional-changelog/commitlint/compare/v18.4.2...v18.4.3) (2023-11-21) **Note:** Version bump only for package commitlint-config-angular @@ -65,29 +202,61 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) +## [18.4.2](https://github.com/conventional-changelog/commitlint/compare/v18.4.1...v18.4.2) (2023-11-16) + +**Note:** Version bump only for package commitlint-config-angular + + + + + +# [18.4.0](https://github.com/conventional-changelog/commitlint/compare/v18.3.0...v18.4.0) (2023-11-10) + +**Note:** Version bump only for package commitlint-config-angular + + -* refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) + +# [18.1.0](https://github.com/conventional-changelog/commitlint/compare/v18.0.0...v18.1.0) (2023-10-25) + +**Note:** Version bump only for package commitlint-config-angular + + + + + +# [18.0.0](https://github.com/conventional-changelog/commitlint/compare/v17.8.1...v18.0.0) (2023-10-20) + + +* chore!: minimum node version v18 (#3644) ([5b4aeaf](https://github.com/conventional-changelog/commitlint/commit/5b4aeaf4f01c2726a7bc8631a23bb34c849baad2)), closes [#3644](https://github.com/conventional-changelog/commitlint/issues/3644) ### BREAKING CHANGES -* remove node 8 from circle-ci checks +* drop node v14 and v16 support -also remove node 13 because we do not support experimental versions +* chore: remove unused types -* docs: update node v10 to latest LTS 10 version +* docs: prepare node update and new release -Co-authored-by: Cedric van Putten <me@bycedric.com> +* chore!: minimum TS version v5 +* drop TS v4 support -Co-authored-by: Cedric van Putten <me@bycedric.com> +* ci: remove node v14/16 checks +* chore: adjust node types to minimal supported version +* chore!: further major versions of other deps +* upgrade conventional-changelog-conventionalcommits, conventional-commits-parser, conventional-changelog-atom, +* docs: simplify releases and remove roadmap -## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) + + + +## [17.8.1](https://github.com/conventional-changelog/commitlint/compare/v17.8.0...v17.8.1) (2023-10-20) **Note:** Version bump only for package commitlint-config-angular @@ -95,7 +264,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) +# [17.8.0](https://github.com/conventional-changelog/commitlint/compare/v17.7.2...v17.8.0) (2023-10-14) **Note:** Version bump only for package commitlint-config-angular @@ -103,7 +272,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) +# [17.7.0](https://github.com/conventional-changelog/commitlint/compare/v17.6.7...v17.7.0) (2023-08-09) **Note:** Version bump only for package commitlint-config-angular @@ -111,7 +280,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) +## [17.6.7](https://github.com/conventional-changelog/commitlint/compare/v17.6.6...v17.6.7) (2023-07-19) **Note:** Version bump only for package commitlint-config-angular @@ -119,7 +288,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) +## [17.6.6](https://github.com/conventional-changelog/commitlint/compare/v17.6.5...v17.6.6) (2023-06-24) **Note:** Version bump only for package commitlint-config-angular @@ -127,7 +296,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) +## [17.6.5](https://github.com/conventional-changelog/commitlint/compare/v17.6.4...v17.6.5) (2023-05-30) **Note:** Version bump only for package commitlint-config-angular @@ -135,7 +304,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) +## [17.6.3](https://github.com/conventional-changelog/commitlint/compare/v17.6.2...v17.6.3) (2023-05-04) **Note:** Version bump only for package commitlint-config-angular @@ -143,7 +312,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) +## [17.6.1](https://github.com/conventional-changelog/commitlint/compare/v17.6.0...v17.6.1) (2023-04-14) **Note:** Version bump only for package commitlint-config-angular @@ -151,7 +320,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) +# [17.6.0](https://github.com/conventional-changelog/commitlint/compare/v17.5.1...v17.6.0) (2023-04-13) **Note:** Version bump only for package commitlint-config-angular @@ -159,7 +328,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) +## [17.4.4](https://github.com/conventional-changelog/commitlint/compare/v17.4.3...v17.4.4) (2023-02-17) **Note:** Version bump only for package commitlint-config-angular @@ -167,214 +336,334 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -<a name="7.5.0"></a> -# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) +## [17.4.3](https://github.com/conventional-changelog/commitlint/compare/v17.4.2...v17.4.3) (2023-02-13) +**Note:** Version bump only for package commitlint-config-angular -### Bug Fixes -* replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) +## [17.4.2](https://github.com/conventional-changelog/commitlint/compare/v17.4.1...v17.4.2) (2023-01-12) -<a name="7.3.1"></a> -## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) +**Note:** Version bump only for package commitlint-config-angular + +# [17.4.0](https://github.com/conventional-changelog/commitlint/compare/v17.3.0...v17.4.0) (2023-01-04) + **Note:** Version bump only for package commitlint-config-angular -<a name="7.3.0"></a> -# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) +# [17.3.0](https://github.com/conventional-changelog/commitlint/compare/v17.2.1...v17.3.0) (2022-11-21) +**Note:** Version bump only for package commitlint-config-angular +# [17.2.0](https://github.com/conventional-changelog/commitlint/compare/v17.1.2...v17.2.0) (2022-10-31) +**Note:** Version bump only for package commitlint-config-angular + +# [17.1.0](https://github.com/conventional-changelog/commitlint/compare/v17.0.3...v17.1.0) (2022-08-27) **Note:** Version bump only for package commitlint-config-angular -<a name="7.1.2"></a> -## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) +## [17.0.3](https://github.com/conventional-changelog/commitlint/compare/v17.0.2...v17.0.3) (2022-06-25) +**Note:** Version bump only for package commitlint-config-angular +# [17.0.0](https://github.com/conventional-changelog/commitlint/compare/v16.3.0...v17.0.0) (2022-05-16) +- chore!: minimum node version v14 (#3128) ([ac5f9b4](https://github.com/conventional-changelog/commitlint/commit/ac5f9b47a9e3cd5c9d58b14da0feb426f06b1ef9)), closes [#3128](https://github.com/conventional-changelog/commitlint/issues/3128) + +### BREAKING CHANGES + +- drop node v12 support + +- chore: rename circleci windows job + +node version is not defned by the name anyways (i think) + +# [16.3.0](https://github.com/conventional-changelog/commitlint/compare/v16.2.4...v16.3.0) (2022-05-14) **Note:** Version bump only for package commitlint-config-angular -<a name="6.1.1"></a> -## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) +## [16.2.4](https://github.com/conventional-changelog/commitlint/compare/v16.2.3...v16.2.4) (2022-04-28) +**Note:** Version bump only for package commitlint-config-angular +## [16.2.3](https://github.com/conventional-changelog/commitlint/compare/v16.2.2...v16.2.3) (2022-03-16) + +**Note:** Version bump only for package commitlint-config-angular +## [16.2.1](https://github.com/conventional-changelog/commitlint/compare/v16.2.0...v16.2.1) (2022-02-13) **Note:** Version bump only for package commitlint-config-angular -<a name="6.1.0"></a> -# [6.1.0](https://github.com/conventional-changelog/commitlint/compare/v6.0.5...v6.1.0) (2018-02-03) +# [16.0.0](https://github.com/conventional-changelog/commitlint/compare/v15.0.0...v16.0.0) (2021-12-26) + +**Note:** Version bump only for package commitlint-config-angular +# [15.0.0](https://github.com/conventional-changelog/commitlint/compare/v14.2.0...v15.0.0) (2021-11-17) +**Note:** Version bump only for package commitlint-config-angular +# [14.1.0](https://github.com/conventional-changelog/commitlint/compare/v14.0.0...v14.1.0) (2021-11-01) **Note:** Version bump only for package commitlint-config-angular -<a name="6.0.4"></a> -## [6.0.4](https://github.com/conventional-changelog/commitlint/compare/v6.0.3...v6.0.4) (2018-01-31) +# [14.0.0](https://github.com/conventional-changelog/commitlint/compare/v13.2.1...v14.0.0) (2021-10-26) +**Note:** Version bump only for package commitlint-config-angular +# [13.2.0](https://github.com/conventional-changelog/commitlint/compare/v13.1.0...v13.2.0) (2021-09-28) +**Note:** Version bump only for package commitlint-config-angular + +# [13.1.0](https://github.com/conventional-changelog/commitlint/compare/v13.0.0...v13.1.0) (2021-07-24) **Note:** Version bump only for package commitlint-config-angular -<a name="6.0.3"></a> -## [6.0.3](https://github.com/conventional-changelog/commitlint/compare/v6.0.2...v6.0.3) (2018-01-31) +# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) +- chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) +### BREAKING CHANGES + +- minimum node version is 12 +## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) **Note:** Version bump only for package commitlint-config-angular -<a name="6.0.2"></a> -## [6.0.2](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.2) (2018-01-12) +## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) + +**Note:** Version bump only for package commitlint-config-angular +## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) +**Note:** Version bump only for package commitlint-config-angular +# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) **Note:** Version bump only for package commitlint-config-angular -<a name="5.1.1"></a> -## [5.1.1](https://github.com/conventional-changelog/commitlint/compare/v5.1.0...v5.1.1) (2017-11-24) +# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) + +**Note:** Version bump only for package commitlint-config-angular + +# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) + +- refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) +### BREAKING CHANGES + +- remove node 8 from circle-ci checks + +also remove node 13 because we do not support experimental versions +- docs: update node v10 to latest LTS 10 version +Co-authored-by: Cedric van Putten <me@bycedric.com> + +Co-authored-by: Cedric van Putten <me@bycedric.com> + +## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) **Note:** Version bump only for package commitlint-config-angular -<a name="5.1.0"></a> -# [5.1.0](https://github.com/conventional-changelog/commitlint/compare/v5.0.2...v5.1.0) (2017-11-24) +## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) + +**Note:** Version bump only for package commitlint-config-angular +# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) +**Note:** Version bump only for package commitlint-config-angular +## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) **Note:** Version bump only for package commitlint-config-angular -<a name="5.0.1"></a> -## [5.0.1](https://github.com/conventional-changelog/commitlint/compare/v5.0.0...v5.0.1) (2017-11-19) +# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) + +**Note:** Version bump only for package commitlint-config-angular +## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) +**Note:** Version bump only for package commitlint-config-angular +# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) **Note:** Version bump only for package commitlint-config-angular -<a name="4.3.0"></a> -# [4.3.0](https://github.com/conventional-changelog/commitlint/compare/v4.2.2...v4.3.0) (2017-11-08) +# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) +**Note:** Version bump only for package commitlint-config-angular +# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) +**Note:** Version bump only for package commitlint-config-angular + +# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) **Note:** Version bump only for package commitlint-config-angular -<a name="4.2.1"></a> -## [4.2.1](https://github.com/conventional-changelog/commitlint/compare/v4.2.0...v4.2.1) (2017-10-18) +<a name="7.5.0"></a> +# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) +### Bug Fixes +- replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) + +<a name="7.3.1"></a> + +## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) **Note:** Version bump only for package commitlint-config-angular -<a name="4.2.0"></a> -# [4.2.0](https://github.com/conventional-changelog/commitlint/compare/v4.1.1...v4.2.0) (2017-10-14) +<a name="7.3.0"></a> +# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) +**Note:** Version bump only for package commitlint-config-angular + +<a name="7.1.2"></a> +## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) **Note:** Version bump only for package commitlint-config-angular -<a name="3.2.0"></a> -# 3.2.0 (2017-09-05) +<a name="6.1.1"></a> + +## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) +**Note:** Version bump only for package commitlint-config-angular +<a name="6.1.0"></a> +# [6.1.0](https://github.com/conventional-changelog/commitlint/compare/v6.0.5...v6.1.0) (2018-02-03) -<a name="3.0.4"></a> -## 3.0.4 (2017-08-04) +**Note:** Version bump only for package commitlint-config-angular +<a name="6.0.4"></a> +## [6.0.4](https://github.com/conventional-changelog/commitlint/compare/v6.0.3...v6.0.4) (2018-01-31) -<a name="3.0.3"></a> -## 3.0.3 (2017-07-16) +**Note:** Version bump only for package commitlint-config-angular +<a name="6.0.3"></a> +## [6.0.3](https://github.com/conventional-changelog/commitlint/compare/v6.0.2...v6.0.3) (2018-01-31) -<a name="3.0.2"></a> -## 3.0.2 (2017-07-11) +**Note:** Version bump only for package commitlint-config-angular +<a name="6.0.2"></a> -### Features +## [6.0.2](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.2) (2018-01-12) -* alias config packages ([1946baf](https://github.com/conventional-changelog/commitlint/commit/1946baf)) +**Note:** Version bump only for package commitlint-config-angular +<a name="5.1.1"></a> +## [5.1.1](https://github.com/conventional-changelog/commitlint/compare/v5.1.0...v5.1.1) (2017-11-24) +**Note:** Version bump only for package commitlint-config-angular -<a name="3.0.3"></a> -## 3.0.3 (2017-07-16) +<a name="5.1.0"></a> +# [5.1.0](https://github.com/conventional-changelog/commitlint/compare/v5.0.2...v5.1.0) (2017-11-24) +**Note:** Version bump only for package commitlint-config-angular -<a name="3.0.2"></a> -## 3.0.2 (2017-07-11) +<a name="5.0.1"></a> +## [5.0.1](https://github.com/conventional-changelog/commitlint/compare/v5.0.0...v5.0.1) (2017-11-19) -### Features +**Note:** Version bump only for package commitlint-config-angular -* alias config packages ([1946baf](https://github.com/conventional-changelog/commitlint/commit/1946baf)) +<a name="4.3.0"></a> +# [4.3.0](https://github.com/conventional-changelog/commitlint/compare/v4.2.2...v4.3.0) (2017-11-08) +**Note:** Version bump only for package commitlint-config-angular +<a name="4.2.1"></a> -<a name="3.0.2"></a> -## 3.0.2 (2017-07-11) +## [4.2.1](https://github.com/conventional-changelog/commitlint/compare/v4.2.0...v4.2.1) (2017-10-18) +**Note:** Version bump only for package commitlint-config-angular -### Features +<a name="4.2.0"></a> -* alias config packages ([1946baf](https://github.com/conventional-changelog/commitlint/commit/1946baf)) +# [4.2.0](https://github.com/conventional-changelog/commitlint/compare/v4.1.1...v4.2.0) (2017-10-14) +**Note:** Version bump only for package commitlint-config-angular +<a name="3.2.0"></a> +# 3.2.0 (2017-09-05) -<a name="3.0.1"></a> -## 3.0.1 (2017-07-11) +<a name="3.0.4"></a> + +## 3.0.4 (2017-08-04) + +<a name="3.0.3"></a> + +## 3.0.3 (2017-07-16) +<a name="3.0.2"></a> + +## 3.0.2 (2017-07-11) ### Features -* alias config packages ([1946baf](https://github.com/conventional-changelog/commitlint/commit/1946baf)) +- alias config packages ([1946baf](https://github.com/conventional-changelog/commitlint/commit/1946baf)) +<a name="3.0.3"></a> +## 3.0.3 (2017-07-16) +<a name="3.0.2"></a> -<a name="3.0.1"></a> -## 3.0.1 (2017-07-11) +## 3.0.2 (2017-07-11) +### Features +- alias config packages ([1946baf](https://github.com/conventional-changelog/commitlint/commit/1946baf)) -<a name="3.0.0"></a> -# 3.0.0 (2017-07-10) +<a name="3.0.2"></a> +## 3.0.2 (2017-07-11) ### Features -* alias config packages ([67ba5c6](https://github.com/conventional-changelog/commitlint/commit/67ba5c6)) +- alias config packages ([1946baf](https://github.com/conventional-changelog/commitlint/commit/1946baf)) +<a name="3.0.1"></a> +## 3.0.1 (2017-07-11) +### Features + +- alias config packages ([1946baf](https://github.com/conventional-changelog/commitlint/commit/1946baf)) + +<a name="3.0.1"></a> + +## 3.0.1 (2017-07-11) <a name="3.0.0"></a> + # 3.0.0 (2017-07-10) +### Features + +- alias config packages ([67ba5c6](https://github.com/conventional-changelog/commitlint/commit/67ba5c6)) + +<a name="3.0.0"></a> + +# 3.0.0 (2017-07-10) ### Features -* alias config packages ([67ba5c6](https://github.com/conventional-changelog/commitlint/commit/67ba5c6)) +- alias config packages ([67ba5c6](https://github.com/conventional-changelog/commitlint/commit/67ba5c6)) diff --git a/@alias/commitlint-config-angular/index.js b/@alias/commitlint-config-angular/index.js index 350c9f08f2..0598f27f73 100644 --- a/@alias/commitlint-config-angular/index.js +++ b/@alias/commitlint-config-angular/index.js @@ -1 +1 @@ -module.exports = require('@commitlint/config-angular'); +export { default } from "@commitlint/config-angular"; diff --git a/@alias/commitlint-config-angular/package.json b/@alias/commitlint-config-angular/package.json index 5ff40dc2ce..6e1b9c8a08 100644 --- a/@alias/commitlint-config-angular/package.json +++ b/@alias/commitlint-config-angular/package.json @@ -1,6 +1,7 @@ { "name": "commitlint-config-angular", - "version": "13.1.0", + "type": "module", + "version": "20.0.0", "description": "Shareable commitlint config enforcing the angular commit convention", "files": [ "index.js" @@ -11,7 +12,8 @@ }, "repository": { "type": "git", - "url": "https://github.com/conventional-changelog/commitlint.git" + "url": "https://github.com/conventional-changelog/commitlint.git", + "directory": "@alias/commitlint-config-angular" }, "keywords": [ "conventional-changelog", @@ -24,15 +26,15 @@ "bugs": { "url": "https://github.com/conventional-changelog/commitlint/issues" }, - "homepage": "https://github.com/conventional-changelog/commitlint#readme", + "homepage": "https://commitlint.js.org/", "engines": { - "node": ">=v12" + "node": ">=v18" }, "dependencies": { - "@commitlint/config-angular": "^13.1.0" + "@commitlint/config-angular": "^20.0.0" }, "devDependencies": { - "@commitlint/utils": "^13.0.0" + "@commitlint/utils": "^20.0.0" }, - "gitHead": "d829bf6260304ca8d6811f329fcdd1b6c50e9749" + "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" } diff --git a/@alias/commitlint-config-lerna-scopes/CHANGELOG.md b/@alias/commitlint-config-lerna-scopes/CHANGELOG.md index c3191a11b6..562ee1191b 100644 --- a/@alias/commitlint-config-lerna-scopes/CHANGELOG.md +++ b/@alias/commitlint-config-lerna-scopes/CHANGELOG.md @@ -3,7 +3,7 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. -# [13.1.0](https://github.com/conventional-changelog/commitlint/compare/v13.0.0...v13.1.0) (2021-07-24) +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) **Note:** Version bump only for package commitlint-config-lerna-scopes @@ -11,21 +11,23 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) +## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) +**Note:** Version bump only for package commitlint-config-lerna-scopes -* chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) -### BREAKING CHANGES -* minimum node version is 12 +# [19.8.0](https://github.com/conventional-changelog/commitlint/compare/v19.7.1...v19.8.0) (2025-03-07) +**Note:** Version bump only for package commitlint-config-lerna-scopes -## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) + + +# [19.7.0](https://github.com/conventional-changelog/commitlint/compare/v19.6.1...v19.7.0) (2025-01-04) **Note:** Version bump only for package commitlint-config-lerna-scopes @@ -33,7 +35,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.1.2](https://github.com/conventional-changelog/commitlint/compare/v12.1.1...v12.1.2) (2021-04-29) +# [19.5.0](https://github.com/conventional-changelog/commitlint/compare/v19.4.1...v19.5.0) (2024-09-11) **Note:** Version bump only for package commitlint-config-lerna-scopes @@ -41,69 +43,86 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) +# [19.0.0](https://github.com/conventional-changelog/commitlint/compare/v18.6.2...v19.0.0) (2024-02-27) -**Note:** Version bump only for package commitlint-config-lerna-scopes +* feat!: migrate to pure ESM (#3850) ([3423735](https://github.com/conventional-changelog/commitlint/commit/342373559bdf7c783c4ef37ff05dc38a5f681159)), closes [#3850](https://github.com/conventional-changelog/commitlint/issues/3850) +### Reverts +* Revert "chore!: minimum node version v20" ([2816783](https://github.com/conventional-changelog/commitlint/commit/2816783d00e7eb967de3ac9347c2fc43dc8b94fa)) -# [12.1.0](https://github.com/conventional-changelog/commitlint/compare/v12.0.1...v12.1.0) (2021-03-06) -**Note:** Version bump only for package commitlint-config-lerna-scopes +### BREAKING CHANGES +* migrate to pure ESM +* feat: migrate to pure ESM +* chore: update snapshot +* fix: load `parserPreset` with another `await` -## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) +* test: migrate to vitest -**Note:** Version bump only for package commitlint-config-lerna-scopes +* test: remove no replacement `--runInBand` test-ci script +* chore: fix code reviews +* refactor(load): rewrite resolve logic +* fix(config-nx-scopes): fix syntax error +* feat(resolve-extends): add resolveFrom and loadParserPreset -# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) +* feat(load): use resolveFrom and loadParserPreset from resolve-extends -**Note:** Version bump only for package commitlint-config-lerna-scopes +* test: include only @commitlint/* packages src in coverage +* test: explicit import vitest utilities +* test: remove @jest/globals from dependencies +* fix(resolve-extends): `resolveFrom` output should be platform aware +* test: restore NO_COLOR to test script -# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) +* chore: fix linting issues -**Note:** Version bump only for package commitlint-config-lerna-scopes +* fix: should use fileURLToPath instead of pathname for Windows compatibility +* Apply suggestions from code review +* fix: should reuse `cli` instead call `yargs()` +* feat(cli): set terminalWidth as wrap to avoid work break on help +* Update .eslintrc.cjs -# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) +* feat: migrate @commitlint/config-conventional to pure ESM -* refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) -### BREAKING CHANGES -* remove node 8 from circle-ci checks +## [18.6.1](https://github.com/conventional-changelog/commitlint/compare/v18.6.0...v18.6.1) (2024-02-13) -also remove node 13 because we do not support experimental versions +**Note:** Version bump only for package commitlint-config-lerna-scopes -* docs: update node v10 to latest LTS 10 version -Co-authored-by: Cedric van Putten <me@bycedric.com> -Co-authored-by: Cedric van Putten <me@bycedric.com> +## [18.4.4](https://github.com/conventional-changelog/commitlint/compare/v18.4.3...v18.4.4) (2024-01-04) +**Note:** Version bump only for package commitlint-config-lerna-scopes -## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) + + + +## [18.4.3](https://github.com/conventional-changelog/commitlint/compare/v18.4.2...v18.4.3) (2023-11-21) **Note:** Version bump only for package commitlint-config-lerna-scopes @@ -111,7 +130,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) +# [18.4.0](https://github.com/conventional-changelog/commitlint/compare/v18.3.0...v18.4.0) (2023-11-10) **Note:** Version bump only for package commitlint-config-lerna-scopes @@ -119,7 +138,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) +# [18.1.0](https://github.com/conventional-changelog/commitlint/compare/v18.0.0...v18.1.0) (2023-10-25) **Note:** Version bump only for package commitlint-config-lerna-scopes @@ -127,23 +146,37 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) +# [18.0.0](https://github.com/conventional-changelog/commitlint/compare/v17.8.1...v18.0.0) (2023-10-20) -**Note:** Version bump only for package commitlint-config-lerna-scopes + +* chore!: minimum node version v18 (#3644) ([5b4aeaf](https://github.com/conventional-changelog/commitlint/commit/5b4aeaf4f01c2726a7bc8631a23bb34c849baad2)), closes [#3644](https://github.com/conventional-changelog/commitlint/issues/3644) +### BREAKING CHANGES +* drop node v14 and v16 support +* chore: remove unused types -# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) +* docs: prepare node update and new release -**Note:** Version bump only for package commitlint-config-lerna-scopes +* chore!: minimum TS version v5 +* drop TS v4 support +* ci: remove node v14/16 checks +* chore: adjust node types to minimal supported version +* chore!: further major versions of other deps +* upgrade conventional-changelog-conventionalcommits, conventional-commits-parser, conventional-changelog-atom, +* docs: simplify releases and remove roadmap -## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) + + + + +## [17.8.1](https://github.com/conventional-changelog/commitlint/compare/v17.8.0...v17.8.1) (2023-10-20) **Note:** Version bump only for package commitlint-config-lerna-scopes @@ -151,7 +184,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) +# [17.7.0](https://github.com/conventional-changelog/commitlint/compare/v17.6.7...v17.7.0) (2023-08-09) **Note:** Version bump only for package commitlint-config-lerna-scopes @@ -159,7 +192,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) +## [17.6.6](https://github.com/conventional-changelog/commitlint/compare/v17.6.5...v17.6.6) (2023-06-24) **Note:** Version bump only for package commitlint-config-lerna-scopes @@ -167,7 +200,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) +## [17.6.3](https://github.com/conventional-changelog/commitlint/compare/v17.6.2...v17.6.3) (2023-05-04) **Note:** Version bump only for package commitlint-config-lerna-scopes @@ -175,7 +208,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) +## [17.6.2](https://github.com/conventional-changelog/commitlint/compare/v17.6.1...v17.6.2) (2023-05-03) **Note:** Version bump only for package commitlint-config-lerna-scopes @@ -183,7 +216,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [7.5.1](https://github.com/conventional-changelog/commitlint/compare/v7.5.0...v7.5.1) (2019-02-09) +## [17.4.2](https://github.com/conventional-changelog/commitlint/compare/v17.4.1...v17.4.2) (2023-01-12) **Note:** Version bump only for package commitlint-config-lerna-scopes @@ -191,254 +224,348 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -<a name="7.5.0"></a> -# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) +# [17.4.0](https://github.com/conventional-changelog/commitlint/compare/v17.3.0...v17.4.0) (2023-01-04) +**Note:** Version bump only for package commitlint-config-lerna-scopes -### Bug Fixes +## [17.2.1](https://github.com/conventional-changelog/commitlint/compare/v17.2.0...v17.2.1) (2022-11-01) -* replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) +**Note:** Version bump only for package commitlint-config-lerna-scopes +# [17.2.0](https://github.com/conventional-changelog/commitlint/compare/v17.1.2...v17.2.0) (2022-10-31) +**Note:** Version bump only for package commitlint-config-lerna-scopes +## [17.0.2](https://github.com/conventional-changelog/commitlint/compare/v17.0.1...v17.0.2) (2022-06-01) -<a name="7.3.1"></a> -## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) +**Note:** Version bump only for package commitlint-config-lerna-scopes +# [17.0.0](https://github.com/conventional-changelog/commitlint/compare/v16.3.0...v17.0.0) (2022-05-16) +- chore!: minimum node version v14 (#3128) ([ac5f9b4](https://github.com/conventional-changelog/commitlint/commit/ac5f9b47a9e3cd5c9d58b14da0feb426f06b1ef9)), closes [#3128](https://github.com/conventional-changelog/commitlint/issues/3128) +### BREAKING CHANGES -**Note:** Version bump only for package commitlint-config-lerna-scopes +- drop node v12 support -<a name="7.3.0"></a> -# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) +- chore: rename circleci windows job +node version is not defned by the name anyways (i think) +## [16.2.4](https://github.com/conventional-changelog/commitlint/compare/v16.2.3...v16.2.4) (2022-04-28) + +**Note:** Version bump only for package commitlint-config-lerna-scopes +## [16.2.2](https://github.com/conventional-changelog/commitlint/compare/v16.2.1...v16.2.2) (2022-02-14) **Note:** Version bump only for package commitlint-config-lerna-scopes -<a name="7.2.1"></a> -## [7.2.1](https://github.com/conventional-changelog/commitlint/compare/v7.2.0...v7.2.1) (2018-10-11) +## [16.2.1](https://github.com/conventional-changelog/commitlint/compare/v16.2.0...v16.2.1) (2022-02-13) + +**Note:** Version bump only for package commitlint-config-lerna-scopes +# [16.0.0](https://github.com/conventional-changelog/commitlint/compare/v15.0.0...v16.0.0) (2021-12-26) +**Note:** Version bump only for package commitlint-config-lerna-scopes +# [15.0.0](https://github.com/conventional-changelog/commitlint/compare/v14.2.0...v15.0.0) (2021-11-17) **Note:** Version bump only for package commitlint-config-lerna-scopes -<a name="7.1.2"></a> -## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) +# [14.0.0](https://github.com/conventional-changelog/commitlint/compare/v13.2.1...v14.0.0) (2021-10-26) + +**Note:** Version bump only for package commitlint-config-lerna-scopes +# [13.2.0](https://github.com/conventional-changelog/commitlint/compare/v13.1.0...v13.2.0) (2021-09-28) +**Note:** Version bump only for package commitlint-config-lerna-scopes +# [13.1.0](https://github.com/conventional-changelog/commitlint/compare/v13.0.0...v13.1.0) (2021-07-24) **Note:** Version bump only for package commitlint-config-lerna-scopes -<a name="6.1.1"></a> -## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) +# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) +- chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) + +### BREAKING CHANGES +- minimum node version is 12 +## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) **Note:** Version bump only for package commitlint-config-lerna-scopes -<a name="6.1.0"></a> -# [6.1.0](https://github.com/conventional-changelog/commitlint/compare/v6.0.5...v6.1.0) (2018-02-03) +## [12.1.2](https://github.com/conventional-changelog/commitlint/compare/v12.1.1...v12.1.2) (2021-04-29) +**Note:** Version bump only for package commitlint-config-lerna-scopes + +## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) +**Note:** Version bump only for package commitlint-config-lerna-scopes +# [12.1.0](https://github.com/conventional-changelog/commitlint/compare/v12.0.1...v12.1.0) (2021-03-06) **Note:** Version bump only for package commitlint-config-lerna-scopes -<a name="6.0.4"></a> -## [6.0.4](https://github.com/conventional-changelog/commitlint/compare/v6.0.3...v6.0.4) (2018-01-31) +## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) +**Note:** Version bump only for package commitlint-config-lerna-scopes + +# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) +**Note:** Version bump only for package commitlint-config-lerna-scopes +# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) **Note:** Version bump only for package commitlint-config-lerna-scopes -<a name="6.0.3"></a> -## [6.0.3](https://github.com/conventional-changelog/commitlint/compare/v6.0.2...v6.0.3) (2018-01-31) +# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) +- refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) +### BREAKING CHANGES +- remove node 8 from circle-ci checks -**Note:** Version bump only for package commitlint-config-lerna-scopes +also remove node 13 because we do not support experimental versions -<a name="6.0.2"></a> -## [6.0.2](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.2) (2018-01-12) +- docs: update node v10 to latest LTS 10 version +Co-authored-by: Cedric van Putten <me@bycedric.com> +Co-authored-by: Cedric van Putten <me@bycedric.com> +## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) **Note:** Version bump only for package commitlint-config-lerna-scopes -<a name="6.0.0"></a> -# [6.0.0](https://github.com/conventional-changelog/commitlint/compare/v5.2.6...v6.0.0) (2018-01-09) +## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) + +**Note:** Version bump only for package commitlint-config-lerna-scopes +# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) +**Note:** Version bump only for package commitlint-config-lerna-scopes +## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) **Note:** Version bump only for package commitlint-config-lerna-scopes -<a name="5.2.6"></a> -## [5.2.6](https://github.com/conventional-changelog/commitlint/compare/v5.2.5...v5.2.6) (2017-12-21) +# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) + +**Note:** Version bump only for package commitlint-config-lerna-scopes +## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) +**Note:** Version bump only for package commitlint-config-lerna-scopes +# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) **Note:** Version bump only for package commitlint-config-lerna-scopes -<a name="5.2.0"></a> -# [5.2.0](https://github.com/conventional-changelog/commitlint/compare/v5.1.3...v5.2.0) (2017-11-30) +# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) + +**Note:** Version bump only for package commitlint-config-lerna-scopes +# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) +**Note:** Version bump only for package commitlint-config-lerna-scopes +# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) **Note:** Version bump only for package commitlint-config-lerna-scopes -<a name="5.1.1"></a> -## [5.1.1](https://github.com/conventional-changelog/commitlint/compare/v5.1.0...v5.1.1) (2017-11-24) +## [7.5.1](https://github.com/conventional-changelog/commitlint/compare/v7.5.0...v7.5.1) (2019-02-09) + +**Note:** Version bump only for package commitlint-config-lerna-scopes +<a name="7.5.0"></a> +# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) +### Bug Fixes -**Note:** Version bump only for package commitlint-config-lerna-scopes +- replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) -<a name="5.1.0"></a> -# [5.1.0](https://github.com/conventional-changelog/commitlint/compare/v5.0.2...v5.1.0) (2017-11-24) +<a name="7.3.1"></a> +## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) + +**Note:** Version bump only for package commitlint-config-lerna-scopes +<a name="7.3.0"></a> +# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) **Note:** Version bump only for package commitlint-config-lerna-scopes -<a name="5.0.1"></a> -## [5.0.1](https://github.com/conventional-changelog/commitlint/compare/v5.0.0...v5.0.1) (2017-11-19) +<a name="7.2.1"></a> +## [7.2.1](https://github.com/conventional-changelog/commitlint/compare/v7.2.0...v7.2.1) (2018-10-11) + +**Note:** Version bump only for package commitlint-config-lerna-scopes +<a name="7.1.2"></a> +## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) **Note:** Version bump only for package commitlint-config-lerna-scopes -<a name="4.3.0"></a> -# [4.3.0](https://github.com/conventional-changelog/commitlint/compare/v4.2.2...v4.3.0) (2017-11-08) +<a name="6.1.1"></a> +## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) + +**Note:** Version bump only for package commitlint-config-lerna-scopes +<a name="6.1.0"></a> +# [6.1.0](https://github.com/conventional-changelog/commitlint/compare/v6.0.5...v6.1.0) (2018-02-03) **Note:** Version bump only for package commitlint-config-lerna-scopes -<a name="4.2.1"></a> -## [4.2.1](https://github.com/conventional-changelog/commitlint/compare/v4.2.0...v4.2.1) (2017-10-18) +<a name="6.0.4"></a> +## [6.0.4](https://github.com/conventional-changelog/commitlint/compare/v6.0.3...v6.0.4) (2018-01-31) + +**Note:** Version bump only for package commitlint-config-lerna-scopes +<a name="6.0.3"></a> +## [6.0.3](https://github.com/conventional-changelog/commitlint/compare/v6.0.2...v6.0.3) (2018-01-31) **Note:** Version bump only for package commitlint-config-lerna-scopes -<a name="4.2.0"></a> -# [4.2.0](https://github.com/conventional-changelog/commitlint/compare/v4.1.1...v4.2.0) (2017-10-14) +<a name="6.0.2"></a> +## [6.0.2](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.2) (2018-01-12) + +**Note:** Version bump only for package commitlint-config-lerna-scopes +<a name="6.0.0"></a> +# [6.0.0](https://github.com/conventional-changelog/commitlint/compare/v5.2.6...v6.0.0) (2018-01-09) **Note:** Version bump only for package commitlint-config-lerna-scopes -<a name="4.1.1"></a> -## [4.1.1](https://github.com/conventional-changelog/commitlint/compare/v4.1.0...v4.1.1) (2017-10-09) +<a name="5.2.6"></a> +## [5.2.6](https://github.com/conventional-changelog/commitlint/compare/v5.2.5...v5.2.6) (2017-12-21) + +**Note:** Version bump only for package commitlint-config-lerna-scopes +<a name="5.2.0"></a> +# [5.2.0](https://github.com/conventional-changelog/commitlint/compare/v5.1.3...v5.2.0) (2017-11-30) **Note:** Version bump only for package commitlint-config-lerna-scopes -<a name="3.2.0"></a> -# 3.2.0 (2017-09-05) +<a name="5.1.1"></a> +## [5.1.1](https://github.com/conventional-changelog/commitlint/compare/v5.1.0...v5.1.1) (2017-11-24) +**Note:** Version bump only for package commitlint-config-lerna-scopes +<a name="5.1.0"></a> -<a name="3.0.4"></a> -## 3.0.4 (2017-08-04) +# [5.1.0](https://github.com/conventional-changelog/commitlint/compare/v5.0.2...v5.1.0) (2017-11-24) +**Note:** Version bump only for package commitlint-config-lerna-scopes +<a name="5.0.1"></a> -<a name="3.0.3"></a> -## 3.0.3 (2017-07-16) +## [5.0.1](https://github.com/conventional-changelog/commitlint/compare/v5.0.0...v5.0.1) (2017-11-19) +**Note:** Version bump only for package commitlint-config-lerna-scopes +<a name="4.3.0"></a> -<a name="3.0.2"></a> -## 3.0.2 (2017-07-11) +# [4.3.0](https://github.com/conventional-changelog/commitlint/compare/v4.2.2...v4.3.0) (2017-11-08) +**Note:** Version bump only for package commitlint-config-lerna-scopes -### Features +<a name="4.2.1"></a> -* alias config packages ([1946baf](https://github.com/conventional-changelog/commitlint/commit/1946baf)) +## [4.2.1](https://github.com/conventional-changelog/commitlint/compare/v4.2.0...v4.2.1) (2017-10-18) +**Note:** Version bump only for package commitlint-config-lerna-scopes +<a name="4.2.0"></a> +# [4.2.0](https://github.com/conventional-changelog/commitlint/compare/v4.1.1...v4.2.0) (2017-10-14) -<a name="3.0.3"></a> -## 3.0.3 (2017-07-16) +**Note:** Version bump only for package commitlint-config-lerna-scopes +<a name="4.1.1"></a> +## [4.1.1](https://github.com/conventional-changelog/commitlint/compare/v4.1.0...v4.1.1) (2017-10-09) -<a name="3.0.2"></a> -## 3.0.2 (2017-07-11) +**Note:** Version bump only for package commitlint-config-lerna-scopes +<a name="3.2.0"></a> -### Features +# 3.2.0 (2017-09-05) -* alias config packages ([1946baf](https://github.com/conventional-changelog/commitlint/commit/1946baf)) +<a name="3.0.4"></a> +## 3.0.4 (2017-08-04) +<a name="3.0.3"></a> +## 3.0.3 (2017-07-16) <a name="3.0.2"></a> -## 3.0.2 (2017-07-11) +## 3.0.2 (2017-07-11) ### Features -* alias config packages ([1946baf](https://github.com/conventional-changelog/commitlint/commit/1946baf)) - +- alias config packages ([1946baf](https://github.com/conventional-changelog/commitlint/commit/1946baf)) +<a name="3.0.3"></a> +## 3.0.3 (2017-07-16) -<a name="3.0.1"></a> -## 3.0.1 (2017-07-11) +<a name="3.0.2"></a> +## 3.0.2 (2017-07-11) ### Features -* alias config packages ([1946baf](https://github.com/conventional-changelog/commitlint/commit/1946baf)) +- alias config packages ([1946baf](https://github.com/conventional-changelog/commitlint/commit/1946baf)) + +<a name="3.0.2"></a> +## 3.0.2 (2017-07-11) +### Features +- alias config packages ([1946baf](https://github.com/conventional-changelog/commitlint/commit/1946baf)) <a name="3.0.1"></a> -## 3.0.1 (2017-07-11) +## 3.0.1 (2017-07-11) +### Features -<a name="3.0.0"></a> -# 3.0.0 (2017-07-10) +- alias config packages ([1946baf](https://github.com/conventional-changelog/commitlint/commit/1946baf)) +<a name="3.0.1"></a> -### Features +## 3.0.1 (2017-07-11) -* alias config packages ([67ba5c6](https://github.com/conventional-changelog/commitlint/commit/67ba5c6)) +<a name="3.0.0"></a> +# 3.0.0 (2017-07-10) +### Features +- alias config packages ([67ba5c6](https://github.com/conventional-changelog/commitlint/commit/67ba5c6)) <a name="3.0.0"></a> -# 3.0.0 (2017-07-10) +# 3.0.0 (2017-07-10) ### Features -* alias config packages ([67ba5c6](https://github.com/conventional-changelog/commitlint/commit/67ba5c6)) +- alias config packages ([67ba5c6](https://github.com/conventional-changelog/commitlint/commit/67ba5c6)) diff --git a/@alias/commitlint-config-lerna-scopes/index.js b/@alias/commitlint-config-lerna-scopes/index.js index ff8392cc1b..000c9673ee 100644 --- a/@alias/commitlint-config-lerna-scopes/index.js +++ b/@alias/commitlint-config-lerna-scopes/index.js @@ -1 +1 @@ -module.exports = require('@commitlint/config-lerna-scopes'); +export { default } from "@commitlint/config-lerna-scopes"; diff --git a/@alias/commitlint-config-lerna-scopes/package.json b/@alias/commitlint-config-lerna-scopes/package.json index 397b000196..83306fdafd 100644 --- a/@alias/commitlint-config-lerna-scopes/package.json +++ b/@alias/commitlint-config-lerna-scopes/package.json @@ -1,6 +1,7 @@ { "name": "commitlint-config-lerna-scopes", - "version": "13.1.0", + "type": "module", + "version": "20.0.0", "description": "Shareable commitlint config enforcing lerna package names as scopes", "files": [ "index.js" @@ -11,7 +12,8 @@ }, "repository": { "type": "git", - "url": "https://github.com/conventional-changelog/commitlint.git" + "url": "https://github.com/conventional-changelog/commitlint.git", + "directory": "@alias/commitlint-config-lerna-scopes" }, "keywords": [ "conventional-changelog", @@ -24,15 +26,15 @@ "bugs": { "url": "https://github.com/conventional-changelog/commitlint/issues" }, - "homepage": "https://github.com/conventional-changelog/commitlint#readme", + "homepage": "https://commitlint.js.org/", "engines": { - "node": ">=v12" + "node": ">=v18" }, "dependencies": { - "@commitlint/config-lerna-scopes": "^13.1.0" + "@commitlint/config-lerna-scopes": "^20.0.0" }, "devDependencies": { - "@commitlint/utils": "^13.0.0" + "@commitlint/utils": "^20.0.0" }, - "gitHead": "70f7f4688b51774e7ac5e40e896cdaa3f132b2bc" + "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" } diff --git a/@alias/commitlint-config-nx-scopes/CHANGELOG.md b/@alias/commitlint-config-nx-scopes/CHANGELOG.md new file mode 100644 index 0000000000..1a536c0de1 --- /dev/null +++ b/@alias/commitlint-config-nx-scopes/CHANGELOG.md @@ -0,0 +1,307 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + +**Note:** Version bump only for package commitlint-config-nx-scopes + + + + + +## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) + +**Note:** Version bump only for package commitlint-config-nx-scopes + + + + + +# [19.8.0](https://github.com/conventional-changelog/commitlint/compare/v19.7.1...v19.8.0) (2025-03-07) + +**Note:** Version bump only for package commitlint-config-nx-scopes + + + + + +## [19.7.1](https://github.com/conventional-changelog/commitlint/compare/v19.7.0...v19.7.1) (2025-02-02) + +**Note:** Version bump only for package commitlint-config-nx-scopes + + + + + +# [19.5.0](https://github.com/conventional-changelog/commitlint/compare/v19.4.1...v19.5.0) (2024-09-11) + +**Note:** Version bump only for package commitlint-config-nx-scopes + + + + + +## [19.3.1](https://github.com/conventional-changelog/commitlint/compare/v19.3.0...v19.3.1) (2024-05-13) + +**Note:** Version bump only for package commitlint-config-nx-scopes + + + + + +# [19.3.0](https://github.com/conventional-changelog/commitlint/compare/v19.2.2...v19.3.0) (2024-04-23) + +**Note:** Version bump only for package commitlint-config-nx-scopes + + + + + +## [19.2.1](https://github.com/conventional-changelog/commitlint/compare/v19.2.0...v19.2.1) (2024-03-19) + +**Note:** Version bump only for package commitlint-config-nx-scopes + + + + + +# [19.1.0](https://github.com/conventional-changelog/commitlint/compare/v19.0.3...v19.1.0) (2024-03-12) + +**Note:** Version bump only for package commitlint-config-nx-scopes + + + + + +## [19.0.3](https://github.com/conventional-changelog/commitlint/compare/v19.0.2...v19.0.3) (2024-02-28) + +**Note:** Version bump only for package commitlint-config-nx-scopes + + + + + +# [19.0.0](https://github.com/conventional-changelog/commitlint/compare/v18.6.2...v19.0.0) (2024-02-27) + + +* feat!: migrate to pure ESM (#3850) ([3423735](https://github.com/conventional-changelog/commitlint/commit/342373559bdf7c783c4ef37ff05dc38a5f681159)), closes [#3850](https://github.com/conventional-changelog/commitlint/issues/3850) + + +### Reverts + +* Revert "chore!: minimum node version v20" ([2816783](https://github.com/conventional-changelog/commitlint/commit/2816783d00e7eb967de3ac9347c2fc43dc8b94fa)) + + +### BREAKING CHANGES + +* migrate to pure ESM + +* feat: migrate to pure ESM + +* chore: update snapshot + +* fix: load `parserPreset` with another `await` + +* test: migrate to vitest + +* test: remove no replacement `--runInBand` test-ci script + +* chore: fix code reviews + +* refactor(load): rewrite resolve logic + +* fix(config-nx-scopes): fix syntax error + +* feat(resolve-extends): add resolveFrom and loadParserPreset + +* feat(load): use resolveFrom and loadParserPreset from resolve-extends + +* test: include only @commitlint/* packages src in coverage + +* test: explicit import vitest utilities + +* test: remove @jest/globals from dependencies + +* fix(resolve-extends): `resolveFrom` output should be platform aware + +* test: restore NO_COLOR to test script + +* chore: fix linting issues + +* fix: should use fileURLToPath instead of pathname for Windows compatibility + +* Apply suggestions from code review + +* fix: should reuse `cli` instead call `yargs()` + +* feat(cli): set terminalWidth as wrap to avoid work break on help + +* Update .eslintrc.cjs + +* feat: migrate @commitlint/config-conventional to pure ESM + + + + + +## [18.6.1](https://github.com/conventional-changelog/commitlint/compare/v18.6.0...v18.6.1) (2024-02-13) + +**Note:** Version bump only for package commitlint-config-nx-scopes + + + + + +## [18.5.1](https://github.com/conventional-changelog/commitlint/compare/v18.5.0...v18.5.1) (2024-01-22) + +**Note:** Version bump only for package commitlint-config-nx-scopes + + + + + +# [18.5.0](https://github.com/conventional-changelog/commitlint/compare/v18.4.4...v18.5.0) (2024-01-22) + +**Note:** Version bump only for package commitlint-config-nx-scopes + + + + + +## [18.4.4](https://github.com/conventional-changelog/commitlint/compare/v18.4.3...v18.4.4) (2024-01-04) + +**Note:** Version bump only for package commitlint-config-nx-scopes + + + + + +## [18.4.3](https://github.com/conventional-changelog/commitlint/compare/v18.4.2...v18.4.3) (2023-11-21) + +**Note:** Version bump only for package commitlint-config-nx-scopes + + + + + +# [18.4.0](https://github.com/conventional-changelog/commitlint/compare/v18.3.0...v18.4.0) (2023-11-10) + +**Note:** Version bump only for package commitlint-config-nx-scopes + + + + + +# [18.3.0](https://github.com/conventional-changelog/commitlint/compare/v18.2.0...v18.3.0) (2023-10-26) + +**Note:** Version bump only for package commitlint-config-nx-scopes + + + + + +# [18.1.0](https://github.com/conventional-changelog/commitlint/compare/v18.0.0...v18.1.0) (2023-10-25) + +**Note:** Version bump only for package commitlint-config-nx-scopes + + + + + +# [18.0.0](https://github.com/conventional-changelog/commitlint/compare/v17.8.1...v18.0.0) (2023-10-20) + + +* chore!: minimum node version v18 (#3644) ([5b4aeaf](https://github.com/conventional-changelog/commitlint/commit/5b4aeaf4f01c2726a7bc8631a23bb34c849baad2)), closes [#3644](https://github.com/conventional-changelog/commitlint/issues/3644) + + +### BREAKING CHANGES + +* drop node v14 and v16 support + +* chore: remove unused types + +* docs: prepare node update and new release + +* chore!: minimum TS version v5 +* drop TS v4 support + +* ci: remove node v14/16 checks + +* chore: adjust node types to minimal supported version + +* chore!: further major versions of other deps +* upgrade conventional-changelog-conventionalcommits, conventional-commits-parser, conventional-changelog-atom, + +* docs: simplify releases and remove roadmap + + + + + +## [17.8.1](https://github.com/conventional-changelog/commitlint/compare/v17.8.0...v17.8.1) (2023-10-20) + +**Note:** Version bump only for package commitlint-config-nx-scopes + + + + + +## [17.6.4](https://github.com/conventional-changelog/commitlint/compare/v17.6.3...v17.6.4) (2023-05-07) + +**Note:** Version bump only for package commitlint-config-nx-scopes + + + + + +## [17.4.3](https://github.com/conventional-changelog/commitlint/compare/v17.4.2...v17.4.3) (2023-02-13) + +**Note:** Version bump only for package commitlint-config-nx-scopes + + + + + +## [17.4.2](https://github.com/conventional-changelog/commitlint/compare/v17.4.1...v17.4.2) (2023-01-12) + +**Note:** Version bump only for package commitlint-config-nx-scopes + + + + + +# [17.4.0](https://github.com/conventional-changelog/commitlint/compare/v17.3.0...v17.4.0) (2023-01-04) + +**Note:** Version bump only for package commitlint-config-nx-scopes + +# [17.2.0](https://github.com/conventional-changelog/commitlint/compare/v17.1.2...v17.2.0) (2022-10-31) + +**Note:** Version bump only for package commitlint-config-nx-scopes + +# [17.0.0](https://github.com/conventional-changelog/commitlint/compare/v16.3.0...v17.0.0) (2022-05-16) + +- chore!: minimum node version v14 (#3128) ([ac5f9b4](https://github.com/conventional-changelog/commitlint/commit/ac5f9b47a9e3cd5c9d58b14da0feb426f06b1ef9)), closes [#3128](https://github.com/conventional-changelog/commitlint/issues/3128) + +### BREAKING CHANGES + +- drop node v12 support + +- chore: rename circleci windows job + +node version is not defned by the name anyways (i think) + +# [16.3.0](https://github.com/conventional-changelog/commitlint/compare/v16.2.4...v16.3.0) (2022-05-14) + +**Note:** Version bump only for package commitlint-config-nx-scopes + +## [16.2.1](https://github.com/conventional-changelog/commitlint/compare/v16.2.0...v16.2.1) (2022-02-13) + +**Note:** Version bump only for package commitlint-config-nx-scopes + +# [16.2.0](https://github.com/conventional-changelog/commitlint/compare/v16.1.0...v16.2.0) (2022-01-25) + +### Features + +- add support for Nx monorepos via @commitlint/config-nx-scopes ([#2995](https://github.com/conventional-changelog/commitlint/issues/2995)) ([11879ad](https://github.com/conventional-changelog/commitlint/commit/11879adacbef3c939311b1ff597a7b894fcca0dc)) diff --git a/@alias/commitlint-config-nx-scopes/README.md b/@alias/commitlint-config-nx-scopes/README.md new file mode 100644 index 0000000000..056e9e5af4 --- /dev/null +++ b/@alias/commitlint-config-nx-scopes/README.md @@ -0,0 +1,3 @@ +# commitlint-config-nx-scopes + +> Alias of [@commitlint/config-nx-scopes](https://www.npmjs.com/package/@commitlint/config-nx-scopes) diff --git a/@alias/commitlint-config-nx-scopes/index.js b/@alias/commitlint-config-nx-scopes/index.js new file mode 100644 index 0000000000..2ba02e27da --- /dev/null +++ b/@alias/commitlint-config-nx-scopes/index.js @@ -0,0 +1 @@ +export { default } from "@commitlint/config-nx-scopes"; diff --git a/@alias/commitlint-config-nx-scopes/license.md b/@alias/commitlint-config-nx-scopes/license.md new file mode 100644 index 0000000000..d53adb06e4 --- /dev/null +++ b/@alias/commitlint-config-nx-scopes/license.md @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2022 - present Florian Guitton + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/@alias/commitlint-config-nx-scopes/package.json b/@alias/commitlint-config-nx-scopes/package.json new file mode 100644 index 0000000000..61281494bd --- /dev/null +++ b/@alias/commitlint-config-nx-scopes/package.json @@ -0,0 +1,40 @@ +{ + "name": "commitlint-config-nx-scopes", + "type": "module", + "version": "20.0.0", + "description": "Shareable commitlint config enforcing nx project names as scopes", + "files": [ + "index.js" + ], + "scripts": { + "deps": "dep-check", + "pkg": "pkg-check" + }, + "repository": { + "type": "git", + "url": "https://github.com/conventional-changelog/commitlint.git", + "directory": "@alias/commitlint-config-nx-scopes" + }, + "keywords": [ + "conventional-changelog", + "commitlint", + "commitlint-config", + "nx" + ], + "author": "Florian Guitton <florian@secretarium.com>", + "license": "MIT", + "bugs": { + "url": "https://github.com/conventional-changelog/commitlint/issues" + }, + "homepage": "https://commitlint.js.org/", + "engines": { + "node": ">=v18" + }, + "dependencies": { + "@commitlint/config-nx-scopes": "^20.0.0" + }, + "devDependencies": { + "@commitlint/utils": "^20.0.0" + }, + "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" +} diff --git a/@alias/commitlint-config-patternplate/CHANGELOG.md b/@alias/commitlint-config-patternplate/CHANGELOG.md index ed3f8ec676..5f53ade561 100644 --- a/@alias/commitlint-config-patternplate/CHANGELOG.md +++ b/@alias/commitlint-config-patternplate/CHANGELOG.md @@ -3,7 +3,7 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. -# [13.1.0](https://github.com/conventional-changelog/commitlint/compare/v13.0.0...v13.1.0) (2021-07-24) +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) **Note:** Version bump only for package commitlint-config-patternplate @@ -11,21 +11,158 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) +## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) + +**Note:** Version bump only for package commitlint-config-patternplate + + + + + +# [19.8.0](https://github.com/conventional-changelog/commitlint/compare/v19.7.1...v19.8.0) (2025-03-07) + +**Note:** Version bump only for package commitlint-config-patternplate + + + + + +## [19.7.1](https://github.com/conventional-changelog/commitlint/compare/v19.7.0...v19.7.1) (2025-02-02) + +**Note:** Version bump only for package commitlint-config-patternplate + + + + + +# [19.7.0](https://github.com/conventional-changelog/commitlint/compare/v19.6.1...v19.7.0) (2025-01-04) + +**Note:** Version bump only for package commitlint-config-patternplate + + + + + +# [19.6.0](https://github.com/conventional-changelog/commitlint/compare/v19.5.0...v19.6.0) (2024-11-19) + +**Note:** Version bump only for package commitlint-config-patternplate + + + + + +# [19.5.0](https://github.com/conventional-changelog/commitlint/compare/v19.4.1...v19.5.0) (2024-09-11) + +**Note:** Version bump only for package commitlint-config-patternplate + + + + + +## [19.4.1](https://github.com/conventional-changelog/commitlint/compare/v19.4.0...v19.4.1) (2024-08-28) +**Note:** Version bump only for package commitlint-config-patternplate + + + + + +# [19.3.0](https://github.com/conventional-changelog/commitlint/compare/v19.2.2...v19.3.0) (2024-04-23) + +**Note:** Version bump only for package commitlint-config-patternplate + + + + + +## [19.2.2](https://github.com/conventional-changelog/commitlint/compare/v19.2.1...v19.2.2) (2024-04-14) + +**Note:** Version bump only for package commitlint-config-patternplate + + + + + +# [19.1.0](https://github.com/conventional-changelog/commitlint/compare/v19.0.3...v19.1.0) (2024-03-12) + +**Note:** Version bump only for package commitlint-config-patternplate -* chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) + + + + +## [19.0.3](https://github.com/conventional-changelog/commitlint/compare/v19.0.2...v19.0.3) (2024-02-28) + +**Note:** Version bump only for package commitlint-config-patternplate + + + + + +# [19.0.0](https://github.com/conventional-changelog/commitlint/compare/v18.6.2...v19.0.0) (2024-02-27) + + +* feat!: migrate to pure ESM (#3850) ([3423735](https://github.com/conventional-changelog/commitlint/commit/342373559bdf7c783c4ef37ff05dc38a5f681159)), closes [#3850](https://github.com/conventional-changelog/commitlint/issues/3850) + + +### Reverts + +* Revert "chore!: minimum node version v20" ([2816783](https://github.com/conventional-changelog/commitlint/commit/2816783d00e7eb967de3ac9347c2fc43dc8b94fa)) ### BREAKING CHANGES -* minimum node version is 12 +* migrate to pure ESM +* feat: migrate to pure ESM +* chore: update snapshot +* fix: load `parserPreset` with another `await` +* test: migrate to vitest -## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) +* test: remove no replacement `--runInBand` test-ci script + +* chore: fix code reviews + +* refactor(load): rewrite resolve logic + +* fix(config-nx-scopes): fix syntax error + +* feat(resolve-extends): add resolveFrom and loadParserPreset + +* feat(load): use resolveFrom and loadParserPreset from resolve-extends + +* test: include only @commitlint/* packages src in coverage + +* test: explicit import vitest utilities + +* test: remove @jest/globals from dependencies + +* fix(resolve-extends): `resolveFrom` output should be platform aware + +* test: restore NO_COLOR to test script + +* chore: fix linting issues + +* fix: should use fileURLToPath instead of pathname for Windows compatibility + +* Apply suggestions from code review + +* fix: should reuse `cli` instead call `yargs()` + +* feat(cli): set terminalWidth as wrap to avoid work break on help + +* Update .eslintrc.cjs + +* feat: migrate @commitlint/config-conventional to pure ESM + + + + + +## [18.6.1](https://github.com/conventional-changelog/commitlint/compare/v18.6.0...v18.6.1) (2024-02-13) **Note:** Version bump only for package commitlint-config-patternplate @@ -33,7 +170,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) +# [18.6.0](https://github.com/conventional-changelog/commitlint/compare/v18.5.1...v18.6.0) (2024-01-25) **Note:** Version bump only for package commitlint-config-patternplate @@ -41,7 +178,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) +# [18.5.0](https://github.com/conventional-changelog/commitlint/compare/v18.4.4...v18.5.0) (2024-01-22) **Note:** Version bump only for package commitlint-config-patternplate @@ -49,7 +186,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) +## [18.4.4](https://github.com/conventional-changelog/commitlint/compare/v18.4.3...v18.4.4) (2024-01-04) **Note:** Version bump only for package commitlint-config-patternplate @@ -57,7 +194,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) +## [18.4.3](https://github.com/conventional-changelog/commitlint/compare/v18.4.2...v18.4.3) (2023-11-21) **Note:** Version bump only for package commitlint-config-patternplate @@ -65,29 +202,61 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) +## [18.4.2](https://github.com/conventional-changelog/commitlint/compare/v18.4.1...v18.4.2) (2023-11-16) + +**Note:** Version bump only for package commitlint-config-patternplate + + + + + +# [18.4.0](https://github.com/conventional-changelog/commitlint/compare/v18.3.0...v18.4.0) (2023-11-10) + +**Note:** Version bump only for package commitlint-config-patternplate + + -* refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) + +# [18.1.0](https://github.com/conventional-changelog/commitlint/compare/v18.0.0...v18.1.0) (2023-10-25) + +**Note:** Version bump only for package commitlint-config-patternplate + + + + + +# [18.0.0](https://github.com/conventional-changelog/commitlint/compare/v17.8.1...v18.0.0) (2023-10-20) + + +* chore!: minimum node version v18 (#3644) ([5b4aeaf](https://github.com/conventional-changelog/commitlint/commit/5b4aeaf4f01c2726a7bc8631a23bb34c849baad2)), closes [#3644](https://github.com/conventional-changelog/commitlint/issues/3644) ### BREAKING CHANGES -* remove node 8 from circle-ci checks +* drop node v14 and v16 support -also remove node 13 because we do not support experimental versions +* chore: remove unused types -* docs: update node v10 to latest LTS 10 version +* docs: prepare node update and new release -Co-authored-by: Cedric van Putten <me@bycedric.com> +* chore!: minimum TS version v5 +* drop TS v4 support -Co-authored-by: Cedric van Putten <me@bycedric.com> +* ci: remove node v14/16 checks +* chore: adjust node types to minimal supported version +* chore!: further major versions of other deps +* upgrade conventional-changelog-conventionalcommits, conventional-commits-parser, conventional-changelog-atom, +* docs: simplify releases and remove roadmap -## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) + + + +## [17.8.1](https://github.com/conventional-changelog/commitlint/compare/v17.8.0...v17.8.1) (2023-10-20) **Note:** Version bump only for package commitlint-config-patternplate @@ -95,7 +264,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) +# [17.8.0](https://github.com/conventional-changelog/commitlint/compare/v17.7.2...v17.8.0) (2023-10-14) **Note:** Version bump only for package commitlint-config-patternplate @@ -103,7 +272,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) +# [17.7.0](https://github.com/conventional-changelog/commitlint/compare/v17.6.7...v17.7.0) (2023-08-09) **Note:** Version bump only for package commitlint-config-patternplate @@ -111,7 +280,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) +## [17.6.7](https://github.com/conventional-changelog/commitlint/compare/v17.6.6...v17.6.7) (2023-07-19) **Note:** Version bump only for package commitlint-config-patternplate @@ -119,7 +288,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) +## [17.6.6](https://github.com/conventional-changelog/commitlint/compare/v17.6.5...v17.6.6) (2023-06-24) **Note:** Version bump only for package commitlint-config-patternplate @@ -127,7 +296,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) +## [17.6.5](https://github.com/conventional-changelog/commitlint/compare/v17.6.4...v17.6.5) (2023-05-30) **Note:** Version bump only for package commitlint-config-patternplate @@ -135,7 +304,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) +## [17.6.3](https://github.com/conventional-changelog/commitlint/compare/v17.6.2...v17.6.3) (2023-05-04) **Note:** Version bump only for package commitlint-config-patternplate @@ -143,7 +312,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) +## [17.6.1](https://github.com/conventional-changelog/commitlint/compare/v17.6.0...v17.6.1) (2023-04-14) **Note:** Version bump only for package commitlint-config-patternplate @@ -151,7 +320,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) +# [17.6.0](https://github.com/conventional-changelog/commitlint/compare/v17.5.1...v17.6.0) (2023-04-13) **Note:** Version bump only for package commitlint-config-patternplate @@ -159,7 +328,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) +## [17.4.4](https://github.com/conventional-changelog/commitlint/compare/v17.4.3...v17.4.4) (2023-02-17) **Note:** Version bump only for package commitlint-config-patternplate @@ -167,222 +336,340 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -<a name="7.5.0"></a> -# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) +## [17.4.3](https://github.com/conventional-changelog/commitlint/compare/v17.4.2...v17.4.3) (2023-02-13) +**Note:** Version bump only for package commitlint-config-patternplate -### Bug Fixes -* replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) +## [17.4.2](https://github.com/conventional-changelog/commitlint/compare/v17.4.1...v17.4.2) (2023-01-12) -<a name="7.3.1"></a> -## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) +**Note:** Version bump only for package commitlint-config-patternplate + +# [17.4.0](https://github.com/conventional-changelog/commitlint/compare/v17.3.0...v17.4.0) (2023-01-04) + **Note:** Version bump only for package commitlint-config-patternplate -<a name="7.3.0"></a> -# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) +# [17.3.0](https://github.com/conventional-changelog/commitlint/compare/v17.2.1...v17.3.0) (2022-11-21) +**Note:** Version bump only for package commitlint-config-patternplate +# [17.2.0](https://github.com/conventional-changelog/commitlint/compare/v17.1.2...v17.2.0) (2022-10-31) +**Note:** Version bump only for package commitlint-config-patternplate + +# [17.1.0](https://github.com/conventional-changelog/commitlint/compare/v17.0.3...v17.1.0) (2022-08-27) **Note:** Version bump only for package commitlint-config-patternplate -<a name="7.1.2"></a> -## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) +## [17.0.3](https://github.com/conventional-changelog/commitlint/compare/v17.0.2...v17.0.3) (2022-06-25) + +**Note:** Version bump only for package commitlint-config-patternplate +# [17.0.0](https://github.com/conventional-changelog/commitlint/compare/v16.3.0...v17.0.0) (2022-05-16) +- chore!: minimum node version v14 (#3128) ([ac5f9b4](https://github.com/conventional-changelog/commitlint/commit/ac5f9b47a9e3cd5c9d58b14da0feb426f06b1ef9)), closes [#3128](https://github.com/conventional-changelog/commitlint/issues/3128) +### BREAKING CHANGES + +- drop node v12 support + +- chore: rename circleci windows job + +node version is not defned by the name anyways (i think) + +# [16.3.0](https://github.com/conventional-changelog/commitlint/compare/v16.2.4...v16.3.0) (2022-05-14) **Note:** Version bump only for package commitlint-config-patternplate -<a name="6.1.1"></a> -## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) +## [16.2.4](https://github.com/conventional-changelog/commitlint/compare/v16.2.3...v16.2.4) (2022-04-28) +**Note:** Version bump only for package commitlint-config-patternplate +## [16.2.3](https://github.com/conventional-changelog/commitlint/compare/v16.2.2...v16.2.3) (2022-03-16) +**Note:** Version bump only for package commitlint-config-patternplate + +## [16.2.1](https://github.com/conventional-changelog/commitlint/compare/v16.2.0...v16.2.1) (2022-02-13) **Note:** Version bump only for package commitlint-config-patternplate -<a name="6.1.0"></a> -# [6.1.0](https://github.com/conventional-changelog/commitlint/compare/v6.0.5...v6.1.0) (2018-02-03) +# [16.0.0](https://github.com/conventional-changelog/commitlint/compare/v15.0.0...v16.0.0) (2021-12-26) + +**Note:** Version bump only for package commitlint-config-patternplate +# [15.0.0](https://github.com/conventional-changelog/commitlint/compare/v14.2.0...v15.0.0) (2021-11-17) +**Note:** Version bump only for package commitlint-config-patternplate +# [14.1.0](https://github.com/conventional-changelog/commitlint/compare/v14.0.0...v14.1.0) (2021-11-01) **Note:** Version bump only for package commitlint-config-patternplate -<a name="6.0.4"></a> -## [6.0.4](https://github.com/conventional-changelog/commitlint/compare/v6.0.3...v6.0.4) (2018-01-31) +# [14.0.0](https://github.com/conventional-changelog/commitlint/compare/v13.2.1...v14.0.0) (2021-10-26) +**Note:** Version bump only for package commitlint-config-patternplate +# [13.2.0](https://github.com/conventional-changelog/commitlint/compare/v13.1.0...v13.2.0) (2021-09-28) +**Note:** Version bump only for package commitlint-config-patternplate + +# [13.1.0](https://github.com/conventional-changelog/commitlint/compare/v13.0.0...v13.1.0) (2021-07-24) **Note:** Version bump only for package commitlint-config-patternplate -<a name="6.0.3"></a> -## [6.0.3](https://github.com/conventional-changelog/commitlint/compare/v6.0.2...v6.0.3) (2018-01-31) +# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) + +- chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) +### BREAKING CHANGES +- minimum node version is 12 +## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) **Note:** Version bump only for package commitlint-config-patternplate -<a name="6.0.2"></a> -## [6.0.2](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.2) (2018-01-12) +## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) + +**Note:** Version bump only for package commitlint-config-patternplate + +## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) + +**Note:** Version bump only for package commitlint-config-patternplate +# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) +**Note:** Version bump only for package commitlint-config-patternplate +# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) **Note:** Version bump only for package commitlint-config-patternplate -<a name="6.0.0"></a> -# [6.0.0](https://github.com/conventional-changelog/commitlint/compare/v5.2.6...v6.0.0) (2018-01-09) +# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) + +- refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) + +### BREAKING CHANGES + +- remove node 8 from circle-ci checks + +also remove node 13 because we do not support experimental versions +- docs: update node v10 to latest LTS 10 version +Co-authored-by: Cedric van Putten <me@bycedric.com> +Co-authored-by: Cedric van Putten <me@bycedric.com> + +## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) **Note:** Version bump only for package commitlint-config-patternplate -<a name="5.1.1"></a> -## [5.1.1](https://github.com/conventional-changelog/commitlint/compare/v5.1.0...v5.1.1) (2017-11-24) +## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) +**Note:** Version bump only for package commitlint-config-patternplate + +# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) +**Note:** Version bump only for package commitlint-config-patternplate +## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) **Note:** Version bump only for package commitlint-config-patternplate -<a name="5.1.0"></a> -# [5.1.0](https://github.com/conventional-changelog/commitlint/compare/v5.0.2...v5.1.0) (2017-11-24) +# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) +**Note:** Version bump only for package commitlint-config-patternplate + +## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) +**Note:** Version bump only for package commitlint-config-patternplate +# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) **Note:** Version bump only for package commitlint-config-patternplate -<a name="5.0.1"></a> -## [5.0.1](https://github.com/conventional-changelog/commitlint/compare/v5.0.0...v5.0.1) (2017-11-19) +# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) +**Note:** Version bump only for package commitlint-config-patternplate +# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) +**Note:** Version bump only for package commitlint-config-patternplate + +# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) **Note:** Version bump only for package commitlint-config-patternplate -<a name="4.3.0"></a> -# [4.3.0](https://github.com/conventional-changelog/commitlint/compare/v4.2.2...v4.3.0) (2017-11-08) +<a name="7.5.0"></a> + +# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) +### Bug Fixes +- replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) +<a name="7.3.1"></a> + +## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) **Note:** Version bump only for package commitlint-config-patternplate -<a name="4.2.1"></a> -## [4.2.1](https://github.com/conventional-changelog/commitlint/compare/v4.2.0...v4.2.1) (2017-10-18) +<a name="7.3.0"></a> +# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) + +**Note:** Version bump only for package commitlint-config-patternplate +<a name="7.1.2"></a> +## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) **Note:** Version bump only for package commitlint-config-patternplate -<a name="4.2.0"></a> -# [4.2.0](https://github.com/conventional-changelog/commitlint/compare/v4.1.1...v4.2.0) (2017-10-14) +<a name="6.1.1"></a> +## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) +**Note:** Version bump only for package commitlint-config-patternplate +<a name="6.1.0"></a> + +# [6.1.0](https://github.com/conventional-changelog/commitlint/compare/v6.0.5...v6.1.0) (2018-02-03) **Note:** Version bump only for package commitlint-config-patternplate -<a name="3.2.0"></a> -# 3.2.0 (2017-09-05) +<a name="6.0.4"></a> +## [6.0.4](https://github.com/conventional-changelog/commitlint/compare/v6.0.3...v6.0.4) (2018-01-31) +**Note:** Version bump only for package commitlint-config-patternplate +<a name="6.0.3"></a> -<a name="3.0.4"></a> -## 3.0.4 (2017-08-04) +## [6.0.3](https://github.com/conventional-changelog/commitlint/compare/v6.0.2...v6.0.3) (2018-01-31) +**Note:** Version bump only for package commitlint-config-patternplate +<a name="6.0.2"></a> -<a name="3.0.3"></a> -## 3.0.3 (2017-07-16) +## [6.0.2](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.2) (2018-01-12) +**Note:** Version bump only for package commitlint-config-patternplate +<a name="6.0.0"></a> -<a name="3.0.2"></a> -## 3.0.2 (2017-07-11) +# [6.0.0](https://github.com/conventional-changelog/commitlint/compare/v5.2.6...v6.0.0) (2018-01-09) +**Note:** Version bump only for package commitlint-config-patternplate -### Features +<a name="5.1.1"></a> -* alias config packages ([1946baf](https://github.com/conventional-changelog/commitlint/commit/1946baf)) +## [5.1.1](https://github.com/conventional-changelog/commitlint/compare/v5.1.0...v5.1.1) (2017-11-24) +**Note:** Version bump only for package commitlint-config-patternplate +<a name="5.1.0"></a> +# [5.1.0](https://github.com/conventional-changelog/commitlint/compare/v5.0.2...v5.1.0) (2017-11-24) -<a name="3.0.3"></a> -## 3.0.3 (2017-07-16) +**Note:** Version bump only for package commitlint-config-patternplate +<a name="5.0.1"></a> +## [5.0.1](https://github.com/conventional-changelog/commitlint/compare/v5.0.0...v5.0.1) (2017-11-19) -<a name="3.0.2"></a> -## 3.0.2 (2017-07-11) +**Note:** Version bump only for package commitlint-config-patternplate +<a name="4.3.0"></a> -### Features +# [4.3.0](https://github.com/conventional-changelog/commitlint/compare/v4.2.2...v4.3.0) (2017-11-08) -* alias config packages ([1946baf](https://github.com/conventional-changelog/commitlint/commit/1946baf)) +**Note:** Version bump only for package commitlint-config-patternplate +<a name="4.2.1"></a> +## [4.2.1](https://github.com/conventional-changelog/commitlint/compare/v4.2.0...v4.2.1) (2017-10-18) +**Note:** Version bump only for package commitlint-config-patternplate -<a name="3.0.2"></a> -## 3.0.2 (2017-07-11) +<a name="4.2.0"></a> +# [4.2.0](https://github.com/conventional-changelog/commitlint/compare/v4.1.1...v4.2.0) (2017-10-14) -### Features +**Note:** Version bump only for package commitlint-config-patternplate -* alias config packages ([1946baf](https://github.com/conventional-changelog/commitlint/commit/1946baf)) +<a name="3.2.0"></a> +# 3.2.0 (2017-09-05) +<a name="3.0.4"></a> +## 3.0.4 (2017-08-04) -<a name="3.0.1"></a> -## 3.0.1 (2017-07-11) +<a name="3.0.3"></a> + +## 3.0.3 (2017-07-16) +<a name="3.0.2"></a> + +## 3.0.2 (2017-07-11) ### Features -* alias config packages ([1946baf](https://github.com/conventional-changelog/commitlint/commit/1946baf)) +- alias config packages ([1946baf](https://github.com/conventional-changelog/commitlint/commit/1946baf)) +<a name="3.0.3"></a> +## 3.0.3 (2017-07-16) +<a name="3.0.2"></a> -<a name="3.0.1"></a> -## 3.0.1 (2017-07-11) +## 3.0.2 (2017-07-11) +### Features +- alias config packages ([1946baf](https://github.com/conventional-changelog/commitlint/commit/1946baf)) -<a name="3.0.0"></a> -# 3.0.0 (2017-07-10) +<a name="3.0.2"></a> +## 3.0.2 (2017-07-11) ### Features -* alias config packages ([67ba5c6](https://github.com/conventional-changelog/commitlint/commit/67ba5c6)) +- alias config packages ([1946baf](https://github.com/conventional-changelog/commitlint/commit/1946baf)) +<a name="3.0.1"></a> +## 3.0.1 (2017-07-11) +### Features + +- alias config packages ([1946baf](https://github.com/conventional-changelog/commitlint/commit/1946baf)) + +<a name="3.0.1"></a> + +## 3.0.1 (2017-07-11) <a name="3.0.0"></a> + # 3.0.0 (2017-07-10) +### Features + +- alias config packages ([67ba5c6](https://github.com/conventional-changelog/commitlint/commit/67ba5c6)) + +<a name="3.0.0"></a> + +# 3.0.0 (2017-07-10) ### Features -* alias config packages ([67ba5c6](https://github.com/conventional-changelog/commitlint/commit/67ba5c6)) +- alias config packages ([67ba5c6](https://github.com/conventional-changelog/commitlint/commit/67ba5c6)) diff --git a/@alias/commitlint-config-patternplate/index.js b/@alias/commitlint-config-patternplate/index.js index 609d2cc13d..d95944f6eb 100644 --- a/@alias/commitlint-config-patternplate/index.js +++ b/@alias/commitlint-config-patternplate/index.js @@ -1 +1 @@ -module.exports = require('@commitlint/config-patternplate'); +export { default } from "@commitlint/config-patternplate"; diff --git a/@alias/commitlint-config-patternplate/package.json b/@alias/commitlint-config-patternplate/package.json index 21a41fcf05..f18b0774de 100644 --- a/@alias/commitlint-config-patternplate/package.json +++ b/@alias/commitlint-config-patternplate/package.json @@ -1,6 +1,7 @@ { "name": "commitlint-config-patternplate", - "version": "13.1.0", + "type": "module", + "version": "20.0.0", "description": "Lint your commits, patternplate-style", "files": [ "index.js" @@ -11,7 +12,8 @@ }, "repository": { "type": "git", - "url": "https://github.com/conventional-changelog/commitlint.git" + "url": "https://github.com/conventional-changelog/commitlint.git", + "directory": "@alias/commitlint-config-patternplate" }, "keywords": [ "conventional-changelog", @@ -24,15 +26,15 @@ "bugs": { "url": "https://github.com/conventional-changelog/commitlint/issues" }, - "homepage": "https://github.com/conventional-changelog/commitlint#readme", + "homepage": "https://commitlint.js.org/", "engines": { - "node": ">=v12" + "node": ">=v18" }, "dependencies": { - "@commitlint/config-patternplate": "^13.1.0" + "@commitlint/config-patternplate": "^20.0.0" }, "devDependencies": { - "@commitlint/utils": "^13.0.0" + "@commitlint/utils": "^20.0.0" }, - "gitHead": "d829bf6260304ca8d6811f329fcdd1b6c50e9749" + "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" } diff --git a/@alias/commitlint/CHANGELOG.md b/@alias/commitlint/CHANGELOG.md index eb967e7cf8..1b3070e71a 100644 --- a/@alias/commitlint/CHANGELOG.md +++ b/@alias/commitlint/CHANGELOG.md @@ -3,7 +3,7 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. -# [13.1.0](https://github.com/conventional-changelog/commitlint/compare/v13.0.0...v13.1.0) (2021-07-24) +# [20.1.0](https://github.com/conventional-changelog/commitlint/compare/v20.0.0...v20.1.0) (2025-09-30) **Note:** Version bump only for package commitlint @@ -11,21 +11,212 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + +**Note:** Version bump only for package commitlint + + + + + +## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) + + +### Bug Fixes + +* update dependency tinyexec to v1 ([#4332](https://github.com/conventional-changelog/commitlint/issues/4332)) ([e49449f](https://github.com/conventional-changelog/commitlint/commit/e49449fa9452069cdbf194f94d536194d362a299)) + + + + + +# [19.8.0](https://github.com/conventional-changelog/commitlint/compare/v19.7.1...v19.8.0) (2025-03-07) + + +### Performance Improvements + +* use `node:` prefix to bypass require.cache call for builtins ([#4302](https://github.com/conventional-changelog/commitlint/issues/4302)) ([0cd8f41](https://github.com/conventional-changelog/commitlint/commit/0cd8f410573fe11383f788b1ceb7e0946143591d)) + + + + + +## [19.7.1](https://github.com/conventional-changelog/commitlint/compare/v19.7.0...v19.7.1) (2025-02-02) + +**Note:** Version bump only for package commitlint + + + + + +## [19.6.1](https://github.com/conventional-changelog/commitlint/compare/v19.6.0...v19.6.1) (2024-12-15) + +**Note:** Version bump only for package commitlint + + + + + +# [19.6.0](https://github.com/conventional-changelog/commitlint/compare/v19.5.0...v19.6.0) (2024-11-19) + +**Note:** Version bump only for package commitlint + + + + + +# [19.5.0](https://github.com/conventional-changelog/commitlint/compare/v19.4.1...v19.5.0) (2024-09-11) + +**Note:** Version bump only for package commitlint + + + + + +## [19.4.1](https://github.com/conventional-changelog/commitlint/compare/v19.4.0...v19.4.1) (2024-08-28) + +**Note:** Version bump only for package commitlint + + -* chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) + +# [19.4.0](https://github.com/conventional-changelog/commitlint/compare/v19.3.1...v19.4.0) (2024-08-07) + +**Note:** Version bump only for package commitlint + + + + + +# [19.3.0](https://github.com/conventional-changelog/commitlint/compare/v19.2.2...v19.3.0) (2024-04-23) + +**Note:** Version bump only for package commitlint + + + + + +## [19.2.2](https://github.com/conventional-changelog/commitlint/compare/v19.2.1...v19.2.2) (2024-04-14) + +**Note:** Version bump only for package commitlint + + + + + +## [19.2.1](https://github.com/conventional-changelog/commitlint/compare/v19.2.0...v19.2.1) (2024-03-19) + +**Note:** Version bump only for package commitlint + + + + + +# [19.2.0](https://github.com/conventional-changelog/commitlint/compare/v19.1.0...v19.2.0) (2024-03-15) + +**Note:** Version bump only for package commitlint + + + + + +# [19.1.0](https://github.com/conventional-changelog/commitlint/compare/v19.0.3...v19.1.0) (2024-03-12) + +**Note:** Version bump only for package commitlint + + + + + +## [19.0.3](https://github.com/conventional-changelog/commitlint/compare/v19.0.2...v19.0.3) (2024-02-28) + +**Note:** Version bump only for package commitlint + + + + + +## [19.0.2](https://github.com/conventional-changelog/commitlint/compare/v19.0.1...v19.0.2) (2024-02-28) + +**Note:** Version bump only for package commitlint + + + + + +## [19.0.1](https://github.com/conventional-changelog/commitlint/compare/v19.0.0...v19.0.1) (2024-02-27) + +**Note:** Version bump only for package commitlint + + + + + +# [19.0.0](https://github.com/conventional-changelog/commitlint/compare/v18.6.2...v19.0.0) (2024-02-27) + + +* feat!: migrate to pure ESM (#3850) ([3423735](https://github.com/conventional-changelog/commitlint/commit/342373559bdf7c783c4ef37ff05dc38a5f681159)), closes [#3850](https://github.com/conventional-changelog/commitlint/issues/3850) + + +### Reverts + +* Revert "chore!: minimum node version v20" ([2816783](https://github.com/conventional-changelog/commitlint/commit/2816783d00e7eb967de3ac9347c2fc43dc8b94fa)) ### BREAKING CHANGES -* minimum node version is 12 +* migrate to pure ESM +* feat: migrate to pure ESM +* chore: update snapshot +* fix: load `parserPreset` with another `await` +* test: migrate to vitest -## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) +* test: remove no replacement `--runInBand` test-ci script + +* chore: fix code reviews + +* refactor(load): rewrite resolve logic + +* fix(config-nx-scopes): fix syntax error + +* feat(resolve-extends): add resolveFrom and loadParserPreset + +* feat(load): use resolveFrom and loadParserPreset from resolve-extends + +* test: include only @commitlint/* packages src in coverage + +* test: explicit import vitest utilities + +* test: remove @jest/globals from dependencies + +* fix(resolve-extends): `resolveFrom` output should be platform aware + +* test: restore NO_COLOR to test script + +* chore: fix linting issues + +* fix: should use fileURLToPath instead of pathname for Windows compatibility + +* Apply suggestions from code review + +* fix: should reuse `cli` instead call `yargs()` + +* feat(cli): set terminalWidth as wrap to avoid work break on help + +* Update .eslintrc.cjs + +* feat: migrate @commitlint/config-conventional to pure ESM + + + + + +## [18.6.1](https://github.com/conventional-changelog/commitlint/compare/v18.6.0...v18.6.1) (2024-02-13) **Note:** Version bump only for package commitlint @@ -33,7 +224,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.1.2](https://github.com/conventional-changelog/commitlint/compare/v12.1.1...v12.1.2) (2021-04-29) +# [18.6.0](https://github.com/conventional-changelog/commitlint/compare/v18.5.1...v18.6.0) (2024-01-25) **Note:** Version bump only for package commitlint @@ -41,7 +232,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) +# [18.5.0](https://github.com/conventional-changelog/commitlint/compare/v18.4.4...v18.5.0) (2024-01-22) **Note:** Version bump only for package commitlint @@ -49,7 +240,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [12.1.0](https://github.com/conventional-changelog/commitlint/compare/v12.0.1...v12.1.0) (2021-03-06) +## [18.4.4](https://github.com/conventional-changelog/commitlint/compare/v18.4.3...v18.4.4) (2024-01-04) **Note:** Version bump only for package commitlint @@ -57,7 +248,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) +## [18.4.3](https://github.com/conventional-changelog/commitlint/compare/v18.4.2...v18.4.3) (2023-11-21) **Note:** Version bump only for package commitlint @@ -65,7 +256,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) +## [18.4.2](https://github.com/conventional-changelog/commitlint/compare/v18.4.1...v18.4.2) (2023-11-16) **Note:** Version bump only for package commitlint @@ -73,7 +264,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) +## [18.4.1](https://github.com/conventional-changelog/commitlint/compare/v18.4.0...v18.4.1) (2023-11-12) **Note:** Version bump only for package commitlint @@ -81,29 +272,61 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) +# [18.4.0](https://github.com/conventional-changelog/commitlint/compare/v18.3.0...v18.4.0) (2023-11-10) + +**Note:** Version bump only for package commitlint + + + + + +# [18.2.0](https://github.com/conventional-changelog/commitlint/compare/v18.1.0...v18.2.0) (2023-10-26) + +**Note:** Version bump only for package commitlint + + + + + +# [18.1.0](https://github.com/conventional-changelog/commitlint/compare/v18.0.0...v18.1.0) (2023-10-25) + +**Note:** Version bump only for package commitlint + -* refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) + + +# [18.0.0](https://github.com/conventional-changelog/commitlint/compare/v17.8.1...v18.0.0) (2023-10-20) + + +* chore!: minimum node version v18 (#3644) ([5b4aeaf](https://github.com/conventional-changelog/commitlint/commit/5b4aeaf4f01c2726a7bc8631a23bb34c849baad2)), closes [#3644](https://github.com/conventional-changelog/commitlint/issues/3644) ### BREAKING CHANGES -* remove node 8 from circle-ci checks +* drop node v14 and v16 support -also remove node 13 because we do not support experimental versions +* chore: remove unused types -* docs: update node v10 to latest LTS 10 version +* docs: prepare node update and new release -Co-authored-by: Cedric van Putten <me@bycedric.com> +* chore!: minimum TS version v5 +* drop TS v4 support -Co-authored-by: Cedric van Putten <me@bycedric.com> +* ci: remove node v14/16 checks +* chore: adjust node types to minimal supported version +* chore!: further major versions of other deps +* upgrade conventional-changelog-conventionalcommits, conventional-commits-parser, conventional-changelog-atom, +* docs: simplify releases and remove roadmap -## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) + + + +## [17.8.1](https://github.com/conventional-changelog/commitlint/compare/v17.8.0...v17.8.1) (2023-10-20) **Note:** Version bump only for package commitlint @@ -111,7 +334,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) +# [17.8.0](https://github.com/conventional-changelog/commitlint/compare/v17.7.2...v17.8.0) (2023-10-14) **Note:** Version bump only for package commitlint @@ -119,7 +342,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) +## [17.7.2](https://github.com/conventional-changelog/commitlint/compare/v17.7.1...v17.7.2) (2023-09-28) **Note:** Version bump only for package commitlint @@ -127,7 +350,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) +## [17.7.1](https://github.com/conventional-changelog/commitlint/compare/v17.7.0...v17.7.1) (2023-08-10) **Note:** Version bump only for package commitlint @@ -135,7 +358,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) +# [17.7.0](https://github.com/conventional-changelog/commitlint/compare/v17.6.7...v17.7.0) (2023-08-09) **Note:** Version bump only for package commitlint @@ -143,7 +366,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [8.3.5](https://github.com/conventional-changelog/commitlint/compare/v8.3.4...v8.3.5) (2020-01-15) +## [17.6.7](https://github.com/conventional-changelog/commitlint/compare/v17.6.6...v17.6.7) (2023-07-19) **Note:** Version bump only for package commitlint @@ -151,18 +374,23 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) +## [17.6.6](https://github.com/conventional-changelog/commitlint/compare/v17.6.5...v17.6.6) (2023-06-24) +**Note:** Version bump only for package commitlint -### Bug Fixes -* **commitlint:** use new read pkg syntax ([#888](https://github.com/conventional-changelog/commitlint/issues/888)) ([6b3b9a9](https://github.com/conventional-changelog/commitlint/commit/6b3b9a9)) +## [17.6.5](https://github.com/conventional-changelog/commitlint/compare/v17.6.4...v17.6.5) (2023-05-30) + +**Note:** Version bump only for package commitlint -## [8.3.1](https://github.com/conventional-changelog/commitlint/compare/v8.3.0...v8.3.1) (2019-10-16) + + + +## [17.6.3](https://github.com/conventional-changelog/commitlint/compare/v17.6.2...v17.6.3) (2023-05-04) **Note:** Version bump only for package commitlint @@ -170,7 +398,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) +## [17.6.1](https://github.com/conventional-changelog/commitlint/compare/v17.6.0...v17.6.1) (2023-04-14) **Note:** Version bump only for package commitlint @@ -178,7 +406,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) +# [17.6.0](https://github.com/conventional-changelog/commitlint/compare/v17.5.1...v17.6.0) (2023-04-13) **Note:** Version bump only for package commitlint @@ -186,7 +414,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) +## [17.5.1](https://github.com/conventional-changelog/commitlint/compare/v17.5.0...v17.5.1) (2023-03-28) **Note:** Version bump only for package commitlint @@ -194,7 +422,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [7.6.1](https://github.com/conventional-changelog/commitlint/compare/v7.6.0...v7.6.1) (2019-05-09) +# [17.5.0](https://github.com/conventional-changelog/commitlint/compare/v17.4.4...v17.5.0) (2023-03-22) **Note:** Version bump only for package commitlint @@ -202,7 +430,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) +## [17.4.4](https://github.com/conventional-changelog/commitlint/compare/v17.4.3...v17.4.4) (2023-02-17) **Note:** Version bump only for package commitlint @@ -210,7 +438,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [7.5.2](https://github.com/conventional-changelog/commitlint/compare/v7.5.1...v7.5.2) (2019-02-11) +## [17.4.3](https://github.com/conventional-changelog/commitlint/compare/v17.4.2...v17.4.3) (2023-02-13) **Note:** Version bump only for package commitlint @@ -218,7 +446,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [7.5.1](https://github.com/conventional-changelog/commitlint/compare/v7.5.0...v7.5.1) (2019-02-09) +## [17.4.2](https://github.com/conventional-changelog/commitlint/compare/v17.4.1...v17.4.2) (2023-01-12) **Note:** Version bump only for package commitlint @@ -226,245 +454,414 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -<a name="7.5.0"></a> -# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) +## [17.4.1](https://github.com/conventional-changelog/commitlint/compare/v17.4.0...v17.4.1) (2023-01-09) +**Note:** Version bump only for package commitlint -### Bug Fixes -* replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) +# [17.4.0](https://github.com/conventional-changelog/commitlint/compare/v17.3.0...v17.4.0) (2023-01-04) -<a name="7.4.0"></a> -# [7.4.0](https://github.com/conventional-changelog/commitlint/compare/v7.3.2...v7.4.0) (2019-01-27) +**Note:** Version bump only for package commitlint +# [17.3.0](https://github.com/conventional-changelog/commitlint/compare/v17.2.1...v17.3.0) (2022-11-21) +**Note:** Version bump only for package commitlint +# [17.2.0](https://github.com/conventional-changelog/commitlint/compare/v17.1.2...v17.2.0) (2022-10-31) **Note:** Version bump only for package commitlint -<a name="7.3.2"></a> -## [7.3.2](https://github.com/conventional-changelog/commitlint/compare/v7.3.1...v7.3.2) (2019-01-15) +## [17.1.2](https://github.com/conventional-changelog/commitlint/compare/v17.1.1...v17.1.2) (2022-08-29) + +**Note:** Version bump only for package commitlint +## [17.1.1](https://github.com/conventional-changelog/commitlint/compare/v17.1.0...v17.1.1) (2022-08-27) +**Note:** Version bump only for package commitlint +# [17.1.0](https://github.com/conventional-changelog/commitlint/compare/v17.0.3...v17.1.0) (2022-08-27) **Note:** Version bump only for package commitlint -<a name="7.3.1"></a> -## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) +## [17.0.3](https://github.com/conventional-changelog/commitlint/compare/v17.0.2...v17.0.3) (2022-06-25) +**Note:** Version bump only for package commitlint + +## [17.0.2](https://github.com/conventional-changelog/commitlint/compare/v17.0.1...v17.0.2) (2022-06-01) +**Note:** Version bump only for package commitlint +## [17.0.1](https://github.com/conventional-changelog/commitlint/compare/v17.0.0...v17.0.1) (2022-05-25) **Note:** Version bump only for package commitlint -<a name="7.3.0"></a> -# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) +# [17.0.0](https://github.com/conventional-changelog/commitlint/compare/v16.3.0...v17.0.0) (2022-05-16) +- chore!: minimum node version v14 (#3128) ([ac5f9b4](https://github.com/conventional-changelog/commitlint/commit/ac5f9b47a9e3cd5c9d58b14da0feb426f06b1ef9)), closes [#3128](https://github.com/conventional-changelog/commitlint/issues/3128) + +### BREAKING CHANGES +- drop node v12 support +- chore: rename circleci windows job + +node version is not defned by the name anyways (i think) + +# [16.3.0](https://github.com/conventional-changelog/commitlint/compare/v16.2.4...v16.3.0) (2022-05-14) **Note:** Version bump only for package commitlint -<a name="7.2.1"></a> -## [7.2.1](https://github.com/conventional-changelog/commitlint/compare/v7.2.0...v7.2.1) (2018-10-11) +## [16.2.4](https://github.com/conventional-changelog/commitlint/compare/v16.2.3...v16.2.4) (2022-04-28) + +**Note:** Version bump only for package commitlint +## [16.2.3](https://github.com/conventional-changelog/commitlint/compare/v16.2.2...v16.2.3) (2022-03-16) +**Note:** Version bump only for package commitlint +## [16.2.1](https://github.com/conventional-changelog/commitlint/compare/v16.2.0...v16.2.1) (2022-02-13) **Note:** Version bump only for package commitlint -<a name="7.2.0"></a> -# [7.2.0](https://github.com/conventional-changelog/commitlint/compare/v7.1.2...v7.2.0) (2018-10-05) +# [16.1.0](https://github.com/conventional-changelog/commitlint/compare/v16.0.3...v16.1.0) (2022-01-20) +**Note:** Version bump only for package commitlint +## [16.0.3](https://github.com/conventional-changelog/commitlint/compare/v16.0.2...v16.0.3) (2022-01-19) +**Note:** Version bump only for package commitlint + +## [16.0.2](https://github.com/conventional-changelog/commitlint/compare/v16.0.1...v16.0.2) (2022-01-09) **Note:** Version bump only for package commitlint -<a name="7.1.2"></a> -## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) +## [16.0.1](https://github.com/conventional-changelog/commitlint/compare/v16.0.0...v16.0.1) (2021-12-28) +**Note:** Version bump only for package commitlint +# [16.0.0](https://github.com/conventional-changelog/commitlint/compare/v15.0.0...v16.0.0) (2021-12-26) +**Note:** Version bump only for package commitlint + +# [15.0.0](https://github.com/conventional-changelog/commitlint/compare/v14.2.0...v15.0.0) (2021-11-17) **Note:** Version bump only for package commitlint -<a name="7.1.0"></a> -# [7.1.0](https://github.com/conventional-changelog/commitlint/compare/v7.0.1...v7.1.0) (2018-08-29) +# [14.1.0](https://github.com/conventional-changelog/commitlint/compare/v14.0.0...v14.1.0) (2021-11-01) + +**Note:** Version bump only for package commitlint +# [14.0.0](https://github.com/conventional-changelog/commitlint/compare/v13.2.1...v14.0.0) (2021-10-26) +**Note:** Version bump only for package commitlint +## [13.2.1](https://github.com/conventional-changelog/commitlint/compare/v13.2.0...v13.2.1) (2021-10-09) **Note:** Version bump only for package commitlint -<a name="6.2.0"></a> -# [6.2.0](https://github.com/conventional-changelog/commitlint/compare/v6.1.3...v6.2.0) (2018-05-01) +# [13.2.0](https://github.com/conventional-changelog/commitlint/compare/v13.1.0...v13.2.0) (2021-09-28) + +**Note:** Version bump only for package commitlint + +# [13.1.0](https://github.com/conventional-changelog/commitlint/compare/v13.0.0...v13.1.0) (2021-07-24) + +**Note:** Version bump only for package commitlint + +# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) +- chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) +### BREAKING CHANGES + +- minimum node version is 12 +## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) **Note:** Version bump only for package commitlint -<a name="6.1.1"></a> -## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) +## [12.1.2](https://github.com/conventional-changelog/commitlint/compare/v12.1.1...v12.1.2) (2021-04-29) +**Note:** Version bump only for package commitlint +## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) +**Note:** Version bump only for package commitlint + +# [12.1.0](https://github.com/conventional-changelog/commitlint/compare/v12.0.1...v12.1.0) (2021-03-06) **Note:** Version bump only for package commitlint -<a name="6.1.0"></a> -# [6.1.0](https://github.com/conventional-changelog/commitlint/compare/v6.0.5...v6.1.0) (2018-02-03) +## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) +**Note:** Version bump only for package commitlint +# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) + +**Note:** Version bump only for package commitlint +# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) **Note:** Version bump only for package commitlint -<a name="6.0.5"></a> -## [6.0.5](https://github.com/conventional-changelog/commitlint/compare/v6.0.4...v6.0.5) (2018-01-31) +# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) + +- refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) + +### BREAKING CHANGES + +- remove node 8 from circle-ci checks + +also remove node 13 because we do not support experimental versions + +- docs: update node v10 to latest LTS 10 version +Co-authored-by: Cedric van Putten <me@bycedric.com> +Co-authored-by: Cedric van Putten <me@bycedric.com> +## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) **Note:** Version bump only for package commitlint -<a name="6.0.4"></a> -## [6.0.4](https://github.com/conventional-changelog/commitlint/compare/v6.0.3...v6.0.4) (2018-01-31) +## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) +**Note:** Version bump only for package commitlint +# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) +**Note:** Version bump only for package commitlint + +## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) **Note:** Version bump only for package commitlint -<a name="6.0.3"></a> -## [6.0.3](https://github.com/conventional-changelog/commitlint/compare/v6.0.2...v6.0.3) (2018-01-31) +# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) +**Note:** Version bump only for package commitlint +## [8.3.5](https://github.com/conventional-changelog/commitlint/compare/v8.3.4...v8.3.5) (2020-01-15) + +**Note:** Version bump only for package commitlint + +## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) + +### Bug Fixes +- **commitlint:** use new read pkg syntax ([#888](https://github.com/conventional-changelog/commitlint/issues/888)) ([6b3b9a9](https://github.com/conventional-changelog/commitlint/commit/6b3b9a9)) + +## [8.3.1](https://github.com/conventional-changelog/commitlint/compare/v8.3.0...v8.3.1) (2019-10-16) **Note:** Version bump only for package commitlint -<a name="6.0.2"></a> -## [6.0.2](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.2) (2018-01-12) +# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) + +**Note:** Version bump only for package commitlint +# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) +**Note:** Version bump only for package commitlint +# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) **Note:** Version bump only for package commitlint -<a name="6.0.1"></a> -## [6.0.1](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.1) (2018-01-09) +## [7.6.1](https://github.com/conventional-changelog/commitlint/compare/v7.6.0...v7.6.1) (2019-05-09) +**Note:** Version bump only for package commitlint +# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) +**Note:** Version bump only for package commitlint + +## [7.5.2](https://github.com/conventional-changelog/commitlint/compare/v7.5.1...v7.5.2) (2019-02-11) **Note:** Version bump only for package commitlint -<a name="6.0.0"></a> -# [6.0.0](https://github.com/conventional-changelog/commitlint/compare/v5.2.6...v6.0.0) (2018-01-09) +## [7.5.1](https://github.com/conventional-changelog/commitlint/compare/v7.5.0...v7.5.1) (2019-02-09) +**Note:** Version bump only for package commitlint +<a name="7.5.0"></a> + +# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) + +### Bug Fixes + +- replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) + +<a name="7.4.0"></a> +# [7.4.0](https://github.com/conventional-changelog/commitlint/compare/v7.3.2...v7.4.0) (2019-01-27) **Note:** Version bump only for package commitlint -<a name="5.2.6"></a> -## [5.2.6](https://github.com/conventional-changelog/commitlint/compare/v5.2.5...v5.2.6) (2017-12-21) +<a name="7.3.2"></a> +## [7.3.2](https://github.com/conventional-changelog/commitlint/compare/v7.3.1...v7.3.2) (2019-01-15) +**Note:** Version bump only for package commitlint +<a name="7.3.1"></a> + +## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) **Note:** Version bump only for package commitlint -<a name="5.2.5"></a> -## [5.2.5](https://github.com/conventional-changelog/commitlint/compare/v5.2.4...v5.2.5) (2017-12-08) +<a name="7.3.0"></a> +# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) +**Note:** Version bump only for package commitlint +<a name="7.2.1"></a> + +## [7.2.1](https://github.com/conventional-changelog/commitlint/compare/v7.2.0...v7.2.1) (2018-10-11) **Note:** Version bump only for package commitlint -<a name="5.2.4"></a> -## [5.2.4](https://github.com/conventional-changelog/commitlint/compare/v5.2.3...v5.2.4) (2017-12-08) +<a name="7.2.0"></a> +# [7.2.0](https://github.com/conventional-changelog/commitlint/compare/v7.1.2...v7.2.0) (2018-10-05) +**Note:** Version bump only for package commitlint + +<a name="7.1.2"></a> +## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) **Note:** Version bump only for package commitlint -<a name="5.2.3"></a> -## [5.2.3](https://github.com/conventional-changelog/commitlint/compare/v5.2.2...v5.2.3) (2017-12-05) +<a name="7.1.0"></a> +# [7.1.0](https://github.com/conventional-changelog/commitlint/compare/v7.0.1...v7.1.0) (2018-08-29) +**Note:** Version bump only for package commitlint +<a name="6.2.0"></a> + +# [6.2.0](https://github.com/conventional-changelog/commitlint/compare/v6.1.3...v6.2.0) (2018-05-01) **Note:** Version bump only for package commitlint -<a name="5.2.0"></a> -# [5.2.0](https://github.com/conventional-changelog/commitlint/compare/v5.1.3...v5.2.0) (2017-11-30) +<a name="6.1.1"></a> + +## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) +**Note:** Version bump only for package commitlint +<a name="6.1.0"></a> +# [6.1.0](https://github.com/conventional-changelog/commitlint/compare/v6.0.5...v6.1.0) (2018-02-03) **Note:** Version bump only for package commitlint -<a name="5.1.1"></a> -## [5.1.1](https://github.com/conventional-changelog/commitlint/compare/v5.1.0...v5.1.1) (2017-11-24) +<a name="6.0.5"></a> +## [6.0.5](https://github.com/conventional-changelog/commitlint/compare/v6.0.4...v6.0.5) (2018-01-31) +**Note:** Version bump only for package commitlint +<a name="6.0.4"></a> + +## [6.0.4](https://github.com/conventional-changelog/commitlint/compare/v6.0.3...v6.0.4) (2018-01-31) **Note:** Version bump only for package commitlint -<a name="5.1.0"></a> -# [5.1.0](https://github.com/conventional-changelog/commitlint/compare/v5.0.2...v5.1.0) (2017-11-24) +<a name="6.0.3"></a> +## [6.0.3](https://github.com/conventional-changelog/commitlint/compare/v6.0.2...v6.0.3) (2018-01-31) +**Note:** Version bump only for package commitlint +<a name="6.0.2"></a> + +## [6.0.2](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.2) (2018-01-12) **Note:** Version bump only for package commitlint -<a name="5.0.1"></a> -## [5.0.1](https://github.com/conventional-changelog/commitlint/compare/v5.0.0...v5.0.1) (2017-11-19) +<a name="6.0.1"></a> +## [6.0.1](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.1) (2018-01-09) +**Note:** Version bump only for package commitlint +<a name="6.0.0"></a> + +# [6.0.0](https://github.com/conventional-changelog/commitlint/compare/v5.2.6...v6.0.0) (2018-01-09) **Note:** Version bump only for package commitlint -<a name="4.3.0"></a> -# [4.3.0](https://github.com/conventional-changelog/commitlint/compare/v4.2.2...v4.3.0) (2017-11-08) +<a name="5.2.6"></a> +## [5.2.6](https://github.com/conventional-changelog/commitlint/compare/v5.2.5...v5.2.6) (2017-12-21) +**Note:** Version bump only for package commitlint +<a name="5.2.5"></a> + +## [5.2.5](https://github.com/conventional-changelog/commitlint/compare/v5.2.4...v5.2.5) (2017-12-08) **Note:** Version bump only for package commitlint -<a name="4.2.2"></a> -## [4.2.2](https://github.com/conventional-changelog/commitlint/compare/v4.2.1...v4.2.2) (2017-10-26) +<a name="5.2.4"></a> +## [5.2.4](https://github.com/conventional-changelog/commitlint/compare/v5.2.3...v5.2.4) (2017-12-08) +**Note:** Version bump only for package commitlint +<a name="5.2.3"></a> + +## [5.2.3](https://github.com/conventional-changelog/commitlint/compare/v5.2.2...v5.2.3) (2017-12-05) **Note:** Version bump only for package commitlint -<a name="4.2.1"></a> -## [4.2.1](https://github.com/conventional-changelog/commitlint/compare/v4.2.0...v4.2.1) (2017-10-18) +<a name="5.2.0"></a> + +# [5.2.0](https://github.com/conventional-changelog/commitlint/compare/v5.1.3...v5.2.0) (2017-11-30) +**Note:** Version bump only for package commitlint +<a name="5.1.1"></a> +## [5.1.1](https://github.com/conventional-changelog/commitlint/compare/v5.1.0...v5.1.1) (2017-11-24) **Note:** Version bump only for package commitlint -<a name="4.2.0"></a> -# [4.2.0](https://github.com/conventional-changelog/commitlint/compare/v4.1.1...v4.2.0) (2017-10-14) +<a name="5.1.0"></a> +# [5.1.0](https://github.com/conventional-changelog/commitlint/compare/v5.0.2...v5.1.0) (2017-11-24) +**Note:** Version bump only for package commitlint + +<a name="5.0.1"></a> + +## [5.0.1](https://github.com/conventional-changelog/commitlint/compare/v5.0.0...v5.0.1) (2017-11-19) + +**Note:** Version bump only for package commitlint + +<a name="4.3.0"></a> + +# [4.3.0](https://github.com/conventional-changelog/commitlint/compare/v4.2.2...v4.3.0) (2017-11-08) + +**Note:** Version bump only for package commitlint + +<a name="4.2.2"></a> + +## [4.2.2](https://github.com/conventional-changelog/commitlint/compare/v4.2.1...v4.2.2) (2017-10-26) + +**Note:** Version bump only for package commitlint + +<a name="4.2.1"></a> +## [4.2.1](https://github.com/conventional-changelog/commitlint/compare/v4.2.0...v4.2.1) (2017-10-18) + +**Note:** Version bump only for package commitlint + +<a name="4.2.0"></a> + +# [4.2.0](https://github.com/conventional-changelog/commitlint/compare/v4.1.1...v4.2.0) (2017-10-14) **Note:** Version bump only for package commitlint diff --git a/@alias/commitlint/cli.js b/@alias/commitlint/cli.js index caf2882a70..4b917c9cf5 100755 --- a/@alias/commitlint/cli.js +++ b/@alias/commitlint/cli.js @@ -1,3 +1,2 @@ #!/usr/bin/env node -const pkgDir = require('@commitlint/cli'); -require(pkgDir); +import "@commitlint/cli/cli.js"; diff --git a/@alias/commitlint/cli.test.js b/@alias/commitlint/cli.test.js index 390b1672f1..ff28c511b3 100644 --- a/@alias/commitlint/cli.test.js +++ b/@alias/commitlint/cli.test.js @@ -1,28 +1,42 @@ -import execa from 'execa'; -import {fix} from '@commitlint/test'; +import { test, expect } from "vitest"; +import { createRequire } from "node:module"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; -const bin = require.resolve('./cli.js'); +import { x } from "tinyexec"; +import { fix } from "@commitlint/test"; + +const require = createRequire(import.meta.url); + +const __dirname = path.resolve(fileURLToPath(import.meta.url), ".."); + +const bin = require.resolve("./cli.js"); function cli(args, options, input) { - const c = execa(bin, args, { - cwd: options.cwd, - env: options.env, - input: input, + const result = x(bin, args, { + nodeOptions: { + cwd: options.cwd, + env: options.env, + }, }); - return c.catch((err) => err); + + result.process.stdin.write(input); + result.process.stdin.end(); + + return result; } const fixBootstrap = (fixture) => fix.bootstrap(fixture, __dirname); -test('should reprint input from stdin', async () => { - const cwd = await fixBootstrap('fixtures/default'); - const actual = await cli([], {cwd}, 'foo: bar'); - expect(actual.stdout).toContain('foo: bar'); +test("should reprint input from stdin", async () => { + const cwd = await fixBootstrap("fixtures/default"); + const actual = await cli([], { cwd }, "foo: bar"); + expect(actual.stdout).toContain("foo: bar"); }); -test('should produce success output with --verbose flag', async () => { - const cwd = await fixBootstrap('fixtures/default'); - const actual = await cli(['--verbose'], {cwd}, 'type: bar'); - expect(actual.stdout).toContain('0 problems, 0 warnings'); - expect(actual.stderr).toEqual(''); +test("should produce success output with --verbose flag", async () => { + const cwd = await fixBootstrap("fixtures/default"); + const actual = await cli(["--verbose"], { cwd }, "type: bar"); + expect(actual.stdout).toContain("0 problems, 0 warnings"); + expect(actual.stderr).toEqual(""); }); diff --git a/@alias/commitlint/package.json b/@alias/commitlint/package.json index 4676d0fb14..d268076b51 100644 --- a/@alias/commitlint/package.json +++ b/@alias/commitlint/package.json @@ -1,6 +1,7 @@ { "name": "commitlint", - "version": "13.1.0", + "type": "module", + "version": "20.1.0", "description": "Lint your commit messages", "files": [ "cli.js" @@ -13,16 +14,17 @@ "pkg": "pkg-check --skip-main" }, "engines": { - "node": ">=v12" + "node": ">=v18" }, "repository": { "type": "git", - "url": "https://github.com/conventional-changelog/commitlint.git" + "url": "https://github.com/conventional-changelog/commitlint.git", + "directory": "@alias/commitlint" }, "bugs": { "url": "https://github.com/conventional-changelog/commitlint/issues" }, - "homepage": "https://github.com/conventional-changelog/commitlint#readme", + "homepage": "https://commitlint.js.org/", "keywords": [ "conventional-changelog", "commitlint", @@ -34,13 +36,13 @@ }, "license": "MIT", "dependencies": { - "@commitlint/cli": "^13.1.0", - "@commitlint/types": "^13.1.0" + "@commitlint/cli": "^20.1.0", + "@commitlint/types": "^20.0.0" }, "devDependencies": { - "@commitlint/test": "^13.0.0", - "@commitlint/utils": "^13.0.0", - "execa": "^5.0.0" + "@commitlint/test": "^20.0.0", + "@commitlint/utils": "^20.0.0", + "tinyexec": "^1.0.0" }, - "gitHead": "70f7f4688b51774e7ac5e40e896cdaa3f132b2bc" + "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" } diff --git a/@commitlint/cli/CHANGELOG.md b/@commitlint/cli/CHANGELOG.md index 4acea09696..7d1038bbea 100644 --- a/@commitlint/cli/CHANGELOG.md +++ b/@commitlint/cli/CHANGELOG.md @@ -3,44 +3,45 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. -# [13.1.0](https://github.com/conventional-changelog/commitlint/compare/v13.0.0...v13.1.0) (2021-07-24) +# [20.1.0](https://github.com/conventional-changelog/commitlint/compare/v20.0.0...v20.1.0) (2025-09-30) +**Note:** Version bump only for package @commitlint/cli -### Bug Fixes -* **cli:** remove hard coded comment char with linting `COMMIT_EDIT_MSG` ([#2618](https://github.com/conventional-changelog/commitlint/issues/2618)) ([5badf6d](https://github.com/conventional-changelog/commitlint/commit/5badf6dc08116ed3557e6c780e55764b4f07ca67)), closes [#2351](https://github.com/conventional-changelog/commitlint/issues/2351) +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) +**Note:** Version bump only for package @commitlint/cli -# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) -* chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) -### BREAKING CHANGES +## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) -* minimum node version is 12 +### Bug Fixes +* update dependency tinyexec to v1 ([#4332](https://github.com/conventional-changelog/commitlint/issues/4332)) ([e49449f](https://github.com/conventional-changelog/commitlint/commit/e49449fa9452069cdbf194f94d536194d362a299)) -## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) -### Bug Fixes +# [19.8.0](https://github.com/conventional-changelog/commitlint/compare/v19.7.1...v19.8.0) (2025-03-07) -* update dependency fs-extra to v10 ([#2575](https://github.com/conventional-changelog/commitlint/issues/2575)) ([d47d2b5](https://github.com/conventional-changelog/commitlint/commit/d47d2b595b980adadd4fb8ff198c1914caeff18f)) -* update dependency yargs to v17 ([#2574](https://github.com/conventional-changelog/commitlint/issues/2574)) ([81c38dd](https://github.com/conventional-changelog/commitlint/commit/81c38ddf15f239b525f673b26b2ee6606f2ee8f6)) +### Performance Improvements +* use `node:` prefix to bypass require.cache call for builtins ([#4302](https://github.com/conventional-changelog/commitlint/issues/4302)) ([0cd8f41](https://github.com/conventional-changelog/commitlint/commit/0cd8f410573fe11383f788b1ceb7e0946143591d)) -## [12.1.2](https://github.com/conventional-changelog/commitlint/compare/v12.1.1...v12.1.2) (2021-04-29) + + +## [19.7.1](https://github.com/conventional-changelog/commitlint/compare/v19.7.0...v19.7.1) (2025-02-02) **Note:** Version bump only for package @commitlint/cli @@ -48,7 +49,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) +## [19.6.1](https://github.com/conventional-changelog/commitlint/compare/v19.6.0...v19.6.1) (2024-12-15) **Note:** Version bump only for package @commitlint/cli @@ -56,7 +57,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [12.1.0](https://github.com/conventional-changelog/commitlint/compare/v12.0.1...v12.1.0) (2021-03-06) +# [19.6.0](https://github.com/conventional-changelog/commitlint/compare/v19.5.0...v19.6.0) (2024-11-19) **Note:** Version bump only for package @commitlint/cli @@ -64,81 +65,73 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) +# [19.5.0](https://github.com/conventional-changelog/commitlint/compare/v19.4.1...v19.5.0) (2024-09-11) -**Note:** Version bump only for package @commitlint/cli +### Features +* **cli:** use special errorCode for missing rules/config [#4142](https://github.com/conventional-changelog/commitlint/issues/4142) ([#4143](https://github.com/conventional-changelog/commitlint/issues/4143)) ([d7070d8](https://github.com/conventional-changelog/commitlint/commit/d7070d8a4905da7834a018825b37d52c2dd29f62)) -# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) -### Bug Fixes +## [19.4.1](https://github.com/conventional-changelog/commitlint/compare/v19.4.0...v19.4.1) (2024-08-28) -* update dependency execa to v5 ([#2341](https://github.com/conventional-changelog/commitlint/issues/2341)) ([f349df9](https://github.com/conventional-changelog/commitlint/commit/f349df90f08096a9bcad46b5e55b411aac327a24)) -* update dependency yargs to v16 ([204f36d](https://github.com/conventional-changelog/commitlint/commit/204f36d0a522afaf3a88739b401aea15ffa0b891)) +**Note:** Version bump only for package @commitlint/cli -### Features -* **cli:** implement print-config cli flag ([#2391](https://github.com/conventional-changelog/commitlint/issues/2391)) ([8626883](https://github.com/conventional-changelog/commitlint/commit/86268833946dea9dcf1c15459456cd4427d17835)) -* **load:** allow specifying helpUrl via config ([#2180](https://github.com/conventional-changelog/commitlint/issues/2180)) ([d6795a3](https://github.com/conventional-changelog/commitlint/commit/d6795a3c4633ba6efd7a0fcff48339dc291cd832)) +# [19.4.0](https://github.com/conventional-changelog/commitlint/compare/v19.3.1...v19.4.0) (2024-08-07) +### Features -# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) +* support command line options from a file ([#4109](https://github.com/conventional-changelog/commitlint/issues/4109)) ([a20e890](https://github.com/conventional-changelog/commitlint/commit/a20e890f6b6c8bacdc511d40cb41f29415bdd044)) +* support linting from the last tag ([#4110](https://github.com/conventional-changelog/commitlint/issues/4110)) ([4b204ec](https://github.com/conventional-changelog/commitlint/commit/4b204ecfb43dd6a00e24b51111aadbd78f9d58e1)) -### Bug Fixes -* **cli:** remove default value from edit option [#2065](https://github.com/conventional-changelog/commitlint/issues/2065) ([3d4116d](https://github.com/conventional-changelog/commitlint/commit/3d4116d044a2f5149a9c9c1d9fa35abf5e232479)) +# [19.3.0](https://github.com/conventional-changelog/commitlint/compare/v19.2.2...v19.3.0) (2024-04-23) +**Note:** Version bump only for package @commitlint/cli -# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) -### Bug Fixes -* update dependency execa to v4 ([#1936](https://github.com/conventional-changelog/commitlint/issues/1936)) ([8efb441](https://github.com/conventional-changelog/commitlint/commit/8efb44193058d286f7325327a6d33936b273ec91)) -* update dependency fs-extra to v9 ([#1018](https://github.com/conventional-changelog/commitlint/issues/1018)) ([2df49fa](https://github.com/conventional-changelog/commitlint/commit/2df49fac907993ae78199a1012e918b0e2ff5621)) -* update dependency get-stdin to v8 ([#1938](https://github.com/conventional-changelog/commitlint/issues/1938)) ([f94a5c8](https://github.com/conventional-changelog/commitlint/commit/f94a5c82861523aa1cf407ffe062f99ecbbfb4e4)) +## [19.2.2](https://github.com/conventional-changelog/commitlint/compare/v19.2.1...v19.2.2) (2024-04-14) +**Note:** Version bump only for package @commitlint/cli -* refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) -### BREAKING CHANGES -* remove node 8 from circle-ci checks -also remove node 13 because we do not support experimental versions +## [19.2.1](https://github.com/conventional-changelog/commitlint/compare/v19.2.0...v19.2.1) (2024-03-19) -* docs: update node v10 to latest LTS 10 version +**Note:** Version bump only for package @commitlint/cli -Co-authored-by: Cedric van Putten <me@bycedric.com> -Co-authored-by: Cedric van Putten <me@bycedric.com> +# [19.2.0](https://github.com/conventional-changelog/commitlint/compare/v19.1.0...v19.2.0) (2024-03-15) -## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) +### Features -**Note:** Version bump only for package @commitlint/cli +* **cli:** introduce new --last flag, to stop recommending HEAD~1 ([#3916](https://github.com/conventional-changelog/commitlint/issues/3916)) ([99f4f3f](https://github.com/conventional-changelog/commitlint/commit/99f4f3f4839190a2758083df7ba20b988e7b68a6)) -## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) +# [19.1.0](https://github.com/conventional-changelog/commitlint/compare/v19.0.3...v19.1.0) (2024-03-12) **Note:** Version bump only for package @commitlint/cli @@ -146,99 +139,105 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) - - -### Bug Fixes - -* update dependency chalk to v4 ([#1275](https://github.com/conventional-changelog/commitlint/issues/1275)) ([a5d8fa1](https://github.com/conventional-changelog/commitlint/commit/a5d8fa118e8221361f14f5fd2b21d7aaad008a27)) -* update dependency regenerator-runtime to v0.13.5 ([#1017](https://github.com/conventional-changelog/commitlint/issues/1017)) ([9c4fdf1](https://github.com/conventional-changelog/commitlint/commit/9c4fdf1b5f42677422532dad655af9aed9b43881)) - +## [19.0.3](https://github.com/conventional-changelog/commitlint/compare/v19.0.2...v19.0.3) (2024-02-28) +**Note:** Version bump only for package @commitlint/cli -## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) -### Bug Fixes +## [19.0.2](https://github.com/conventional-changelog/commitlint/compare/v19.0.1...v19.0.2) (2024-02-28) -* add missing @babel/runtime dep [#1738](https://github.com/conventional-changelog/commitlint/issues/1738) ([#1754](https://github.com/conventional-changelog/commitlint/issues/1754)) ([09afcd6](https://github.com/conventional-changelog/commitlint/commit/09afcd647a2c1d00538cf1c970e3790d936111f8)) +**Note:** Version bump only for package @commitlint/cli -# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) +## [19.0.1](https://github.com/conventional-changelog/commitlint/compare/v19.0.0...v19.0.1) (2024-02-27) ### Bug Fixes -* **cli:** add missing regenerator-runtime to dependencies ([#919](https://github.com/conventional-changelog/commitlint/issues/919)) ([ee5eac9](https://github.com/conventional-changelog/commitlint/commit/ee5eac98fa97ba5ba17030c8d2705aee5c7f3a3a)) -* [#840](https://github.com/conventional-changelog/commitlint/issues/840) add caret to lodash versions ([#843](https://github.com/conventional-changelog/commitlint/issues/843)) ([ffc0bac](https://github.com/conventional-changelog/commitlint/commit/ffc0bac26993acb2ab6a8fa51065f93c92b0d644)) +* drop `resolve-from`, `resolve-global` and `import-fresh`, resolve global packages correctly ([#3939](https://github.com/conventional-changelog/commitlint/issues/3939)) ([8793c63](https://github.com/conventional-changelog/commitlint/commit/8793c639c083c33714da0a29429b338776813d0c)), closes [#3938](https://github.com/conventional-changelog/commitlint/issues/3938) -## [8.3.5](https://github.com/conventional-changelog/commitlint/compare/v8.3.4...v8.3.5) (2020-01-15) - -**Note:** Version bump only for package @commitlint/cli +# [19.0.0](https://github.com/conventional-changelog/commitlint/compare/v18.6.2...v19.0.0) (2024-02-27) +* feat!: migrate to pure ESM (#3850) ([3423735](https://github.com/conventional-changelog/commitlint/commit/342373559bdf7c783c4ef37ff05dc38a5f681159)), closes [#3850](https://github.com/conventional-changelog/commitlint/issues/3850) +### Reverts -## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) +* Revert "chore!: minimum node version v20" ([2816783](https://github.com/conventional-changelog/commitlint/commit/2816783d00e7eb967de3ac9347c2fc43dc8b94fa)) -**Note:** Version bump only for package @commitlint/cli +### BREAKING CHANGES +* migrate to pure ESM +* feat: migrate to pure ESM +* chore: update snapshot -## [8.3.1](https://github.com/conventional-changelog/commitlint/compare/v8.3.0...v8.3.1) (2019-10-16) +* fix: load `parserPreset` with another `await` -**Note:** Version bump only for package @commitlint/cli +* test: migrate to vitest +* test: remove no replacement `--runInBand` test-ci script +* chore: fix code reviews +* refactor(load): rewrite resolve logic +* fix(config-nx-scopes): fix syntax error -# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) +* feat(resolve-extends): add resolveFrom and loadParserPreset +* feat(load): use resolveFrom and loadParserPreset from resolve-extends -### Features +* test: include only @commitlint/* packages src in coverage -* **cli:** add helpurl flag ([#789](https://github.com/conventional-changelog/commitlint/issues/789)) ([75cef4e](https://github.com/conventional-changelog/commitlint/commit/75cef4e)) +* test: explicit import vitest utilities +* test: remove @jest/globals from dependencies +* fix(resolve-extends): `resolveFrom` output should be platform aware +* test: restore NO_COLOR to test script +* chore: fix linting issues -# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) +* fix: should use fileURLToPath instead of pathname for Windows compatibility +* Apply suggestions from code review -### Bug Fixes +* fix: should reuse `cli` instead call `yargs()` -* pass defaultIgnores from configuration in @commitlint/cli ([#771](https://github.com/conventional-changelog/commitlint/issues/771)) ([a259014](https://github.com/conventional-changelog/commitlint/commit/a259014)) +* feat(cli): set terminalWidth as wrap to avoid work break on help +* Update .eslintrc.cjs +* feat: migrate @commitlint/config-conventional to pure ESM -# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) -### Bug Fixes +## [18.6.1](https://github.com/conventional-changelog/commitlint/compare/v18.6.0...v18.6.1) (2024-02-13) -* pass ignores from configuration in @commitlint/cli ([#668](https://github.com/conventional-changelog/commitlint/issues/668)) ([da99aaa](https://github.com/conventional-changelog/commitlint/commit/da99aaa)) +**Note:** Version bump only for package @commitlint/cli -## [7.6.1](https://github.com/conventional-changelog/commitlint/compare/v7.6.0...v7.6.1) (2019-05-09) +# [18.6.0](https://github.com/conventional-changelog/commitlint/compare/v18.5.1...v18.6.0) (2024-01-25) **Note:** Version bump only for package @commitlint/cli @@ -246,34 +245,34 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) +# [18.5.0](https://github.com/conventional-changelog/commitlint/compare/v18.4.4...v18.5.0) (2024-01-22) -### Bug Fixes +### Features -* avoid excessive help text [#606](https://github.com/conventional-changelog/commitlint/issues/606) ([#637](https://github.com/conventional-changelog/commitlint/issues/637)) ([8f3c3b1](https://github.com/conventional-changelog/commitlint/commit/8f3c3b1)) +* **cli:** print-config now can be configured to print a json in stdout ([#3863](https://github.com/conventional-changelog/commitlint/issues/3863)) ([6381a2d](https://github.com/conventional-changelog/commitlint/commit/6381a2daa0d5d89ab2195998d63a9690a533d3f2)), closes [#3819](https://github.com/conventional-changelog/commitlint/issues/3819) -### Features -* adds support for plugins ([#228](https://github.com/conventional-changelog/commitlint/issues/228)) ([#588](https://github.com/conventional-changelog/commitlint/issues/588)) ([cea4564](https://github.com/conventional-changelog/commitlint/commit/cea4564)) +## [18.4.4](https://github.com/conventional-changelog/commitlint/compare/v18.4.3...v18.4.4) (2024-01-04) +**Note:** Version bump only for package @commitlint/cli -## [7.5.2](https://github.com/conventional-changelog/commitlint/compare/v7.5.1...v7.5.2) (2019-02-11) -### Bug Fixes -* **cli:** replace old links with new organisation links ([#578](https://github.com/conventional-changelog/commitlint/issues/578)) ([4075903](https://github.com/conventional-changelog/commitlint/commit/4075903)) +## [18.4.3](https://github.com/conventional-changelog/commitlint/compare/v18.4.2...v18.4.3) (2023-11-21) + +**Note:** Version bump only for package @commitlint/cli -## [7.5.1](https://github.com/conventional-changelog/commitlint/compare/v7.5.0...v7.5.1) (2019-02-09) +## [18.4.2](https://github.com/conventional-changelog/commitlint/compare/v18.4.1...v18.4.2) (2023-11-16) **Note:** Version bump only for package @commitlint/cli @@ -281,564 +280,906 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -<a name="7.5.0"></a> -# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) +## [18.4.1](https://github.com/conventional-changelog/commitlint/compare/v18.4.0...v18.4.1) (2023-11-12) +**Note:** Version bump only for package @commitlint/cli -### Bug Fixes -* **cli:** avoid linebreak in empty input ([#523](https://github.com/conventional-changelog/commitlint/issues/523)) ([3141882](https://github.com/conventional-changelog/commitlint/commit/3141882)) -* all broken website references ([#564](https://github.com/conventional-changelog/commitlint/issues/564)) ([82eeb5a](https://github.com/conventional-changelog/commitlint/commit/82eeb5a)) -* cleanup message for input with no config ([#519](https://github.com/conventional-changelog/commitlint/issues/519)) ([7d9e760](https://github.com/conventional-changelog/commitlint/commit/7d9e760)) -* replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) -* replace all website references with conventional changelog ([#563](https://github.com/conventional-changelog/commitlint/issues/563)) ([6b86fb1](https://github.com/conventional-changelog/commitlint/commit/6b86fb1)) +# [18.4.0](https://github.com/conventional-changelog/commitlint/compare/v18.3.0...v18.4.0) (2023-11-10) + +**Note:** Version bump only for package @commitlint/cli -<a name="7.4.0"></a> -# [7.4.0](https://github.com/conventional-changelog/commitlint/compare/v7.3.2...v7.4.0) (2019-01-27) +# [18.2.0](https://github.com/conventional-changelog/commitlint/compare/v18.1.0...v18.2.0) (2023-10-26) + **Note:** Version bump only for package @commitlint/cli -<a name="7.3.2"></a> -## [7.3.2](https://github.com/conventional-changelog/commitlint/compare/v7.3.1...v7.3.2) (2019-01-15) +# [18.1.0](https://github.com/conventional-changelog/commitlint/compare/v18.0.0...v18.1.0) (2023-10-25) + **Note:** Version bump only for package @commitlint/cli -<a name="7.3.1"></a> -## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) -**Note:** Version bump only for package @commitlint/cli +# [18.0.0](https://github.com/conventional-changelog/commitlint/compare/v17.8.1...v18.0.0) (2023-10-20) -<a name="7.3.0"></a> -# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) +* chore!: minimum node version v18 (#3644) ([5b4aeaf](https://github.com/conventional-changelog/commitlint/commit/5b4aeaf4f01c2726a7bc8631a23bb34c849baad2)), closes [#3644](https://github.com/conventional-changelog/commitlint/issues/3644) -### Bug Fixes -* add fallback with husky git params to deprecation handling ([#498](https://github.com/conventional-changelog/commitlint/issues/498)) ([5a34b8c](https://github.com/conventional-changelog/commitlint/commit/5a34b8c)) -* avoid truncated output on macOS ([#503](https://github.com/conventional-changelog/commitlint/issues/503)) ([3192368](https://github.com/conventional-changelog/commitlint/commit/3192368)) -* respect String.protoype.repeat API contract ([f27e7ac](https://github.com/conventional-changelog/commitlint/commit/f27e7ac)) -* update to security-patched dependency versions ([97c033b](https://github.com/conventional-changelog/commitlint/commit/97c033b)) -* use correct label for failing empty subjects ([#481](https://github.com/conventional-changelog/commitlint/issues/481)) ([2e7e34d](https://github.com/conventional-changelog/commitlint/commit/2e7e34d)), closes [#476](https://github.com/conventional-changelog/commitlint/issues/476) +### BREAKING CHANGES +* drop node v14 and v16 support -### Features +* chore: remove unused types -* check stage before entering prompt ([#495](https://github.com/conventional-changelog/commitlint/issues/495)) ([3b3667a](https://github.com/conventional-changelog/commitlint/commit/3b3667a)), closes [#51](https://github.com/conventional-changelog/commitlint/issues/51) [#51](https://github.com/conventional-changelog/commitlint/issues/51) -* warn on empty config ([#491](https://github.com/conventional-changelog/commitlint/issues/491)) ([b6bd36e](https://github.com/conventional-changelog/commitlint/commit/b6bd36e)), closes [#107](https://github.com/conventional-changelog/commitlint/issues/107) [#107](https://github.com/conventional-changelog/commitlint/issues/107) +* docs: prepare node update and new release +* chore!: minimum TS version v5 +* drop TS v4 support +* ci: remove node v14/16 checks +* chore: adjust node types to minimal supported version -<a name="7.2.1"></a> -## [7.2.1](https://github.com/conventional-changelog/commitlint/compare/v7.2.0...v7.2.1) (2018-10-11) +* chore!: further major versions of other deps +* upgrade conventional-changelog-conventionalcommits, conventional-commits-parser, conventional-changelog-atom, +* docs: simplify releases and remove roadmap -### Bug Fixes -* improve format module resolving ([#464](https://github.com/conventional-changelog/commitlint/issues/464)) ([baed8b1](https://github.com/conventional-changelog/commitlint/commit/baed8b1)) +## [17.8.1](https://github.com/conventional-changelog/commitlint/compare/v17.8.0...v17.8.1) (2023-10-20) -<a name="7.2.0"></a> -# [7.2.0](https://github.com/conventional-changelog/commitlint/compare/v7.1.2...v7.2.0) (2018-10-05) +**Note:** Version bump only for package @commitlint/cli -### Features -* **cli:** add format option for report output ([1ecf097](https://github.com/conventional-changelog/commitlint/commit/1ecf097)) +# [17.8.0](https://github.com/conventional-changelog/commitlint/compare/v17.7.2...v17.8.0) (2023-10-14) +**Note:** Version bump only for package @commitlint/cli -<a name="7.1.2"></a> -## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) +## [17.7.2](https://github.com/conventional-changelog/commitlint/compare/v17.7.1...v17.7.2) (2023-09-28) + **Note:** Version bump only for package @commitlint/cli -<a name="7.1.0"></a> -# [7.1.0](https://github.com/conventional-changelog/commitlint/compare/v7.0.1...v7.1.0) (2018-08-29) +## [17.7.1](https://github.com/conventional-changelog/commitlint/compare/v17.7.0...v17.7.1) (2023-08-10) + **Note:** Version bump only for package @commitlint/cli -<a name="6.2.0"></a> -# [6.2.0](https://github.com/conventional-changelog/commitlint/compare/v6.1.3...v6.2.0) (2018-05-01) -### Features -* print commit message when the message is invalid ([86c34f1](https://github.com/conventional-changelog/commitlint/commit/86c34f1)), closes [#222](https://github.com/conventional-changelog/commitlint/issues/222) +# [17.7.0](https://github.com/conventional-changelog/commitlint/compare/v17.6.7...v17.7.0) (2023-08-09) +**Note:** Version bump only for package @commitlint/cli -<a name="6.1.1"></a> -## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) +## [17.6.7](https://github.com/conventional-changelog/commitlint/compare/v17.6.6...v17.6.7) (2023-07-19) **Note:** Version bump only for package @commitlint/cli -<a name="6.1.0"></a> -# [6.1.0](https://github.com/conventional-changelog/commitlint/compare/v6.0.5...v6.1.0) (2018-02-03) -### Features -* add "--config" option ([#261](https://github.com/conventional-changelog/commitlint/issues/261)) ([2c03ec6](https://github.com/conventional-changelog/commitlint/commit/2c03ec6)) +## [17.6.6](https://github.com/conventional-changelog/commitlint/compare/v17.6.5...v17.6.6) (2023-06-24) +**Note:** Version bump only for package @commitlint/cli -<a name="6.0.5"></a> -## [6.0.5](https://github.com/conventional-changelog/commitlint/compare/v6.0.4...v6.0.5) (2018-01-31) +## [17.6.5](https://github.com/conventional-changelog/commitlint/compare/v17.6.4...v17.6.5) (2023-05-30) **Note:** Version bump only for package @commitlint/cli -<a name="6.0.4"></a> -## [6.0.4](https://github.com/conventional-changelog/commitlint/compare/v6.0.3...v6.0.4) (2018-01-31) +## [17.6.3](https://github.com/conventional-changelog/commitlint/compare/v17.6.2...v17.6.3) (2023-05-04) + **Note:** Version bump only for package @commitlint/cli -<a name="6.0.3"></a> -## [6.0.3](https://github.com/conventional-changelog/commitlint/compare/v6.0.2...v6.0.3) (2018-01-31) +## [17.6.1](https://github.com/conventional-changelog/commitlint/compare/v17.6.0...v17.6.1) (2023-04-14) + **Note:** Version bump only for package @commitlint/cli -<a name="6.0.2"></a> -## [6.0.2](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.2) (2018-01-12) +# [17.6.0](https://github.com/conventional-changelog/commitlint/compare/v17.5.1...v17.6.0) (2023-04-13) + **Note:** Version bump only for package @commitlint/cli -<a name="6.0.1"></a> -## [6.0.1](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.1) (2018-01-09) +## [17.5.1](https://github.com/conventional-changelog/commitlint/compare/v17.5.0...v17.5.1) (2023-03-28) + **Note:** Version bump only for package @commitlint/cli -<a name="6.0.0"></a> -# [6.0.0](https://github.com/conventional-changelog/commitlint/compare/v5.2.6...v6.0.0) (2018-01-09) -### Bug Fixes -* correctly resolve parserOpts [#115](https://github.com/conventional-changelog/commitlint/issues/115) [#95](https://github.com/conventional-changelog/commitlint/issues/95) ([1353dd5](https://github.com/conventional-changelog/commitlint/commit/1353dd5)) +# [17.5.0](https://github.com/conventional-changelog/commitlint/compare/v17.4.4...v17.5.0) (2023-03-22) +**Note:** Version bump only for package @commitlint/cli -<a name="5.2.6"></a> -## [5.2.6](https://github.com/conventional-changelog/commitlint/compare/v5.2.5...v5.2.6) (2017-12-21) +## [17.4.4](https://github.com/conventional-changelog/commitlint/compare/v17.4.3...v17.4.4) (2023-02-17) **Note:** Version bump only for package @commitlint/cli -<a name="5.2.5"></a> -## [5.2.5](https://github.com/conventional-changelog/commitlint/compare/v5.2.4...v5.2.5) (2017-12-08) +## [17.4.3](https://github.com/conventional-changelog/commitlint/compare/v17.4.2...v17.4.3) (2023-02-13) + **Note:** Version bump only for package @commitlint/cli -<a name="5.2.4"></a> -## [5.2.4](https://github.com/conventional-changelog/commitlint/compare/v5.2.3...v5.2.4) (2017-12-08) +## [17.4.2](https://github.com/conventional-changelog/commitlint/compare/v17.4.1...v17.4.2) (2023-01-12) + **Note:** Version bump only for package @commitlint/cli -<a name="5.2.3"></a> -## [5.2.3](https://github.com/conventional-changelog/commitlint/compare/v5.2.2...v5.2.3) (2017-12-05) -### Bug Fixes -* **cli:** add support for GIT_PARAMS on windows ([c62bd41](https://github.com/conventional-changelog/commitlint/commit/c62bd41)), closes [#103](https://github.com/conventional-changelog/commitlint/issues/103) [#175](https://github.com/conventional-changelog/commitlint/issues/175) + +## [17.4.1](https://github.com/conventional-changelog/commitlint/compare/v17.4.0...v17.4.1) (2023-01-09) + +**Note:** Version bump only for package @commitlint/cli -<a name="5.2.0"></a> -# [5.2.0](https://github.com/conventional-changelog/commitlint/compare/v5.1.3...v5.2.0) (2017-11-30) +# [17.4.0](https://github.com/conventional-changelog/commitlint/compare/v17.3.0...v17.4.0) (2023-01-04) +### Bug Fixes + +- update dependency fs-extra to v11 ([#3460](https://github.com/conventional-changelog/commitlint/issues/3460)) ([a437923](https://github.com/conventional-changelog/commitlint/commit/a43792388e0d9707da770b26592c5e31553384a1)) +# [17.3.0](https://github.com/conventional-changelog/commitlint/compare/v17.2.1...v17.3.0) (2022-11-21) **Note:** Version bump only for package @commitlint/cli -<a name="5.1.1"></a> -## [5.1.1](https://github.com/conventional-changelog/commitlint/compare/v5.1.0...v5.1.1) (2017-11-24) +# [17.2.0](https://github.com/conventional-changelog/commitlint/compare/v17.1.2...v17.2.0) (2022-10-31) +### Features +- **cli:** add strict mode ([#3384](https://github.com/conventional-changelog/commitlint/issues/3384)) ([#3385](https://github.com/conventional-changelog/commitlint/issues/3385)) ([fdff2be](https://github.com/conventional-changelog/commitlint/commit/fdff2bee2d688698555de1cab904d0f5038075b1)) +## [17.1.2](https://github.com/conventional-changelog/commitlint/compare/v17.1.1...v17.1.2) (2022-08-29) **Note:** Version bump only for package @commitlint/cli -<a name="5.1.0"></a> -# [5.1.0](https://github.com/conventional-changelog/commitlint/compare/v5.0.2...v5.1.0) (2017-11-24) +## [17.1.1](https://github.com/conventional-changelog/commitlint/compare/v17.1.0...v17.1.1) (2022-08-27) +**Note:** Version bump only for package @commitlint/cli -### Bug Fixes +# [17.1.0](https://github.com/conventional-changelog/commitlint/compare/v17.0.3...v17.1.0) (2022-08-27) -* update dependency concurrently to v3.5.1 ([#147](https://github.com/conventional-changelog/commitlint/issues/147)) ([a809d0f](https://github.com/conventional-changelog/commitlint/commit/a809d0f)) +### Features +- **commitlint:** add additional git log args ([#3334](https://github.com/conventional-changelog/commitlint/issues/3334)) ([229c65b](https://github.com/conventional-changelog/commitlint/commit/229c65b60f15c15da5f5b11deb555d1f557c673a)) -### Features +## [17.0.3](https://github.com/conventional-changelog/commitlint/compare/v17.0.2...v17.0.3) (2022-06-25) -* **travis-cli:** add reusable travis command line interface ([3e6e6a8](https://github.com/conventional-changelog/commitlint/commit/3e6e6a8)) +**Note:** Version bump only for package @commitlint/cli +## [17.0.2](https://github.com/conventional-changelog/commitlint/compare/v17.0.1...v17.0.2) (2022-06-01) +**Note:** Version bump only for package @commitlint/cli +## [17.0.1](https://github.com/conventional-changelog/commitlint/compare/v17.0.0...v17.0.1) (2022-05-25) -<a name="5.0.1"></a> -## [5.0.1](https://github.com/conventional-changelog/commitlint/compare/v5.0.0...v5.0.1) (2017-11-19) +### Bug Fixes +- **cli:** use `core.commentChar` from git config with `--edit` flag ([#3191](https://github.com/conventional-changelog/commitlint/issues/3191)) ([e5fee05](https://github.com/conventional-changelog/commitlint/commit/e5fee05301ab7441b6091e4ee6fc095d26bbd589)), closes [#3190](https://github.com/conventional-changelog/commitlint/issues/3190) [#3190](https://github.com/conventional-changelog/commitlint/issues/3190) [#3190](https://github.com/conventional-changelog/commitlint/issues/3190) +# [17.0.0](https://github.com/conventional-changelog/commitlint/compare/v16.3.0...v17.0.0) (2022-05-16) +- chore!: minimum node version v14 (#3128) ([ac5f9b4](https://github.com/conventional-changelog/commitlint/commit/ac5f9b47a9e3cd5c9d58b14da0feb426f06b1ef9)), closes [#3128](https://github.com/conventional-changelog/commitlint/issues/3128) -**Note:** Version bump only for package @commitlint/cli +### BREAKING CHANGES -<a name="4.3.0"></a> -# [4.3.0](https://github.com/conventional-changelog/commitlint/compare/v4.2.2...v4.3.0) (2017-11-08) +- drop node v12 support +- chore: rename circleci windows job +node version is not defned by the name anyways (i think) +# [16.3.0](https://github.com/conventional-changelog/commitlint/compare/v16.2.4...v16.3.0) (2022-05-14) **Note:** Version bump only for package @commitlint/cli -<a name="4.2.2"></a> -## [4.2.2](https://github.com/conventional-changelog/commitlint/compare/v4.2.1...v4.2.2) (2017-10-26) +## [16.2.4](https://github.com/conventional-changelog/commitlint/compare/v16.2.3...v16.2.4) (2022-04-28) + +**Note:** Version bump only for package @commitlint/cli +## [16.2.3](https://github.com/conventional-changelog/commitlint/compare/v16.2.2...v16.2.3) (2022-03-16) +**Note:** Version bump only for package @commitlint/cli +## [16.2.1](https://github.com/conventional-changelog/commitlint/compare/v16.2.0...v16.2.1) (2022-02-13) **Note:** Version bump only for package @commitlint/cli -<a name="4.2.1"></a> -## [4.2.1](https://github.com/conventional-changelog/commitlint/compare/v4.2.0...v4.2.1) (2017-10-18) +# [16.1.0](https://github.com/conventional-changelog/commitlint/compare/v16.0.3...v16.1.0) (2022-01-20) +**Note:** Version bump only for package @commitlint/cli -### Bug Fixes +## [16.0.3](https://github.com/conventional-changelog/commitlint/compare/v16.0.2...v16.0.3) (2022-01-19) -* nicer error messages ([#93](https://github.com/conventional-changelog/commitlint/issues/93)) ([dcfad61](https://github.com/conventional-changelog/commitlint/commit/dcfad61)) -* **core:** consider config outside of current git repo ([f7234b6](https://github.com/conventional-changelog/commitlint/commit/f7234b6)) +**Note:** Version bump only for package @commitlint/cli +## [16.0.2](https://github.com/conventional-changelog/commitlint/compare/v16.0.1...v16.0.2) (2022-01-09) +**Note:** Version bump only for package @commitlint/cli +## [16.0.1](https://github.com/conventional-changelog/commitlint/compare/v16.0.0...v16.0.1) (2021-12-28) -<a name="4.2.0"></a> -# [4.2.0](https://github.com/conventional-changelog/commitlint/compare/v4.1.1...v4.2.0) (2017-10-14) +**Note:** Version bump only for package @commitlint/cli +# [16.0.0](https://github.com/conventional-changelog/commitlint/compare/v15.0.0...v16.0.0) (2021-12-26) ### Features -* edit flag now accepts the path to the commit file ([c881433](https://github.com/conventional-changelog/commitlint/commit/c881433)), closes [#40](https://github.com/conventional-changelog/commitlint/issues/40) - +- config validation ([#2412](https://github.com/conventional-changelog/commitlint/issues/2412)) ([c717202](https://github.com/conventional-changelog/commitlint/commit/c7172022097b11f46b33617e4a94d751243c1049)), closes [#327](https://github.com/conventional-changelog/commitlint/issues/327) +# [15.0.0](https://github.com/conventional-changelog/commitlint/compare/v14.2.0...v15.0.0) (2021-11-17) +### Features -<a name="4.1.1"></a> -## [4.1.1](https://github.com/conventional-changelog/commitlint/compare/v4.1.0...v4.1.1) (2017-10-09) +- simplify config resolution ([#2398](https://github.com/conventional-changelog/commitlint/issues/2398)) ([8a8384f](https://github.com/conventional-changelog/commitlint/commit/8a8384f3c18954447cb633e76a573e1db71a1440)), closes [#327](https://github.com/conventional-changelog/commitlint/issues/327) +# [14.1.0](https://github.com/conventional-changelog/commitlint/compare/v14.0.0...v14.1.0) (2021-11-01) +**Note:** Version bump only for package @commitlint/cli +# [14.0.0](https://github.com/conventional-changelog/commitlint/compare/v13.2.1...v14.0.0) (2021-10-26) **Note:** Version bump only for package @commitlint/cli -<a name="4.1.0"></a> -# [4.1.0](https://github.com/conventional-changelog/commitlint/compare/v4.0.0...v4.1.0) (2017-10-05) - +## [13.2.1](https://github.com/conventional-changelog/commitlint/compare/v13.2.0...v13.2.1) (2021-10-09) +**Note:** Version bump only for package @commitlint/cli +# [13.2.0](https://github.com/conventional-changelog/commitlint/compare/v13.1.0...v13.2.0) (2021-09-28) **Note:** Version bump only for package @commitlint/cli -<a name="4.0.0"></a> -# [4.0.0](https://github.com/conventional-changelog/commitlint/compare/v3.2.0...v4.0.0) (2017-10-04) +# [13.1.0](https://github.com/conventional-changelog/commitlint/compare/v13.0.0...v13.1.0) (2021-07-24) +### Bug Fixes -### Features +- **cli:** remove hard coded comment char with linting `COMMIT_EDIT_MSG` ([#2618](https://github.com/conventional-changelog/commitlint/issues/2618)) ([5badf6d](https://github.com/conventional-changelog/commitlint/commit/5badf6dc08116ed3557e6c780e55764b4f07ca67)), closes [#2351](https://github.com/conventional-changelog/commitlint/issues/2351) -* enable alternative config formats ([#83](https://github.com/conventional-changelog/commitlint/issues/83)) ([91968b8](https://github.com/conventional-changelog/commitlint/commit/91968b8)), closes [#73](https://github.com/conventional-changelog/commitlint/issues/73) +# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) +- chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) ### BREAKING CHANGES -* discontinue support of conventional-changelog-lintrc +- minimum node version is 12 -* test: make git setup reliable +## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) +### Bug Fixes +- update dependency fs-extra to v10 ([#2575](https://github.com/conventional-changelog/commitlint/issues/2575)) ([d47d2b5](https://github.com/conventional-changelog/commitlint/commit/d47d2b595b980adadd4fb8ff198c1914caeff18f)) +- update dependency yargs to v17 ([#2574](https://github.com/conventional-changelog/commitlint/issues/2574)) ([81c38dd](https://github.com/conventional-changelog/commitlint/commit/81c38ddf15f239b525f673b26b2ee6606f2ee8f6)) +## [12.1.2](https://github.com/conventional-changelog/commitlint/compare/v12.1.1...v12.1.2) (2021-04-29) -<a name="3.2.0"></a> -# 3.2.0 (2017-09-05) +**Note:** Version bump only for package @commitlint/cli +## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) -### Features +**Note:** Version bump only for package @commitlint/cli -* add preset parser ([5cd2335](https://github.com/conventional-changelog/commitlint/commit/5cd2335)) +# [12.1.0](https://github.com/conventional-changelog/commitlint/compare/v12.0.1...v12.1.0) (2021-03-06) +**Note:** Version bump only for package @commitlint/cli +## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) -<a name="3.1.3"></a> -## 3.1.3 (2017-08-21) +**Note:** Version bump only for package @commitlint/cli +# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) ### Bug Fixes -* **core:** determine git root correctly in sub directories ([#64](https://github.com/conventional-changelog/commitlint/issues/64)) ([d594ec4](https://github.com/conventional-changelog/commitlint/commit/d594ec4)), closes [#62](https://github.com/conventional-changelog/commitlint/issues/62) +- update dependency execa to v5 ([#2341](https://github.com/conventional-changelog/commitlint/issues/2341)) ([f349df9](https://github.com/conventional-changelog/commitlint/commit/f349df90f08096a9bcad46b5e55b411aac327a24)) +- update dependency yargs to v16 ([204f36d](https://github.com/conventional-changelog/commitlint/commit/204f36d0a522afaf3a88739b401aea15ffa0b891)) +### Features +- **cli:** implement print-config cli flag ([#2391](https://github.com/conventional-changelog/commitlint/issues/2391)) ([8626883](https://github.com/conventional-changelog/commitlint/commit/86268833946dea9dcf1c15459456cd4427d17835)) +- **load:** allow specifying helpUrl via config ([#2180](https://github.com/conventional-changelog/commitlint/issues/2180)) ([d6795a3](https://github.com/conventional-changelog/commitlint/commit/d6795a3c4633ba6efd7a0fcff48339dc291cd832)) -<a name="3.1.2"></a> -## 3.1.2 (2017-08-07) +# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) +### Bug Fixes +- **cli:** remove default value from edit option [#2065](https://github.com/conventional-changelog/commitlint/issues/2065) ([3d4116d](https://github.com/conventional-changelog/commitlint/commit/3d4116d044a2f5149a9c9c1d9fa35abf5e232479)) -<a name="3.1.1"></a> -## 3.1.1 (2017-08-07) +# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) +### Bug Fixes +- update dependency execa to v4 ([#1936](https://github.com/conventional-changelog/commitlint/issues/1936)) ([8efb441](https://github.com/conventional-changelog/commitlint/commit/8efb44193058d286f7325327a6d33936b273ec91)) +- update dependency fs-extra to v9 ([#1018](https://github.com/conventional-changelog/commitlint/issues/1018)) ([2df49fa](https://github.com/conventional-changelog/commitlint/commit/2df49fac907993ae78199a1012e918b0e2ff5621)) +- update dependency get-stdin to v8 ([#1938](https://github.com/conventional-changelog/commitlint/issues/1938)) ([f94a5c8](https://github.com/conventional-changelog/commitlint/commit/f94a5c82861523aa1cf407ffe062f99ecbbfb4e4)) -<a name="3.0.4"></a> -## 3.0.4 (2017-08-04) +- refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) +### BREAKING CHANGES -### Bug Fixes +- remove node 8 from circle-ci checks -* **core:** correct type validation message ([09c2b26](https://github.com/conventional-changelog/commitlint/commit/09c2b26)) +also remove node 13 because we do not support experimental versions +- docs: update node v10 to latest LTS 10 version +Co-authored-by: Cedric van Putten <me@bycedric.com> -<a name="3.0.3"></a> -## 3.0.3 (2017-07-16) +Co-authored-by: Cedric van Putten <me@bycedric.com> +## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) +**Note:** Version bump only for package @commitlint/cli -<a name="3.0.2"></a> -## 3.0.2 (2017-07-11) +## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) +**Note:** Version bump only for package @commitlint/cli -### Bug Fixes +# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) -* **cli:** remove destructuring for node 4 support ([fe8caff](https://github.com/conventional-changelog/commitlint/commit/fe8caff)) -* ensure node4 compat ([bfeb653](https://github.com/conventional-changelog/commitlint/commit/bfeb653)) +### Bug Fixes +- update dependency chalk to v4 ([#1275](https://github.com/conventional-changelog/commitlint/issues/1275)) ([a5d8fa1](https://github.com/conventional-changelog/commitlint/commit/a5d8fa118e8221361f14f5fd2b21d7aaad008a27)) +- update dependency regenerator-runtime to v0.13.5 ([#1017](https://github.com/conventional-changelog/commitlint/issues/1017)) ([9c4fdf1](https://github.com/conventional-changelog/commitlint/commit/9c4fdf1b5f42677422532dad655af9aed9b43881)) +## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) +### Bug Fixes -<a name="3.1.3"></a> -## 3.1.3 (2017-08-21) +- add missing @babel/runtime dep [#1738](https://github.com/conventional-changelog/commitlint/issues/1738) ([#1754](https://github.com/conventional-changelog/commitlint/issues/1754)) ([09afcd6](https://github.com/conventional-changelog/commitlint/commit/09afcd647a2c1d00538cf1c970e3790d936111f8)) +# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) ### Bug Fixes -* **core:** determine git root correctly in sub directories ([#64](https://github.com/conventional-changelog/commitlint/issues/64)) ([d594ec4](https://github.com/conventional-changelog/commitlint/commit/d594ec4)), closes [#62](https://github.com/conventional-changelog/commitlint/issues/62) +- **cli:** add missing regenerator-runtime to dependencies ([#919](https://github.com/conventional-changelog/commitlint/issues/919)) ([ee5eac9](https://github.com/conventional-changelog/commitlint/commit/ee5eac98fa97ba5ba17030c8d2705aee5c7f3a3a)) +- [#840](https://github.com/conventional-changelog/commitlint/issues/840) add caret to lodash versions ([#843](https://github.com/conventional-changelog/commitlint/issues/843)) ([ffc0bac](https://github.com/conventional-changelog/commitlint/commit/ffc0bac26993acb2ab6a8fa51065f93c92b0d644)) +## [8.3.5](https://github.com/conventional-changelog/commitlint/compare/v8.3.4...v8.3.5) (2020-01-15) +**Note:** Version bump only for package @commitlint/cli -<a name="3.1.2"></a> -## 3.1.2 (2017-08-07) +## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) +**Note:** Version bump only for package @commitlint/cli +## [8.3.1](https://github.com/conventional-changelog/commitlint/compare/v8.3.0...v8.3.1) (2019-10-16) -<a name="3.1.1"></a> -## 3.1.1 (2017-08-07) +**Note:** Version bump only for package @commitlint/cli +# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) +### Features -<a name="3.0.4"></a> -## 3.0.4 (2017-08-04) +- **cli:** add helpurl flag ([#789](https://github.com/conventional-changelog/commitlint/issues/789)) ([75cef4e](https://github.com/conventional-changelog/commitlint/commit/75cef4e)) +# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) ### Bug Fixes -* **core:** correct type validation message ([09c2b26](https://github.com/conventional-changelog/commitlint/commit/09c2b26)) +- pass defaultIgnores from configuration in @commitlint/cli ([#771](https://github.com/conventional-changelog/commitlint/issues/771)) ([a259014](https://github.com/conventional-changelog/commitlint/commit/a259014)) +# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) +### Bug Fixes -<a name="3.0.3"></a> -## 3.0.3 (2017-07-16) +- pass ignores from configuration in @commitlint/cli ([#668](https://github.com/conventional-changelog/commitlint/issues/668)) ([da99aaa](https://github.com/conventional-changelog/commitlint/commit/da99aaa)) +## [7.6.1](https://github.com/conventional-changelog/commitlint/compare/v7.6.0...v7.6.1) (2019-05-09) +**Note:** Version bump only for package @commitlint/cli -<a name="3.0.2"></a> -## 3.0.2 (2017-07-11) +# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) + +### Bug Fixes + +- avoid excessive help text [#606](https://github.com/conventional-changelog/commitlint/issues/606) ([#637](https://github.com/conventional-changelog/commitlint/issues/637)) ([8f3c3b1](https://github.com/conventional-changelog/commitlint/commit/8f3c3b1)) + +### Features +- adds support for plugins ([#228](https://github.com/conventional-changelog/commitlint/issues/228)) ([#588](https://github.com/conventional-changelog/commitlint/issues/588)) ([cea4564](https://github.com/conventional-changelog/commitlint/commit/cea4564)) + +## [7.5.2](https://github.com/conventional-changelog/commitlint/compare/v7.5.1...v7.5.2) (2019-02-11) ### Bug Fixes -* **cli:** remove destructuring for node 4 support ([fe8caff](https://github.com/conventional-changelog/commitlint/commit/fe8caff)) -* ensure node4 compat ([bfeb653](https://github.com/conventional-changelog/commitlint/commit/bfeb653)) +- **cli:** replace old links with new organisation links ([#578](https://github.com/conventional-changelog/commitlint/issues/578)) ([4075903](https://github.com/conventional-changelog/commitlint/commit/4075903)) +## [7.5.1](https://github.com/conventional-changelog/commitlint/compare/v7.5.0...v7.5.1) (2019-02-09) +**Note:** Version bump only for package @commitlint/cli +<a name="7.5.0"></a> -<a name="3.1.2"></a> -## 3.1.2 (2017-08-07) +# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) +### Bug Fixes +- **cli:** avoid linebreak in empty input ([#523](https://github.com/conventional-changelog/commitlint/issues/523)) ([3141882](https://github.com/conventional-changelog/commitlint/commit/3141882)) +- all broken website references ([#564](https://github.com/conventional-changelog/commitlint/issues/564)) ([82eeb5a](https://github.com/conventional-changelog/commitlint/commit/82eeb5a)) +- cleanup message for input with no config ([#519](https://github.com/conventional-changelog/commitlint/issues/519)) ([7d9e760](https://github.com/conventional-changelog/commitlint/commit/7d9e760)) +- replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) +- replace all website references with conventional changelog ([#563](https://github.com/conventional-changelog/commitlint/issues/563)) ([6b86fb1](https://github.com/conventional-changelog/commitlint/commit/6b86fb1)) -<a name="3.1.1"></a> -## 3.1.1 (2017-08-07) +<a name="7.4.0"></a> +# [7.4.0](https://github.com/conventional-changelog/commitlint/compare/v7.3.2...v7.4.0) (2019-01-27) +**Note:** Version bump only for package @commitlint/cli -<a name="3.0.4"></a> -## 3.0.4 (2017-08-04) +<a name="7.3.2"></a> +## [7.3.2](https://github.com/conventional-changelog/commitlint/compare/v7.3.1...v7.3.2) (2019-01-15) + +**Note:** Version bump only for package @commitlint/cli + +<a name="7.3.1"></a> + +## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) + +**Note:** Version bump only for package @commitlint/cli + +<a name="7.3.0"></a> + +# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) ### Bug Fixes -* **core:** correct type validation message ([09c2b26](https://github.com/conventional-changelog/commitlint/commit/09c2b26)) +- add fallback with husky git params to deprecation handling ([#498](https://github.com/conventional-changelog/commitlint/issues/498)) ([5a34b8c](https://github.com/conventional-changelog/commitlint/commit/5a34b8c)) +- avoid truncated output on macOS ([#503](https://github.com/conventional-changelog/commitlint/issues/503)) ([3192368](https://github.com/conventional-changelog/commitlint/commit/3192368)) +- respect String.protoype.repeat API contract ([f27e7ac](https://github.com/conventional-changelog/commitlint/commit/f27e7ac)) +- update to security-patched dependency versions ([97c033b](https://github.com/conventional-changelog/commitlint/commit/97c033b)) +- use correct label for failing empty subjects ([#481](https://github.com/conventional-changelog/commitlint/issues/481)) ([2e7e34d](https://github.com/conventional-changelog/commitlint/commit/2e7e34d)), closes [#476](https://github.com/conventional-changelog/commitlint/issues/476) +### Features +- check stage before entering prompt ([#495](https://github.com/conventional-changelog/commitlint/issues/495)) ([3b3667a](https://github.com/conventional-changelog/commitlint/commit/3b3667a)), closes [#51](https://github.com/conventional-changelog/commitlint/issues/51) [#51](https://github.com/conventional-changelog/commitlint/issues/51) +- warn on empty config ([#491](https://github.com/conventional-changelog/commitlint/issues/491)) ([b6bd36e](https://github.com/conventional-changelog/commitlint/commit/b6bd36e)), closes [#107](https://github.com/conventional-changelog/commitlint/issues/107) [#107](https://github.com/conventional-changelog/commitlint/issues/107) -<a name="3.0.3"></a> -## 3.0.3 (2017-07-16) +<a name="7.2.1"></a> +## [7.2.1](https://github.com/conventional-changelog/commitlint/compare/v7.2.0...v7.2.1) (2018-10-11) +### Bug Fixes -<a name="3.0.2"></a> -## 3.0.2 (2017-07-11) +- improve format module resolving ([#464](https://github.com/conventional-changelog/commitlint/issues/464)) ([baed8b1](https://github.com/conventional-changelog/commitlint/commit/baed8b1)) + +<a name="7.2.0"></a> + +# [7.2.0](https://github.com/conventional-changelog/commitlint/compare/v7.1.2...v7.2.0) (2018-10-05) + +### Features + +- **cli:** add format option for report output ([1ecf097](https://github.com/conventional-changelog/commitlint/commit/1ecf097)) + +<a name="7.1.2"></a> + +## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) + +**Note:** Version bump only for package @commitlint/cli + +<a name="7.1.0"></a> + +# [7.1.0](https://github.com/conventional-changelog/commitlint/compare/v7.0.1...v7.1.0) (2018-08-29) + +**Note:** Version bump only for package @commitlint/cli + +<a name="6.2.0"></a> + +# [6.2.0](https://github.com/conventional-changelog/commitlint/compare/v6.1.3...v6.2.0) (2018-05-01) + +### Features +- print commit message when the message is invalid ([86c34f1](https://github.com/conventional-changelog/commitlint/commit/86c34f1)), closes [#222](https://github.com/conventional-changelog/commitlint/issues/222) + +<a name="6.1.1"></a> + +## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) + +**Note:** Version bump only for package @commitlint/cli + +<a name="6.1.0"></a> + +# [6.1.0](https://github.com/conventional-changelog/commitlint/compare/v6.0.5...v6.1.0) (2018-02-03) + +### Features + +- add "--config" option ([#261](https://github.com/conventional-changelog/commitlint/issues/261)) ([2c03ec6](https://github.com/conventional-changelog/commitlint/commit/2c03ec6)) + +<a name="6.0.5"></a> + +## [6.0.5](https://github.com/conventional-changelog/commitlint/compare/v6.0.4...v6.0.5) (2018-01-31) + +**Note:** Version bump only for package @commitlint/cli + +<a name="6.0.4"></a> + +## [6.0.4](https://github.com/conventional-changelog/commitlint/compare/v6.0.3...v6.0.4) (2018-01-31) + +**Note:** Version bump only for package @commitlint/cli + +<a name="6.0.3"></a> + +## [6.0.3](https://github.com/conventional-changelog/commitlint/compare/v6.0.2...v6.0.3) (2018-01-31) + +**Note:** Version bump only for package @commitlint/cli + +<a name="6.0.2"></a> + +## [6.0.2](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.2) (2018-01-12) + +**Note:** Version bump only for package @commitlint/cli + +<a name="6.0.1"></a> + +## [6.0.1](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.1) (2018-01-09) + +**Note:** Version bump only for package @commitlint/cli + +<a name="6.0.0"></a> + +# [6.0.0](https://github.com/conventional-changelog/commitlint/compare/v5.2.6...v6.0.0) (2018-01-09) ### Bug Fixes -* **cli:** remove destructuring for node 4 support ([fe8caff](https://github.com/conventional-changelog/commitlint/commit/fe8caff)) -* ensure node4 compat ([bfeb653](https://github.com/conventional-changelog/commitlint/commit/bfeb653)) +- correctly resolve parserOpts [#115](https://github.com/conventional-changelog/commitlint/issues/115) [#95](https://github.com/conventional-changelog/commitlint/issues/95) ([1353dd5](https://github.com/conventional-changelog/commitlint/commit/1353dd5)) +<a name="5.2.6"></a> +## [5.2.6](https://github.com/conventional-changelog/commitlint/compare/v5.2.5...v5.2.6) (2017-12-21) +**Note:** Version bump only for package @commitlint/cli -<a name="3.0.4"></a> -## 3.0.4 (2017-08-04) +<a name="5.2.5"></a> + +## [5.2.5](https://github.com/conventional-changelog/commitlint/compare/v5.2.4...v5.2.5) (2017-12-08) + +**Note:** Version bump only for package @commitlint/cli + +<a name="5.2.4"></a> + +## [5.2.4](https://github.com/conventional-changelog/commitlint/compare/v5.2.3...v5.2.4) (2017-12-08) + +**Note:** Version bump only for package @commitlint/cli +<a name="5.2.3"></a> + +## [5.2.3](https://github.com/conventional-changelog/commitlint/compare/v5.2.2...v5.2.3) (2017-12-05) ### Bug Fixes -* **core:** correct type validation message ([09c2b26](https://github.com/conventional-changelog/commitlint/commit/09c2b26)) +- **cli:** add support for GIT_PARAMS on windows ([c62bd41](https://github.com/conventional-changelog/commitlint/commit/c62bd41)), closes [#103](https://github.com/conventional-changelog/commitlint/issues/103) [#175](https://github.com/conventional-changelog/commitlint/issues/175) +<a name="5.2.0"></a> +# [5.2.0](https://github.com/conventional-changelog/commitlint/compare/v5.1.3...v5.2.0) (2017-11-30) -<a name="3.0.3"></a> -## 3.0.3 (2017-07-16) +**Note:** Version bump only for package @commitlint/cli +<a name="5.1.1"></a> +## [5.1.1](https://github.com/conventional-changelog/commitlint/compare/v5.1.0...v5.1.1) (2017-11-24) -<a name="3.0.2"></a> -## 3.0.2 (2017-07-11) +**Note:** Version bump only for package @commitlint/cli +<a name="5.1.0"></a> + +# [5.1.0](https://github.com/conventional-changelog/commitlint/compare/v5.0.2...v5.1.0) (2017-11-24) ### Bug Fixes -* **cli:** remove destructuring for node 4 support ([fe8caff](https://github.com/conventional-changelog/commitlint/commit/fe8caff)) -* ensure node4 compat ([bfeb653](https://github.com/conventional-changelog/commitlint/commit/bfeb653)) +- update dependency concurrently to v3.5.1 ([#147](https://github.com/conventional-changelog/commitlint/issues/147)) ([a809d0f](https://github.com/conventional-changelog/commitlint/commit/a809d0f)) +### Features +- **travis-cli:** add reusable travis command line interface ([3e6e6a8](https://github.com/conventional-changelog/commitlint/commit/3e6e6a8)) +<a name="5.0.1"></a> -<a name="3.0.3"></a> -## 3.0.3 (2017-07-16) +## [5.0.1](https://github.com/conventional-changelog/commitlint/compare/v5.0.0...v5.0.1) (2017-11-19) +**Note:** Version bump only for package @commitlint/cli + +<a name="4.3.0"></a> + +# [4.3.0](https://github.com/conventional-changelog/commitlint/compare/v4.2.2...v4.3.0) (2017-11-08) + +**Note:** Version bump only for package @commitlint/cli + +<a name="4.2.2"></a> + +## [4.2.2](https://github.com/conventional-changelog/commitlint/compare/v4.2.1...v4.2.2) (2017-10-26) +**Note:** Version bump only for package @commitlint/cli + +<a name="4.2.1"></a> + +## [4.2.1](https://github.com/conventional-changelog/commitlint/compare/v4.2.0...v4.2.1) (2017-10-18) + +### Bug Fixes + +- nicer error messages ([#93](https://github.com/conventional-changelog/commitlint/issues/93)) ([dcfad61](https://github.com/conventional-changelog/commitlint/commit/dcfad61)) +- **core:** consider config outside of current git repo ([f7234b6](https://github.com/conventional-changelog/commitlint/commit/f7234b6)) + +<a name="4.2.0"></a> + +# [4.2.0](https://github.com/conventional-changelog/commitlint/compare/v4.1.1...v4.2.0) (2017-10-14) + +### Features + +- edit flag now accepts the path to the commit file ([c881433](https://github.com/conventional-changelog/commitlint/commit/c881433)), closes [#40](https://github.com/conventional-changelog/commitlint/issues/40) + +<a name="4.1.1"></a> + +## [4.1.1](https://github.com/conventional-changelog/commitlint/compare/v4.1.0...v4.1.1) (2017-10-09) + +**Note:** Version bump only for package @commitlint/cli + +<a name="4.1.0"></a> + +# [4.1.0](https://github.com/conventional-changelog/commitlint/compare/v4.0.0...v4.1.0) (2017-10-05) + +**Note:** Version bump only for package @commitlint/cli + +<a name="4.0.0"></a> + +# [4.0.0](https://github.com/conventional-changelog/commitlint/compare/v3.2.0...v4.0.0) (2017-10-04) + +### Features + +- enable alternative config formats ([#83](https://github.com/conventional-changelog/commitlint/issues/83)) ([91968b8](https://github.com/conventional-changelog/commitlint/commit/91968b8)), closes [#73](https://github.com/conventional-changelog/commitlint/issues/73) + +### BREAKING CHANGES + +- discontinue support of conventional-changelog-lintrc + +- test: make git setup reliable + +<a name="3.2.0"></a> + +# 3.2.0 (2017-09-05) + +### Features + +- add preset parser ([5cd2335](https://github.com/conventional-changelog/commitlint/commit/5cd2335)) + +<a name="3.1.3"></a> + +## 3.1.3 (2017-08-21) + +### Bug Fixes + +- **core:** determine git root correctly in sub directories ([#64](https://github.com/conventional-changelog/commitlint/issues/64)) ([d594ec4](https://github.com/conventional-changelog/commitlint/commit/d594ec4)), closes [#62](https://github.com/conventional-changelog/commitlint/issues/62) + +<a name="3.1.2"></a> + +## 3.1.2 (2017-08-07) + +<a name="3.1.1"></a> + +## 3.1.1 (2017-08-07) + +<a name="3.0.4"></a> + +## 3.0.4 (2017-08-04) + +### Bug Fixes + +- **core:** correct type validation message ([09c2b26](https://github.com/conventional-changelog/commitlint/commit/09c2b26)) + +<a name="3.0.3"></a> + +## 3.0.3 (2017-07-16) <a name="3.0.2"></a> + ## 3.0.2 (2017-07-11) +### Bug Fixes + +- **cli:** remove destructuring for node 4 support ([fe8caff](https://github.com/conventional-changelog/commitlint/commit/fe8caff)) +- ensure node4 compat ([bfeb653](https://github.com/conventional-changelog/commitlint/commit/bfeb653)) + +<a name="3.1.3"></a> + +## 3.1.3 (2017-08-21) ### Bug Fixes -* **cli:** remove destructuring for node 4 support ([fe8caff](https://github.com/conventional-changelog/commitlint/commit/fe8caff)) -* ensure node4 compat ([bfeb653](https://github.com/conventional-changelog/commitlint/commit/bfeb653)) +- **core:** determine git root correctly in sub directories ([#64](https://github.com/conventional-changelog/commitlint/issues/64)) ([d594ec4](https://github.com/conventional-changelog/commitlint/commit/d594ec4)), closes [#62](https://github.com/conventional-changelog/commitlint/issues/62) +<a name="3.1.2"></a> +## 3.1.2 (2017-08-07) +<a name="3.1.1"></a> + +## 3.1.1 (2017-08-07) + +<a name="3.0.4"></a> + +## 3.0.4 (2017-08-04) + +### Bug Fixes + +- **core:** correct type validation message ([09c2b26](https://github.com/conventional-changelog/commitlint/commit/09c2b26)) + +<a name="3.0.3"></a> + +## 3.0.3 (2017-07-16) <a name="3.0.2"></a> + ## 3.0.2 (2017-07-11) +### Bug Fixes + +- **cli:** remove destructuring for node 4 support ([fe8caff](https://github.com/conventional-changelog/commitlint/commit/fe8caff)) +- ensure node4 compat ([bfeb653](https://github.com/conventional-changelog/commitlint/commit/bfeb653)) + +<a name="3.1.2"></a> + +## 3.1.2 (2017-08-07) + +<a name="3.1.1"></a> + +## 3.1.1 (2017-08-07) + +<a name="3.0.4"></a> + +## 3.0.4 (2017-08-04) ### Bug Fixes -* **cli:** remove destructuring for node 4 support ([fe8caff](https://github.com/conventional-changelog/commitlint/commit/fe8caff)) -* ensure node4 compat ([bfeb653](https://github.com/conventional-changelog/commitlint/commit/bfeb653)) +- **core:** correct type validation message ([09c2b26](https://github.com/conventional-changelog/commitlint/commit/09c2b26)) + +<a name="3.0.3"></a> +## 3.0.3 (2017-07-16) +<a name="3.0.2"></a> +## 3.0.2 (2017-07-11) -<a name="3.0.1"></a> -## 3.0.1 (2017-07-11) +### Bug Fixes + +- **cli:** remove destructuring for node 4 support ([fe8caff](https://github.com/conventional-changelog/commitlint/commit/fe8caff)) +- ensure node4 compat ([bfeb653](https://github.com/conventional-changelog/commitlint/commit/bfeb653)) + +<a name="3.0.4"></a> +## 3.0.4 (2017-08-04) ### Bug Fixes -* **cli:** remove destructuring for node 4 support ([fe8caff](https://github.com/conventional-changelog/commitlint/commit/fe8caff)) -* ensure node4 compat ([bfeb653](https://github.com/conventional-changelog/commitlint/commit/bfeb653)) +- **core:** correct type validation message ([09c2b26](https://github.com/conventional-changelog/commitlint/commit/09c2b26)) +<a name="3.0.3"></a> +## 3.0.3 (2017-07-16) +<a name="3.0.2"></a> -<a name="3.0.1"></a> -## 3.0.1 (2017-07-11) +## 3.0.2 (2017-07-11) +### Bug Fixes +- **cli:** remove destructuring for node 4 support ([fe8caff](https://github.com/conventional-changelog/commitlint/commit/fe8caff)) +- ensure node4 compat ([bfeb653](https://github.com/conventional-changelog/commitlint/commit/bfeb653)) -<a name="3.0.0"></a> -# 3.0.0 (2017-07-10) +<a name="3.0.3"></a> + +## 3.0.3 (2017-07-16) + +<a name="3.0.2"></a> + +## 3.0.2 (2017-07-11) +### Bug Fixes + +- **cli:** remove destructuring for node 4 support ([fe8caff](https://github.com/conventional-changelog/commitlint/commit/fe8caff)) +- ensure node4 compat ([bfeb653](https://github.com/conventional-changelog/commitlint/commit/bfeb653)) + +<a name="3.0.2"></a> + +## 3.0.2 (2017-07-11) ### Bug Fixes -* **cli:** remove destructuring for node 4 support ([94437e8](https://github.com/conventional-changelog/commitlint/commit/94437e8)) -* ensure node4 compat ([a5e658a](https://github.com/conventional-changelog/commitlint/commit/a5e658a)) +- **cli:** remove destructuring for node 4 support ([fe8caff](https://github.com/conventional-changelog/commitlint/commit/fe8caff)) +- ensure node4 compat ([bfeb653](https://github.com/conventional-changelog/commitlint/commit/bfeb653)) +<a name="3.0.1"></a> +## 3.0.1 (2017-07-11) +### Bug Fixes + +- **cli:** remove destructuring for node 4 support ([fe8caff](https://github.com/conventional-changelog/commitlint/commit/fe8caff)) +- ensure node4 compat ([bfeb653](https://github.com/conventional-changelog/commitlint/commit/bfeb653)) + +<a name="3.0.1"></a> + +## 3.0.1 (2017-07-11) <a name="3.0.0"></a> + # 3.0.0 (2017-07-10) +### Bug Fixes + +- **cli:** remove destructuring for node 4 support ([94437e8](https://github.com/conventional-changelog/commitlint/commit/94437e8)) +- ensure node4 compat ([a5e658a](https://github.com/conventional-changelog/commitlint/commit/a5e658a)) + +<a name="3.0.0"></a> + +# 3.0.0 (2017-07-10) ### Bug Fixes -* **cli:** remove destructuring for node 4 support ([94437e8](https://github.com/conventional-changelog/commitlint/commit/94437e8)) -* ensure node4 compat ([a5e658a](https://github.com/conventional-changelog/commitlint/commit/a5e658a)) +- **cli:** remove destructuring for node 4 support ([94437e8](https://github.com/conventional-changelog/commitlint/commit/94437e8)) +- ensure node4 compat ([a5e658a](https://github.com/conventional-changelog/commitlint/commit/a5e658a)) diff --git a/@commitlint/cli/README.md b/@commitlint/cli/README.md index 75f3b0fa4c..d05f13f175 100644 --- a/@commitlint/cli/README.md +++ b/@commitlint/cli/README.md @@ -1,16 +1,11 @@ -> Lint commit messages +# @commitlint/cli <p align="center"> - <img width="750" src="https://conventional-changelog.github.io/commitlint/assets/commitlint.svg"> + <img width="750" src="https://commitlint.js.org/assets/commitlint.svg"> </p> -# @commitlint/cli - -## Getting started +Lint commit messages -``` -npm install --save-dev @commitlint/cli @commitlint/config-angular -echo "module.exports = {extends: ['@commitlint/config-angular']};" > commitlint.config.js -``` +## Documentation -Consult [docs/cli](https://conventional-changelog.github.io/commitlint/#/reference-cli) for comprehensive documentation. +Consult [CLI reference](https://commitlint.js.org/reference/cli) for comprehensive documentation. diff --git a/@commitlint/cli/cli.js b/@commitlint/cli/cli.js index 4856fd706c..940e27804b 100755 --- a/@commitlint/cli/cli.js +++ b/@commitlint/cli/cli.js @@ -1,2 +1,2 @@ #!/usr/bin/env node -require('./lib/cli.js'); +import "./lib/cli.js"; diff --git a/@commitlint/cli/fixtures/comment-char/commitlint.config.js b/@commitlint/cli/fixtures/comment-char/commitlint.config.js index 2292580640..98ea1686e0 100644 --- a/@commitlint/cli/fixtures/comment-char/commitlint.config.js +++ b/@commitlint/cli/fixtures/comment-char/commitlint.config.js @@ -1,6 +1,6 @@ module.exports = { rules: { - 'subject-empty': [2, 'never'] + 'body-empty': [2, 'never'] }, parserPreset: { parserOpts: { diff --git a/@commitlint/cli/fixtures/last-flag-regression/commitlint.config.js b/@commitlint/cli/fixtures/last-flag-regression/commitlint.config.js new file mode 100644 index 0000000000..3230d4c57e --- /dev/null +++ b/@commitlint/cli/fixtures/last-flag-regression/commitlint.config.js @@ -0,0 +1,9 @@ +module.exports = { + rules: { + 'subject-empty': [2, 'never'], + 'type-empty': [2, 'never'], + 'type-enum': [2, 'always', [ + 'test' + ]] + } +}; diff --git a/@commitlint/cli/fixtures/package.json b/@commitlint/cli/fixtures/package.json new file mode 100644 index 0000000000..5bbefffbab --- /dev/null +++ b/@commitlint/cli/fixtures/package.json @@ -0,0 +1,3 @@ +{ + "type": "commonjs" +} diff --git a/@commitlint/cli/fixtures/warning/commitlint.config.js b/@commitlint/cli/fixtures/warning/commitlint.config.js new file mode 100644 index 0000000000..6d5ae18c22 --- /dev/null +++ b/@commitlint/cli/fixtures/warning/commitlint.config.js @@ -0,0 +1,6 @@ +module.exports = { + rules: { + 'type-enum': [2, 'always', ['feat']], + 'subject-max-length': [1, 'always', 4] + } +}; diff --git a/@commitlint/cli/index.js b/@commitlint/cli/index.cjs similarity index 50% rename from @commitlint/cli/index.js rename to @commitlint/cli/index.cjs index bc56366369..6d5d6c0e62 100644 --- a/@commitlint/cli/index.js +++ b/@commitlint/cli/index.cjs @@ -1,3 +1,5 @@ -const path = require('path'); +'use strict'; + +const path = require('node:path'); module.exports = path.join(__dirname, 'cli.js'); diff --git a/@commitlint/cli/package.json b/@commitlint/cli/package.json index e716d67986..7a5ccfc778 100644 --- a/@commitlint/cli/package.json +++ b/@commitlint/cli/package.json @@ -1,12 +1,14 @@ { "name": "@commitlint/cli", - "version": "13.1.0", + "type": "module", + "version": "20.1.0", "description": "Lint your commit messages", "files": [ - "index.js", + "index.cjs", "cli.js", "lib" ], + "main": "index.cjs", "bin": { "commitlint": "./cli.js" }, @@ -15,16 +17,17 @@ "pkg": "pkg-check" }, "engines": { - "node": ">=v12" + "node": ">=v18" }, "repository": { "type": "git", - "url": "https://github.com/conventional-changelog/commitlint.git" + "url": "https://github.com/conventional-changelog/commitlint.git", + "directory": "@commitlint/cli" }, "bugs": { "url": "https://github.com/conventional-changelog/commitlint/issues" }, - "homepage": "https://github.com/conventional-changelog/commitlint#readme", + "homepage": "https://commitlint.js.org/", "keywords": [ "conventional-changelog", "commitlint", @@ -36,22 +39,22 @@ }, "license": "MIT", "devDependencies": { - "@commitlint/test": "^13.0.0", - "@commitlint/utils": "^13.0.0", - "@types/yargs": "^17.0.0", - "execa": "^5.0.0", - "fs-extra": "^10.0.0" + "@commitlint/test": "^20.0.0", + "@commitlint/utils": "^20.0.0", + "@types/lodash.merge": "^4.6.8", + "@types/node": "^18.19.17", + "@types/yargs": "^17.0.29", + "fs-extra": "^11.0.0", + "lodash.merge": "^4.6.2" }, "dependencies": { - "@commitlint/format": "^13.1.0", - "@commitlint/lint": "^13.1.0", - "@commitlint/load": "^13.1.0", - "@commitlint/read": "^13.1.0", - "@commitlint/types": "^13.1.0", - "lodash": "^4.17.19", - "resolve-from": "5.0.0", - "resolve-global": "1.0.0", + "@commitlint/format": "^20.0.0", + "@commitlint/lint": "^20.0.0", + "@commitlint/load": "^20.1.0", + "@commitlint/read": "^20.0.0", + "@commitlint/types": "^20.0.0", + "tinyexec": "^1.0.0", "yargs": "^17.0.0" }, - "gitHead": "70f7f4688b51774e7ac5e40e896cdaa3f132b2bc" + "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" } diff --git a/@commitlint/cli/src/cli-error.ts b/@commitlint/cli/src/cli-error.ts index 757814a1ed..8b21ae31ee 100644 --- a/@commitlint/cli/src/cli-error.ts +++ b/@commitlint/cli/src/cli-error.ts @@ -1,12 +1,26 @@ +export enum ExitCode { + CommitlintDefault = 0, + CommitlintErrorDefault = 1, + CommitLintWarning = 2, + CommitLintError = 3, + CommitlintInvalidArgument = 9, +} + export class CliError extends Error { __proto__ = Error; public type: string; + public error_code: ExitCode; - constructor(message: string, type: string) { + constructor( + message: string, + type: string, + error_code = ExitCode.CommitlintErrorDefault, + ) { super(message); this.type = type; + this.error_code = error_code; Object.setPrototypeOf(this, CliError.prototype); } diff --git a/@commitlint/cli/src/cli.test.ts b/@commitlint/cli/src/cli.test.ts index 324c55e409..d65a5e57ab 100644 --- a/@commitlint/cli/src/cli.test.ts +++ b/@commitlint/cli/src/cli.test.ts @@ -1,10 +1,18 @@ -import {fix, git} from '@commitlint/test'; -import execa from 'execa'; -import fs from 'fs-extra'; -import merge from 'lodash/merge'; -import path from 'path'; +import { describe, test, expect } from "vitest"; +import { createRequire } from "node:module"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; +import { fix, git } from "@commitlint/test"; +import fs from "fs-extra"; +import merge from "lodash.merge"; +import { x } from "tinyexec"; +import { ExitCode } from "./cli-error.js"; -const bin = require.resolve('../cli.js'); +const require = createRequire(import.meta.url); + +const __dirname = path.resolve(fileURLToPath(import.meta.url), ".."); + +const bin = require.resolve("../cli.js"); interface TestOptions { cwd: string; @@ -12,490 +20,617 @@ interface TestOptions { } const cli = (args: string[], options: TestOptions) => { - return (input = '') => { - return execa(bin, args, { - cwd: options.cwd, - env: options.env, - input: input, - reject: false, + return (input = "") => { + const result = x(bin, args, { + nodeOptions: { + cwd: options.cwd, + env: options.env, + }, }); + + result.process?.stdin?.write(input); + result.process?.stdin?.end(); + + return result; }; }; const gitBootstrap = (fixture: string) => git.bootstrap(fixture, __dirname); const fixBootstrap = (fixture: string) => fix.bootstrap(fixture, __dirname); -test('should throw when called without [input]', async () => { - const cwd = await gitBootstrap('fixtures/default'); - const actual = await cli([], {cwd})(); - expect(actual.exitCode).toBe(1); -}); - -test('should reprint input from stdin', async () => { - const cwd = await gitBootstrap('fixtures/default'); - const actual = await cli([], {cwd})('foo: bar'); - expect(actual.stdout).toContain('foo: bar'); -}); - -test('should produce success output with --verbose flag', async () => { - const cwd = await gitBootstrap('fixtures/default'); - const actual = await cli(['--verbose'], {cwd})('type: bar'); - expect(actual.stdout).toContain('0 problems, 0 warnings'); - expect(actual.stderr).toEqual(''); -}); - -test('should produce no output with --quiet flag', async () => { - const cwd = await gitBootstrap('fixtures/default'); - const actual = await cli(['--quiet'], {cwd})('foo: bar'); - expect(actual.stdout).toEqual(''); - expect(actual.stderr).toEqual(''); -}); - -test('should produce no output with -q flag', async () => { - const cwd = await gitBootstrap('fixtures/default'); - const actual = await cli(['-q'], {cwd})('foo: bar'); - expect(actual.stdout).toEqual(''); - expect(actual.stderr).toEqual(''); -}); - -test('should produce help for empty config', async () => { - const cwd = await gitBootstrap('fixtures/empty'); - const actual = await cli([], {cwd})('foo: bar'); - expect(actual.stdout).toContain('Please add rules'); - expect(actual.exitCode).toBe(1); -}); - -test('should produce help for problems', async () => { - const cwd = await gitBootstrap('fixtures/default'); - const actual = await cli([], {cwd})('foo: bar'); - expect(actual.stdout).toContain( - 'Get help: https://github.com/conventional-changelog/commitlint/#what-is-commitlint' +test("should throw when called without [input]", async () => { + const cwd = await gitBootstrap("fixtures/default"); + const result = cli([], { cwd })(); + await result; + expect(result.exitCode).toBe(ExitCode.CommitlintErrorDefault); +}); + +test("should reprint input from stdin", async () => { + const cwd = await gitBootstrap("fixtures/default"); + const result = cli([], { cwd })("foo: bar"); + const output = await result; + expect(output.stdout.trim()).toContain("foo: bar"); +}); + +test("should produce success output with --verbose flag", async () => { + const cwd = await gitBootstrap("fixtures/default"); + const result = cli(["--verbose"], { cwd })("type: bar"); + const output = await result; + expect(output.stdout.trim()).toContain("0 problems, 0 warnings"); + expect(output.stderr).toEqual(""); +}); + +test("should produce last commit and success output with --verbose flag", async () => { + const cwd = await gitBootstrap("fixtures/simple"); + await x("git", ["add", "commitlint.config.js"], { nodeOptions: { cwd } }); + await x("git", ["commit", "-m", '"test: this should work"'], { + nodeOptions: { cwd }, + }); + const result = cli(["--last", "--verbose"], { cwd })(); + const output = await result; + expect(output.stdout.trim()).toContain("0 problems, 0 warnings"); + expect(output.stdout.trim()).toContain("test: this should work"); + expect(output.stderr).toEqual(""); +}); + +test("regression test for running with --last flag", async () => { + const cwd = await gitBootstrap("fixtures/last-flag-regression"); + await x("git", ["add", "commitlint.config.js"], { nodeOptions: { cwd } }); + await x("git", ["commit", "-m", '"test: this should work"'], { + nodeOptions: { cwd }, + }); + const result = cli(["--last", "--verbose"], { cwd })(); + const output = await result; + expect(output.stdout.trim()).toContain("0 problems, 0 warnings"); + expect(output.stdout.trim()).toContain("test: this should work"); + expect(output.stderr).toEqual(""); +}); + +test("should produce no output with --quiet flag", async () => { + const cwd = await gitBootstrap("fixtures/default"); + const result = cli(["--quiet"], { cwd })("foo: bar"); + const output = await result; + expect(output.stdout.trim()).toEqual(""); + expect(output.stderr).toEqual(""); +}); + +test("should produce no output with -q flag", async () => { + const cwd = await gitBootstrap("fixtures/default"); + const result = cli(["-q"], { cwd })("foo: bar"); + const output = await result; + expect(output.stdout.trim()).toEqual(""); + expect(output.stderr).toEqual(""); +}); + +test("should produce help for empty config", async () => { + const cwd = await gitBootstrap("fixtures/empty"); + const result = cli([], { cwd })("foo: bar"); + const output = await result; + expect(output.stdout.trim()).toContain("Please add rules"); + expect(result.exitCode).toBe(ExitCode.CommitlintInvalidArgument); +}); + +test("should produce help for problems", async () => { + const cwd = await gitBootstrap("fixtures/default"); + const result = cli([], { cwd })("foo: bar"); + const output = await result; + expect(output.stdout.trim()).toContain( + "Get help: https://github.com/conventional-changelog/commitlint/#what-is-commitlint", ); - expect(actual.exitCode).toBe(1); -}); - -test('should produce help for problems with correct helpurl', async () => { - const cwd = await gitBootstrap('fixtures/default'); - const actual = await cli( - ['-H https://github.com/conventional-changelog/commitlint/#testhelpurl'], - {cwd} - )('foo: bar'); - expect(actual.stdout).toContain( - 'Get help: https://github.com/conventional-changelog/commitlint/#testhelpurl' + expect(result.exitCode).toBe(ExitCode.CommitlintErrorDefault); +}); + +test("should produce help for problems with correct helpurl", async () => { + const cwd = await gitBootstrap("fixtures/default"); + const result = cli( + ["-H https://github.com/conventional-changelog/commitlint/#testhelpurl"], + { cwd }, + )("foo: bar"); + const output = await result; + expect(output.stdout.trim()).toContain( + "Get help: https://github.com/conventional-changelog/commitlint/#testhelpurl", ); - expect(actual.exitCode).toBe(1); + expect(result.exitCode).toBe(ExitCode.CommitlintErrorDefault); }); -test('should fail for input from stdin without rules', async () => { - const cwd = await gitBootstrap('fixtures/empty'); - const actual = await cli([], {cwd})('foo: bar'); - expect(actual.exitCode).toBe(1); +test("should fail for input from stdin without rules", async () => { + const cwd = await gitBootstrap("fixtures/empty"); + const result = cli([], { cwd })("foo: bar"); + await result; + expect(result.exitCode).toBe(ExitCode.CommitlintInvalidArgument); }); -test('should succeed for input from stdin with rules', async () => { - const cwd = await gitBootstrap('fixtures/default'); - const actual = await cli([], {cwd})('type: bar'); - expect(actual.exitCode).toBe(0); +test("should succeed for input from stdin with rules", async () => { + const cwd = await gitBootstrap("fixtures/default"); + const result = cli([], { cwd })("type: bar"); + await result; + expect(result.exitCode).toBe(ExitCode.CommitlintDefault); }); -test('should fail for input from stdin with rule from rc', async () => { - const cwd = await gitBootstrap('fixtures/simple'); - const actual = await cli([], {cwd})('foo: bar'); - expect(actual.stdout).toContain('type must not be one of [foo]'); - expect(actual.exitCode).toBe(1); +test("should fail for input from stdin with rule from rc", async () => { + const cwd = await gitBootstrap("fixtures/simple"); + const result = cli([], { cwd })("foo: bar"); + const output = await result; + expect(output.stdout.trim()).toContain("type must not be one of [foo]"); + expect(result.exitCode).toBe(ExitCode.CommitlintErrorDefault); }); -test('should work with --config option', async () => { - const file = 'config/commitlint.config.js'; - const cwd = await gitBootstrap('fixtures/specify-config-file'); - const actual = await cli(['--config', file], {cwd})('foo: bar'); - expect(actual.stdout).toContain('type must not be one of [foo]'); - expect(actual.exitCode).toBe(1); +test("should work with --config option", async () => { + const file = "config/commitlint.config.js"; + const cwd = await gitBootstrap("fixtures/specify-config-file"); + const result = cli(["--config", file], { cwd })("foo: bar"); + const output = await result; + expect(output.stdout.trim()).toContain("type must not be one of [foo]"); + expect(result.exitCode).toBe(ExitCode.CommitlintErrorDefault); }); -test('should fail for input from stdin with rule from js', async () => { - const cwd = await gitBootstrap('fixtures/extends-root'); - const actual = await cli(['--extends', './extended'], {cwd})('foo: bar'); - expect(actual.stdout).toContain('type must not be one of [foo]'); - expect(actual.exitCode).toBe(1); +test("should fail for input from stdin with rule from js", async () => { + const cwd = await gitBootstrap("fixtures/extends-root"); + const result = cli(["--extends", "./extended"], { cwd })("foo: bar"); + const output = await result; + expect(output.stdout.trim()).toContain("type must not be one of [foo]"); + expect(result.exitCode).toBe(ExitCode.CommitlintErrorDefault); }); -test('should output help URL defined in config file', async () => { - const cwd = await gitBootstrap('fixtures/help-url'); - const actual = await cli([], {cwd})('foo: bar'); - expect(actual.stdout).toContain('Get help: https://www.example.com/foo'); - expect(actual.exitCode).toBe(1); +test("should output help URL defined in config file", async () => { + const cwd = await gitBootstrap("fixtures/help-url"); + const result = cli([], { cwd })("foo: bar"); + const output = await result; + expect(output.stdout.trim()).toContain( + "Get help: https://www.example.com/foo", + ); + expect(result.exitCode).toBe(ExitCode.CommitlintErrorDefault); }); -test('should produce no error output with --quiet flag', async () => { - const cwd = await gitBootstrap('fixtures/simple'); - const actual = await cli(['--quiet'], {cwd})('foo: bar'); - expect(actual.stdout).toEqual(''); - expect(actual.stderr).toEqual(''); - expect(actual.exitCode).toBe(1); +test("should produce no error output with --quiet flag", async () => { + const cwd = await gitBootstrap("fixtures/simple"); + const result = cli(["--quiet"], { cwd })("foo: bar"); + const output = await result; + expect(output.stdout.trim()).toEqual(""); + expect(output.stderr).toEqual(""); + expect(result.exitCode).toBe(ExitCode.CommitlintErrorDefault); }); -test('should produce no error output with -q flag', async () => { - const cwd = await gitBootstrap('fixtures/simple'); - const actual = await cli(['-q'], {cwd})('foo: bar'); - expect(actual.stdout).toEqual(''); - expect(actual.stderr).toEqual(''); - expect(actual.exitCode).toBe(1); +test("should produce no error output with -q flag", async () => { + const cwd = await gitBootstrap("fixtures/simple"); + const result = cli(["-q"], { cwd })("foo: bar"); + const output = await result; + expect(output.stdout.trim()).toEqual(""); + expect(output.stderr).toEqual(""); + expect(result.exitCode).toBe(ExitCode.CommitlintErrorDefault); }); -test('should work with husky commitmsg hook and git commit', async () => { - const cwd = await gitBootstrap('fixtures/husky/integration'); - await writePkg({husky: {hooks: {'commit-msg': `'${bin}' -e`}}}, {cwd}); - - // await execa('npm', ['install'], {cwd}); // npm install is failing on windows machines - await execa('git', ['add', 'package.json'], {cwd}); - const commit = await execa( - 'git', - ['commit', '-m', '"test: this should work"'], - {cwd} +test("should work with husky commitmsg hook and git commit", async () => { + const cwd = await gitBootstrap("fixtures/husky/integration"); + await writePkg( + { husky: { hooks: { "commit-msg": `'${bin}' -e` } } }, + { cwd }, ); + // await x('npm', ['install'], { nodeOptions: {cwd}}); // npm install is failing on windows machines + await x("git", ["add", "package.json"], { nodeOptions: { cwd } }); + const commit = await x("git", ["commit", "-m", '"test: this should work"'], { + nodeOptions: { cwd }, + }); + expect(commit).toBeTruthy(); }); -test('should work with husky commitmsg hook in sub packages', async () => { - const upper = await gitBootstrap('fixtures/husky'); - const cwd = path.join(upper, 'integration'); - await writePkg({husky: {hooks: {'commit-msg': `'${bin}' -e`}}}, {cwd: upper}); - - // await execa('npm', ['install'], {cwd}); // npm install is failing on windows machines - await execa('git', ['add', 'package.json'], {cwd}); - const commit = await execa( - 'git', - ['commit', '-m', '"test: this should work"'], - {cwd} +test("should work with husky commitmsg hook in sub packages", async () => { + const upper = await gitBootstrap("fixtures/husky"); + const cwd = path.join(upper, "integration"); + await writePkg( + { husky: { hooks: { "commit-msg": `'${bin}' -e` } } }, + { cwd: upper }, ); + + // await x('npm', ['install'], { nodeOptions: {cwd}}); // npm install is failing on windows machines + await x("git", ["add", "package.json"], { nodeOptions: { cwd } }); + const commit = await x("git", ["commit", "-m", '"test: this should work"'], { + nodeOptions: { cwd }, + }); expect(commit).toBeTruthy(); }); -test('should work with husky via commitlint -e $GIT_PARAMS', async () => { - const cwd = await gitBootstrap('fixtures/husky/integration'); +test("should work with husky via commitlint -e $GIT_PARAMS", async () => { + const cwd = await gitBootstrap("fixtures/husky/integration"); await writePkg( - {husky: {hooks: {'commit-msg': `'${bin}' -e $GIT_PARAMS`}}}, - {cwd} + { husky: { hooks: { "commit-msg": `'${bin}' -e $GIT_PARAMS` } } }, + { cwd }, ); - // await execa('npm', ['install'], {cwd}); // npm install is failing on windows machines - await execa('git', ['add', 'package.json'], {cwd}); - const commit = await execa( - 'git', - ['commit', '-m', '"test: this should work"'], - {cwd} - ); + // await x('npm', ['install'], { nodeOptions: {cwd}}); // npm install is failing on windows machines + await x("git", ["add", "package.json"], { nodeOptions: { cwd } }); + const commit = await x("git", ["commit", "-m", '"test: this should work"'], { + nodeOptions: { cwd }, + }); expect(commit).toBeTruthy(); }); -test('should work with husky via commitlint -e %GIT_PARAMS%', async () => { - const cwd = await gitBootstrap('fixtures/husky/integration'); +test("should work with husky via commitlint -e %GIT_PARAMS%", async () => { + const cwd = await gitBootstrap("fixtures/husky/integration"); await writePkg( - {husky: {hooks: {'commit-msg': `'${bin}' -e %GIT_PARAMS%`}}}, - {cwd} + { husky: { hooks: { "commit-msg": `'${bin}' -e %GIT_PARAMS%` } } }, + { cwd }, ); - // await execa('npm', ['install'], {cwd}); // npm install is failing on windows machines - await execa('git', ['add', 'package.json'], {cwd}); - const commit = await execa( - 'git', - ['commit', '-m', '"test: this should work"'], - {cwd} - ); + // await x('npm', ['install'], { nodeOptions: {cwd}}); // npm install is failing on windows machines + await x("git", ["add", "package.json"], { nodeOptions: { cwd } }); + const commit = await x("git", ["commit", "-m", '"test: this should work"'], { + nodeOptions: { cwd }, + }); expect(commit).toBeTruthy(); }); -test('should work with husky via commitlint -e $HUSKY_GIT_PARAMS', async () => { - const cwd = await gitBootstrap('fixtures/husky/integration'); +test("should work with husky via commitlint -e $HUSKY_GIT_PARAMS", async () => { + const cwd = await gitBootstrap("fixtures/husky/integration"); await writePkg( - {husky: {hooks: {'commit-msg': `'${bin}' -e $HUSKY_GIT_PARAMS`}}}, - {cwd} + { husky: { hooks: { "commit-msg": `'${bin}' -e $HUSKY_GIT_PARAMS` } } }, + { cwd }, ); - // await execa('npm', ['install'], {cwd}); // npm install is failing on windows machines - await execa('git', ['add', 'package.json'], {cwd}); - const commit = await execa( - 'git', - ['commit', '-m', '"test: this should work"'], - {cwd} - ); + // await x('npm', ['install'], { nodeOptions: {cwd}}); // npm install is failing on windows machines + await x("git", ["add", "package.json"], { nodeOptions: { cwd } }); + const commit = await x("git", ["commit", "-m", '"test: this should work"'], { + nodeOptions: { cwd }, + }); expect(commit).toBeTruthy(); }); -test('should work with husky via commitlint -e %HUSKY_GIT_PARAMS%', async () => { - const cwd = await gitBootstrap('fixtures/husky/integration'); +test("should work with husky via commitlint -e %HUSKY_GIT_PARAMS%", async () => { + const cwd = await gitBootstrap("fixtures/husky/integration"); await writePkg( - {husky: {hooks: {'commit-msg': `'${bin}' -e %HUSKY_GIT_PARAMS%`}}}, - {cwd} + { husky: { hooks: { "commit-msg": `'${bin}' -e %HUSKY_GIT_PARAMS%` } } }, + { cwd }, ); - // await execa('npm', ['install'], {cwd}); // npm install is failing on windows machines - await execa('git', ['add', 'package.json'], {cwd}); - const commit = await execa( - 'git', - ['commit', '-m', '"test: this should work"'], - {cwd} - ); + // await x('npm', ['install'], { nodeOptions: {cwd}}); // npm install is failing on windows machines + await x("git", ["add", "package.json"], { nodeOptions: { cwd } }); + const commit = await x("git", ["commit", "-m", '"test: this should work"'], { + nodeOptions: { cwd }, + }); expect(commit).toBeTruthy(); }); -test('should allow reading of environment variables for edit file, succeeding if valid', async () => { - const cwd = await gitBootstrap('fixtures/simple'); - await fs.writeFile(path.join(cwd, 'commit-msg-file'), 'foo'); - const actual = await cli(['--env', 'variable'], { +test("should allow reading of environment variables for edit file, succeeding if valid", async () => { + const cwd = await gitBootstrap("fixtures/simple"); + await fs.writeFile(path.join(cwd, "commit-msg-file"), "foo"); + const result = cli(["--env", "variable"], { cwd, - env: {variable: 'commit-msg-file'}, + env: { variable: "commit-msg-file" }, })(); - expect(actual.exitCode).toBe(0); + await result; + expect(result.exitCode).toBe(ExitCode.CommitlintDefault); }); -test('should allow reading of environment variables for edit file, failing if invalid', async () => { - const cwd = await gitBootstrap('fixtures/simple'); +test("should allow reading of environment variables for edit file, failing if invalid", async () => { + const cwd = await gitBootstrap("fixtures/simple"); await fs.writeFile( - path.join(cwd, 'commit-msg-file'), - 'foo: bar\n\nFoo bar bizz buzz.\n\nCloses #123.' + path.join(cwd, "commit-msg-file"), + "foo: bar\n\nFoo bar bizz buzz.\n\nCloses #123.", ); - const actual = await cli(['--env', 'variable'], { + const result = cli(["--env", "variable"], { cwd, - env: {variable: 'commit-msg-file'}, + env: { variable: "commit-msg-file" }, })(); - expect(actual.exitCode).toBe(1); + await result; + expect(result.exitCode).toBe(ExitCode.CommitlintErrorDefault); }); -test('should pick up parser preset and fail accordingly', async () => { - const cwd = await gitBootstrap('fixtures/parser-preset'); - const actual = await cli(['--parser-preset', './parser-preset'], {cwd})( - 'type(scope): subject' +test("should pick up parser preset and fail accordingly", async () => { + const cwd = await gitBootstrap("fixtures/parser-preset"); + const result = cli(["--parser-preset", "./parser-preset"], { cwd })( + "type(scope): subject", ); - expect(actual.exitCode).toBe(1); - expect(actual.stdout).toContain('may not be empty'); + const output = await result; + expect(output.stdout.trim()).toContain("may not be empty"); + expect(result.exitCode).toBe(ExitCode.CommitlintErrorDefault); }); -test('should pick up parser preset and succeed accordingly', async () => { - const cwd = await gitBootstrap('fixtures/parser-preset'); - const actual = await cli(['--parser-preset', './parser-preset'], {cwd})( - '----type(scope): subject' +test("should pick up parser preset and succeed accordingly", async () => { + const cwd = await gitBootstrap("fixtures/parser-preset"); + const result = cli(["--parser-preset", "./parser-preset"], { cwd })( + "----type(scope): subject", ); - expect(actual.exitCode).toBe(0); + await result; + expect(result.exitCode).toBe(ExitCode.CommitlintDefault); }); -test('should pick up config from outside git repo and fail accordingly', async () => { - const outer = await fixBootstrap('fixtures/outer-scope'); - const cwd = await git.init(path.join(outer, 'inner-scope')); +test("should pick up config from outside git repo and fail accordingly", async () => { + const outer = await fixBootstrap("fixtures/outer-scope"); + const cwd = await git.init(path.join(outer, "inner-scope")); - const actual = await cli([], {cwd})('inner: bar'); - expect(actual.exitCode).toBe(1); + const result = cli([], { cwd })("inner: bar"); + await result; + expect(result.exitCode).toBe(ExitCode.CommitlintErrorDefault); }); -test('should pick up config from outside git repo and succeed accordingly', async () => { - const outer = await fixBootstrap('fixtures/outer-scope'); - const cwd = await git.init(path.join(outer, 'inner-scope')); +test("should pick up config from outside git repo and succeed accordingly", async () => { + const outer = await fixBootstrap("fixtures/outer-scope"); + const cwd = await git.init(path.join(outer, "inner-scope")); - const actual = await cli([], {cwd})('outer: bar'); - expect(actual.exitCode).toBe(0); + const result = cli([], { cwd })("outer: bar"); + await result; + expect(result.exitCode).toBe(ExitCode.CommitlintDefault); }); -test('should pick up config from inside git repo with precedence and succeed accordingly', async () => { - const outer = await fixBootstrap('fixtures/inner-scope'); - const cwd = await git.init(path.join(outer, 'inner-scope')); +test("should pick up config from inside git repo with precedence and succeed accordingly", async () => { + const outer = await fixBootstrap("fixtures/inner-scope"); + const cwd = await git.init(path.join(outer, "inner-scope")); - const actual = await cli([], {cwd})('inner: bar'); - expect(actual.exitCode).toBe(0); + const result = cli([], { cwd })("inner: bar"); + await result; + expect(result.exitCode).toBe(ExitCode.CommitlintDefault); }); -test('should pick up config from inside git repo with precedence and fail accordingly', async () => { - const outer = await fixBootstrap('fixtures/inner-scope'); - const cwd = await git.init(path.join(outer, 'inner-scope')); +test("should pick up config from inside git repo with precedence and fail accordingly", async () => { + const outer = await fixBootstrap("fixtures/inner-scope"); + const cwd = await git.init(path.join(outer, "inner-scope")); - const actual = await cli([], {cwd})('outer: bar'); - expect(actual.exitCode).toBe(1); + const result = cli([], { cwd })("outer: bar"); + await result; + expect(result.exitCode).toBe(ExitCode.CommitlintErrorDefault); }); -test('should handle --amend with signoff', async () => { - const cwd = await gitBootstrap('fixtures/signoff'); - await writePkg({husky: {hooks: {'commit-msg': `'${bin}' -e`}}}, {cwd}); - - // await execa('npm', ['install'], {cwd}); // npm install is failing on windows machines - await execa('git', ['add', 'package.json'], {cwd}); - await execa( - 'git', - ['commit', '-m', '"test: this should work"', '--signoff'], - {cwd} +test("should handle --amend with signoff", async () => { + const cwd = await gitBootstrap("fixtures/signoff"); + await writePkg( + { husky: { hooks: { "commit-msg": `'${bin}' -e` } } }, + { cwd }, ); - const commit = await execa('git', ['commit', '--amend', '--no-edit'], {cwd}); + + // await x('npm', ['install'], { nodeOptions: {cwd}}); // npm install is failing on windows machines + await x("git", ["add", "package.json"], { nodeOptions: { cwd } }); + await x("git", ["commit", "-m", '"test: this should work"', "--signoff"], { + nodeOptions: { cwd }, + }); + const commit = await x("git", ["commit", "--amend", "--no-edit"], { + nodeOptions: { cwd }, + }); expect(commit).toBeTruthy(); }, 10000); -test('should fail with an empty message and a commentChar is set', async () => { - const cwd = await gitBootstrap('fixtures/comment-char'); - await execa('git', ['config', '--local', 'core.commentChar', '$'], {cwd}); - await fs.writeFile(path.join(cwd, '.git', 'COMMIT_EDITMSG'), '#1234'); +test("it uses parserOpts.commentChar when not using edit mode", async () => { + const cwd = await gitBootstrap("fixtures/comment-char"); + const input = "header: foo\n$body\n"; - const actual = await cli(['--edit', '.git/COMMIT_EDITMSG'], {cwd})(); - expect(actual.stdout).toContain('[subject-empty]'); - expect(actual.exitCode).toBe(1); + const result = cli([], { cwd })(input); + const output = await result; + expect(output.stdout.trim()).toContain("[body-empty]"); + expect(result.exitCode).toBe(ExitCode.CommitlintErrorDefault); }); -test('should handle linting with issue prefixes', async () => { - const cwd = await gitBootstrap('fixtures/issue-prefixes'); - const actual = await cli([], {cwd})('foobar REF-1'); - expect(actual.exitCode).toBe(0); -}, 10000); +test("it doesn't use parserOpts.commentChar when using edit mode", async () => { + const cwd = await gitBootstrap("fixtures/comment-char"); + await fs.writeFile( + path.join(cwd, ".git", "COMMIT_EDITMSG"), + "header: foo\n\n$body\n", + ); -test('should print full commit message when input from stdin fails', async () => { - const cwd = await gitBootstrap('fixtures/simple'); - const input = 'foo: bar\n\nFoo bar bizz buzz.\n\nCloses #123.'; - // output text in plain text so we can compare it - const actual = await cli(['--color=false'], {cwd})(input); + const result = cli(["--edit", ".git/COMMIT_EDITMSG"], { cwd })(); + const output = await result; + expect(output.stdout.trim()).not.toContain("[body-empty]"); + expect(result.exitCode).toBe(ExitCode.CommitlintDefault); +}); - expect(actual.stdout).toContain(input); - expect(actual.exitCode).toBe(1); +test("it uses core.commentChar git config when using edit mode", async () => { + const cwd = await gitBootstrap("fixtures/comment-char"); + await x("git", ["config", "--local", "core.commentChar", "$"], { + nodeOptions: { cwd }, + }); + await fs.writeFile( + path.join(cwd, ".git", "COMMIT_EDITMSG"), + "header: foo\n\n$body\n", + ); + + const result = cli(["--edit", ".git/COMMIT_EDITMSG"], { cwd })(); + const output = await result; + expect(output.stdout.trim()).toContain("[body-empty]"); + expect(result.exitCode).toBe(ExitCode.CommitlintErrorDefault); }); -test('should not print commit message fully or partially when input succeeds', async () => { - const cwd = await gitBootstrap('fixtures/default'); - const message = 'type: bar\n\nFoo bar bizz buzz.\n\nCloses #123.'; - // output text in plain text so we can compare it - const actual = await cli(['--color=false'], {cwd})(message); +test("it falls back to # for core.commentChar when using edit mode", async () => { + const cwd = await gitBootstrap("fixtures/comment-char"); + await fs.writeFile( + path.join(cwd, ".git", "COMMIT_EDITMSG"), + "header: foo\n\n#body\n", + ); - expect(actual.stdout).not.toContain(message); - expect(actual.stdout).not.toContain(message.split('\n')[0]); - expect(actual.exitCode).toBe(0); + const result = cli(["--edit", ".git/COMMIT_EDITMSG"], { cwd })(); + const output = await result; + expect(output.stdout.trim()).toContain("[body-empty]"); + expect(output.stderr).toEqual(""); + expect(result.exitCode).toBe(ExitCode.CommitlintErrorDefault); }); -test('should fail for invalid formatters from configuration', async () => { - const cwd = await gitBootstrap('fixtures/custom-formatter'); - const actual = await cli([], {cwd})('foo: bar'); +test("should handle linting with issue prefixes", async () => { + const cwd = await gitBootstrap("fixtures/issue-prefixes"); + const result = cli([], { cwd })("foobar REF-1"); + await result; + expect(result.exitCode).toBe(ExitCode.CommitlintDefault); +}, 10000); - expect(actual.stderr).toContain( - 'Using format custom-formatter, but cannot find the module' - ); - expect(actual.stdout).toEqual(''); - expect(actual.exitCode).toBe(1); +test("should print full commit message when input from stdin fails", async () => { + const cwd = await gitBootstrap("fixtures/simple"); + const input = "foo: bar\n\nFoo bar bizz buzz.\n\nCloses #123."; + // output text in plain text so we can compare it + const result = cli(["--color=false"], { cwd })(input); + const output = await result; + expect(output.stdout.trim()).toContain(input); + expect(result.exitCode).toBe(ExitCode.CommitlintErrorDefault); }); -test('should skip linting if message matches ignores config', async () => { - const cwd = await gitBootstrap('fixtures/ignores'); - const actual = await cli([], {cwd})('WIP'); - expect(actual.exitCode).toBe(0); +test("should not print commit message fully or partially when input succeeds", async () => { + const cwd = await gitBootstrap("fixtures/default"); + const message = "type: bar\n\nFoo bar bizz buzz.\n\nCloses #123."; + // output text in plain text so we can compare it + const result = cli(["--color=false"], { cwd })(message); + const output = await result; + expect(output.stdout.trim()).not.toContain(message); + expect(output.stdout.trim()).not.toContain(message.split("\n")[0]); + expect(result.exitCode).toBe(ExitCode.CommitlintDefault); +}); + +test("should fail for invalid formatters from configuration", async () => { + const cwd = await gitBootstrap("fixtures/custom-formatter"); + const result = cli([], { cwd })("foo: bar"); + const output = await result; + expect(output.stderr).toContain( + "Using format custom-formatter, but cannot find the module", + ); + expect(output.stdout.trim()).toEqual(""); + expect(result.exitCode).toBe(ExitCode.CommitlintErrorDefault); }); -test('should not skip linting if message does not match ignores config', async () => { - const cwd = await gitBootstrap('fixtures/ignores'); - const actual = await cli([], {cwd})('foo'); - expect(actual.exitCode).toBe(1); +test("should skip linting if message matches ignores config", async () => { + const cwd = await gitBootstrap("fixtures/ignores"); + const result = cli([], { cwd })("WIP"); + await result; + expect(result.exitCode).toBe(ExitCode.CommitlintDefault); }); -test('should not skip linting if defaultIgnores is false', async () => { - const cwd = await gitBootstrap('fixtures/default-ignores-false'); - const actual = await cli([], {cwd})('fixup! foo: bar'); - expect(actual.exitCode).toBe(1); +test("should not skip linting if message does not match ignores config", async () => { + const cwd = await gitBootstrap("fixtures/ignores"); + const result = cli([], { cwd })("foo"); + await result; + expect(result.exitCode).toBe(ExitCode.CommitlintErrorDefault); }); -test('should skip linting if defaultIgnores is true', async () => { - const cwd = await gitBootstrap('fixtures/default-ignores-true'); - const actual = await cli([], {cwd})('fixup! foo: bar'); - expect(actual.exitCode).toBe(0); +test("should not skip linting if defaultIgnores is false", async () => { + const cwd = await gitBootstrap("fixtures/default-ignores-false"); + const result = cli([], { cwd })("fixup! foo: bar"); + await result; + expect(result.exitCode).toBe(ExitCode.CommitlintErrorDefault); }); -test('should skip linting if defaultIgnores is unset', async () => { - const cwd = await gitBootstrap('fixtures/default-ignores-unset'); - const actual = await cli([], {cwd})('fixup! foo: bar'); - expect(actual.exitCode).toBe(0); +test("should skip linting if defaultIgnores is true", async () => { + const cwd = await gitBootstrap("fixtures/default-ignores-true"); + const result = cli([], { cwd })("fixup! foo: bar"); + await result; + expect(result.exitCode).toBe(ExitCode.CommitlintDefault); }); -test('should fail for invalid formatters from flags', async () => { - const cwd = await gitBootstrap('fixtures/custom-formatter'); - const actual = await cli(['--format', 'through-flag'], {cwd})('foo: bar'); +test("should skip linting if defaultIgnores is unset", async () => { + const cwd = await gitBootstrap("fixtures/default-ignores-unset"); + const result = cli([], { cwd })("fixup! foo: bar"); + await result; + expect(result.exitCode).toBe(ExitCode.CommitlintDefault); +}); - expect(actual.stderr).toContain( - 'Using format through-flag, but cannot find the module' +test("should fail for invalid formatters from flags", async () => { + const cwd = await gitBootstrap("fixtures/custom-formatter"); + const result = cli(["--format", "through-flag"], { cwd })("foo: bar"); + const output = await result; + expect(output.stderr).toContain( + "Using format through-flag, but cannot find the module", ); - expect(actual.stdout).toEqual(''); - expect(actual.exitCode).toBe(1); + expect(output.stdout.trim()).toEqual(""); + expect(result.exitCode).toBe(ExitCode.CommitlintErrorDefault); }); -test('should work with absolute formatter path', async () => { +test("should work with absolute formatter path", async () => { const formatterPath = path.resolve( __dirname, - '../fixtures/custom-formatter/formatters/custom.js' + "../fixtures/custom-formatter/formatters/custom.js", ); - const cwd = await gitBootstrap('fixtures/custom-formatter'); - const actual = await cli(['--format', formatterPath], {cwd})( - 'test: this should work' + const cwd = await gitBootstrap("fixtures/custom-formatter"); + const result = cli(["--format", formatterPath], { cwd })( + "test: this should work", ); - - expect(actual.stdout).toContain('custom-formatter-ok'); - expect(actual.exitCode).toBe(0); + const output = await result; + expect(output.stdout.trim()).toContain("custom-formatter-ok"); + expect(result.exitCode).toBe(ExitCode.CommitlintDefault); }); -test('should work with relative formatter path', async () => { +test("should work with relative formatter path", async () => { const cwd = path.resolve( - await gitBootstrap('fixtures/custom-formatter'), - './formatters' + await gitBootstrap("fixtures/custom-formatter"), + "./formatters", ); - const actual = await cli(['--format', './custom.js'], {cwd})( - 'test: this should work' + const result = cli(["--format", "./custom.js"], { cwd })( + "test: this should work", ); + const output = await result; + expect(output.stdout.trim()).toContain("custom-formatter-ok"); + expect(result.exitCode).toBe(ExitCode.CommitlintDefault); +}); + +test("strict: should exit with 3 on error", async () => { + const cwd = await gitBootstrap("fixtures/warning"); + const result = cli(["--strict"], { cwd })("foo: abcdef"); + await result; + expect(result.exitCode).toBe(ExitCode.CommitLintError); +}); - expect(actual.stdout).toContain('custom-formatter-ok'); - expect(actual.exitCode).toBe(0); +test("strict: should exit with 2 on warning", async () => { + const cwd = await gitBootstrap("fixtures/warning"); + const result = cli(["--strict"], { cwd })("feat: abcdef"); + await result; + expect(result.exitCode).toBe(ExitCode.CommitLintWarning); }); -test('should print help', async () => { - const cwd = await gitBootstrap('fixtures/default'); - const actual = await cli(['--help'], {cwd})(); - const version = require('../package.json').version; - const stdout = actual.stdout.replace(`@${version}`, '@dev'); +test("strict: should exit with 0 on success", async () => { + const cwd = await gitBootstrap("fixtures/warning"); + const result = cli(["--strict"], { cwd })("feat: abc"); + await result; + expect(result.exitCode).toBe(ExitCode.CommitlintDefault); +}); + +test("should print help", async () => { + const cwd = await gitBootstrap("fixtures/default"); + const result = cli(["--help"], { cwd })(); + const output = await result; + const version = require("../package.json").version; + const stdout = output.stdout.trim().replace(`@${version}`, "@dev"); expect(stdout).toMatchInlineSnapshot(` "@commitlint/cli@dev - Lint your commit messages [input] reads from stdin if --edit, --env, --from and --to are omitted Options: - -c, --color toggle colored output [boolean] [default: true] - -g, --config path to the config file [string] - --print-config print resolved config [boolean] [default: false] - -d, --cwd directory to execute in - [string] [default: (Working Directory)] - -e, --edit read last commit message from the specified file or - fallbacks to ./.git/COMMIT_EDITMSG [string] - -E, --env check message in the file at path given by environment - variable value [string] - -x, --extends array of shareable configurations to extend [array] - -H, --help-url help url in error message [string] - -f, --from lower end of the commit range to lint; applies if - edit=false [string] - -o, --format output format of the results [string] - -p, --parser-preset configuration preset to use for - conventional-commits-parser [string] - -q, --quiet toggle console output [boolean] [default: false] - -t, --to upper end of the commit range to lint; applies if - edit=false [string] - -V, --verbose enable verbose output for reports without problems - [boolean] - -v, --version display version information [boolean] - -h, --help Show help [boolean]" + -c, --color toggle colored output [boolean] [default: true] + -g, --config path to the config file; result code 9 if config is missing [string] + --print-config print resolved config [string] [choices: "", "text", "json"] + -d, --cwd directory to execute in [string] [default: (Working Directory)] + -e, --edit read last commit message from the specified file or fallbacks to ./.git/COMMIT_EDITMSG [string] + -E, --env check message in the file at path given by environment variable value [string] + -x, --extends array of shareable configurations to extend [array] + -H, --help-url help url in error message [string] + -f, --from lower end of the commit range to lint; applies if edit=false [string] + --from-last-tag uses the last tag as the lower end of the commit range to lint; applies if edit=false and from is not set [boolean] + --git-log-args additional git log arguments as space separated string, example '--first-parent --cherry-pick' [string] + -l, --last just analyze the last commit; applies if edit=false [boolean] + -o, --format output format of the results [string] + -p, --parser-preset configuration preset to use for conventional-commits-parser [string] + -q, --quiet toggle console output [boolean] [default: false] + -t, --to upper end of the commit range to lint; applies if edit=false [string] + -V, --verbose enable verbose output for reports without problems [boolean] + -s, --strict enable strict mode; result code 2 for warnings, 3 for errors [boolean] + --options path to a JSON file or Common.js module containing CLI options + -v, --version display version information [boolean] + -h, --help Show help [boolean]" `); }); -test('should print version', async () => { - const cwd = await gitBootstrap('fixtures/default'); - const actual = await cli(['--version'], {cwd})(); - expect(actual.stdout).toMatch('@commitlint/cli@'); -}); - -test('should print config', async () => { - const cwd = await gitBootstrap('fixtures/default'); - const actual = await cli(['--print-config', '--no-color'], {cwd})(); - const stdout = actual.stdout - .replace(/^{[^\n]/g, '{\n ') - .replace(/[^\n]}$/g, '\n}') - .replace(/(helpUrl:)\n[ ]+/, '$1 '); - expect(stdout).toMatchInlineSnapshot(` +test("should print version", async () => { + const cwd = await gitBootstrap("fixtures/default"); + const result = cli(["--version"], { cwd })(); + const output = await result; + expect(output.stdout.trim()).toMatch("@commitlint/cli@"); +}); + +describe("should print config", () => { + test("should print config when flag is present but without value", async () => { + const cwd = await gitBootstrap("fixtures/default"); + const result = cli(["--print-config", "text", "--no-color"], { cwd })(); + const output = await result; + const stdout = output.stdout + .trim() + .replace(/^{[^\n]/g, "{\n ") + .replace(/[^\n]}$/g, "\n}") + .replace(/(helpUrl:)\n[ ]+/, "$1 "); + expect(stdout).toMatchInlineSnapshot(` "{ extends: [], formatter: '@commitlint/format', @@ -508,11 +643,45 @@ test('should print config', async () => { prompt: {} }" `); + }); + + test("should print config when flag has `text` value", async () => { + const cwd = await gitBootstrap("fixtures/default"); + const result = cli(["--print-config=text", "--no-color"], { cwd })(); + const output = await result; + const stdout = output.stdout + .trim() + .replace(/^{[^\n]/g, "{\n ") + .replace(/[^\n]}$/g, "\n}") + .replace(/(helpUrl:)\n[ ]+/, "$1 "); + expect(stdout).toMatchInlineSnapshot(` + "{ + extends: [], + formatter: '@commitlint/format', + parserPreset: undefined, + ignores: undefined, + defaultIgnores: undefined, + plugins: {}, + rules: { 'type-enum': [ 2, 'never', [ 'foo' ] ] }, + helpUrl: 'https://github.com/conventional-changelog/commitlint/#what-is-commitlint', + prompt: {} + }" + `); + }); + + test("should print config when flag has `json` value", async () => { + const cwd = await gitBootstrap("fixtures/default"); + const result = cli(["--print-config=json", "--no-color"], { cwd })(); + const output = await result; + expect(output.stdout.trim()).toMatchInlineSnapshot( + `"{"extends":[],"formatter":"@commitlint/format","plugins":{},"rules":{"type-enum":[2,"never",["foo"]]},"helpUrl":"https://github.com/conventional-changelog/commitlint/#what-is-commitlint","prompt":{}}"`, + ); + }); }); async function writePkg(payload: unknown, options: TestOptions) { - const pkgPath = path.join(options.cwd, 'package.json'); - const pkg = JSON.parse(await fs.readFile(pkgPath, 'utf-8')); + const pkgPath = path.join(options.cwd, "package.json"); + const pkg = JSON.parse(await fs.readFile(pkgPath, "utf-8")); const result = merge(pkg, payload); - await fs.writeFile(pkgPath, JSON.stringify(result, null, ' ')); + await fs.writeFile(pkgPath, JSON.stringify(result, null, " ")); } diff --git a/@commitlint/cli/src/cli.ts b/@commitlint/cli/src/cli.ts index 974974be8d..50cfed53f9 100644 --- a/@commitlint/cli/src/cli.ts +++ b/@commitlint/cli/src/cli.ts @@ -1,138 +1,188 @@ -import load from '@commitlint/load'; -import lint from '@commitlint/lint'; -import read from '@commitlint/read'; -import isFunction from 'lodash/isFunction'; -import resolveFrom from 'resolve-from'; -import resolveGlobal from 'resolve-global'; -import yargs, {Arguments} from 'yargs'; -import util from 'util'; - -import {CliFlags, Seed} from './types'; -import { +import { createRequire } from "node:module"; +import path from "node:path"; +import { fileURLToPath, pathToFileURL } from "node:url"; +import util from "node:util"; + +import lint from "@commitlint/lint"; +import load, { resolveFromSilent, resolveGlobalSilent } from "@commitlint/load"; +import read from "@commitlint/read"; +import type { + Formatter, LintOptions, LintOutcome, - ParserOptions, ParserPreset, QualifiedConfig, - Formatter, -} from '@commitlint/types'; -import {CliError} from './cli-error'; + UserConfig, +} from "@commitlint/types"; +import type { Options } from "conventional-commits-parser"; +import { x } from "tinyexec"; +import yargs, { type Arguments } from "yargs"; + +import { CliFlags } from "./types.js"; -const pkg = require('../package'); +import { CliError, ExitCode } from "./cli-error.js"; -const cli = yargs +const require = createRequire(import.meta.url); + +const __dirname = path.resolve(fileURLToPath(import.meta.url), ".."); + +const dynamicImport = async <T>(id: string): Promise<T> => { + const imported = await import( + path.isAbsolute(id) ? pathToFileURL(id).toString() : id + ); + return ("default" in imported && imported.default) || imported; +}; + +const pkg: typeof import("../package.json") = require("../package.json"); + +const gitDefaultCommentChar = "#"; + +const cli = yargs(process.argv.slice(2)) .options({ color: { - alias: 'c', + alias: "c", default: true, - description: 'toggle colored output', - type: 'boolean', + description: "toggle colored output", + type: "boolean", }, config: { - alias: 'g', - description: 'path to the config file', - type: 'string', + alias: "g", + description: + "path to the config file; result code 9 if config is missing", + type: "string", }, - 'print-config': { - type: 'boolean', - default: false, - description: 'print resolved config', + "print-config": { + choices: ["", "text", "json"], + description: "print resolved config", + type: "string", }, cwd: { - alias: 'd', + alias: "d", default: process.cwd(), - defaultDescription: '(Working Directory)', - description: 'directory to execute in', - type: 'string', + defaultDescription: "(Working Directory)", + description: "directory to execute in", + type: "string", }, edit: { - alias: 'e', + alias: "e", description: - 'read last commit message from the specified file or fallbacks to ./.git/COMMIT_EDITMSG', - type: 'string', + "read last commit message from the specified file or fallbacks to ./.git/COMMIT_EDITMSG", + type: "string", }, env: { - alias: 'E', + alias: "E", description: - 'check message in the file at path given by environment variable value', - type: 'string', + "check message in the file at path given by environment variable value", + type: "string", }, extends: { - alias: 'x', - description: 'array of shareable configurations to extend', - type: 'array', + alias: "x", + description: "array of shareable configurations to extend", + type: "array", }, - 'help-url': { - alias: 'H', - type: 'string', - description: 'help url in error message', + "help-url": { + alias: "H", + type: "string", + description: "help url in error message", }, from: { - alias: 'f', + alias: "f", + description: + "lower end of the commit range to lint; applies if edit=false", + type: "string", + }, + "from-last-tag": { description: - 'lower end of the commit range to lint; applies if edit=false', - type: 'string', + "uses the last tag as the lower end of the commit range to lint; applies if edit=false and from is not set", + type: "boolean", + }, + "git-log-args": { + description: + "additional git log arguments as space separated string, example '--first-parent --cherry-pick'", + type: "string", + }, + last: { + alias: "l", + description: "just analyze the last commit; applies if edit=false", + type: "boolean", }, format: { - alias: 'o', - description: 'output format of the results', - type: 'string', + alias: "o", + description: "output format of the results", + type: "string", }, - 'parser-preset': { - alias: 'p', + "parser-preset": { + alias: "p", description: - 'configuration preset to use for conventional-commits-parser', - type: 'string', + "configuration preset to use for conventional-commits-parser", + type: "string", }, quiet: { - alias: 'q', + alias: "q", default: false, - description: 'toggle console output', - type: 'boolean', + description: "toggle console output", + type: "boolean", }, to: { - alias: 't', + alias: "t", description: - 'upper end of the commit range to lint; applies if edit=false', - type: 'string', + "upper end of the commit range to lint; applies if edit=false", + type: "string", }, verbose: { - alias: 'V', - type: 'boolean', - description: 'enable verbose output for reports without problems', + alias: "V", + type: "boolean", + description: "enable verbose output for reports without problems", + }, + strict: { + alias: "s", + type: "boolean", + description: + "enable strict mode; result code 2 for warnings, 3 for errors", }, }) .version( - 'version', - 'display version information', - `${pkg.name}@${pkg.version}` + "version", + "display version information", + `${pkg.name}@${pkg.version}`, + ) + .alias("v", "version") + .help("help") + .alias("h", "help") + .config( + "options", + "path to a JSON file or Common.js module containing CLI options", + require, ) - .alias('v', 'version') - .help('help') - .alias('h', 'help') .usage(`${pkg.name}@${pkg.version} - ${pkg.description}\n`) .usage( - `[input] reads from stdin if --edit, --env, --from and --to are omitted` + `[input] reads from stdin if --edit, --env, --from and --to are omitted`, ) .strict(); +/** + * avoid description words to be divided in new lines when there is enough space + * @see https://github.com/conventional-changelog/commitlint/pull/3850#discussion_r1472251234 + */ +cli.wrap(cli.terminalWidth()); + main(cli.argv).catch((err) => { setTimeout(() => { if (err.type === pkg.name) { - process.exit(1); + process.exit(err.error_code); } throw err; }, 0); }); async function stdin() { - let result = ''; + let result = ""; if (process.stdin.isTTY) { return result; } - process.stdin.setEncoding('utf8'); + process.stdin.setEncoding("utf8"); for await (const chunk of process.stdin) { result += chunk; @@ -148,49 +198,74 @@ type MainArgsPromise = Promise<MainArgsObject>; type MainArgs = MainArgsObject | MainArgsPromise; async function resolveArgs(args: MainArgs): Promise<MainArgsObject> { - return typeof args.then === 'function' ? await args : args; + return typeof args.then === "function" ? await args : args; } -async function main(args: MainArgs) { +async function main(args: MainArgs): Promise<void> { const options = await resolveArgs(args); - if (typeof options.edit === 'undefined') { + if (typeof options.edit === "undefined") { options.edit = false; } const raw = options._; const flags = normalizeFlags(options); - if (flags['print-config']) { + if (typeof options["print-config"] === "string") { const loaded = await load(getSeed(flags), { cwd: flags.cwd, file: flags.config, }); - console.log(util.inspect(loaded, false, null, options.color)); - return; + + switch (options["print-config"]) { + case "json": + console.log(JSON.stringify(loaded)); + return; + + case "text": + default: + console.log(util.inspect(loaded, false, null, options.color)); + return; + } } const fromStdin = checkFromStdin(raw, flags); + if ( + Object.hasOwn(flags, "last") && + (Object.hasOwn(flags, "from") || Object.hasOwn(flags, "to") || flags.edit) + ) { + const err = new CliError( + "Please use the --last flag alone. The --last flag should not be used with --to or --from or --edit.", + pkg.name, + ); + cli.showHelp("log"); + console.log(err.message); + throw err; + } + const input = await (fromStdin ? stdin() : read({ to: flags.to, from: flags.from, + fromLastTag: flags["from-last-tag"], + last: flags.last, edit: flags.edit, cwd: flags.cwd, - })); + gitLogArgs: flags["git-log-args"], + })); const messages = (Array.isArray(input) ? input : [input]) - .filter((message) => typeof message === 'string') - .filter((message) => message.trim() !== '') + .filter((message) => typeof message === "string") + .filter((message) => message.trim() !== "") .filter(Boolean); if (messages.length === 0 && !checkFromRepository(flags)) { const err = new CliError( - '[input] is required: supply via stdin, or --env or --edit or --from and --to', - pkg.name + "[input] is required: supply via stdin, or --env or --edit or --last or --from and --to", + pkg.name, ); - yargs.showHelp('log'); + cli.showHelp("log"); console.log(err.message); throw err; } @@ -200,7 +275,7 @@ async function main(args: MainArgs) { file: flags.config, }); const parserOpts = selectParserOpts(loaded.parserPreset); - const opts: LintOptions & {parserOpts: ParserOptions} = { + const opts: LintOptions & { parserOpts: Options } = { parserOpts: {}, plugins: {}, ignores: [], @@ -218,21 +293,33 @@ async function main(args: MainArgs) { if (loaded.defaultIgnores === false) { opts.defaultIgnores = false; } - const format = loadFormatter(loaded, flags); - - // Strip comments if reading from `.git/COMMIT_EDIT_MSG` using the - // commentChar from the parser preset falling back to a `#` if that is not - // set - if (flags.edit && typeof opts.parserOpts.commentChar !== 'string') { - opts.parserOpts.commentChar = '#'; + const format = await loadFormatter(loaded, flags); + + // If reading from `.git/COMMIT_EDIT_MSG`, strip comments using + // core.commentChar from git configuration, falling back to '#'. + if (flags.edit) { + const result = x("git", ["config", "core.commentChar"]); + const output = await result; + + if (result.exitCode && result.exitCode > 1) { + console.warn( + "Could not determine core.commentChar git configuration", + output.stderr, + ); + opts.parserOpts.commentChar = gitDefaultCommentChar; + } else { + opts.parserOpts.commentChar = + output.stdout.trim() || gitDefaultCommentChar; + } } const results = await Promise.all( - messages.map((message) => lint(message, loaded.rules, opts)) + messages.map((message) => lint(message, loaded.rules, opts)), ); + let isRulesEmpty = false; if (Object.keys(loaded.rules).length === 0) { - let input = ''; + let input = ""; if (results.length !== 0) { input = results[0].input; @@ -244,17 +331,19 @@ async function main(args: MainArgs) { { level: 2, valid: false, - name: 'empty-rules', + name: "empty-rules", message: [ - 'Please add rules to your `commitlint.config.js`', - ' - Getting started guide: https://git.io/fhHij', - ' - Example config: https://git.io/fhHip', - ].join('\n'), + "Please add rules to your `commitlint.config.js`", + " - Getting started guide: https://commitlint.js.org/guides/getting-started", + " - Example config: https://github.com/conventional-changelog/commitlint/blob/master/%40commitlint/config-conventional/src/index.ts", + ].join("\n"), }, ], warnings: [], input, }); + + isRulesEmpty = true; } const report = results.reduce<{ @@ -276,10 +365,10 @@ async function main(args: MainArgs) { errorCount: 0, warningCount: 0, results: [], - } + }, ); - const helpUrl = flags['help-url']?.trim() || loaded.helpUrl; + const helpUrl = flags["help-url"]?.trim() || loaded.helpUrl; const output = format(report, { color: flags.color, @@ -287,10 +376,21 @@ async function main(args: MainArgs) { helpUrl, }); - if (!flags.quiet && output !== '') { + if (!flags.quiet && output !== "") { console.log(output); } + if (flags.strict) { + if (report.errorCount > 0) { + throw new CliError(output, pkg.name, ExitCode.CommitLintError); + } + if (report.warningCount > 0) { + throw new CliError(output, pkg.name, ExitCode.CommitLintWarning); + } + } + if (isRulesEmpty) { + throw new CliError(output, pkg.name, ExitCode.CommitlintInvalidArgument); + } if (!report.valid) { throw new CliError(output, pkg.name); } @@ -309,7 +409,12 @@ function checkFromEdit(flags: CliFlags): boolean { } function checkFromHistory(flags: CliFlags): boolean { - return typeof flags.from === 'string' || typeof flags.to === 'string'; + return ( + typeof flags.from === "string" || + typeof flags["from-last-tag"] === "boolean" || + typeof flags.to === "string" || + typeof flags.last === "boolean" + ); } function normalizeFlags(flags: CliFlags): CliFlags { @@ -324,18 +429,18 @@ function getEditValue(flags: CliFlags) { if (flags.env) { if (!(flags.env in process.env)) { throw new Error( - `Received '${flags.env}' as value for -E | --env, but environment variable '${flags.env}' is not available globally` + `Received '${flags.env}' as value for -E | --env, but environment variable '${flags.env}' is not available globally`, ); } return process.env[flags.env]; } - const {edit} = flags; + const { edit } = flags; // If the edit flag is set but empty (i.e '-e') we default // to .git/COMMIT_EDITMSG - if (edit === '') { + if (edit === "") { return true; } - if (typeof edit === 'boolean') { + if (typeof edit === "boolean") { return edit; } // The recommended method to specify -e with husky was `commitlint -e $HUSKY_GIT_PARAMS` @@ -343,70 +448,67 @@ function getEditValue(flags: CliFlags) { // use a different syntax // See https://github.com/conventional-changelog/commitlint/issues/103 for details // This has been superceded by the `-E GIT_PARAMS` / `-E HUSKY_GIT_PARAMS` - const isGitParams = edit === '$GIT_PARAMS' || edit === '%GIT_PARAMS%'; + const isGitParams = edit === "$GIT_PARAMS" || edit === "%GIT_PARAMS%"; const isHuskyParams = - edit === '$HUSKY_GIT_PARAMS' || edit === '%HUSKY_GIT_PARAMS%'; + edit === "$HUSKY_GIT_PARAMS" || edit === "%HUSKY_GIT_PARAMS%"; if (isGitParams || isHuskyParams) { console.warn(`Using environment variable syntax (${edit}) in -e |\ --edit is deprecated. Use '{-E|--env} HUSKY_GIT_PARAMS instead'`); - if (isGitParams && 'GIT_PARAMS' in process.env) { + if (isGitParams && "GIT_PARAMS" in process.env) { return process.env.GIT_PARAMS; } - if ('HUSKY_GIT_PARAMS' in process.env) { + if ("HUSKY_GIT_PARAMS" in process.env) { return process.env.HUSKY_GIT_PARAMS; } throw new Error( - `Received ${edit} as value for -e | --edit, but GIT_PARAMS or HUSKY_GIT_PARAMS are not available globally.` + `Received ${edit} as value for -e | --edit, but GIT_PARAMS or HUSKY_GIT_PARAMS are not available globally.`, ); } return edit; } -function getSeed(flags: CliFlags): Seed { +function getSeed(flags: CliFlags): UserConfig { const n = (flags.extends || []).filter( - (i): i is string => typeof i === 'string' + (i): i is string => typeof i === "string", ); return n.length > 0 - ? {extends: n, parserPreset: flags['parser-preset']} - : {parserPreset: flags['parser-preset']}; + ? { extends: n, parserPreset: flags["parser-preset"] } + : { parserPreset: flags["parser-preset"] }; } -function selectParserOpts(parserPreset: ParserPreset) { - if (typeof parserPreset !== 'object') { +function selectParserOpts(parserPreset: ParserPreset | undefined) { + if (typeof parserPreset !== "object") { return undefined; } - if (typeof parserPreset.parserOpts !== 'object') { + if (typeof parserPreset.parserOpts !== "object") { return undefined; } return parserPreset.parserOpts; } -function loadFormatter(config: QualifiedConfig, flags: CliFlags): Formatter { - const moduleName = flags.format || config.formatter || '@commitlint/format'; +function loadFormatter( + config: QualifiedConfig, + flags: CliFlags, +): Promise<Formatter> { + const moduleName = flags.format || config.formatter || "@commitlint/format"; const modulePath = - resolveFrom.silent(__dirname, moduleName) || - resolveFrom.silent(flags.cwd, moduleName) || - resolveGlobal.silent(moduleName); + resolveFromSilent(moduleName, __dirname) || + resolveFromSilent(moduleName, flags.cwd) || + resolveGlobalSilent(moduleName); if (modulePath) { - const moduleInstance = require(modulePath); - - if (isFunction(moduleInstance.default)) { - return moduleInstance.default; - } - - return moduleInstance; + return dynamicImport<Formatter>(modulePath); } throw new Error(`Using format ${moduleName}, but cannot find the module.`); } // Catch unhandled rejections globally -process.on('unhandledRejection', (reason, promise) => { - console.log('Unhandled Rejection at: Promise ', promise, ' reason: ', reason); +process.on("unhandledRejection", (reason, promise) => { + console.log("Unhandled Rejection at: Promise ", promise, " reason: ", reason); throw reason; }); diff --git a/@commitlint/cli/src/types.ts b/@commitlint/cli/src/types.ts index b98117c5fd..cbc9a8956a 100644 --- a/@commitlint/cli/src/types.ts +++ b/@commitlint/cli/src/types.ts @@ -6,20 +6,20 @@ export interface CliFlags { env?: string; extends?: (string | number)[]; help?: boolean; - 'help-url'?: string; + "help-url"?: string; from?: string; + "from-last-tag"?: boolean; + "git-log-args"?: string; + last?: boolean; format?: string; - 'parser-preset'?: string; + "parser-preset"?: string; quiet: boolean; to?: string; version?: boolean; verbose?: boolean; - 'print-config'?: boolean; + /** @type {'' | 'text' | 'json'} */ + "print-config"?: string; + strict?: boolean; _: (string | number)[]; $0: string; } - -export interface Seed { - extends?: string[]; - parserPreset?: string; -} diff --git a/@commitlint/config-angular-type-enum/CHANGELOG.md b/@commitlint/config-angular-type-enum/CHANGELOG.md index 2271a3e064..51e6839438 100644 --- a/@commitlint/config-angular-type-enum/CHANGELOG.md +++ b/@commitlint/config-angular-type-enum/CHANGELOG.md @@ -3,21 +3,23 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. -# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) +**Note:** Version bump only for package @commitlint/config-angular-type-enum -* chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) -### BREAKING CHANGES -* minimum node version is 12 +## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) + +**Note:** Version bump only for package @commitlint/config-angular-type-enum -## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) + +# [19.8.0](https://github.com/conventional-changelog/commitlint/compare/v19.7.1...v19.8.0) (2025-03-07) **Note:** Version bump only for package @commitlint/config-angular-type-enum @@ -25,7 +27,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) +# [19.5.0](https://github.com/conventional-changelog/commitlint/compare/v19.4.1...v19.5.0) (2024-09-11) **Note:** Version bump only for package @commitlint/config-angular-type-enum @@ -33,61 +35,81 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) +# [19.1.0](https://github.com/conventional-changelog/commitlint/compare/v19.0.3...v19.1.0) (2024-03-12) -**Note:** Version bump only for package @commitlint/config-angular-type-enum +### Bug Fixes +* add `main` and `types` keys in package.json ([#3953](https://github.com/conventional-changelog/commitlint/issues/3953)) ([7ddaad4](https://github.com/conventional-changelog/commitlint/commit/7ddaad4bc4e71afe89f25cc02d3e19beba1ce6cd)) -# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) -**Note:** Version bump only for package @commitlint/config-angular-type-enum +# [19.0.0](https://github.com/conventional-changelog/commitlint/compare/v18.6.2...v19.0.0) (2024-02-27) +* feat!: migrate to pure ESM (#3850) ([3423735](https://github.com/conventional-changelog/commitlint/commit/342373559bdf7c783c4ef37ff05dc38a5f681159)), closes [#3850](https://github.com/conventional-changelog/commitlint/issues/3850) -# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) +### Reverts -**Note:** Version bump only for package @commitlint/config-angular-type-enum +* Revert "chore!: minimum node version v20" ([2816783](https://github.com/conventional-changelog/commitlint/commit/2816783d00e7eb967de3ac9347c2fc43dc8b94fa)) +### BREAKING CHANGES +* migrate to pure ESM +* feat: migrate to pure ESM -# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) +* chore: update snapshot +* fix: load `parserPreset` with another `await` -* refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) +* test: migrate to vitest +* test: remove no replacement `--runInBand` test-ci script -### BREAKING CHANGES +* chore: fix code reviews -* remove node 8 from circle-ci checks +* refactor(load): rewrite resolve logic -also remove node 13 because we do not support experimental versions +* fix(config-nx-scopes): fix syntax error -* docs: update node v10 to latest LTS 10 version +* feat(resolve-extends): add resolveFrom and loadParserPreset -Co-authored-by: Cedric van Putten <me@bycedric.com> +* feat(load): use resolveFrom and loadParserPreset from resolve-extends -Co-authored-by: Cedric van Putten <me@bycedric.com> +* test: include only @commitlint/* packages src in coverage +* test: explicit import vitest utilities +* test: remove @jest/globals from dependencies +* fix(resolve-extends): `resolveFrom` output should be platform aware +* test: restore NO_COLOR to test script -## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) +* chore: fix linting issues -**Note:** Version bump only for package @commitlint/config-angular-type-enum +* fix: should use fileURLToPath instead of pathname for Windows compatibility +* Apply suggestions from code review +* fix: should reuse `cli` instead call `yargs()` + +* feat(cli): set terminalWidth as wrap to avoid work break on help + +* Update .eslintrc.cjs + +* feat: migrate @commitlint/config-conventional to pure ESM -## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) + + +## [18.6.1](https://github.com/conventional-changelog/commitlint/compare/v18.6.0...v18.6.1) (2024-02-13) **Note:** Version bump only for package @commitlint/config-angular-type-enum @@ -95,7 +117,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) +## [18.4.4](https://github.com/conventional-changelog/commitlint/compare/v18.4.3...v18.4.4) (2024-01-04) **Note:** Version bump only for package @commitlint/config-angular-type-enum @@ -103,7 +125,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) +## [18.4.3](https://github.com/conventional-changelog/commitlint/compare/v18.4.2...v18.4.3) (2023-11-21) **Note:** Version bump only for package @commitlint/config-angular-type-enum @@ -111,7 +133,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) +# [18.4.0](https://github.com/conventional-changelog/commitlint/compare/v18.3.0...v18.4.0) (2023-11-10) **Note:** Version bump only for package @commitlint/config-angular-type-enum @@ -119,7 +141,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) +# [18.1.0](https://github.com/conventional-changelog/commitlint/compare/v18.0.0...v18.1.0) (2023-10-25) **Note:** Version bump only for package @commitlint/config-angular-type-enum @@ -127,7 +149,37 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) +# [18.0.0](https://github.com/conventional-changelog/commitlint/compare/v17.8.1...v18.0.0) (2023-10-20) + + +* chore!: minimum node version v18 (#3644) ([5b4aeaf](https://github.com/conventional-changelog/commitlint/commit/5b4aeaf4f01c2726a7bc8631a23bb34c849baad2)), closes [#3644](https://github.com/conventional-changelog/commitlint/issues/3644) + + +### BREAKING CHANGES + +* drop node v14 and v16 support + +* chore: remove unused types + +* docs: prepare node update and new release + +* chore!: minimum TS version v5 +* drop TS v4 support + +* ci: remove node v14/16 checks + +* chore: adjust node types to minimal supported version + +* chore!: further major versions of other deps +* upgrade conventional-changelog-conventionalcommits, conventional-commits-parser, conventional-changelog-atom, + +* docs: simplify releases and remove roadmap + + + + + +## [17.8.1](https://github.com/conventional-changelog/commitlint/compare/v17.8.0...v17.8.1) (2023-10-20) **Note:** Version bump only for package @commitlint/config-angular-type-enum @@ -135,128 +187,202 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) +# [17.4.0](https://github.com/conventional-changelog/commitlint/compare/v17.3.0...v17.4.0) (2023-01-04) **Note:** Version bump only for package @commitlint/config-angular-type-enum +# [17.0.0](https://github.com/conventional-changelog/commitlint/compare/v16.3.0...v17.0.0) (2022-05-16) +- chore!: minimum node version v14 (#3128) ([ac5f9b4](https://github.com/conventional-changelog/commitlint/commit/ac5f9b47a9e3cd5c9d58b14da0feb426f06b1ef9)), closes [#3128](https://github.com/conventional-changelog/commitlint/issues/3128) +### BREAKING CHANGES +- drop node v12 support -# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) +- chore: rename circleci windows job + +node version is not defned by the name anyways (i think) + +# [16.3.0](https://github.com/conventional-changelog/commitlint/compare/v16.2.4...v16.3.0) (2022-05-14) **Note:** Version bump only for package @commitlint/config-angular-type-enum +## [16.2.1](https://github.com/conventional-changelog/commitlint/compare/v16.2.0...v16.2.1) (2022-02-13) +**Note:** Version bump only for package @commitlint/config-angular-type-enum +# [16.0.0](https://github.com/conventional-changelog/commitlint/compare/v15.0.0...v16.0.0) (2021-12-26) +**Note:** Version bump only for package @commitlint/config-angular-type-enum -# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) +# [15.0.0](https://github.com/conventional-changelog/commitlint/compare/v14.2.0...v15.0.0) (2021-11-17) **Note:** Version bump only for package @commitlint/config-angular-type-enum +# [14.0.0](https://github.com/conventional-changelog/commitlint/compare/v13.2.1...v14.0.0) (2021-10-26) +**Note:** Version bump only for package @commitlint/config-angular-type-enum +# [13.2.0](https://github.com/conventional-changelog/commitlint/compare/v13.1.0...v13.2.0) (2021-09-28) +**Note:** Version bump only for package @commitlint/config-angular-type-enum -<a name="7.5.0"></a> -# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) +# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) +- chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) -### Bug Fixes +### BREAKING CHANGES -* replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) +- minimum node version is 12 +## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) +**Note:** Version bump only for package @commitlint/config-angular-type-enum +## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) -<a name="7.3.1"></a> -## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) +**Note:** Version bump only for package @commitlint/config-angular-type-enum +## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) +**Note:** Version bump only for package @commitlint/config-angular-type-enum +# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) **Note:** Version bump only for package @commitlint/config-angular-type-enum -<a name="7.3.0"></a> -# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) +# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) +**Note:** Version bump only for package @commitlint/config-angular-type-enum + +# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) +- refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) + +### BREAKING CHANGES +- remove node 8 from circle-ci checks + +also remove node 13 because we do not support experimental versions + +- docs: update node v10 to latest LTS 10 version + +Co-authored-by: Cedric van Putten <me@bycedric.com> + +Co-authored-by: Cedric van Putten <me@bycedric.com> + +## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) **Note:** Version bump only for package @commitlint/config-angular-type-enum -<a name="7.1.2"></a> -## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) +## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) +**Note:** Version bump only for package @commitlint/config-angular-type-enum +# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) + +**Note:** Version bump only for package @commitlint/config-angular-type-enum +## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) **Note:** Version bump only for package @commitlint/config-angular-type-enum -<a name="6.1.1"></a> -## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) +# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) + +**Note:** Version bump only for package @commitlint/config-angular-type-enum +## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) +**Note:** Version bump only for package @commitlint/config-angular-type-enum +# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) **Note:** Version bump only for package @commitlint/config-angular-type-enum -<a name="6.1.0"></a> -# [6.1.0](https://github.com/conventional-changelog/commitlint/compare/v6.0.5...v6.1.0) (2018-02-03) +# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) +**Note:** Version bump only for package @commitlint/config-angular-type-enum +# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) +**Note:** Version bump only for package @commitlint/config-angular-type-enum + +# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) **Note:** Version bump only for package @commitlint/config-angular-type-enum -<a name="6.0.4"></a> -## [6.0.4](https://github.com/conventional-changelog/commitlint/compare/v6.0.3...v6.0.4) (2018-01-31) +<a name="7.5.0"></a> + +# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) +### Bug Fixes +- replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) +<a name="7.3.1"></a> + +## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) **Note:** Version bump only for package @commitlint/config-angular-type-enum -<a name="6.0.3"></a> -## [6.0.3](https://github.com/conventional-changelog/commitlint/compare/v6.0.2...v6.0.3) (2018-01-31) +<a name="7.3.0"></a> +# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) +**Note:** Version bump only for package @commitlint/config-angular-type-enum +<a name="7.1.2"></a> + +## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) **Note:** Version bump only for package @commitlint/config-angular-type-enum -<a name="6.0.2"></a> -## [6.0.2](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.2) (2018-01-12) +<a name="6.1.1"></a> +## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) +**Note:** Version bump only for package @commitlint/config-angular-type-enum +<a name="6.1.0"></a> + +# [6.1.0](https://github.com/conventional-changelog/commitlint/compare/v6.0.5...v6.1.0) (2018-02-03) **Note:** Version bump only for package @commitlint/config-angular-type-enum -<a name="5.1.1"></a> -## [5.1.1](https://github.com/conventional-changelog/commitlint/compare/v5.1.0...v5.1.1) (2017-11-24) +<a name="6.0.4"></a> +## [6.0.4](https://github.com/conventional-changelog/commitlint/compare/v6.0.3...v6.0.4) (2018-01-31) +**Note:** Version bump only for package @commitlint/config-angular-type-enum +<a name="6.0.3"></a> + +## [6.0.3](https://github.com/conventional-changelog/commitlint/compare/v6.0.2...v6.0.3) (2018-01-31) **Note:** Version bump only for package @commitlint/config-angular-type-enum -<a name="5.1.0"></a> -# [5.1.0](https://github.com/conventional-changelog/commitlint/compare/v5.0.2...v5.1.0) (2017-11-24) +<a name="6.0.2"></a> +## [6.0.2](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.2) (2018-01-12) -### Features +**Note:** Version bump only for package @commitlint/config-angular-type-enum + +<a name="5.1.1"></a> -* **travis-cli:** add reusable travis command line interface ([3e6e6a8](https://github.com/conventional-changelog/commitlint/commit/3e6e6a8)) +## [5.1.1](https://github.com/conventional-changelog/commitlint/compare/v5.1.0...v5.1.1) (2017-11-24) +**Note:** Version bump only for package @commitlint/config-angular-type-enum +<a name="5.1.0"></a> +# [5.1.0](https://github.com/conventional-changelog/commitlint/compare/v5.0.2...v5.1.0) (2017-11-24) -<a name="5.0.1"></a> -## [5.0.1](https://github.com/conventional-changelog/commitlint/compare/v5.0.0...v5.0.1) (2017-11-19) +### Features +- **travis-cli:** add reusable travis command line interface ([3e6e6a8](https://github.com/conventional-changelog/commitlint/commit/3e6e6a8)) +<a name="5.0.1"></a> +## [5.0.1](https://github.com/conventional-changelog/commitlint/compare/v5.0.0...v5.0.1) (2017-11-19) **Note:** Version bump only for package @commitlint/config-angular-type-enum diff --git a/@commitlint/config-angular-type-enum/README.md b/@commitlint/config-angular-type-enum/README.md index 900ed600b2..09df8aa8de 100644 --- a/@commitlint/config-angular-type-enum/README.md +++ b/@commitlint/config-angular-type-enum/README.md @@ -8,7 +8,7 @@ See [@commitlint/config-angular](../config-angular) for full angular conventions ## Getting started ```sh -npm install --save-dev @commitlint/config-angular-types @commitlint/cli +npm install --save-dev @commitlint/config-angular-type-enum @commitlint/cli echo "module.exports = {extends: ['@commitlint/config-angular-type-enum']};" > commitlint.config.js ``` @@ -23,7 +23,7 @@ echo "build: bar" | commitlint # passes ```js // commitlint.config.js -const types = require('@commitlint/config-angular-type-enum'); +const types = require("@commitlint/config-angular-type-enum"); // Use as rule creating errors for non-allowed types module.exports = { @@ -35,7 +35,7 @@ module.exports = { // Warn for non-allowed types module.exports = { rules: { - 'type-enum': [1, 'always', types.values()], + "type-enum": [1, "always", types.values()], }, }; ``` diff --git a/@commitlint/config-angular-type-enum/index.js b/@commitlint/config-angular-type-enum/index.js index 3818ada7b6..658d6259d2 100644 --- a/@commitlint/config-angular-type-enum/index.js +++ b/@commitlint/config-angular-type-enum/index.js @@ -1,18 +1,19 @@ const types = [ - 'build', - 'ci', - 'docs', - 'feat', - 'fix', - 'perf', - 'refactor', - 'revert', - 'style', - 'test', + "build", + "ci", + "docs", + "feat", + "fix", + "perf", + "refactor", + "revert", + "style", + "test", ]; -module.exports.rules = { - 'type-enum': [2, 'always', types], +export default { + rules: { + "type-enum": [2, "always", types], + }, + value: () => types, }; - -module.exports.value = () => types; diff --git a/@commitlint/config-angular-type-enum/package.json b/@commitlint/config-angular-type-enum/package.json index 24d2f6598d..44abe83730 100644 --- a/@commitlint/config-angular-type-enum/package.json +++ b/@commitlint/config-angular-type-enum/package.json @@ -1,7 +1,9 @@ { "name": "@commitlint/config-angular-type-enum", - "version": "13.0.0", + "type": "module", + "version": "20.0.0", "description": "Shareable commitlint config enforcing the angular commit convention types", + "main": "index.js", "files": [ "index.js" ], @@ -11,7 +13,8 @@ }, "repository": { "type": "git", - "url": "https://github.com/conventional-changelog/commitlint.git" + "url": "https://github.com/conventional-changelog/commitlint.git", + "directory": "@commitlint/config-angular-type-enum" }, "keywords": [ "conventional-changelog", @@ -24,12 +27,12 @@ "bugs": { "url": "https://github.com/conventional-changelog/commitlint/issues" }, - "homepage": "https://github.com/conventional-changelog/commitlint#readme", + "homepage": "https://commitlint.js.org/", "engines": { - "node": ">=v12" + "node": ">=v18" }, "devDependencies": { - "@commitlint/utils": "^13.0.0" + "@commitlint/utils": "^20.0.0" }, - "gitHead": "d829bf6260304ca8d6811f329fcdd1b6c50e9749" + "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" } diff --git a/@commitlint/config-angular/CHANGELOG.md b/@commitlint/config-angular/CHANGELOG.md index 9f8adc468e..f16785c1ff 100644 --- a/@commitlint/config-angular/CHANGELOG.md +++ b/@commitlint/config-angular/CHANGELOG.md @@ -3,7 +3,7 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. -# [13.1.0](https://github.com/conventional-changelog/commitlint/compare/v13.0.0...v13.1.0) (2021-07-24) +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) **Note:** Version bump only for package @commitlint/config-angular @@ -11,26 +11,31 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) +## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) +**Note:** Version bump only for package @commitlint/config-angular -### Features -* add subject-exclamation-mark rule to improve error messages ([#2593](https://github.com/conventional-changelog/commitlint/issues/2593)) ([be701bd](https://github.com/conventional-changelog/commitlint/commit/be701bdb1de4e667b7a872767244285c4fa4fda4)) -* chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) +# [19.8.0](https://github.com/conventional-changelog/commitlint/compare/v19.7.1...v19.8.0) (2025-03-07) -### BREAKING CHANGES +**Note:** Version bump only for package @commitlint/config-angular -* minimum node version is 12 +## [19.7.1](https://github.com/conventional-changelog/commitlint/compare/v19.7.0...v19.7.1) (2025-02-02) + +**Note:** Version bump only for package @commitlint/config-angular + + -## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) + + +# [19.7.0](https://github.com/conventional-changelog/commitlint/compare/v19.6.1...v19.7.0) (2025-01-04) **Note:** Version bump only for package @commitlint/config-angular @@ -38,7 +43,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) +# [19.6.0](https://github.com/conventional-changelog/commitlint/compare/v19.5.0...v19.6.0) (2024-11-19) **Note:** Version bump only for package @commitlint/config-angular @@ -46,7 +51,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) +# [19.5.0](https://github.com/conventional-changelog/commitlint/compare/v19.4.1...v19.5.0) (2024-09-11) **Note:** Version bump only for package @commitlint/config-angular @@ -54,7 +59,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) +## [19.4.1](https://github.com/conventional-changelog/commitlint/compare/v19.4.0...v19.4.1) (2024-08-28) **Note:** Version bump only for package @commitlint/config-angular @@ -62,7 +67,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) +# [19.3.0](https://github.com/conventional-changelog/commitlint/compare/v19.2.2...v19.3.0) (2024-04-23) **Note:** Version bump only for package @commitlint/config-angular @@ -70,29 +75,94 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) +## [19.2.2](https://github.com/conventional-changelog/commitlint/compare/v19.2.1...v19.2.2) (2024-04-14) + +**Note:** Version bump only for package @commitlint/config-angular + + -* refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) + +# [19.1.0](https://github.com/conventional-changelog/commitlint/compare/v19.0.3...v19.1.0) (2024-03-12) + +**Note:** Version bump only for package @commitlint/config-angular + + + + + +## [19.0.3](https://github.com/conventional-changelog/commitlint/compare/v19.0.2...v19.0.3) (2024-02-28) + +**Note:** Version bump only for package @commitlint/config-angular + + + + + +# [19.0.0](https://github.com/conventional-changelog/commitlint/compare/v18.6.2...v19.0.0) (2024-02-27) + + +* feat!: migrate to pure ESM (#3850) ([3423735](https://github.com/conventional-changelog/commitlint/commit/342373559bdf7c783c4ef37ff05dc38a5f681159)), closes [#3850](https://github.com/conventional-changelog/commitlint/issues/3850) + + +### Reverts + +* Revert "chore!: minimum node version v20" ([2816783](https://github.com/conventional-changelog/commitlint/commit/2816783d00e7eb967de3ac9347c2fc43dc8b94fa)) ### BREAKING CHANGES -* remove node 8 from circle-ci checks +* migrate to pure ESM -also remove node 13 because we do not support experimental versions +* feat: migrate to pure ESM -* docs: update node v10 to latest LTS 10 version +* chore: update snapshot -Co-authored-by: Cedric van Putten <me@bycedric.com> +* fix: load `parserPreset` with another `await` -Co-authored-by: Cedric van Putten <me@bycedric.com> +* test: migrate to vitest +* test: remove no replacement `--runInBand` test-ci script +* chore: fix code reviews +* refactor(load): rewrite resolve logic +* fix(config-nx-scopes): fix syntax error -## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) +* feat(resolve-extends): add resolveFrom and loadParserPreset + +* feat(load): use resolveFrom and loadParserPreset from resolve-extends + +* test: include only @commitlint/* packages src in coverage + +* test: explicit import vitest utilities + +* test: remove @jest/globals from dependencies + +* fix(resolve-extends): `resolveFrom` output should be platform aware + +* test: restore NO_COLOR to test script + +* chore: fix linting issues + +* fix: should use fileURLToPath instead of pathname for Windows compatibility + +* Apply suggestions from code review + +* fix: should reuse `cli` instead call `yargs()` + +* feat(cli): set terminalWidth as wrap to avoid work break on help + +* Update .eslintrc.cjs + +* feat: migrate @commitlint/config-conventional to pure ESM + + + + + +## [18.6.1](https://github.com/conventional-changelog/commitlint/compare/v18.6.0...v18.6.1) (2024-02-13) **Note:** Version bump only for package @commitlint/config-angular @@ -100,7 +170,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) +# [18.6.0](https://github.com/conventional-changelog/commitlint/compare/v18.5.1...v18.6.0) (2024-01-25) **Note:** Version bump only for package @commitlint/config-angular @@ -108,7 +178,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) +# [18.5.0](https://github.com/conventional-changelog/commitlint/compare/v18.4.4...v18.5.0) (2024-01-22) **Note:** Version bump only for package @commitlint/config-angular @@ -116,7 +186,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) +## [18.4.4](https://github.com/conventional-changelog/commitlint/compare/v18.4.3...v18.4.4) (2024-01-04) **Note:** Version bump only for package @commitlint/config-angular @@ -124,7 +194,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) +## [18.4.3](https://github.com/conventional-changelog/commitlint/compare/v18.4.2...v18.4.3) (2023-11-21) **Note:** Version bump only for package @commitlint/config-angular @@ -132,7 +202,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) +## [18.4.2](https://github.com/conventional-changelog/commitlint/compare/v18.4.1...v18.4.2) (2023-11-16) **Note:** Version bump only for package @commitlint/config-angular @@ -140,7 +210,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) +# [18.4.0](https://github.com/conventional-changelog/commitlint/compare/v18.3.0...v18.4.0) (2023-11-10) **Note:** Version bump only for package @commitlint/config-angular @@ -148,7 +218,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) +# [18.1.0](https://github.com/conventional-changelog/commitlint/compare/v18.0.0...v18.1.0) (2023-10-25) **Note:** Version bump only for package @commitlint/config-angular @@ -156,7 +226,37 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) +# [18.0.0](https://github.com/conventional-changelog/commitlint/compare/v17.8.1...v18.0.0) (2023-10-20) + + +* chore!: minimum node version v18 (#3644) ([5b4aeaf](https://github.com/conventional-changelog/commitlint/commit/5b4aeaf4f01c2726a7bc8631a23bb34c849baad2)), closes [#3644](https://github.com/conventional-changelog/commitlint/issues/3644) + + +### BREAKING CHANGES + +* drop node v14 and v16 support + +* chore: remove unused types + +* docs: prepare node update and new release + +* chore!: minimum TS version v5 +* drop TS v4 support + +* ci: remove node v14/16 checks + +* chore: adjust node types to minimal supported version + +* chore!: further major versions of other deps +* upgrade conventional-changelog-conventionalcommits, conventional-commits-parser, conventional-changelog-atom, + +* docs: simplify releases and remove roadmap + + + + + +## [17.8.1](https://github.com/conventional-changelog/commitlint/compare/v17.8.0...v17.8.1) (2023-10-20) **Note:** Version bump only for package @commitlint/config-angular @@ -164,7 +264,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) +# [17.8.0](https://github.com/conventional-changelog/commitlint/compare/v17.7.2...v17.8.0) (2023-10-14) **Note:** Version bump only for package @commitlint/config-angular @@ -172,175 +272,372 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -<a name="7.5.0"></a> -# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) +# [17.7.0](https://github.com/conventional-changelog/commitlint/compare/v17.6.7...v17.7.0) (2023-08-09) +**Note:** Version bump only for package @commitlint/config-angular -### Bug Fixes -* all broken website references ([#564](https://github.com/conventional-changelog/commitlint/issues/564)) ([82eeb5a](https://github.com/conventional-changelog/commitlint/commit/82eeb5a)) -* replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) -* replace all website references with conventional changelog ([#563](https://github.com/conventional-changelog/commitlint/issues/563)) ([6b86fb1](https://github.com/conventional-changelog/commitlint/commit/6b86fb1)) +## [17.6.7](https://github.com/conventional-changelog/commitlint/compare/v17.6.6...v17.6.7) (2023-07-19) + +**Note:** Version bump only for package @commitlint/config-angular -<a name="7.3.1"></a> -## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) +## [17.6.6](https://github.com/conventional-changelog/commitlint/compare/v17.6.5...v17.6.6) (2023-06-24) + **Note:** Version bump only for package @commitlint/config-angular -<a name="7.3.0"></a> -# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) +## [17.6.5](https://github.com/conventional-changelog/commitlint/compare/v17.6.4...v17.6.5) (2023-05-30) + **Note:** Version bump only for package @commitlint/config-angular -<a name="7.1.2"></a> -## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) +## [17.6.3](https://github.com/conventional-changelog/commitlint/compare/v17.6.2...v17.6.3) (2023-05-04) + **Note:** Version bump only for package @commitlint/config-angular -<a name="6.1.1"></a> -## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) +## [17.6.1](https://github.com/conventional-changelog/commitlint/compare/v17.6.0...v17.6.1) (2023-04-14) + **Note:** Version bump only for package @commitlint/config-angular -<a name="6.1.0"></a> -# [6.1.0](https://github.com/conventional-changelog/commitlint/compare/v6.0.5...v6.1.0) (2018-02-03) +# [17.6.0](https://github.com/conventional-changelog/commitlint/compare/v17.5.1...v17.6.0) (2023-04-13) + **Note:** Version bump only for package @commitlint/config-angular -<a name="6.0.4"></a> -## [6.0.4](https://github.com/conventional-changelog/commitlint/compare/v6.0.3...v6.0.4) (2018-01-31) +## [17.4.4](https://github.com/conventional-changelog/commitlint/compare/v17.4.3...v17.4.4) (2023-02-17) + **Note:** Version bump only for package @commitlint/config-angular -<a name="6.0.3"></a> -## [6.0.3](https://github.com/conventional-changelog/commitlint/compare/v6.0.2...v6.0.3) (2018-01-31) +## [17.4.3](https://github.com/conventional-changelog/commitlint/compare/v17.4.2...v17.4.3) (2023-02-13) + **Note:** Version bump only for package @commitlint/config-angular -<a name="6.0.2"></a> -## [6.0.2](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.2) (2018-01-12) +## [17.4.2](https://github.com/conventional-changelog/commitlint/compare/v17.4.1...v17.4.2) (2023-01-12) + **Note:** Version bump only for package @commitlint/config-angular -<a name="5.1.1"></a> -## [5.1.1](https://github.com/conventional-changelog/commitlint/compare/v5.1.0...v5.1.1) (2017-11-24) +# [17.4.0](https://github.com/conventional-changelog/commitlint/compare/v17.3.0...v17.4.0) (2023-01-04) + **Note:** Version bump only for package @commitlint/config-angular -<a name="5.1.0"></a> -# [5.1.0](https://github.com/conventional-changelog/commitlint/compare/v5.0.2...v5.1.0) (2017-11-24) +# [17.3.0](https://github.com/conventional-changelog/commitlint/compare/v17.2.1...v17.3.0) (2022-11-21) + +**Note:** Version bump only for package @commitlint/config-angular +# [17.2.0](https://github.com/conventional-changelog/commitlint/compare/v17.1.2...v17.2.0) (2022-10-31) + +**Note:** Version bump only for package @commitlint/config-angular + +# [17.1.0](https://github.com/conventional-changelog/commitlint/compare/v17.0.3...v17.1.0) (2022-08-27) + +**Note:** Version bump only for package @commitlint/config-angular + +## [17.0.3](https://github.com/conventional-changelog/commitlint/compare/v17.0.2...v17.0.3) (2022-06-25) + +**Note:** Version bump only for package @commitlint/config-angular + +# [17.0.0](https://github.com/conventional-changelog/commitlint/compare/v16.3.0...v17.0.0) (2022-05-16) + +- chore!: minimum node version v14 (#3128) ([ac5f9b4](https://github.com/conventional-changelog/commitlint/commit/ac5f9b47a9e3cd5c9d58b14da0feb426f06b1ef9)), closes [#3128](https://github.com/conventional-changelog/commitlint/issues/3128) + +### BREAKING CHANGES + +- drop node v12 support + +- chore: rename circleci windows job + +node version is not defned by the name anyways (i think) + +# [16.3.0](https://github.com/conventional-changelog/commitlint/compare/v16.2.4...v16.3.0) (2022-05-14) + +**Note:** Version bump only for package @commitlint/config-angular + +## [16.2.4](https://github.com/conventional-changelog/commitlint/compare/v16.2.3...v16.2.4) (2022-04-28) + +**Note:** Version bump only for package @commitlint/config-angular + +## [16.2.3](https://github.com/conventional-changelog/commitlint/compare/v16.2.2...v16.2.3) (2022-03-16) + +**Note:** Version bump only for package @commitlint/config-angular + +## [16.2.1](https://github.com/conventional-changelog/commitlint/compare/v16.2.0...v16.2.1) (2022-02-13) + +**Note:** Version bump only for package @commitlint/config-angular + +# [16.0.0](https://github.com/conventional-changelog/commitlint/compare/v15.0.0...v16.0.0) (2021-12-26) + +**Note:** Version bump only for package @commitlint/config-angular + +# [15.0.0](https://github.com/conventional-changelog/commitlint/compare/v14.2.0...v15.0.0) (2021-11-17) + +**Note:** Version bump only for package @commitlint/config-angular + +# [14.1.0](https://github.com/conventional-changelog/commitlint/compare/v14.0.0...v14.1.0) (2021-11-01) + +**Note:** Version bump only for package @commitlint/config-angular + +# [14.0.0](https://github.com/conventional-changelog/commitlint/compare/v13.2.1...v14.0.0) (2021-10-26) + +**Note:** Version bump only for package @commitlint/config-angular + +# [13.2.0](https://github.com/conventional-changelog/commitlint/compare/v13.1.0...v13.2.0) (2021-09-28) + +**Note:** Version bump only for package @commitlint/config-angular + +# [13.1.0](https://github.com/conventional-changelog/commitlint/compare/v13.0.0...v13.1.0) (2021-07-24) + +**Note:** Version bump only for package @commitlint/config-angular + +# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) ### Features -* **travis-cli:** add reusable travis command line interface ([3e6e6a8](https://github.com/conventional-changelog/commitlint/commit/3e6e6a8)) +- add subject-exclamation-mark rule to improve error messages ([#2593](https://github.com/conventional-changelog/commitlint/issues/2593)) ([be701bd](https://github.com/conventional-changelog/commitlint/commit/be701bdb1de4e667b7a872767244285c4fa4fda4)) +- chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) +### BREAKING CHANGES +- minimum node version is 12 -<a name="5.0.1"></a> -## [5.0.1](https://github.com/conventional-changelog/commitlint/compare/v5.0.0...v5.0.1) (2017-11-19) +## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) + +**Note:** Version bump only for package @commitlint/config-angular +## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) +**Note:** Version bump only for package @commitlint/config-angular +## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) **Note:** Version bump only for package @commitlint/config-angular -<a name="4.3.0"></a> -# [4.3.0](https://github.com/conventional-changelog/commitlint/compare/v4.2.2...v4.3.0) (2017-11-08) +# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) +**Note:** Version bump only for package @commitlint/config-angular + +# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) + +**Note:** Version bump only for package @commitlint/config-angular + +# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) + +- refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) + +### BREAKING CHANGES + +- remove node 8 from circle-ci checks + +also remove node 13 because we do not support experimental versions + +- docs: update node v10 to latest LTS 10 version + +Co-authored-by: Cedric van Putten <me@bycedric.com> + +Co-authored-by: Cedric van Putten <me@bycedric.com> + +## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) + +**Note:** Version bump only for package @commitlint/config-angular + +## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) + +**Note:** Version bump only for package @commitlint/config-angular + +# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) + +**Note:** Version bump only for package @commitlint/config-angular + +## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) + +**Note:** Version bump only for package @commitlint/config-angular + +# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) + +**Note:** Version bump only for package @commitlint/config-angular + +## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) + +**Note:** Version bump only for package @commitlint/config-angular + +# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) + +**Note:** Version bump only for package @commitlint/config-angular + +# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) + +**Note:** Version bump only for package @commitlint/config-angular + +# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) + +**Note:** Version bump only for package @commitlint/config-angular + +# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) + +**Note:** Version bump only for package @commitlint/config-angular + +<a name="7.5.0"></a> + +# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) ### Bug Fixes -* **core:** deprecate nlp rules ([bbab1d8](https://github.com/conventional-changelog/commitlint/commit/bbab1d8)), closes [#54](https://github.com/conventional-changelog/commitlint/issues/54) +- all broken website references ([#564](https://github.com/conventional-changelog/commitlint/issues/564)) ([82eeb5a](https://github.com/conventional-changelog/commitlint/commit/82eeb5a)) +- replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) +- replace all website references with conventional changelog ([#563](https://github.com/conventional-changelog/commitlint/issues/563)) ([6b86fb1](https://github.com/conventional-changelog/commitlint/commit/6b86fb1)) +<a name="7.3.1"></a> +## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) +**Note:** Version bump only for package @commitlint/config-angular -<a name="4.2.1"></a> -## [4.2.1](https://github.com/conventional-changelog/commitlint/compare/v4.2.0...v4.2.1) (2017-10-18) +<a name="7.3.0"></a> + +# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) +**Note:** Version bump only for package @commitlint/config-angular +<a name="7.1.2"></a> +## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) **Note:** Version bump only for package @commitlint/config-angular -<a name="4.2.0"></a> -# [4.2.0](https://github.com/conventional-changelog/commitlint/compare/v4.1.1...v4.2.0) (2017-10-14) +<a name="6.1.1"></a> +## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) +**Note:** Version bump only for package @commitlint/config-angular +<a name="6.1.0"></a> + +# [6.1.0](https://github.com/conventional-changelog/commitlint/compare/v6.0.5...v6.1.0) (2018-02-03) **Note:** Version bump only for package @commitlint/config-angular -<a name="3.0.4"></a> -## 3.0.4 (2017-08-04) +<a name="6.0.4"></a> +## [6.0.4](https://github.com/conventional-changelog/commitlint/compare/v6.0.3...v6.0.4) (2018-01-31) +**Note:** Version bump only for package @commitlint/config-angular -<a name="3.0.3"></a> -## 3.0.3 (2017-07-16) +<a name="6.0.3"></a> +## [6.0.3](https://github.com/conventional-changelog/commitlint/compare/v6.0.2...v6.0.3) (2018-01-31) +**Note:** Version bump only for package @commitlint/config-angular -<a name="3.0.2"></a> -## 3.0.2 (2017-07-11) +<a name="6.0.2"></a> +## [6.0.2](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.2) (2018-01-12) +**Note:** Version bump only for package @commitlint/config-angular +<a name="5.1.1"></a> -<a name="3.0.3"></a> -## 3.0.3 (2017-07-16) +## [5.1.1](https://github.com/conventional-changelog/commitlint/compare/v5.1.0...v5.1.1) (2017-11-24) +**Note:** Version bump only for package @commitlint/config-angular +<a name="5.1.0"></a> -<a name="3.0.2"></a> -## 3.0.2 (2017-07-11) +# [5.1.0](https://github.com/conventional-changelog/commitlint/compare/v5.0.2...v5.1.0) (2017-11-24) + +### Features + +- **travis-cli:** add reusable travis command line interface ([3e6e6a8](https://github.com/conventional-changelog/commitlint/commit/3e6e6a8)) + +<a name="5.0.1"></a> + +## [5.0.1](https://github.com/conventional-changelog/commitlint/compare/v5.0.0...v5.0.1) (2017-11-19) + +**Note:** Version bump only for package @commitlint/config-angular + +<a name="4.3.0"></a> + +# [4.3.0](https://github.com/conventional-changelog/commitlint/compare/v4.2.2...v4.3.0) (2017-11-08) + +### Bug Fixes + +- **core:** deprecate nlp rules ([bbab1d8](https://github.com/conventional-changelog/commitlint/commit/bbab1d8)), closes [#54](https://github.com/conventional-changelog/commitlint/issues/54) + +<a name="4.2.1"></a> + +## [4.2.1](https://github.com/conventional-changelog/commitlint/compare/v4.2.0...v4.2.1) (2017-10-18) + +**Note:** Version bump only for package @commitlint/config-angular + +<a name="4.2.0"></a> + +# [4.2.0](https://github.com/conventional-changelog/commitlint/compare/v4.1.1...v4.2.0) (2017-10-14) + +**Note:** Version bump only for package @commitlint/config-angular +<a name="3.0.4"></a> +## 3.0.4 (2017-08-04) +<a name="3.0.3"></a> + +## 3.0.3 (2017-07-16) <a name="3.0.2"></a> + ## 3.0.2 (2017-07-11) +<a name="3.0.3"></a> +## 3.0.3 (2017-07-16) +<a name="3.0.2"></a> -<a name="3.0.1"></a> -## 3.0.1 (2017-07-11) +## 3.0.2 (2017-07-11) + +<a name="3.0.2"></a> +## 3.0.2 (2017-07-11) +<a name="3.0.1"></a> +## 3.0.1 (2017-07-11) <a name="3.0.0"></a> + # 3.0.0 (2017-07-10) diff --git a/@commitlint/config-angular/README.md b/@commitlint/config-angular/README.md index 603414339d..49bfc60726 100644 --- a/@commitlint/config-angular/README.md +++ b/@commitlint/config-angular/README.md @@ -1,15 +1,15 @@ -> Lint your commits, angular-style - # @commitlint/config-angular -Shareable `commitlint` config enforcing the [Angular commit convention](https://github.com/angular/angular/blob/master/CONTRIBUTING.md#commit). +Lint your commits, angular-style + +Shareable `commitlint` config enforcing the [Angular commit convention](https://github.com/angular/angular/blob/main/CONTRIBUTING.md#commit). Use with [@commitlint/cli](../cli) and [@commitlint/prompt-cli](../prompt-cli). ## Getting started ```sh npm install --save-dev @commitlint/config-angular @commitlint/cli -echo "module.exports = {extends: ['@commitlint/config-angular']};" > commitlint.config.js +echo "export default {extends: ['@commitlint/config-angular']};" > commitlint.config.js ``` ## Rules @@ -17,7 +17,7 @@ echo "module.exports = {extends: ['@commitlint/config-angular']};" > commitlint. ### Problems The following rules are considered problems for `@commitlint/config-angular` and will yield a non-zero exit code when not met. -Consult [docs/rules](https://conventional-changelog.github.io/commitlint/#/reference-rules) for a list of available rules. +Consult [Rules reference](https://commitlint.js.org/reference/rules) for a list of available rules. #### type-enum @@ -128,8 +128,8 @@ echo "fix: some message" # passes - **rule**: `never` The [angular commit -convention](hhttps://github.com/angular/angular/blob/master/CONTRIBUTING.md#commit) -dose not use a `!` to define a breaking change in the commit subject. If you +convention](hhttps://github.com/angular/angular/blob/main/CONTRIBUTING.md#commit) +does not use a `!` to define a breaking change in the commit subject. If you want to use this feature please consider using the [conventional commit config](https://github.com/conventional-changelog/commitlint/tree/master/%40commitlint/config-conventional#commitlintconfig-conventional). diff --git a/@commitlint/config-angular/index.js b/@commitlint/config-angular/index.js index 12e2a00aa6..81848fb82c 100644 --- a/@commitlint/config-angular/index.js +++ b/@commitlint/config-angular/index.js @@ -1,22 +1,24 @@ -const typeEnum = require('@commitlint/config-angular-type-enum'); +import typeEnum from "@commitlint/config-angular-type-enum"; -module.exports = { - parserPreset: {parserOpts: {headerPattern: /^(\w*)(?:\((.*)\))?!?: (.*)$/}}, +export default { + parserPreset: { + parserOpts: { headerPattern: /^(\w*)(?:\((.*)\))?!?: (.*)$/ }, + }, rules: { - 'subject-exclamation-mark': [2, 'never'], - 'body-leading-blank': [1, 'always'], - 'footer-leading-blank': [1, 'always'], - 'header-max-length': [2, 'always', 72], - 'scope-case': [2, 'always', 'lower-case'], - 'subject-case': [ + "subject-exclamation-mark": [2, "never"], + "body-leading-blank": [1, "always"], + "footer-leading-blank": [1, "always"], + "header-max-length": [2, "always", 72], + "scope-case": [2, "always", "lower-case"], + "subject-case": [ 2, - 'never', - ['sentence-case', 'start-case', 'pascal-case', 'upper-case'], + "never", + ["sentence-case", "start-case", "pascal-case", "upper-case"], ], - 'subject-empty': [2, 'never'], - 'subject-full-stop': [2, 'never', '.'], - 'type-case': [2, 'always', 'lower-case'], - 'type-empty': [2, 'never'], - 'type-enum': typeEnum.rules['type-enum'], + "subject-empty": [2, "never"], + "subject-full-stop": [2, "never", "."], + "type-case": [2, "always", "lower-case"], + "type-empty": [2, "never"], + "type-enum": typeEnum.rules["type-enum"], }, }; diff --git a/@commitlint/config-angular/index.test.js b/@commitlint/config-angular/index.test.js index 6b5919d1fb..d76a84c585 100644 --- a/@commitlint/config-angular/index.test.js +++ b/@commitlint/config-angular/index.test.js @@ -1,104 +1,108 @@ -import lint from '@commitlint/lint'; -import {rules, parserPreset} from '.'; +import { test, expect } from "vitest"; +import lint from "@commitlint/lint"; + +import config from "./index.js"; + +const { rules, parserPreset } = config; const lintMessage = async (message) => { const parserOpts = parserPreset.parserOpts; - const m = message.replace(/^\s+/, '').trim(); - const result = await lint(m, rules, {parserOpts}); + const m = message.replace(/^\s+/, "").trim(); + const result = await lint(m, rules, { parserOpts }); if (result.errors.length > 1) { throw new Error( - 'Commit test should only have one error message to validate against' + "Commit test should only have one error message to validate against", ); } if (result.warnings.length > 1) { throw new Error( - 'Commit test should only have one warning message to validate against' + "Commit test should only have one warning message to validate against", ); } return result; }; -test('a valid commit message', async () => { - const result = await lintMessage('test: a valid angular commit'); +test("a valid commit message", async () => { + const result = await lintMessage("test: a valid angular commit"); expect(result.valid).toBe(true); expect(result.errors).toStrictEqual([]); expect(result.warnings).toStrictEqual([]); }); -test('a valid message with a scope', async () => { +test("a valid message with a scope", async () => { const result = await lintMessage( - 'test(scope): a valid angular commit with a scope' + "test(scope): a valid angular commit with a scope", ); expect(result.valid).toBe(true); expect(result.errors).toStrictEqual([]); expect(result.warnings).toStrictEqual([]); }); -test('a valid multi line commit', async () => { +test("a valid multi line commit", async () => { const result = await lintMessage( `test(scope): a valid angular commit with a scope - Some content in the body` + Some content in the body`, ); expect(result.valid).toBe(true); expect(result.errors).toStrictEqual([]); expect(result.warnings).toStrictEqual([]); }); -test('a leading blank line after header', async () => { +test("a leading blank line after header", async () => { const result = await lintMessage( `test(scope): a valid angular commit with a scope - Some content in the body` + Some content in the body`, ); expect(result.valid).toBe(true); expect(result.errors).toStrictEqual([]); - expect(result.warnings[0].message).toBe('body must have leading blank line'); + expect(result.warnings[0].message).toBe("body must have leading blank line"); }); -test('an invalid scope', async () => { - const result = await lintMessage(`no: no is not not an invalid commit type`); +test("an invalid scope", async () => { + const result = await lintMessage(`no: no is not an invalid commit type`); expect(result.valid).toBe(false); expect(result.errors[0].message).toBe( - 'type must be one of [build, ci, docs, feat, fix, perf, refactor, revert, style, test]' + "type must be one of [build, ci, docs, feat, fix, perf, refactor, revert, style, test]", ); expect(result.warnings).toStrictEqual([]); }); -test('a long header', async () => { +test("a long header", async () => { const result = await lintMessage( - `test: that its an error when there is ia realllllllllllllllllllllly long header` + `test: that its an error when there is ia realllllllllllllllllllllly long header`, ); expect(result.valid).toBe(false); expect(result.errors[0].message).toBe( - 'header must not be longer than 72 characters, current length is 79' + "header must not be longer than 72 characters, current length is 79", ); expect(result.warnings).toStrictEqual([]); }); -test('message header with ! in it', async () => { +test("message header with ! in it", async () => { const result = await lintMessage(`test!: with a breaking change in the type`); expect(result.valid).toBe(false); expect(result.errors[0].message).toBe( - 'subject must not have an exclamation mark in the subject to identify a breaking change' + "subject must not have an exclamation mark in the subject to identify a breaking change", ); expect(result.warnings).toStrictEqual([]); }); -test('message header with ! in it and a scope', async () => { +test("message header with ! in it and a scope", async () => { const result = await lintMessage( - `test(scope)!: with a breaking change in the type` + `test(scope)!: with a breaking change in the type`, ); expect(result.valid).toBe(false); expect(result.errors[0].message).toBe( - 'subject must not have an exclamation mark in the subject to identify a breaking change' + "subject must not have an exclamation mark in the subject to identify a breaking change", ); expect(result.warnings).toStrictEqual([]); }); diff --git a/@commitlint/config-angular/package.json b/@commitlint/config-angular/package.json index 9c6c6f16e6..25d65bbc27 100644 --- a/@commitlint/config-angular/package.json +++ b/@commitlint/config-angular/package.json @@ -1,7 +1,9 @@ { "name": "@commitlint/config-angular", - "version": "13.1.0", + "type": "module", + "version": "20.0.0", "description": "Shareable commitlint config enforcing the angular commit convention", + "main": "index.js", "files": [ "index.js" ], @@ -11,7 +13,8 @@ }, "repository": { "type": "git", - "url": "https://github.com/conventional-changelog/commitlint.git" + "url": "https://github.com/conventional-changelog/commitlint.git", + "directory": "@commitlint/config-angular" }, "keywords": [ "conventional-changelog", @@ -24,16 +27,16 @@ "bugs": { "url": "https://github.com/conventional-changelog/commitlint/issues" }, - "homepage": "https://github.com/conventional-changelog/commitlint#readme", + "homepage": "https://commitlint.js.org/", "engines": { - "node": ">=v12" + "node": ">=v18" }, "devDependencies": { - "@commitlint/lint": "^13.1.0", - "@commitlint/utils": "^13.0.0" + "@commitlint/lint": "^20.0.0", + "@commitlint/utils": "^20.0.0" }, "dependencies": { - "@commitlint/config-angular-type-enum": "^13.0.0" + "@commitlint/config-angular-type-enum": "^20.0.0" }, - "gitHead": "d829bf6260304ca8d6811f329fcdd1b6c50e9749" + "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" } diff --git a/@commitlint/config-conventional/CHANGELOG.md b/@commitlint/config-conventional/CHANGELOG.md index b1157a183a..0242ace145 100644 --- a/@commitlint/config-conventional/CHANGELOG.md +++ b/@commitlint/config-conventional/CHANGELOG.md @@ -3,37 +3,34 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. -# [13.1.0](https://github.com/conventional-changelog/commitlint/compare/v13.0.0...v13.1.0) (2021-07-24) +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) +**Note:** Version bump only for package @commitlint/config-conventional -### Bug Fixes -* **cz-commitlint:** fix minor formatting issues ([99d8881](https://github.com/conventional-changelog/commitlint/commit/99d8881d0d951deded6d9e31bbb279d04101549b)) +## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) +**Note:** Version bump only for package @commitlint/config-conventional -# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) -### Features -* add subject-exclamation-mark rule to improve error messages ([#2593](https://github.com/conventional-changelog/commitlint/issues/2593)) ([be701bd](https://github.com/conventional-changelog/commitlint/commit/be701bdb1de4e667b7a872767244285c4fa4fda4)) +# [19.8.0](https://github.com/conventional-changelog/commitlint/compare/v19.7.1...v19.8.0) (2025-03-07) -* chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) +### Performance Improvements -### BREAKING CHANGES - -* minimum node version is 12 +* use `node:` prefix to bypass require.cache call for builtins ([#4302](https://github.com/conventional-changelog/commitlint/issues/4302)) ([0cd8f41](https://github.com/conventional-changelog/commitlint/commit/0cd8f410573fe11383f788b1ceb7e0946143591d)) -## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) +## [19.7.1](https://github.com/conventional-changelog/commitlint/compare/v19.7.0...v19.7.1) (2025-02-02) **Note:** Version bump only for package @commitlint/config-conventional @@ -41,7 +38,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.1.2](https://github.com/conventional-changelog/commitlint/compare/v12.1.1...v12.1.2) (2021-04-29) +# [19.6.0](https://github.com/conventional-changelog/commitlint/compare/v19.5.0...v19.6.0) (2024-11-19) **Note:** Version bump only for package @commitlint/config-conventional @@ -49,7 +46,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) +# [19.5.0](https://github.com/conventional-changelog/commitlint/compare/v19.4.1...v19.5.0) (2024-09-11) **Note:** Version bump only for package @commitlint/config-conventional @@ -57,7 +54,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [12.1.0](https://github.com/conventional-changelog/commitlint/compare/v12.0.1...v12.1.0) (2021-03-06) +## [19.4.1](https://github.com/conventional-changelog/commitlint/compare/v19.4.0...v19.4.1) (2024-08-28) **Note:** Version bump only for package @commitlint/config-conventional @@ -65,7 +62,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) +## [19.2.2](https://github.com/conventional-changelog/commitlint/compare/v19.2.1...v19.2.2) (2024-04-14) **Note:** Version bump only for package @commitlint/config-conventional @@ -73,7 +70,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) +# [19.1.0](https://github.com/conventional-changelog/commitlint/compare/v19.0.3...v19.1.0) (2024-03-12) **Note:** Version bump only for package @commitlint/config-conventional @@ -81,7 +78,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) +## [19.0.3](https://github.com/conventional-changelog/commitlint/compare/v19.0.2...v19.0.3) (2024-02-28) **Note:** Version bump only for package @commitlint/config-conventional @@ -89,34 +86,92 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) +# [19.0.0](https://github.com/conventional-changelog/commitlint/compare/v18.6.2...v19.0.0) (2024-02-27) -### Bug Fixes +* feat!: migrate to pure ESM (#3850) ([3423735](https://github.com/conventional-changelog/commitlint/commit/342373559bdf7c783c4ef37ff05dc38a5f681159)), closes [#3850](https://github.com/conventional-changelog/commitlint/issues/3850) -* update dependency ([#1993](https://github.com/conventional-changelog/commitlint/issues/1993)) ([32667e8](https://github.com/conventional-changelog/commitlint/commit/32667e8aa665cf94fe669ba048ad7abaf6abac6e)) +### Reverts -* refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) +* Revert "chore!: minimum node version v20" ([2816783](https://github.com/conventional-changelog/commitlint/commit/2816783d00e7eb967de3ac9347c2fc43dc8b94fa)) ### BREAKING CHANGES -* remove node 8 from circle-ci checks +* migrate to pure ESM -also remove node 13 because we do not support experimental versions +* feat: migrate to pure ESM -* docs: update node v10 to latest LTS 10 version +* chore: update snapshot -Co-authored-by: Cedric van Putten <me@bycedric.com> +* fix: load `parserPreset` with another `await` -Co-authored-by: Cedric van Putten <me@bycedric.com> +* test: migrate to vitest +* test: remove no replacement `--runInBand` test-ci script +* chore: fix code reviews +* refactor(load): rewrite resolve logic +* fix(config-nx-scopes): fix syntax error -## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) +* feat(resolve-extends): add resolveFrom and loadParserPreset + +* feat(load): use resolveFrom and loadParserPreset from resolve-extends + +* test: include only @commitlint/* packages src in coverage + +* test: explicit import vitest utilities + +* test: remove @jest/globals from dependencies + +* fix(resolve-extends): `resolveFrom` output should be platform aware + +* test: restore NO_COLOR to test script + +* chore: fix linting issues + +* fix: should use fileURLToPath instead of pathname for Windows compatibility + +* Apply suggestions from code review + +* fix: should reuse `cli` instead call `yargs()` + +* feat(cli): set terminalWidth as wrap to avoid work break on help + +* Update .eslintrc.cjs + +* feat: migrate @commitlint/config-conventional to pure ESM + + + + + +## [18.6.3](https://github.com/conventional-changelog/commitlint/compare/v18.6.2...v18.6.3) (2024-03-11) + + +### Bug Fixes + +* add missing entry `wrapper.mjs` ([#3966](https://github.com/conventional-changelog/commitlint/issues/3966)) ([c2c3c7c](https://github.com/conventional-changelog/commitlint/commit/c2c3c7cdc05c07c185cc2c2635a06835352c4504)), closes [#3958](https://github.com/conventional-changelog/commitlint/issues/3958) + + + + + +## [18.6.2](https://github.com/conventional-changelog/commitlint/compare/v18.6.1...v18.6.2) (2024-02-14) + + +### Bug Fixes + +* **config-conventional:** use default export ([#3911](https://github.com/conventional-changelog/commitlint/issues/3911)) ([bc48408](https://github.com/conventional-changelog/commitlint/commit/bc4840832f9484186d3281d13ab5e0b4f9f63113)) + + + + + +## [18.6.1](https://github.com/conventional-changelog/commitlint/compare/v18.6.0...v18.6.1) (2024-02-13) **Note:** Version bump only for package @commitlint/config-conventional @@ -124,7 +179,18 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) +# [18.6.0](https://github.com/conventional-changelog/commitlint/compare/v18.5.1...v18.6.0) (2024-01-25) + + +### Features + +* **rules:** add header-trim rule ([#3199](https://github.com/conventional-changelog/commitlint/issues/3199)) ([#3871](https://github.com/conventional-changelog/commitlint/issues/3871)) ([331579a](https://github.com/conventional-changelog/commitlint/commit/331579a8796af901b5e5103c44fedf1cb3a2f661)) + + + + + +# [18.5.0](https://github.com/conventional-changelog/commitlint/compare/v18.4.4...v18.5.0) (2024-01-22) **Note:** Version bump only for package @commitlint/config-conventional @@ -132,18 +198,23 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) +## [18.4.4](https://github.com/conventional-changelog/commitlint/compare/v18.4.3...v18.4.4) (2024-01-04) +**Note:** Version bump only for package @commitlint/config-conventional -### Bug Fixes -* update dependency conventional-changelog-conventionalcommits to v4.3.0 ([#1816](https://github.com/conventional-changelog/commitlint/issues/1816)) ([f99aeda](https://github.com/conventional-changelog/commitlint/commit/f99aeda068aabdb250e2c9819da7229a695154b9)) +## [18.4.3](https://github.com/conventional-changelog/commitlint/compare/v18.4.2...v18.4.3) (2023-11-21) + +**Note:** Version bump only for package @commitlint/config-conventional -## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) + + + +## [18.4.2](https://github.com/conventional-changelog/commitlint/compare/v18.4.1...v18.4.2) (2023-11-16) **Note:** Version bump only for package @commitlint/config-conventional @@ -151,29 +222,53 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) +# [18.4.0](https://github.com/conventional-changelog/commitlint/compare/v18.3.0...v18.4.0) (2023-11-10) + +**Note:** Version bump only for package @commitlint/config-conventional -### Bug Fixes -* drop support for 'improvement' type ([#899](https://github.com/conventional-changelog/commitlint/issues/899)) ([b27ab08](https://github.com/conventional-changelog/commitlint/commit/b27ab08544373cfb72a4808756e2e8126ea96a97)) -### Features +# [18.1.0](https://github.com/conventional-changelog/commitlint/compare/v18.0.0...v18.1.0) (2023-10-25) + +**Note:** Version bump only for package @commitlint/config-conventional -* **config-conventional:** footer/body-max-line ([#436](https://github.com/conventional-changelog/commitlint/issues/436)) ([8b394c9](https://github.com/conventional-changelog/commitlint/commit/8b394c94ffe37322d734bd4944add4a6cb2a4689)) -* **config-conventional:** increase header-max-length to 100 ([#860](https://github.com/conventional-changelog/commitlint/issues/860)) ([ff11998](https://github.com/conventional-changelog/commitlint/commit/ff11998e0cf6fcd4f03bc18ab27b1bdd6bf21906)), closes [#859](https://github.com/conventional-changelog/commitlint/issues/859) + + + + +# [18.0.0](https://github.com/conventional-changelog/commitlint/compare/v17.8.1...v18.0.0) (2023-10-20) + + +* chore!: minimum node version v18 (#3644) ([5b4aeaf](https://github.com/conventional-changelog/commitlint/commit/5b4aeaf4f01c2726a7bc8631a23bb34c849baad2)), closes [#3644](https://github.com/conventional-changelog/commitlint/issues/3644) ### BREAKING CHANGES -* 'improvement' type will now be rejected by this config. +* drop node v14 and v16 support +* chore: remove unused types +* docs: prepare node update and new release +* chore!: minimum TS version v5 +* drop TS v4 support + +* ci: remove node v14/16 checks + +* chore: adjust node types to minimal supported version + +* chore!: further major versions of other deps +* upgrade conventional-changelog-conventionalcommits, conventional-commits-parser, conventional-changelog-atom, + +* docs: simplify releases and remove roadmap -## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) + + + +## [17.8.1](https://github.com/conventional-changelog/commitlint/compare/v17.8.0...v17.8.1) (2023-10-20) **Note:** Version bump only for package @commitlint/config-conventional @@ -181,18 +276,23 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) +# [17.8.0](https://github.com/conventional-changelog/commitlint/compare/v17.7.2...v17.8.0) (2023-10-14) + +**Note:** Version bump only for package @commitlint/config-conventional -### Features -* **config-conventional:** use parser with short breaking change support ([#821](https://github.com/conventional-changelog/commitlint/issues/821)) ([4b5300a](https://github.com/conventional-changelog/commitlint/commit/4b5300a)) +# [17.7.0](https://github.com/conventional-changelog/commitlint/compare/v17.6.7...v17.7.0) (2023-08-09) + +**Note:** Version bump only for package @commitlint/config-conventional -# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) + + +## [17.6.7](https://github.com/conventional-changelog/commitlint/compare/v17.6.6...v17.6.7) (2023-07-19) **Note:** Version bump only for package @commitlint/config-conventional @@ -200,7 +300,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) +## [17.6.6](https://github.com/conventional-changelog/commitlint/compare/v17.6.5...v17.6.6) (2023-06-24) **Note:** Version bump only for package @commitlint/config-conventional @@ -208,7 +308,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) +## [17.6.5](https://github.com/conventional-changelog/commitlint/compare/v17.6.4...v17.6.5) (2023-05-30) **Note:** Version bump only for package @commitlint/config-conventional @@ -216,130 +316,335 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -<a name="7.5.0"></a> -# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) +## [17.6.3](https://github.com/conventional-changelog/commitlint/compare/v17.6.2...v17.6.3) (2023-05-04) + +**Note:** Version bump only for package @commitlint/config-conventional + + + + + +## [17.6.1](https://github.com/conventional-changelog/commitlint/compare/v17.6.0...v17.6.1) (2023-04-14) + +**Note:** Version bump only for package @commitlint/config-conventional + + + + + +# [17.6.0](https://github.com/conventional-changelog/commitlint/compare/v17.5.1...v17.6.0) (2023-04-13) + +**Note:** Version bump only for package @commitlint/config-conventional + + + + + +## [17.4.4](https://github.com/conventional-changelog/commitlint/compare/v17.4.3...v17.4.4) (2023-02-17) + +**Note:** Version bump only for package @commitlint/config-conventional + + + + + +## [17.4.3](https://github.com/conventional-changelog/commitlint/compare/v17.4.2...v17.4.3) (2023-02-13) + +**Note:** Version bump only for package @commitlint/config-conventional + + + + + +## [17.4.2](https://github.com/conventional-changelog/commitlint/compare/v17.4.1...v17.4.2) (2023-01-12) + +**Note:** Version bump only for package @commitlint/config-conventional + + + + + +# [17.4.0](https://github.com/conventional-changelog/commitlint/compare/v17.3.0...v17.4.0) (2023-01-04) + +**Note:** Version bump only for package @commitlint/config-conventional + +# [17.3.0](https://github.com/conventional-changelog/commitlint/compare/v17.2.1...v17.3.0) (2022-11-21) + +**Note:** Version bump only for package @commitlint/config-conventional + +# [17.2.0](https://github.com/conventional-changelog/commitlint/compare/v17.1.2...v17.2.0) (2022-10-31) + +**Note:** Version bump only for package @commitlint/config-conventional + +# [17.1.0](https://github.com/conventional-changelog/commitlint/compare/v17.0.3...v17.1.0) (2022-08-27) + +**Note:** Version bump only for package @commitlint/config-conventional + +## [17.0.3](https://github.com/conventional-changelog/commitlint/compare/v17.0.2...v17.0.3) (2022-06-25) + +**Note:** Version bump only for package @commitlint/config-conventional +## [17.0.2](https://github.com/conventional-changelog/commitlint/compare/v17.0.1...v17.0.2) (2022-06-01) ### Bug Fixes -* all broken website references ([#564](https://github.com/conventional-changelog/commitlint/issues/564)) ([82eeb5a](https://github.com/conventional-changelog/commitlint/commit/82eeb5a)) -* replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) -* replace all website references with conventional changelog ([#563](https://github.com/conventional-changelog/commitlint/issues/563)) ([6b86fb1](https://github.com/conventional-changelog/commitlint/commit/6b86fb1)) +- update dependency conventional-changelog-conventionalcommits to v5 ([#3201](https://github.com/conventional-changelog/commitlint/issues/3201)) ([c20fd19](https://github.com/conventional-changelog/commitlint/commit/c20fd1952ed02df987165d96e4cef650c7fbaa4b)) +# [17.0.0](https://github.com/conventional-changelog/commitlint/compare/v16.3.0...v17.0.0) (2022-05-16) +- chore!: minimum node version v14 (#3128) ([ac5f9b4](https://github.com/conventional-changelog/commitlint/commit/ac5f9b47a9e3cd5c9d58b14da0feb426f06b1ef9)), closes [#3128](https://github.com/conventional-changelog/commitlint/issues/3128) +### BREAKING CHANGES -<a name="7.3.1"></a> -## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) +- drop node v12 support +- chore: rename circleci windows job +node version is not defned by the name anyways (i think) +## [16.2.4](https://github.com/conventional-changelog/commitlint/compare/v16.2.3...v16.2.4) (2022-04-28) **Note:** Version bump only for package @commitlint/config-conventional -<a name="7.3.0"></a> -# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) +## [16.2.1](https://github.com/conventional-changelog/commitlint/compare/v16.2.0...v16.2.1) (2022-02-13) +**Note:** Version bump only for package @commitlint/config-conventional + +# [16.0.0](https://github.com/conventional-changelog/commitlint/compare/v15.0.0...v16.0.0) (2021-12-26) +**Note:** Version bump only for package @commitlint/config-conventional +# [15.0.0](https://github.com/conventional-changelog/commitlint/compare/v14.2.0...v15.0.0) (2021-11-17) **Note:** Version bump only for package @commitlint/config-conventional -<a name="7.1.2"></a> -## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) +# [14.1.0](https://github.com/conventional-changelog/commitlint/compare/v14.0.0...v14.1.0) (2021-11-01) +**Note:** Version bump only for package @commitlint/config-conventional + +# [14.0.0](https://github.com/conventional-changelog/commitlint/compare/v13.2.1...v14.0.0) (2021-10-26) +**Note:** Version bump only for package @commitlint/config-conventional +# [13.2.0](https://github.com/conventional-changelog/commitlint/compare/v13.1.0...v13.2.0) (2021-09-28) **Note:** Version bump only for package @commitlint/config-conventional -<a name="7.1.0"></a> -# [7.1.0](https://github.com/conventional-changelog/commitlint/compare/v7.0.1...v7.1.0) (2018-08-29) +# [13.1.0](https://github.com/conventional-changelog/commitlint/compare/v13.0.0...v13.1.0) (2021-07-24) + +### Bug Fixes + +- **cz-commitlint:** fix minor formatting issues ([99d8881](https://github.com/conventional-changelog/commitlint/commit/99d8881d0d951deded6d9e31bbb279d04101549b)) + +# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) + +### Features +- add subject-exclamation-mark rule to improve error messages ([#2593](https://github.com/conventional-changelog/commitlint/issues/2593)) ([be701bd](https://github.com/conventional-changelog/commitlint/commit/be701bdb1de4e667b7a872767244285c4fa4fda4)) +- chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) +### BREAKING CHANGES + +- minimum node version is 12 + +## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) **Note:** Version bump only for package @commitlint/config-conventional -<a name="6.1.1"></a> -## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) +## [12.1.2](https://github.com/conventional-changelog/commitlint/compare/v12.1.1...v12.1.2) (2021-04-29) +**Note:** Version bump only for package @commitlint/config-conventional +## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) +**Note:** Version bump only for package @commitlint/config-conventional + +# [12.1.0](https://github.com/conventional-changelog/commitlint/compare/v12.0.1...v12.1.0) (2021-03-06) **Note:** Version bump only for package @commitlint/config-conventional -<a name="6.1.0"></a> -# [6.1.0](https://github.com/conventional-changelog/commitlint/compare/v6.0.5...v6.1.0) (2018-02-03) +## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) +**Note:** Version bump only for package @commitlint/config-conventional +# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) +**Note:** Version bump only for package @commitlint/config-conventional + +# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) **Note:** Version bump only for package @commitlint/config-conventional -<a name="6.0.4"></a> -## [6.0.4](https://github.com/conventional-changelog/commitlint/compare/v6.0.3...v6.0.4) (2018-01-31) +# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) +### Bug Fixes +- update dependency ([#1993](https://github.com/conventional-changelog/commitlint/issues/1993)) ([32667e8](https://github.com/conventional-changelog/commitlint/commit/32667e8aa665cf94fe669ba048ad7abaf6abac6e)) +- refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) + +### BREAKING CHANGES + +- remove node 8 from circle-ci checks + +also remove node 13 because we do not support experimental versions + +- docs: update node v10 to latest LTS 10 version + +Co-authored-by: Cedric van Putten <me@bycedric.com> + +Co-authored-by: Cedric van Putten <me@bycedric.com> + +## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) **Note:** Version bump only for package @commitlint/config-conventional -<a name="6.0.3"></a> -## [6.0.3](https://github.com/conventional-changelog/commitlint/compare/v6.0.2...v6.0.3) (2018-01-31) +## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) +**Note:** Version bump only for package @commitlint/config-conventional + +# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) + +### Bug Fixes +- update dependency conventional-changelog-conventionalcommits to v4.3.0 ([#1816](https://github.com/conventional-changelog/commitlint/issues/1816)) ([f99aeda](https://github.com/conventional-changelog/commitlint/commit/f99aeda068aabdb250e2c9819da7229a695154b9)) +## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) **Note:** Version bump only for package @commitlint/config-conventional -<a name="6.0.2"></a> -## [6.0.2](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.2) (2018-01-12) +# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) + +### Bug Fixes + +- drop support for 'improvement' type ([#899](https://github.com/conventional-changelog/commitlint/issues/899)) ([b27ab08](https://github.com/conventional-changelog/commitlint/commit/b27ab08544373cfb72a4808756e2e8126ea96a97)) + +### Features + +- **config-conventional:** footer/body-max-line ([#436](https://github.com/conventional-changelog/commitlint/issues/436)) ([8b394c9](https://github.com/conventional-changelog/commitlint/commit/8b394c94ffe37322d734bd4944add4a6cb2a4689)) +- **config-conventional:** increase header-max-length to 100 ([#860](https://github.com/conventional-changelog/commitlint/issues/860)) ([ff11998](https://github.com/conventional-changelog/commitlint/commit/ff11998e0cf6fcd4f03bc18ab27b1bdd6bf21906)), closes [#859](https://github.com/conventional-changelog/commitlint/issues/859) +### BREAKING CHANGES +- 'improvement' type will now be rejected by this config. +## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) **Note:** Version bump only for package @commitlint/config-conventional -<a name="5.2.3"></a> -## [5.2.3](https://github.com/conventional-changelog/commitlint/compare/v5.2.2...v5.2.3) (2017-12-05) +# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) +### Features +- **config-conventional:** use parser with short breaking change support ([#821](https://github.com/conventional-changelog/commitlint/issues/821)) ([4b5300a](https://github.com/conventional-changelog/commitlint/commit/4b5300a)) +# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) **Note:** Version bump only for package @commitlint/config-conventional -<a name="5.1.3"></a> -## [5.1.3](https://github.com/conventional-changelog/commitlint/compare/v5.1.2...v5.1.3) (2017-11-24) +# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) +**Note:** Version bump only for package @commitlint/config-conventional + +# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) + +**Note:** Version bump only for package @commitlint/config-conventional + +<a name="7.5.0"></a> + +# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) ### Bug Fixes -* **config-conventional:** add missing applicable attribute to type-enum ([a8db0b1](https://github.com/conventional-changelog/commitlint/commit/a8db0b1)) +- all broken website references ([#564](https://github.com/conventional-changelog/commitlint/issues/564)) ([82eeb5a](https://github.com/conventional-changelog/commitlint/commit/82eeb5a)) +- replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) +- replace all website references with conventional changelog ([#563](https://github.com/conventional-changelog/commitlint/issues/563)) ([6b86fb1](https://github.com/conventional-changelog/commitlint/commit/6b86fb1)) + +<a name="7.3.1"></a> +## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) +**Note:** Version bump only for package @commitlint/config-conventional +<a name="7.3.0"></a> -<a name="5.1.1"></a> -## [5.1.1](https://github.com/conventional-changelog/commitlint/compare/v5.1.0...v5.1.1) (2017-11-24) +# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) + +**Note:** Version bump only for package @commitlint/config-conventional + +<a name="7.1.2"></a> + +## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) + +**Note:** Version bump only for package @commitlint/config-conventional + +<a name="7.1.0"></a> + +# [7.1.0](https://github.com/conventional-changelog/commitlint/compare/v7.0.1...v7.1.0) (2018-08-29) + +**Note:** Version bump only for package @commitlint/config-conventional + +<a name="6.1.1"></a> + +## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) + +**Note:** Version bump only for package @commitlint/config-conventional + +<a name="6.1.0"></a> +# [6.1.0](https://github.com/conventional-changelog/commitlint/compare/v6.0.5...v6.1.0) (2018-02-03) + +**Note:** Version bump only for package @commitlint/config-conventional + +<a name="6.0.4"></a> + +## [6.0.4](https://github.com/conventional-changelog/commitlint/compare/v6.0.3...v6.0.4) (2018-01-31) + +**Note:** Version bump only for package @commitlint/config-conventional + +<a name="6.0.3"></a> + +## [6.0.3](https://github.com/conventional-changelog/commitlint/compare/v6.0.2...v6.0.3) (2018-01-31) + +**Note:** Version bump only for package @commitlint/config-conventional + +<a name="6.0.2"></a> + +## [6.0.2](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.2) (2018-01-12) + +**Note:** Version bump only for package @commitlint/config-conventional + +<a name="5.2.3"></a> + +## [5.2.3](https://github.com/conventional-changelog/commitlint/compare/v5.2.2...v5.2.3) (2017-12-05) + +**Note:** Version bump only for package @commitlint/config-conventional + +<a name="5.1.3"></a> + +## [5.1.3](https://github.com/conventional-changelog/commitlint/compare/v5.1.2...v5.1.3) (2017-11-24) ### Bug Fixes -* set access for npm ([8aeaec2](https://github.com/conventional-changelog/commitlint/commit/8aeaec2)) +- **config-conventional:** add missing applicable attribute to type-enum ([a8db0b1](https://github.com/conventional-changelog/commitlint/commit/a8db0b1)) + +<a name="5.1.1"></a> +## [5.1.1](https://github.com/conventional-changelog/commitlint/compare/v5.1.0...v5.1.1) (2017-11-24) +### Bug Fixes +- set access for npm ([8aeaec2](https://github.com/conventional-changelog/commitlint/commit/8aeaec2)) <a name="5.1.0"></a> -# [5.1.0](https://github.com/conventional-changelog/commitlint/compare/v5.0.2...v5.1.0) (2017-11-24) +# [5.1.0](https://github.com/conventional-changelog/commitlint/compare/v5.0.2...v5.1.0) (2017-11-24) ### Bug Fixes -* **config-conventional:** remove unneeded dependency ([d0e62fd](https://github.com/conventional-changelog/commitlint/commit/d0e62fd)) - +- **config-conventional:** remove unneeded dependency ([d0e62fd](https://github.com/conventional-changelog/commitlint/commit/d0e62fd)) ### Features -* add conventional-changelog package ([8bb0a85](https://github.com/conventional-changelog/commitlint/commit/8bb0a85)) +- add conventional-changelog package ([8bb0a85](https://github.com/conventional-changelog/commitlint/commit/8bb0a85)) diff --git a/@commitlint/config-conventional/README.md b/@commitlint/config-conventional/README.md index 7ca4343c2e..f83e2028e7 100644 --- a/@commitlint/config-conventional/README.md +++ b/@commitlint/config-conventional/README.md @@ -1,7 +1,7 @@ -> Lint your conventional commits - # @commitlint/config-conventional +Lint your conventional commits + Shareable `commitlint` config enforcing [conventional commits](https://conventionalcommits.org/). Use with [@commitlint/cli](https://npm.im/@commitlint/cli) and [@commitlint/prompt-cli](https://npm.im/@commitlint/prompt-cli). @@ -9,7 +9,7 @@ Use with [@commitlint/cli](https://npm.im/@commitlint/cli) and [@commitlint/prom ```sh npm install --save-dev @commitlint/config-conventional @commitlint/cli -echo "module.exports = {extends: ['@commitlint/config-conventional']};" > commitlint.config.js +echo "export default {extends: ['@commitlint/config-conventional']};" > commitlint.config.js ``` ## Rules @@ -18,7 +18,7 @@ echo "module.exports = {extends: ['@commitlint/config-conventional']};" > commit The following rules are considered problems for `@commitlint/config-conventional` and will yield a non-zero exit code when not met. -Consult [docs/rules](https://conventional-changelog.github.io/commitlint/#/reference-rules) for a list of available rules. +Consult [Rules reference](https://commitlint.js.org/reference/rules) for a list of available rules. #### type-enum @@ -74,21 +74,6 @@ echo ": some message" # fails echo "fix: some message" # passes ``` -#### scope-case - -- **condition**: `scope` is in case `value` -- **rule**: `always` -- **level**: `error` - -``` -'lowerCase' -``` - -```sh -echo "fix(SCOPE): some message" # fails -echo "fix(scope): some message" # passes -``` - #### subject-case - **condition**: `subject` is in one of the cases `['sentence-case', 'start-case', 'pascal-case', 'upper-case']` @@ -151,7 +136,7 @@ echo "fix: some message" # passes - **condition**: `footer` should have a leading blank line - **rule**: `always` -- level: `warning` +- **level**: `warning` ```sh echo "fix: some message @@ -166,7 +151,7 @@ BREAKING CHANGE: It will be significant" # passes - **condition**: `footer` each line has `value` or less characters - **rule**: `always` -- level: `error` +- **level**: `error` - **value** ``` @@ -189,7 +174,7 @@ but still no line is too long" # passes - **condition**: `body` should have a leading blank line - **rule**: `always` -- level: `warning` +- **level**: `warning` ```sh echo "fix: some message @@ -204,11 +189,11 @@ body" # passes - **condition**: `body` each line has `value` or less characters - **rule**: `always` -- level: `error` +- **level**: `error` - **value** -```js -100; +``` +100 ``` ```sh diff --git a/@commitlint/config-conventional/index.js b/@commitlint/config-conventional/index.js deleted file mode 100644 index a2e917d344..0000000000 --- a/@commitlint/config-conventional/index.js +++ /dev/null @@ -1,135 +0,0 @@ -module.exports = { - parserPreset: 'conventional-changelog-conventionalcommits', - rules: { - 'body-leading-blank': [1, 'always'], - 'body-max-line-length': [2, 'always', 100], - 'footer-leading-blank': [1, 'always'], - 'footer-max-line-length': [2, 'always', 100], - 'header-max-length': [2, 'always', 100], - 'subject-case': [ - 2, - 'never', - ['sentence-case', 'start-case', 'pascal-case', 'upper-case'], - ], - 'subject-empty': [2, 'never'], - 'subject-full-stop': [2, 'never', '.'], - 'type-case': [2, 'always', 'lower-case'], - 'type-empty': [2, 'never'], - 'type-enum': [ - 2, - 'always', - [ - 'build', - 'chore', - 'ci', - 'docs', - 'feat', - 'fix', - 'perf', - 'refactor', - 'revert', - 'style', - 'test', - ], - ], - }, - prompt: { - questions: { - type: { - description: "Select the type of change that you're committing", - enum: { - feat: { - description: 'A new feature', - title: 'Features', - emoji: '✨', - }, - fix: { - description: 'A bug fix', - title: 'Bug Fixes', - emoji: '🐛', - }, - docs: { - description: 'Documentation only changes', - title: 'Documentation', - emoji: '📚', - }, - style: { - description: - 'Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)', - title: 'Styles', - emoji: '💎', - }, - refactor: { - description: - 'A code change that neither fixes a bug nor adds a feature', - title: 'Code Refactoring', - emoji: '📦', - }, - perf: { - description: 'A code change that improves performance', - title: 'Performance Improvements', - emoji: '🚀', - }, - test: { - description: 'Adding missing tests or correcting existing tests', - title: 'Tests', - emoji: '🚨', - }, - build: { - description: - 'Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm)', - title: 'Builds', - emoji: '🛠', - }, - ci: { - description: - 'Changes to our CI configuration files and scripts (example scopes: Travis, Circle, BrowserStack, SauceLabs)', - title: 'Continuous Integrations', - emoji: '⚙️', - }, - chore: { - description: "Other changes that don't modify src or test files", - title: 'Chores', - emoji: '♻️', - }, - revert: { - description: 'Reverts a previous commit', - title: 'Reverts', - emoji: '🗑', - }, - }, - }, - scope: { - description: - 'What is the scope of this change (e.g. component or file name)', - }, - subject: { - description: - 'Write a short, imperative tense description of the change', - }, - body: { - description: 'Provide a longer description of the change', - }, - isBreaking: { - description: 'Are there any breaking changes?', - }, - breakingBody: { - description: - 'A BREAKING CHANGE commit requires a body. Please enter a longer description of the commit itself', - }, - breaking: { - description: 'Describe the breaking changes', - }, - isIssueAffected: { - description: 'Does this change affect any open issues?', - }, - issuesBody: { - description: - 'If issues are closed, the commit requires a body. Please enter a longer description of the commit itself', - }, - issues: { - description: 'Add issue references (e.g. "fix #123", "re #123".)', - }, - }, - }, -}; diff --git a/@commitlint/config-conventional/package.json b/@commitlint/config-conventional/package.json index 41dc550f79..5ef4fc7bb5 100644 --- a/@commitlint/config-conventional/package.json +++ b/@commitlint/config-conventional/package.json @@ -1,9 +1,11 @@ { "name": "@commitlint/config-conventional", - "version": "13.1.0", + "type": "module", + "version": "20.0.0", "description": "Shareable commitlint config enforcing conventional commits", + "main": "lib/index.js", "files": [ - "index.js" + "lib/" ], "scripts": { "deps": "dep-check", @@ -14,7 +16,8 @@ }, "repository": { "type": "git", - "url": "https://github.com/conventional-changelog/commitlint.git" + "url": "https://github.com/conventional-changelog/commitlint.git", + "directory": "@commitlint/config-conventional" }, "keywords": [ "conventional-changelog", @@ -27,16 +30,17 @@ "bugs": { "url": "https://github.com/conventional-changelog/commitlint/issues" }, - "homepage": "https://github.com/conventional-changelog/commitlint#readme", + "homepage": "https://commitlint.js.org/", "engines": { - "node": ">=v12" + "node": ">=v18" }, "devDependencies": { - "@commitlint/lint": "^13.1.0", - "@commitlint/utils": "^13.0.0" + "@commitlint/lint": "^20.0.0", + "@commitlint/utils": "^20.0.0" }, "dependencies": { - "conventional-changelog-conventionalcommits": "^4.3.1" + "@commitlint/types": "^20.0.0", + "conventional-changelog-conventionalcommits": "^7.0.2" }, - "gitHead": "70f7f4688b51774e7ac5e40e896cdaa3f132b2bc" + "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" } diff --git a/@commitlint/config-conventional/index.test.js b/@commitlint/config-conventional/src/index.test.ts similarity index 54% rename from @commitlint/config-conventional/index.test.js rename to @commitlint/config-conventional/src/index.test.ts index f3023b6819..3603fe74f6 100644 --- a/@commitlint/config-conventional/index.test.js +++ b/@commitlint/config-conventional/src/index.test.ts @@ -1,39 +1,53 @@ -import lint from '@commitlint/lint'; -import {rules, parserPreset} from '.'; +import { test, expect } from "vitest"; +import path from "node:path"; +import { pathToFileURL } from "node:url"; -const commitLint = async (message) => { - const preset = await require(parserPreset)(); - return lint(message, rules, {...preset}); +import lint from "@commitlint/lint"; + +import config from "./index.js"; + +const { rules, parserPreset } = config; + +const dynamicImport = async (id: string) => { + const imported = await import( + path.isAbsolute(id) ? pathToFileURL(id).toString() : id + ); + return ("default" in imported && imported.default) || imported; +}; + +const commitLint = async (message: string) => { + const preset = await (await dynamicImport(parserPreset))(); + return lint(message, rules, { ...preset }); }; const messages = { - invalidTypeEnum: 'foo: some message', - invalidTypeCase: 'FIX: some message', - invalidTypeEmpty: ': some message', + invalidTypeEnum: "foo: some message", + invalidTypeCase: "FIX: some message", + invalidTypeEmpty: ": some message", invalidSubjectCases: [ - 'fix(scope): Some message', - 'fix(scope): Some Message', - 'fix(scope): SomeMessage', - 'fix(scope): SOMEMESSAGE', + "fix(scope): Some message", + "fix(scope): Some Message", + "fix(scope): SomeMessage", + "fix(scope): SOMEMESSAGE", ], - invalidSubjectEmpty: 'fix:', - invalidSubjectFullStop: 'fix: some message.', + invalidSubjectEmpty: "fix:", + invalidSubjectFullStop: "fix: some message.", invalidHeaderMaxLength: - 'fix: some message that is way too long and breaks the line max-length by several characters since the max is 100', + "fix: some message that is way too long and breaks the line max-length by several characters since the max is 100", warningFooterLeadingBlank: - 'fix: some message\n\nbody\nBREAKING CHANGE: It will be significant', + "fix: some message\n\nbody\nBREAKING CHANGE: It will be significant", invalidFooterMaxLineLength: 'fix: some message\n\nbody\n\nBREAKING CHANGE: footer with multiple lines\nhas a message that is way too long and will break the line rule "line-max-length" by several characters', - warningBodyLeadingBlank: 'fix: some message\nbody', + warningBodyLeadingBlank: "fix: some message\nbody", invalidBodyMaxLineLength: 'fix: some message\n\nbody with multiple lines\nhas a message that is way too long and will break the line rule "line-max-length" by several characters', validMessages: [ - 'fix: some message', - 'fix(scope): some message', - 'fix(scope): some Message', - 'fix(scope): some message\n\nBREAKING CHANGE: it will be significant!', - 'fix(scope): some message\n\nbody', - 'fix(scope)!: some message\n\nbody', + "fix: some message", + "fix(scope): some message", + "fix(scope): some Message", + "fix(scope): some message\n\nBREAKING CHANGE: it will be significant!", + "fix(scope): some message\n\nbody", + "fix(scope)!: some message\n\nbody", ], }; @@ -41,58 +55,58 @@ const errors = { typeEnum: { level: 2, message: - 'type must be one of [build, chore, ci, docs, feat, fix, perf, refactor, revert, style, test]', - name: 'type-enum', + "type must be one of [build, chore, ci, docs, feat, fix, perf, refactor, revert, style, test]", + name: "type-enum", valid: false, }, typeCase: { level: 2, - message: 'type must be lower-case', - name: 'type-case', + message: "type must be lower-case", + name: "type-case", valid: false, }, typeEmpty: { level: 2, - message: 'type may not be empty', - name: 'type-empty', + message: "type may not be empty", + name: "type-empty", valid: false, }, subjectCase: { level: 2, message: - 'subject must not be sentence-case, start-case, pascal-case, upper-case', - name: 'subject-case', + "subject must not be sentence-case, start-case, pascal-case, upper-case", + name: "subject-case", valid: false, }, subjectEmpty: { level: 2, - message: 'subject may not be empty', - name: 'subject-empty', + message: "subject may not be empty", + name: "subject-empty", valid: false, }, subjectFullStop: { level: 2, - message: 'subject may not end with full stop', - name: 'subject-full-stop', + message: "subject may not end with full stop", + name: "subject-full-stop", valid: false, }, headerMaxLength: { level: 2, message: - 'header must not be longer than 100 characters, current length is 112', - name: 'header-max-length', + "header must not be longer than 100 characters, current length is 112", + name: "header-max-length", valid: false, }, footerMaxLineLength: { level: 2, message: "footer's lines must not be longer than 100 characters", - name: 'footer-max-line-length', + name: "footer-max-line-length", valid: false, }, bodyMaxLineLength: { level: 2, message: "body's lines must not be longer than 100 characters", - name: 'body-max-line-length', + name: "body-max-line-length", valid: false, }, }; @@ -100,42 +114,44 @@ const errors = { const warnings = { footerLeadingBlank: { level: 1, - message: 'footer must have leading blank line', - name: 'footer-leading-blank', + message: "footer must have leading blank line", + name: "footer-leading-blank", valid: false, }, bodyLeadingBlank: { level: 1, - message: 'body must have leading blank line', - name: 'body-leading-blank', + message: "body must have leading blank line", + name: "body-leading-blank", valid: false, }, }; -test('type-enum', async () => { +test("type-enum", async () => { const result = await commitLint(messages.invalidTypeEnum); expect(result.valid).toBe(false); expect(result.errors).toEqual([errors.typeEnum]); }); -test('type-case', async () => { +test("type-case", async () => { const result = await commitLint(messages.invalidTypeCase); expect(result.valid).toBe(false); expect(result.errors).toEqual([errors.typeCase, errors.typeEnum]); }); -test('type-empty', async () => { +test("type-empty", async () => { const result = await commitLint(messages.invalidTypeEmpty); expect(result.valid).toBe(false); expect(result.errors).toEqual([errors.typeEmpty]); }); -test('subject-case', async () => { +test("subject-case", async () => { const invalidInputs = await Promise.all( - messages.invalidSubjectCases.map((invalidInput) => commitLint(invalidInput)) + messages.invalidSubjectCases.map((invalidInput) => + commitLint(invalidInput), + ), ); invalidInputs.forEach((result) => { @@ -144,58 +160,58 @@ test('subject-case', async () => { }); }); -test('subject-empty', async () => { +test("subject-empty", async () => { const result = await commitLint(messages.invalidSubjectEmpty); expect(result.valid).toBe(false); expect(result.errors).toEqual([errors.subjectEmpty, errors.typeEmpty]); }); -test('subject-full-stop', async () => { +test("subject-full-stop", async () => { const result = await commitLint(messages.invalidSubjectFullStop); expect(result.valid).toBe(false); expect(result.errors).toEqual([errors.subjectFullStop]); }); -test('header-max-length', async () => { +test("header-max-length", async () => { const result = await commitLint(messages.invalidHeaderMaxLength); expect(result.valid).toBe(false); expect(result.errors).toEqual([errors.headerMaxLength]); }); -test('footer-leading-blank', async () => { - const result = await commitLint(messages.warningFooterLeadingBlank, rules); +test("footer-leading-blank", async () => { + const result = await commitLint(messages.warningFooterLeadingBlank); expect(result.valid).toBe(true); expect(result.warnings).toEqual([warnings.footerLeadingBlank]); }); -test('footer-max-line-length', async () => { +test("footer-max-line-length", async () => { const result = await commitLint(messages.invalidFooterMaxLineLength); expect(result.valid).toBe(false); expect(result.errors).toEqual([errors.footerMaxLineLength]); }); -test('body-leading-blank', async () => { +test("body-leading-blank", async () => { const result = await commitLint(messages.warningBodyLeadingBlank); expect(result.valid).toBe(true); expect(result.warnings).toEqual([warnings.bodyLeadingBlank]); }); -test('body-max-line-length', async () => { +test("body-max-line-length", async () => { const result = await commitLint(messages.invalidBodyMaxLineLength); expect(result.valid).toBe(false); expect(result.errors).toEqual([errors.bodyMaxLineLength]); }); -test('valid messages', async () => { +test("valid messages", async () => { const validInputs = await Promise.all( - messages.validMessages.map((input) => commitLint(input)) + messages.validMessages.map((input) => commitLint(input)), ); validInputs.forEach((result) => { diff --git a/@commitlint/config-conventional/src/index.ts b/@commitlint/config-conventional/src/index.ts new file mode 100644 index 0000000000..09ee1c9a67 --- /dev/null +++ b/@commitlint/config-conventional/src/index.ts @@ -0,0 +1,146 @@ +import { + RuleConfigCondition, + RuleConfigSeverity, + TargetCaseType, +} from "@commitlint/types"; + +export default { + parserPreset: "conventional-changelog-conventionalcommits", + rules: { + "body-leading-blank": [RuleConfigSeverity.Warning, "always"] as const, + "body-max-line-length": [RuleConfigSeverity.Error, "always", 100] as const, + "footer-leading-blank": [RuleConfigSeverity.Warning, "always"] as const, + "footer-max-line-length": [ + RuleConfigSeverity.Error, + "always", + 100, + ] as const, + "header-max-length": [RuleConfigSeverity.Error, "always", 100] as const, + "header-trim": [RuleConfigSeverity.Error, "always"] as const, + "subject-case": [ + RuleConfigSeverity.Error, + "never", + ["sentence-case", "start-case", "pascal-case", "upper-case"], + ] as [RuleConfigSeverity, RuleConfigCondition, TargetCaseType[]], + "subject-empty": [RuleConfigSeverity.Error, "never"] as const, + "subject-full-stop": [RuleConfigSeverity.Error, "never", "."] as const, + "type-case": [RuleConfigSeverity.Error, "always", "lower-case"] as const, + "type-empty": [RuleConfigSeverity.Error, "never"] as const, + "type-enum": [ + RuleConfigSeverity.Error, + "always", + [ + "build", + "chore", + "ci", + "docs", + "feat", + "fix", + "perf", + "refactor", + "revert", + "style", + "test", + ], + ] as [RuleConfigSeverity, RuleConfigCondition, string[]], + }, + prompt: { + questions: { + type: { + description: "Select the type of change that you're committing", + enum: { + feat: { + description: "A new feature", + title: "Features", + emoji: "✨", + }, + fix: { + description: "A bug fix", + title: "Bug Fixes", + emoji: "🐛", + }, + docs: { + description: "Documentation only changes", + title: "Documentation", + emoji: "📚", + }, + style: { + description: + "Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)", + title: "Styles", + emoji: "💎", + }, + refactor: { + description: + "A code change that neither fixes a bug nor adds a feature", + title: "Code Refactoring", + emoji: "📦", + }, + perf: { + description: "A code change that improves performance", + title: "Performance Improvements", + emoji: "🚀", + }, + test: { + description: "Adding missing tests or correcting existing tests", + title: "Tests", + emoji: "🚨", + }, + build: { + description: + "Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm)", + title: "Builds", + emoji: "🛠", + }, + ci: { + description: + "Changes to our CI configuration files and scripts (example scopes: Travis, Circle, BrowserStack, SauceLabs)", + title: "Continuous Integrations", + emoji: "⚙️", + }, + chore: { + description: "Other changes that don't modify src or test files", + title: "Chores", + emoji: "♻️", + }, + revert: { + description: "Reverts a previous commit", + title: "Reverts", + emoji: "🗑", + }, + }, + }, + scope: { + description: + "What is the scope of this change (e.g. component or file name)", + }, + subject: { + description: + "Write a short, imperative tense description of the change", + }, + body: { + description: "Provide a longer description of the change", + }, + isBreaking: { + description: "Are there any breaking changes?", + }, + breakingBody: { + description: + "A BREAKING CHANGE commit requires a body. Please enter a longer description of the commit itself", + }, + breaking: { + description: "Describe the breaking changes", + }, + isIssueAffected: { + description: "Does this change affect any open issues?", + }, + issuesBody: { + description: + "If issues are closed, the commit requires a body. Please enter a longer description of the commit itself", + }, + issues: { + description: 'Add issue references (e.g. "fix #123", "re #123".)', + }, + }, + }, +}; diff --git a/@commitlint/config-conventional/tsconfig.json b/@commitlint/config-conventional/tsconfig.json index 2905f19318..49479bf34f 100644 --- a/@commitlint/config-conventional/tsconfig.json +++ b/@commitlint/config-conventional/tsconfig.json @@ -5,6 +5,6 @@ "rootDir": "./src", "outDir": "./lib" }, - "include": ["./**/*.ts"], - "exclude": ["./**/*.test.ts"] + "include": ["./src"], + "exclude": ["./src/**/*.test.ts", "./lib/**/*"] } diff --git a/@commitlint/config-lerna-scopes/CHANGELOG.md b/@commitlint/config-lerna-scopes/CHANGELOG.md index f0945a0c7e..fb311bbd39 100644 --- a/@commitlint/config-lerna-scopes/CHANGELOG.md +++ b/@commitlint/config-lerna-scopes/CHANGELOG.md @@ -3,32 +3,50 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. -# [13.1.0](https://github.com/conventional-changelog/commitlint/compare/v13.0.0...v13.1.0) (2021-07-24) +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + +**Note:** Version bump only for package @commitlint/config-lerna-scopes + + + + + +## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) + +**Note:** Version bump only for package @commitlint/config-lerna-scopes + + + + + +# [19.8.0](https://github.com/conventional-changelog/commitlint/compare/v19.7.1...v19.8.0) (2025-03-07) ### Bug Fixes -* update dependency import-from to v4 ([#2629](https://github.com/conventional-changelog/commitlint/issues/2629)) ([5bcb604](https://github.com/conventional-changelog/commitlint/commit/5bcb60456cd9d4c8f0f0bae21ca7c3d1c73943ca)) +* **config-lerna-scopes:** remove deprecated @lerna/project dependency ([#4284](https://github.com/conventional-changelog/commitlint/issues/4284)) ([f2f78f1](https://github.com/conventional-changelog/commitlint/commit/f2f78f105a32d040d8eb7e340f59a1d50fad9ac0)) +### Performance Improvements +* use `node:` prefix to bypass require.cache call for builtins ([#4302](https://github.com/conventional-changelog/commitlint/issues/4302)) ([0cd8f41](https://github.com/conventional-changelog/commitlint/commit/0cd8f410573fe11383f788b1ceb7e0946143591d)) -# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) -* chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) +# [19.7.0](https://github.com/conventional-changelog/commitlint/compare/v19.6.1...v19.7.0) (2025-01-04) -### BREAKING CHANGES -* minimum node version is 12 +### Features +* support lerna 7 and 8 ([#4221](https://github.com/conventional-changelog/commitlint/issues/4221)) ([3b8da63](https://github.com/conventional-changelog/commitlint/commit/3b8da63f50f868555a3f026a76e96cd8d20638de)) -## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) + +# [19.5.0](https://github.com/conventional-changelog/commitlint/compare/v19.4.1...v19.5.0) (2024-09-11) **Note:** Version bump only for package @commitlint/config-lerna-scopes @@ -36,98 +54,143 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.1.2](https://github.com/conventional-changelog/commitlint/compare/v12.1.1...v12.1.2) (2021-04-29) +# [19.0.0](https://github.com/conventional-changelog/commitlint/compare/v18.6.2...v19.0.0) (2024-02-27) -**Note:** Version bump only for package @commitlint/config-lerna-scopes +* feat!: migrate to pure ESM (#3850) ([3423735](https://github.com/conventional-changelog/commitlint/commit/342373559bdf7c783c4ef37ff05dc38a5f681159)), closes [#3850](https://github.com/conventional-changelog/commitlint/issues/3850) +### Reverts +* Revert "chore!: minimum node version v20" ([2816783](https://github.com/conventional-changelog/commitlint/commit/2816783d00e7eb967de3ac9347c2fc43dc8b94fa)) -## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) +### BREAKING CHANGES -### Bug Fixes +* migrate to pure ESM -* **config-lerna-scopes:** ignore packages without names ([#2514](https://github.com/conventional-changelog/commitlint/issues/2514)) ([df3bf71](https://github.com/conventional-changelog/commitlint/commit/df3bf71ab36a085ef35a1491025c0d2e2b92ff77)) -* update dependency semver to v7.3.5 ([#2519](https://github.com/conventional-changelog/commitlint/issues/2519)) ([5113f22](https://github.com/conventional-changelog/commitlint/commit/5113f22c620e7b187fd558e5befa541b448ea18b)) +* feat: migrate to pure ESM +* chore: update snapshot +* fix: load `parserPreset` with another `await` +* test: migrate to vitest +* test: remove no replacement `--runInBand` test-ci script -# [12.1.0](https://github.com/conventional-changelog/commitlint/compare/v12.0.1...v12.1.0) (2021-03-06) +* chore: fix code reviews +* refactor(load): rewrite resolve logic -### Features +* fix(config-nx-scopes): fix syntax error -* **config-lerna-scopes:** keep supporting lerna v3 ([51b0f4a](https://github.com/conventional-changelog/commitlint/commit/51b0f4a56f111c61419247755b1404b4e20d3a09)) +* feat(resolve-extends): add resolveFrom and loadParserPreset +* feat(load): use resolveFrom and loadParserPreset from resolve-extends +* test: include only @commitlint/* packages src in coverage +* test: explicit import vitest utilities +* test: remove @jest/globals from dependencies -## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) +* fix(resolve-extends): `resolveFrom` output should be platform aware -**Note:** Version bump only for package @commitlint/config-lerna-scopes +* test: restore NO_COLOR to test script +* chore: fix linting issues +* fix: should use fileURLToPath instead of pathname for Windows compatibility + +* Apply suggestions from code review + +* fix: should reuse `cli` instead call `yargs()` + +* feat(cli): set terminalWidth as wrap to avoid work break on help + +* Update .eslintrc.cjs + +* feat: migrate @commitlint/config-conventional to pure ESM -# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) + + +## [18.6.1](https://github.com/conventional-changelog/commitlint/compare/v18.6.0...v18.6.1) (2024-02-13) ### Bug Fixes -* update dependency semver to v7.3.4 ([#2336](https://github.com/conventional-changelog/commitlint/issues/2336)) ([790b61a](https://github.com/conventional-changelog/commitlint/commit/790b61afa668d0eab80bbe49db58d3d5d29bb16e)) +* update dependency semver to v7.6.0 ([#3900](https://github.com/conventional-changelog/commitlint/issues/3900)) ([df33003](https://github.com/conventional-changelog/commitlint/commit/df33003dce77bc5ff48678cddf9401dffedaeb57)) -### Features -* **config-lerna-scopes:** support yarn workspaces ([#2149](https://github.com/conventional-changelog/commitlint/issues/2149)) ([b244246](https://github.com/conventional-changelog/commitlint/commit/b2442469afe3b11c20b0101be7656ced43fab366)) +## [18.4.4](https://github.com/conventional-changelog/commitlint/compare/v18.4.3...v18.4.4) (2024-01-04) +**Note:** Version bump only for package @commitlint/config-lerna-scopes -# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) -* refactor!: drop support for lerna v2 ([59667b3](https://github.com/conventional-changelog/commitlint/commit/59667b376118323b1312d3d1084b9178918f3d23)) +## [18.4.3](https://github.com/conventional-changelog/commitlint/compare/v18.4.2...v18.4.3) (2023-11-21) -### BREAKING CHANGES +**Note:** Version bump only for package @commitlint/config-lerna-scopes -* remove lerna v2 support and tests +# [18.4.0](https://github.com/conventional-changelog/commitlint/compare/v18.3.0...v18.4.0) (2023-11-10) + +**Note:** Version bump only for package @commitlint/config-lerna-scopes + + + + + +# [18.1.0](https://github.com/conventional-changelog/commitlint/compare/v18.0.0...v18.1.0) (2023-10-25) + +**Note:** Version bump only for package @commitlint/config-lerna-scopes + -# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) -* refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) + +# [18.0.0](https://github.com/conventional-changelog/commitlint/compare/v17.8.1...v18.0.0) (2023-10-20) + + +* chore!: minimum node version v18 (#3644) ([5b4aeaf](https://github.com/conventional-changelog/commitlint/commit/5b4aeaf4f01c2726a7bc8631a23bb34c849baad2)), closes [#3644](https://github.com/conventional-changelog/commitlint/issues/3644) ### BREAKING CHANGES -* remove node 8 from circle-ci checks +* drop node v14 and v16 support -also remove node 13 because we do not support experimental versions +* chore: remove unused types -* docs: update node v10 to latest LTS 10 version +* docs: prepare node update and new release -Co-authored-by: Cedric van Putten <me@bycedric.com> +* chore!: minimum TS version v5 +* drop TS v4 support -Co-authored-by: Cedric van Putten <me@bycedric.com> +* ci: remove node v14/16 checks +* chore: adjust node types to minimal supported version + +* chore!: further major versions of other deps +* upgrade conventional-changelog-conventionalcommits, conventional-commits-parser, conventional-changelog-atom, + +* docs: simplify releases and remove roadmap -## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) + +## [17.8.1](https://github.com/conventional-changelog/commitlint/compare/v17.8.0...v17.8.1) (2023-10-20) **Note:** Version bump only for package @commitlint/config-lerna-scopes @@ -135,7 +198,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) +# [17.7.0](https://github.com/conventional-changelog/commitlint/compare/v17.6.7...v17.7.0) (2023-08-09) **Note:** Version bump only for package @commitlint/config-lerna-scopes @@ -143,38 +206,38 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) +## [17.6.6](https://github.com/conventional-changelog/commitlint/compare/v17.6.5...v17.6.6) (2023-06-24) +**Note:** Version bump only for package @commitlint/config-lerna-scopes -### Bug Fixes -* update dependency semver to v7.3.2 ([#1369](https://github.com/conventional-changelog/commitlint/issues/1369)) ([3c09722](https://github.com/conventional-changelog/commitlint/commit/3c09722d2db85a94cd1f4bf25c6b4251b2c41bbb)) +## [17.6.3](https://github.com/conventional-changelog/commitlint/compare/v17.6.2...v17.6.3) (2023-05-04) -## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) +### Bug Fixes -**Note:** Version bump only for package @commitlint/config-lerna-scopes +* **config-lerna-scopes:** add missing dependency ([#3607](https://github.com/conventional-changelog/commitlint/issues/3607)) ([2fff094](https://github.com/conventional-changelog/commitlint/commit/2fff0943899161b2159a4acddc9237c6ab60c7a5)) +* update dependency semver to v7.5.0 ([#3604](https://github.com/conventional-changelog/commitlint/issues/3604)) ([01e35e0](https://github.com/conventional-changelog/commitlint/commit/01e35e06cf9123a0c367e0d0ac79988ec4334e6a)) -# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) +## [17.6.2](https://github.com/conventional-changelog/commitlint/compare/v17.6.1...v17.6.2) (2023-05-03) ### Bug Fixes -* **config-lerna-scopes:** correct lerna in peerDependencies ([#980](https://github.com/conventional-changelog/commitlint/issues/980)) ([f88f00d](https://github.com/conventional-changelog/commitlint/commit/f88f00d5d3d0a247b5635b50248bbb942b1ec962)) -* update dependency semver to v7.1.3 ([#995](https://github.com/conventional-changelog/commitlint/issues/995)) ([4ee307a](https://github.com/conventional-changelog/commitlint/commit/4ee307a1f8c861ae5d8a038560d166c5d00ea8ba)) +* lerna package.json resolution ([#3600](https://github.com/conventional-changelog/commitlint/issues/3600)) ([6c5cd53](https://github.com/conventional-changelog/commitlint/commit/6c5cd535679ac9448a127a57e309276e699cebb9)) -## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) +## [17.4.2](https://github.com/conventional-changelog/commitlint/compare/v17.4.1...v17.4.2) (2023-01-12) **Note:** Version bump only for package @commitlint/config-lerna-scopes @@ -182,280 +245,386 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) +# [17.4.0](https://github.com/conventional-changelog/commitlint/compare/v17.3.0...v17.4.0) (2023-01-04) -**Note:** Version bump only for package @commitlint/config-lerna-scopes +### Bug Fixes +- update dependency semver to v7.3.8 ([#3441](https://github.com/conventional-changelog/commitlint/issues/3441)) ([7599ad6](https://github.com/conventional-changelog/commitlint/commit/7599ad6ab622ecbb6efa9ddba7acc3bbf66db5b5)) +## [17.2.1](https://github.com/conventional-changelog/commitlint/compare/v17.2.0...v17.2.1) (2022-11-01) +**Note:** Version bump only for package @commitlint/config-lerna-scopes +# [17.2.0](https://github.com/conventional-changelog/commitlint/compare/v17.1.2...v17.2.0) (2022-10-31) -# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) +**Note:** Version bump only for package @commitlint/config-lerna-scopes + +## [17.0.2](https://github.com/conventional-changelog/commitlint/compare/v17.0.1...v17.0.2) (2022-06-01) **Note:** Version bump only for package @commitlint/config-lerna-scopes +# [17.0.0](https://github.com/conventional-changelog/commitlint/compare/v16.3.0...v17.0.0) (2022-05-16) +- chore!: minimum node version v14 (#3128) ([ac5f9b4](https://github.com/conventional-changelog/commitlint/commit/ac5f9b47a9e3cd5c9d58b14da0feb426f06b1ef9)), closes [#3128](https://github.com/conventional-changelog/commitlint/issues/3128) +### BREAKING CHANGES +- drop node v12 support -# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) +- chore: rename circleci windows job -**Note:** Version bump only for package @commitlint/config-lerna-scopes +node version is not defned by the name anyways (i think) +## [16.2.4](https://github.com/conventional-changelog/commitlint/compare/v16.2.3...v16.2.4) (2022-04-28) +### Bug Fixes +- update dependency semver to v7.3.6 ([#3112](https://github.com/conventional-changelog/commitlint/issues/3112)) ([ad886fd](https://github.com/conventional-changelog/commitlint/commit/ad886fd7ea46bc2df346099f9d4f10defd51fe75)) +- update dependency semver to v7.3.7 ([#3119](https://github.com/conventional-changelog/commitlint/issues/3119)) ([c9c49b2](https://github.com/conventional-changelog/commitlint/commit/c9c49b2de935528d84a817de750cd65b8f765c48)) +## [16.2.2](https://github.com/conventional-changelog/commitlint/compare/v16.2.1...v16.2.2) (2022-02-14) -# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) +**Note:** Version bump only for package @commitlint/config-lerna-scopes + +## [16.2.1](https://github.com/conventional-changelog/commitlint/compare/v16.2.0...v16.2.1) (2022-02-13) **Note:** Version bump only for package @commitlint/config-lerna-scopes +# [16.0.0](https://github.com/conventional-changelog/commitlint/compare/v15.0.0...v16.0.0) (2021-12-26) +**Note:** Version bump only for package @commitlint/config-lerna-scopes +# [15.0.0](https://github.com/conventional-changelog/commitlint/compare/v14.2.0...v15.0.0) (2021-11-17) +### Tests -## [7.5.1](https://github.com/conventional-changelog/commitlint/compare/v7.5.0...v7.5.1) (2019-02-09) +- **config-lerna-scopes:** reuse npm bootstrap to simplify tests ([#2479](https://github.com/conventional-changelog/commitlint/issues/2479)) ([9a7a43a](https://github.com/conventional-changelog/commitlint/commit/9a7a43aa8a7eca18f2fe05c78d27dcb1a128930c)), closes [#2447](https://github.com/conventional-changelog/commitlint/issues/2447) -**Note:** Version bump only for package @commitlint/config-lerna-scopes +### BREAKING CHANGES +- **config-lerna-scopes:** upgrade to lerna v4 +Co-authored-by: Renovate Bot <bot@renovateapp.com> +Co-authored-by: escapedcat <github@htmlcss.de> +- test(config-lerna-scopes): reuse npm bootstrap to simplify tests +- test(config-lerna-scopes): reuse npm bootstrap to simplify tests -<a name="7.5.0"></a> -# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) +- test: fix issue after merge +- test: one more fix after merge -### Bug Fixes +Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> +Co-authored-by: Renovate Bot <bot@renovateapp.com> +Co-authored-by: escapedcat <github@htmlcss.de> -* all broken website references ([#564](https://github.com/conventional-changelog/commitlint/issues/564)) ([82eeb5a](https://github.com/conventional-changelog/commitlint/commit/82eeb5a)) -* replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) -* replace all website references with conventional changelog ([#563](https://github.com/conventional-changelog/commitlint/issues/563)) ([6b86fb1](https://github.com/conventional-changelog/commitlint/commit/6b86fb1)) +# [14.0.0](https://github.com/conventional-changelog/commitlint/compare/v13.2.1...v14.0.0) (2021-10-26) +**Note:** Version bump only for package @commitlint/config-lerna-scopes +# [13.2.0](https://github.com/conventional-changelog/commitlint/compare/v13.1.0...v13.2.0) (2021-09-28) +**Note:** Version bump only for package @commitlint/config-lerna-scopes -<a name="7.3.1"></a> -## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) +# [13.1.0](https://github.com/conventional-changelog/commitlint/compare/v13.0.0...v13.1.0) (2021-07-24) +### Bug Fixes +- update dependency import-from to v4 ([#2629](https://github.com/conventional-changelog/commitlint/issues/2629)) ([5bcb604](https://github.com/conventional-changelog/commitlint/commit/5bcb60456cd9d4c8f0f0bae21ca7c3d1c73943ca)) +# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) -**Note:** Version bump only for package @commitlint/config-lerna-scopes +- chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) -<a name="7.3.0"></a> -# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) +### BREAKING CHANGES +- minimum node version is 12 +## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) +**Note:** Version bump only for package @commitlint/config-lerna-scopes + +## [12.1.2](https://github.com/conventional-changelog/commitlint/compare/v12.1.1...v12.1.2) (2021-04-29) **Note:** Version bump only for package @commitlint/config-lerna-scopes -<a name="7.2.1"></a> -## [7.2.1](https://github.com/conventional-changelog/commitlint/compare/v7.2.0...v7.2.1) (2018-10-11) +## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) +### Bug Fixes +- **config-lerna-scopes:** ignore packages without names ([#2514](https://github.com/conventional-changelog/commitlint/issues/2514)) ([df3bf71](https://github.com/conventional-changelog/commitlint/commit/df3bf71ab36a085ef35a1491025c0d2e2b92ff77)) +- update dependency semver to v7.3.5 ([#2519](https://github.com/conventional-changelog/commitlint/issues/2519)) ([5113f22](https://github.com/conventional-changelog/commitlint/commit/5113f22c620e7b187fd558e5befa541b448ea18b)) +# [12.1.0](https://github.com/conventional-changelog/commitlint/compare/v12.0.1...v12.1.0) (2021-03-06) + +### Features + +- **config-lerna-scopes:** keep supporting lerna v3 ([51b0f4a](https://github.com/conventional-changelog/commitlint/commit/51b0f4a56f111c61419247755b1404b4e20d3a09)) + +## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) **Note:** Version bump only for package @commitlint/config-lerna-scopes -<a name="7.1.2"></a> -## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) +# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) +### Bug Fixes +- update dependency semver to v7.3.4 ([#2336](https://github.com/conventional-changelog/commitlint/issues/2336)) ([790b61a](https://github.com/conventional-changelog/commitlint/commit/790b61afa668d0eab80bbe49db58d3d5d29bb16e)) +### Features -**Note:** Version bump only for package @commitlint/config-lerna-scopes +- **config-lerna-scopes:** support yarn workspaces ([#2149](https://github.com/conventional-changelog/commitlint/issues/2149)) ([b244246](https://github.com/conventional-changelog/commitlint/commit/b2442469afe3b11c20b0101be7656ced43fab366)) -<a name="6.1.1"></a> -## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) +# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) +- refactor!: drop support for lerna v2 ([59667b3](https://github.com/conventional-changelog/commitlint/commit/59667b376118323b1312d3d1084b9178918f3d23)) +### BREAKING CHANGES +- remove lerna v2 support and tests -**Note:** Version bump only for package @commitlint/config-lerna-scopes +# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) -<a name="6.1.0"></a> -# [6.1.0](https://github.com/conventional-changelog/commitlint/compare/v6.0.5...v6.1.0) (2018-02-03) +- refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) +### BREAKING CHANGES +- remove node 8 from circle-ci checks +also remove node 13 because we do not support experimental versions -**Note:** Version bump only for package @commitlint/config-lerna-scopes +- docs: update node v10 to latest LTS 10 version -<a name="6.0.4"></a> -## [6.0.4](https://github.com/conventional-changelog/commitlint/compare/v6.0.3...v6.0.4) (2018-01-31) +Co-authored-by: Cedric van Putten <me@bycedric.com> +Co-authored-by: Cedric van Putten <me@bycedric.com> +## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) +**Note:** Version bump only for package @commitlint/config-lerna-scopes + +## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) **Note:** Version bump only for package @commitlint/config-lerna-scopes -<a name="6.0.3"></a> -## [6.0.3](https://github.com/conventional-changelog/commitlint/compare/v6.0.2...v6.0.3) (2018-01-31) +# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) +### Bug Fixes +- update dependency semver to v7.3.2 ([#1369](https://github.com/conventional-changelog/commitlint/issues/1369)) ([3c09722](https://github.com/conventional-changelog/commitlint/commit/3c09722d2db85a94cd1f4bf25c6b4251b2c41bbb)) +## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) **Note:** Version bump only for package @commitlint/config-lerna-scopes -<a name="6.0.2"></a> -## [6.0.2](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.2) (2018-01-12) +# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) +### Bug Fixes +- **config-lerna-scopes:** correct lerna in peerDependencies ([#980](https://github.com/conventional-changelog/commitlint/issues/980)) ([f88f00d](https://github.com/conventional-changelog/commitlint/commit/f88f00d5d3d0a247b5635b50248bbb942b1ec962)) +- update dependency semver to v7.1.3 ([#995](https://github.com/conventional-changelog/commitlint/issues/995)) ([4ee307a](https://github.com/conventional-changelog/commitlint/commit/4ee307a1f8c861ae5d8a038560d166c5d00ea8ba)) +## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) **Note:** Version bump only for package @commitlint/config-lerna-scopes -<a name="6.0.0"></a> -# [6.0.0](https://github.com/conventional-changelog/commitlint/compare/v5.2.6...v6.0.0) (2018-01-09) - +# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) +**Note:** Version bump only for package @commitlint/config-lerna-scopes +# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) **Note:** Version bump only for package @commitlint/config-lerna-scopes -<a name="5.2.6"></a> -## [5.2.6](https://github.com/conventional-changelog/commitlint/compare/v5.2.5...v5.2.6) (2017-12-21) +# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) +**Note:** Version bump only for package @commitlint/config-lerna-scopes +# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) +**Note:** Version bump only for package @commitlint/config-lerna-scopes + +## [7.5.1](https://github.com/conventional-changelog/commitlint/compare/v7.5.0...v7.5.1) (2019-02-09) **Note:** Version bump only for package @commitlint/config-lerna-scopes -<a name="5.2.0"></a> -# [5.2.0](https://github.com/conventional-changelog/commitlint/compare/v5.1.3...v5.2.0) (2017-11-30) +<a name="7.5.0"></a> +# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) + +### Bug Fixes +- all broken website references ([#564](https://github.com/conventional-changelog/commitlint/issues/564)) ([82eeb5a](https://github.com/conventional-changelog/commitlint/commit/82eeb5a)) +- replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) +- replace all website references with conventional changelog ([#563](https://github.com/conventional-changelog/commitlint/issues/563)) ([6b86fb1](https://github.com/conventional-changelog/commitlint/commit/6b86fb1)) +<a name="7.3.1"></a> + +## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) **Note:** Version bump only for package @commitlint/config-lerna-scopes -<a name="5.1.1"></a> -## [5.1.1](https://github.com/conventional-changelog/commitlint/compare/v5.1.0...v5.1.1) (2017-11-24) +<a name="7.3.0"></a> +# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) +**Note:** Version bump only for package @commitlint/config-lerna-scopes +<a name="7.2.1"></a> + +## [7.2.1](https://github.com/conventional-changelog/commitlint/compare/v7.2.0...v7.2.1) (2018-10-11) **Note:** Version bump only for package @commitlint/config-lerna-scopes -<a name="5.1.0"></a> -# [5.1.0](https://github.com/conventional-changelog/commitlint/compare/v5.0.2...v5.1.0) (2017-11-24) +<a name="7.1.2"></a> +## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) -### Features +**Note:** Version bump only for package @commitlint/config-lerna-scopes -* **travis-cli:** add reusable travis command line interface ([3e6e6a8](https://github.com/conventional-changelog/commitlint/commit/3e6e6a8)) +<a name="6.1.1"></a> +## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) +**Note:** Version bump only for package @commitlint/config-lerna-scopes +<a name="6.1.0"></a> -<a name="5.0.1"></a> -## [5.0.1](https://github.com/conventional-changelog/commitlint/compare/v5.0.0...v5.0.1) (2017-11-19) +# [6.1.0](https://github.com/conventional-changelog/commitlint/compare/v6.0.5...v6.1.0) (2018-02-03) +**Note:** Version bump only for package @commitlint/config-lerna-scopes +<a name="6.0.4"></a> +## [6.0.4](https://github.com/conventional-changelog/commitlint/compare/v6.0.3...v6.0.4) (2018-01-31) **Note:** Version bump only for package @commitlint/config-lerna-scopes -<a name="4.3.0"></a> -# [4.3.0](https://github.com/conventional-changelog/commitlint/compare/v4.2.2...v4.3.0) (2017-11-08) +<a name="6.0.3"></a> + +## [6.0.3](https://github.com/conventional-changelog/commitlint/compare/v6.0.2...v6.0.3) (2018-01-31) +**Note:** Version bump only for package @commitlint/config-lerna-scopes +<a name="6.0.2"></a> +## [6.0.2](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.2) (2018-01-12) **Note:** Version bump only for package @commitlint/config-lerna-scopes -<a name="4.2.1"></a> -## [4.2.1](https://github.com/conventional-changelog/commitlint/compare/v4.2.0...v4.2.1) (2017-10-18) +<a name="6.0.0"></a> +# [6.0.0](https://github.com/conventional-changelog/commitlint/compare/v5.2.6...v6.0.0) (2018-01-09) +**Note:** Version bump only for package @commitlint/config-lerna-scopes +<a name="5.2.6"></a> + +## [5.2.6](https://github.com/conventional-changelog/commitlint/compare/v5.2.5...v5.2.6) (2017-12-21) **Note:** Version bump only for package @commitlint/config-lerna-scopes -<a name="4.2.0"></a> -# [4.2.0](https://github.com/conventional-changelog/commitlint/compare/v4.1.1...v4.2.0) (2017-10-14) +<a name="5.2.0"></a> +# [5.2.0](https://github.com/conventional-changelog/commitlint/compare/v5.1.3...v5.2.0) (2017-11-30) +**Note:** Version bump only for package @commitlint/config-lerna-scopes +<a name="5.1.1"></a> + +## [5.1.1](https://github.com/conventional-changelog/commitlint/compare/v5.1.0...v5.1.1) (2017-11-24) **Note:** Version bump only for package @commitlint/config-lerna-scopes -<a name="4.1.1"></a> -## [4.1.1](https://github.com/conventional-changelog/commitlint/compare/v4.1.0...v4.1.1) (2017-10-09) +<a name="5.1.0"></a> +# [5.1.0](https://github.com/conventional-changelog/commitlint/compare/v5.0.2...v5.1.0) (2017-11-24) -### Bug Fixes +### Features -* **config-lerna-scopes:** fix package list get with recent lerna versions ([8f35dae](https://github.com/conventional-changelog/commitlint/commit/8f35dae)) +- **travis-cli:** add reusable travis command line interface ([3e6e6a8](https://github.com/conventional-changelog/commitlint/commit/3e6e6a8)) +<a name="5.0.1"></a> +## [5.0.1](https://github.com/conventional-changelog/commitlint/compare/v5.0.0...v5.0.1) (2017-11-19) +**Note:** Version bump only for package @commitlint/config-lerna-scopes -<a name="3.0.4"></a> -## 3.0.4 (2017-08-04) +<a name="4.3.0"></a> +# [4.3.0](https://github.com/conventional-changelog/commitlint/compare/v4.2.2...v4.3.0) (2017-11-08) +**Note:** Version bump only for package @commitlint/config-lerna-scopes -<a name="3.0.3"></a> -## 3.0.3 (2017-07-16) +<a name="4.2.1"></a> +## [4.2.1](https://github.com/conventional-changelog/commitlint/compare/v4.2.0...v4.2.1) (2017-10-18) +**Note:** Version bump only for package @commitlint/config-lerna-scopes -<a name="3.0.2"></a> -## 3.0.2 (2017-07-11) +<a name="4.2.0"></a> +# [4.2.0](https://github.com/conventional-changelog/commitlint/compare/v4.1.1...v4.2.0) (2017-10-14) -### Features +**Note:** Version bump only for package @commitlint/config-lerna-scopes -* **config-lerna-scopes:** support non-standard lerna repos ([71fc40e](https://github.com/conventional-changelog/commitlint/commit/71fc40e)) +<a name="4.1.1"></a> +## [4.1.1](https://github.com/conventional-changelog/commitlint/compare/v4.1.0...v4.1.1) (2017-10-09) +### Bug Fixes +- **config-lerna-scopes:** fix package list get with recent lerna versions ([8f35dae](https://github.com/conventional-changelog/commitlint/commit/8f35dae)) -<a name="3.0.3"></a> -## 3.0.3 (2017-07-16) +<a name="3.0.4"></a> + +## 3.0.4 (2017-08-04) +<a name="3.0.3"></a> +## 3.0.3 (2017-07-16) <a name="3.0.2"></a> -## 3.0.2 (2017-07-11) +## 3.0.2 (2017-07-11) ### Features -* **config-lerna-scopes:** support non-standard lerna repos ([71fc40e](https://github.com/conventional-changelog/commitlint/commit/71fc40e)) - +- **config-lerna-scopes:** support non-standard lerna repos ([71fc40e](https://github.com/conventional-changelog/commitlint/commit/71fc40e)) +<a name="3.0.3"></a> +## 3.0.3 (2017-07-16) <a name="3.0.2"></a> -## 3.0.2 (2017-07-11) +## 3.0.2 (2017-07-11) ### Features -* **config-lerna-scopes:** support non-standard lerna repos ([71fc40e](https://github.com/conventional-changelog/commitlint/commit/71fc40e)) +- **config-lerna-scopes:** support non-standard lerna repos ([71fc40e](https://github.com/conventional-changelog/commitlint/commit/71fc40e)) +<a name="3.0.2"></a> +## 3.0.2 (2017-07-11) +### Features + +- **config-lerna-scopes:** support non-standard lerna repos ([71fc40e](https://github.com/conventional-changelog/commitlint/commit/71fc40e)) <a name="3.0.1"></a> -## 3.0.1 (2017-07-11) +## 3.0.1 (2017-07-11) ### Features -* **config-lerna-scopes:** support non-standard lerna repos ([71fc40e](https://github.com/conventional-changelog/commitlint/commit/71fc40e)) - - - +- **config-lerna-scopes:** support non-standard lerna repos ([71fc40e](https://github.com/conventional-changelog/commitlint/commit/71fc40e)) <a name="3.0.0"></a> -# 3.0.0 (2017-07-10) +# 3.0.0 (2017-07-10) ### Features -* **config-lerna-scopes:** support non-standard lerna repos ([903df4b](https://github.com/conventional-changelog/commitlint/commit/903df4b)) +- **config-lerna-scopes:** support non-standard lerna repos ([903df4b](https://github.com/conventional-changelog/commitlint/commit/903df4b)) diff --git a/@commitlint/config-lerna-scopes/fixtures/basic/lerna.json b/@commitlint/config-lerna-scopes/fixtures/basic/lerna.json index 41c31e2033..743ceadeaa 100644 --- a/@commitlint/config-lerna-scopes/fixtures/basic/lerna.json +++ b/@commitlint/config-lerna-scopes/fixtures/basic/lerna.json @@ -1,5 +1,4 @@ { - "lerna": "4", "version": "1.0.0", "packages": ["packages/*"] } diff --git a/@commitlint/config-lerna-scopes/fixtures/basic/package.json b/@commitlint/config-lerna-scopes/fixtures/basic/package.json index 06aff06a63..7b7c45507d 100644 --- a/@commitlint/config-lerna-scopes/fixtures/basic/package.json +++ b/@commitlint/config-lerna-scopes/fixtures/basic/package.json @@ -1,7 +1,4 @@ { "name": "basic", - "version": "1.0.0", - "devDependencies": { - "lerna": "^4.0.0" - } + "version": "1.0.0" } diff --git a/@commitlint/config-lerna-scopes/fixtures/basic/packages/a/package.json b/@commitlint/config-lerna-scopes/fixtures/basic/packages/a/package.json index 9113c2528e..9a71b5dd55 100644 --- a/@commitlint/config-lerna-scopes/fixtures/basic/packages/a/package.json +++ b/@commitlint/config-lerna-scopes/fixtures/basic/packages/a/package.json @@ -1,4 +1,4 @@ { - "name": "a", + "name": "@commitlint-lerna-scopes/basic-a", "version": "1.0.0" } diff --git a/@commitlint/config-lerna-scopes/fixtures/basic/packages/b/package.json b/@commitlint/config-lerna-scopes/fixtures/basic/packages/b/package.json index c2d84cc127..7b724bdb22 100644 --- a/@commitlint/config-lerna-scopes/fixtures/basic/packages/b/package.json +++ b/@commitlint/config-lerna-scopes/fixtures/basic/packages/b/package.json @@ -1,4 +1,4 @@ { - "name": "b", + "name": "@commitlint-lerna-scopes/basic-b", "version": "1.0.0" } diff --git a/@commitlint/config-lerna-scopes/fixtures/empty/lerna.json b/@commitlint/config-lerna-scopes/fixtures/empty/lerna.json index 41c31e2033..743ceadeaa 100644 --- a/@commitlint/config-lerna-scopes/fixtures/empty/lerna.json +++ b/@commitlint/config-lerna-scopes/fixtures/empty/lerna.json @@ -1,5 +1,4 @@ { - "lerna": "4", "version": "1.0.0", "packages": ["packages/*"] } diff --git a/@commitlint/config-lerna-scopes/fixtures/empty/package.json b/@commitlint/config-lerna-scopes/fixtures/empty/package.json index 00bf9d1213..a0d311fba7 100644 --- a/@commitlint/config-lerna-scopes/fixtures/empty/package.json +++ b/@commitlint/config-lerna-scopes/fixtures/empty/package.json @@ -1,7 +1,4 @@ { "name": "empty", - "version": "1.0.0", - "devDependencies": { - "lerna": "^4.0.0" - } + "version": "1.0.0" } diff --git a/@commitlint/config-lerna-scopes/fixtures/modules/lerna.json b/@commitlint/config-lerna-scopes/fixtures/modules/lerna.json index 41c31e2033..743ceadeaa 100644 --- a/@commitlint/config-lerna-scopes/fixtures/modules/lerna.json +++ b/@commitlint/config-lerna-scopes/fixtures/modules/lerna.json @@ -1,5 +1,4 @@ { - "lerna": "4", "version": "1.0.0", "packages": ["packages/*"] } diff --git a/@commitlint/config-lerna-scopes/fixtures/modules/package.json b/@commitlint/config-lerna-scopes/fixtures/modules/package.json index 06aff06a63..7b7c45507d 100644 --- a/@commitlint/config-lerna-scopes/fixtures/modules/package.json +++ b/@commitlint/config-lerna-scopes/fixtures/modules/package.json @@ -1,7 +1,4 @@ { "name": "basic", - "version": "1.0.0", - "devDependencies": { - "lerna": "^4.0.0" - } + "version": "1.0.0" } diff --git a/@commitlint/config-lerna-scopes/fixtures/modules/packages/a/package.json b/@commitlint/config-lerna-scopes/fixtures/modules/packages/a/package.json index 9113c2528e..1c6951c9b1 100644 --- a/@commitlint/config-lerna-scopes/fixtures/modules/packages/a/package.json +++ b/@commitlint/config-lerna-scopes/fixtures/modules/packages/a/package.json @@ -1,4 +1,4 @@ { - "name": "a", + "name": "@commitlint-lerna-scopes/modules-a", "version": "1.0.0" } diff --git a/@commitlint/config-lerna-scopes/fixtures/nested/lerna.json b/@commitlint/config-lerna-scopes/fixtures/nested/lerna.json new file mode 100644 index 0000000000..8dec4c2731 --- /dev/null +++ b/@commitlint/config-lerna-scopes/fixtures/nested/lerna.json @@ -0,0 +1,4 @@ +{ + "version": "1.0.0", + "packages": ["packages/**"] +} diff --git a/@commitlint/config-lerna-scopes/fixtures/nested/package.json b/@commitlint/config-lerna-scopes/fixtures/nested/package.json new file mode 100644 index 0000000000..548079cf10 --- /dev/null +++ b/@commitlint/config-lerna-scopes/fixtures/nested/package.json @@ -0,0 +1,4 @@ +{ + "name": "nested-workspaces", + "version": "1.0.0" +} diff --git a/@commitlint/config-lerna-scopes/fixtures/nested/packages/a/nested-a/package.json b/@commitlint/config-lerna-scopes/fixtures/nested/packages/a/nested-a/package.json new file mode 100644 index 0000000000..6a56f652a6 --- /dev/null +++ b/@commitlint/config-lerna-scopes/fixtures/nested/packages/a/nested-a/package.json @@ -0,0 +1,4 @@ +{ + "name": "@commitlint-lerna-scopes/nested-a", + "version": "1.0.0" +} diff --git a/@commitlint/config-lerna-scopes/fixtures/nested/packages/b/nested-b/package.json b/@commitlint/config-lerna-scopes/fixtures/nested/packages/b/nested-b/package.json new file mode 100644 index 0000000000..542bd9f25f --- /dev/null +++ b/@commitlint/config-lerna-scopes/fixtures/nested/packages/b/nested-b/package.json @@ -0,0 +1,4 @@ +{ + "name": "@commitlint-lerna-scopes/nested-b", + "version": "1.0.0" +} diff --git a/@commitlint/config-lerna-scopes/fixtures/nested/packages/c/package.json b/@commitlint/config-lerna-scopes/fixtures/nested/packages/c/package.json new file mode 100644 index 0000000000..982a03ea31 --- /dev/null +++ b/@commitlint/config-lerna-scopes/fixtures/nested/packages/c/package.json @@ -0,0 +1,4 @@ +{ + "name": "@commitlint-lerna-scopes/nested-c", + "version": "1.0.0" +} diff --git a/@commitlint/config-lerna-scopes/fixtures/no-packages-declaration/lerna.json b/@commitlint/config-lerna-scopes/fixtures/no-packages-declaration/lerna.json new file mode 100644 index 0000000000..1587a66968 --- /dev/null +++ b/@commitlint/config-lerna-scopes/fixtures/no-packages-declaration/lerna.json @@ -0,0 +1,3 @@ +{ + "version": "1.0.0" +} diff --git a/@commitlint/config-lerna-scopes/fixtures/no-packages-declaration/package.json b/@commitlint/config-lerna-scopes/fixtures/no-packages-declaration/package.json new file mode 100644 index 0000000000..434d703596 --- /dev/null +++ b/@commitlint/config-lerna-scopes/fixtures/no-packages-declaration/package.json @@ -0,0 +1,4 @@ +{ + "name": "@commitlint-lerna-scopes/no-packages-declaration", + "version": "1.0.0" +} diff --git a/@commitlint/config-lerna-scopes/fixtures/scoped/@packages/a/package.json b/@commitlint/config-lerna-scopes/fixtures/scoped/@packages/a/package.json index 7ba283037e..d33e5bda39 100644 --- a/@commitlint/config-lerna-scopes/fixtures/scoped/@packages/a/package.json +++ b/@commitlint/config-lerna-scopes/fixtures/scoped/@packages/a/package.json @@ -1,4 +1,4 @@ { - "name": "@packages/a", + "name": "@commitlint-lerna-scopes/scoped-a", "version": "1.0.0" } diff --git a/@commitlint/config-lerna-scopes/fixtures/scoped/@packages/b/package.json b/@commitlint/config-lerna-scopes/fixtures/scoped/@packages/b/package.json index 3fd2cf7616..bcc30a0a61 100644 --- a/@commitlint/config-lerna-scopes/fixtures/scoped/@packages/b/package.json +++ b/@commitlint/config-lerna-scopes/fixtures/scoped/@packages/b/package.json @@ -1,4 +1,4 @@ { - "name": "@packages/b", + "name": "@commitlint-lerna-scopes/scoped-b", "version": "1.0.0" } diff --git a/@commitlint/config-lerna-scopes/fixtures/scoped/lerna.json b/@commitlint/config-lerna-scopes/fixtures/scoped/lerna.json index 8e0ca65b2e..daafb8e8db 100644 --- a/@commitlint/config-lerna-scopes/fixtures/scoped/lerna.json +++ b/@commitlint/config-lerna-scopes/fixtures/scoped/lerna.json @@ -1,5 +1,4 @@ { - "lerna": "4", "version": "1.0.0", - "packages": ["@packages/*"] + "packages": ["@packages/**"] } diff --git a/@commitlint/config-lerna-scopes/fixtures/scoped/package.json b/@commitlint/config-lerna-scopes/fixtures/scoped/package.json index 0761bd7b18..3981adbef6 100644 --- a/@commitlint/config-lerna-scopes/fixtures/scoped/package.json +++ b/@commitlint/config-lerna-scopes/fixtures/scoped/package.json @@ -1,7 +1,4 @@ { "name": "scoped", - "version": "1.0.0", - "devDependencies": { - "lerna": "^4.0.0" - } + "version": "1.0.0" } diff --git a/@commitlint/config-lerna-scopes/fixtures/transition-to-workspace-scopes/lerna.json b/@commitlint/config-lerna-scopes/fixtures/transition-to-workspace-scopes/lerna.json new file mode 100644 index 0000000000..1587a66968 --- /dev/null +++ b/@commitlint/config-lerna-scopes/fixtures/transition-to-workspace-scopes/lerna.json @@ -0,0 +1,3 @@ +{ + "version": "1.0.0" +} diff --git a/@commitlint/config-lerna-scopes/fixtures/transition-to-workspace-scopes/package.json b/@commitlint/config-lerna-scopes/fixtures/transition-to-workspace-scopes/package.json new file mode 100644 index 0000000000..c0ed8f8e23 --- /dev/null +++ b/@commitlint/config-lerna-scopes/fixtures/transition-to-workspace-scopes/package.json @@ -0,0 +1,5 @@ +{ + "name": "@commitlint-lerna-scopes/transition-to-workspace-scopes", + "version": "1.0.0", + "workspaces": ["./packages/*"] +} diff --git a/@commitlint/config-lerna-scopes/fixtures/transition-to-workspace-scopes/packages/workspace-package/package.json b/@commitlint/config-lerna-scopes/fixtures/transition-to-workspace-scopes/packages/workspace-package/package.json new file mode 100644 index 0000000000..2039be51ea --- /dev/null +++ b/@commitlint/config-lerna-scopes/fixtures/transition-to-workspace-scopes/packages/workspace-package/package.json @@ -0,0 +1,4 @@ +{ + "name": "@commitlint-lerna-scopes/workspace-package", + "version": "1.0.0" +} diff --git a/@commitlint/config-lerna-scopes/index.js b/@commitlint/config-lerna-scopes/index.js index 73fec444df..a24642b5ae 100644 --- a/@commitlint/config-lerna-scopes/index.js +++ b/@commitlint/config-lerna-scopes/index.js @@ -1,59 +1,89 @@ -const Path = require('path'); -const importFrom = require('import-from'); -const resolvePkg = require('resolve-pkg'); -const Globby = require('globby'); -const semver = require('semver'); - -module.exports = { - utils: {getPackages}, +import path from "node:path"; +import fs from "node:fs/promises"; +import fg from "fast-glob"; +import configWorkspaceScopes from "@commitlint/config-workspace-scopes"; + +export default { + utils: { getProjects }, rules: { - 'scope-enum': (ctx) => - getPackages(ctx).then((packages) => [2, 'always', packages]), + "scope-enum": (ctx) => + getProjects(ctx).then((packages) => [2, "always", packages]), }, }; -function getPackages(context) { - return Promise.resolve() - .then(() => { - const ctx = context || {}; - const cwd = ctx.cwd || process.cwd(); - - const {workspaces} = require(Path.join(cwd, 'package.json')); - if (Array.isArray(workspaces) && workspaces.length) { - // use yarn workspaces - return Globby( - workspaces.map((ws) => { - return Path.posix.join(ws, 'package.json'); - }), - {cwd} - ).then((pJsons = []) => { - return pJsons.map((pJson) => require(Path.join(cwd, pJson))); - }); - } +/** + * Turn glob paths with potential 'package.json' ending always into paths + * with a package.json ending to find monorepo packages + * @param {string[]} patterns + * @returns A list of glob paths to resolve package.json files + */ +function normalizePatterns(patterns) { + const normalizedPatterns = []; + for (const pattern of patterns) { + normalizedPatterns.push(pattern.replace(/\/?$/, "/package.json")); + } + return normalizedPatterns; +} - const lernaVersion = getLernaVersion(cwd); - if (semver.lt(lernaVersion, '3.0.0')) { - const Repository = importFrom(cwd, 'lerna/lib/Repository'); - const PackageUtilities = importFrom(cwd, 'lerna/lib/PackageUtilities'); +/** + * Find all package.json contents in the defined cwd + * @param {string} cwd + * @returns A list of parsed package.json files as objects + */ +async function findPackages(cwd) { + const json = await fs.readFile(path.join(cwd, "lerna.json"), { + encoding: "utf-8", + }); - const repository = new Repository(cwd); - return PackageUtilities.getPackages({ - packageConfigs: repository.packageConfigs, - rootPath: cwd, - }); - } + const packages = JSON.parse(json)?.packages || []; + if (packages.length === 0) { + return []; + } + + const patterns = normalizePatterns(packages); + const entries = await fg(patterns, { + cwd, + ignore: ["**/node_modules/**", "**/bower_components/**"], + }); - const {getPackages} = importFrom(cwd, '@lerna/project'); - return getPackages(cwd); - }) - .then((packages) => { - return packages - .map((pkg) => pkg.name) - .filter(Boolean) - .map((name) => (name.charAt(0) === '@' ? name.split('/')[1] : name)); - }); + const pkgJsons = await Promise.all( + Array.from(new Set(entries.map((entry) => path.join(cwd, entry)))).map( + (pkgPath) => fs.readFile(pkgPath, { encoding: "utf-8" }), + ), + ); + + return pkgJsons.map((pkgJson) => JSON.parse(pkgJson) || {}); } -function getLernaVersion(cwd) { - return require(Path.join(resolvePkg('lerna', {cwd}), 'package.json')).version; +async function getProjects(context) { + const ctx = context || {}; + const cwd = ctx.cwd || process.cwd(); + + // try to read workspaces for backwards compatibility + const workspacePackages = await configWorkspaceScopes.utils.getPackages({ + cwd, + }); + // native npm/yarn workspaces detected, inform user to use new package instead + if (workspacePackages.length > 0) { + console.warn( + [ + `It seems that you are using npm/yarn workspaces instead of lernas "packages" declaration.`, + `Support for workspaces will be removed in a future major version of this package.`, + `Please make sure to transition to "@commitlint/config-workspace-scopes" in the near future.`, + ].join("\n"), + ); + return workspacePackages; + } + + const packages = await findPackages(cwd); + + return packages + .reduce((pkgNames, pkg) => { + const name = pkg.name; + if (name) { + pkgNames.push(name.charAt(0) === "@" ? name.split("/")[1] : name); + } + return pkgNames; + }, []) + .sort(); } diff --git a/@commitlint/config-lerna-scopes/index.test.js b/@commitlint/config-lerna-scopes/index.test.js index 052260ef5c..3de602d281 100644 --- a/@commitlint/config-lerna-scopes/index.test.js +++ b/@commitlint/config-lerna-scopes/index.test.js @@ -1,84 +1,119 @@ -import Path from 'path'; -import {lerna} from '@commitlint/test'; -import config from '.'; +import { test, expect, vi } from "vitest"; +import path from "path"; +import { fileURLToPath } from "url"; -test('exports rules key', () => { - expect(config).toHaveProperty('rules'); +import { npm } from "@commitlint/test"; + +import config from "./index.js"; + +const __dirname = path.resolve(fileURLToPath(import.meta.url), ".."); + +test("exports rules key", () => { + expect(config).toHaveProperty("rules"); }); -test('rules hold object', () => { +test("rules hold object", () => { expect(config).toMatchObject({ rules: expect.any(Object), }); }); -test('rules contain scope-enum', () => { +test("rules contain scope-enum", () => { expect(config).toMatchObject({ rules: { - 'scope-enum': expect.anything(), + "scope-enum": expect.anything(), }, }); }); -test('scope-enum is function', () => { +test("scope-enum is function", () => { expect(config).toMatchObject({ rules: { - 'scope-enum': expect.any(Function), + "scope-enum": expect.any(Function), }, }); }); -test('scope-enum does not throw for missing context', async () => { - const {'scope-enum': fn} = config.rules; +test("scope-enum does not throw for missing context", async () => { + const { "scope-enum": fn } = config.rules; await expect(fn()).resolves.toBeTruthy(); }); -test('scope-enum has expected severity', async () => { - const {'scope-enum': fn} = config.rules; +test("scope-enum has expected severity", async () => { + const { "scope-enum": fn } = config.rules; const [severity] = await fn(); expect(severity).toBe(2); }); -test('scope-enum has expected modifier', async () => { - const {'scope-enum': fn} = config.rules; +test("scope-enum has expected modifier", async () => { + const { "scope-enum": fn } = config.rules; const [, modifier] = await fn(); - expect(modifier).toBe('always'); + expect(modifier).toBe("always"); }); -test('returns empty value for empty lerna repository', async () => { - const {'scope-enum': fn} = config.rules; - const cwd = await lerna.bootstrap('empty', __dirname); - const [, , value] = await fn({cwd}); +test("returns empty value for empty lerna repository", async () => { + const { "scope-enum": fn } = config.rules; + const cwd = await npm.bootstrap("fixtures/empty", __dirname); + const [, , value] = await fn({ cwd }); expect(value).toEqual([]); }); -test('returns expected value for basic lerna repository', async () => { - const {'scope-enum': fn} = config.rules; - const cwd = await lerna.bootstrap('basic', __dirname); +test("returns all packages for nested lerna packages repository", async () => { + const { "scope-enum": fn } = config.rules; + const cwd = await npm.bootstrap("fixtures/nested", __dirname); + const [, , value] = await fn({ cwd }); + expect(value).toEqual(["nested-a", "nested-b", "nested-c"]); +}); - const [, , value] = await fn({cwd}); - expect(value).toEqual(['a', 'b']); +test("returns expected value for basic lerna repository", async () => { + const { "scope-enum": fn } = config.rules; + const cwd = await npm.bootstrap("fixtures/basic", __dirname); + + const [, , value] = await fn({ cwd }); + expect(value).toEqual(["basic-a", "basic-b"]); }); -test('returns expected value for lerna repository containing modules', async () => { - const {'scope-enum': fn} = config.rules; - const cwd = await lerna.bootstrap('modules', __dirname); +test("returns expected value for lerna repository containing modules", async () => { + const { "scope-enum": fn } = config.rules; + const cwd = await npm.bootstrap("fixtures/modules", __dirname); - const [, , value] = await fn({cwd}); - expect(value).toEqual(['a']); + const [, , value] = await fn({ cwd }); + expect(value).toEqual(["modules-a"]); }); -test('returns expected value for scoped lerna repository', async () => { - const {'scope-enum': fn} = config.rules; - const cwd = await lerna.bootstrap('scoped', __dirname); +test("returns expected value for scoped lerna repository", async () => { + const { "scope-enum": fn } = config.rules; + const cwd = await npm.bootstrap("fixtures/scoped", __dirname); - const [, , value] = await fn({cwd}); - expect(value).toEqual(['a', 'b']); + const [, , value] = await fn({ cwd }); + expect(value).toEqual(["scoped-a", "scoped-b"]); }); -test('returns expected value for yarn workspaces', async () => { - const {'scope-enum': fn} = config.rules; - const cwd = Path.join(__dirname, 'fixtures', 'yarn'); - const [, , value] = await fn({cwd}); - expect(value.sort()).toEqual(['a', 'b']); +test("work with no declared packages", async () => { + const { "scope-enum": fn } = config.rules; + const cwd = await npm.bootstrap( + "fixtures/no-packages-declaration", + __dirname, + ); + + const [, , value] = await fn({ cwd }); + expect(value).toEqual([]); +}); + +test("inform the user about the transition to config-workspace-scopes if the project is using native workspaces", async () => { + const { "scope-enum": fn } = config.rules; + const cwd = await npm.bootstrap( + "fixtures/transition-to-workspace-scopes", + __dirname, + ); + + const consoleWarnSpy = vi.spyOn(console, "warn"); + + const [, , value] = await fn({ cwd }); + + expect(consoleWarnSpy).toHaveBeenCalledWith( + expect.stringContaining(`It seems that you are using npm/yarn workspaces`), + ); + + expect(value).toEqual(["workspace-package"]); }); diff --git a/@commitlint/config-lerna-scopes/package.json b/@commitlint/config-lerna-scopes/package.json index cbb6f4587a..1e7544a39e 100644 --- a/@commitlint/config-lerna-scopes/package.json +++ b/@commitlint/config-lerna-scopes/package.json @@ -1,7 +1,9 @@ { "name": "@commitlint/config-lerna-scopes", - "version": "13.1.0", + "type": "module", + "version": "20.0.0", "description": "Shareable commitlint config enforcing lerna package and workspace names as scopes", + "main": "index.js", "files": [ "index.js" ], @@ -11,7 +13,8 @@ }, "repository": { "type": "git", - "url": "https://github.com/conventional-changelog/commitlint.git" + "url": "https://github.com/conventional-changelog/commitlint.git", + "directory": "@commitlint/config-lerna-scopes" }, "keywords": [ "conventional-changelog", @@ -19,14 +22,14 @@ "commitlint-config", "lerna" ], - "author": "Mario Nebl <hello@herebecode.com>", + "author": "Jan Biasi (https://github.com/janbiasi)", "license": "MIT", "bugs": { "url": "https://github.com/conventional-changelog/commitlint/issues" }, - "homepage": "https://github.com/conventional-changelog/commitlint#readme", + "homepage": "https://commitlint.js.org/", "peerDependencies": { - "lerna": "^3.0.0 || ^4.0.0" + "lerna": "*" }, "peerDependenciesMeta": { "lerna": { @@ -34,17 +37,15 @@ } }, "engines": { - "node": ">=v12" + "node": ">=v18" }, "dependencies": { - "globby": "^11.0.1", - "import-from": "4.0.0", - "resolve-pkg": "2.0.0", - "semver": "7.3.5" + "@commitlint/config-workspace-scopes": "^20.0.0", + "fast-glob": "^3.3.3" }, "devDependencies": { - "@commitlint/test": "^13.0.0", - "@commitlint/utils": "^13.0.0" + "@commitlint/test": "^20.0.0", + "@commitlint/utils": "^20.0.0" }, - "gitHead": "70f7f4688b51774e7ac5e40e896cdaa3f132b2bc" + "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" } diff --git a/@commitlint/config-lerna-scopes/readme.md b/@commitlint/config-lerna-scopes/readme.md index 41ab597339..3d9d9ee3ee 100644 --- a/@commitlint/config-lerna-scopes/readme.md +++ b/@commitlint/config-lerna-scopes/readme.md @@ -1,20 +1,23 @@ -> Lint your lerna project commits - # @commitlint/config-lerna-scopes -Shareable `commitlint` config enforcing lerna package and workspace names as scopes. +Lint your lerna project commits + +Shareable `commitlint` config enforcing lerna package scopes. Use with [@commitlint/cli](../cli) and [@commitlint/prompt-cli](../prompt-cli). +> [!IMPORTANT] +> If you are using NPM or Yarn workspaces, please use the [@commitlint/config-workspace-scopes](../config-workspace-scopes/) package instead. Support for workspaces will be removed from this package in a future major version. + ## Getting started -``` +```sh npm install --save-dev @commitlint/config-lerna-scopes @commitlint/cli -echo "module.exports = {extends: ['@commitlint/config-lerna-scopes']};" > commitlint.config.js +echo "export default {extends: ['@commitlint/config-lerna-scopes']};" > commitlint.config.js ``` ## Examples -``` +```text ❯ cat commitlint.config.js { extends: ['@commitlint/config-lerna-scopes'] @@ -41,4 +44,4 @@ packages ✔ found 0 problems, 0 warnings ``` -Consult [docs/rules](https://conventional-changelog.github.io/commitlint/#/reference-rules) for a list of available rules. +Consult [Rules reference](https://commitlint.js.org/reference/rules) for a list of available rules. diff --git a/@commitlint/config-nx-scopes/CHANGELOG.md b/@commitlint/config-nx-scopes/CHANGELOG.md new file mode 100644 index 0000000000..e94fbc25e6 --- /dev/null +++ b/@commitlint/config-nx-scopes/CHANGELOG.md @@ -0,0 +1,332 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + +**Note:** Version bump only for package @commitlint/config-nx-scopes + + + + + +## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) + +**Note:** Version bump only for package @commitlint/config-nx-scopes + + + + + +# [19.8.0](https://github.com/conventional-changelog/commitlint/compare/v19.7.1...v19.8.0) (2025-03-07) + + +### Performance Improvements + +* use `node:` prefix to bypass require.cache call for builtins ([#4302](https://github.com/conventional-changelog/commitlint/issues/4302)) ([0cd8f41](https://github.com/conventional-changelog/commitlint/commit/0cd8f410573fe11383f788b1ceb7e0946143591d)) + + + + + +## [19.7.1](https://github.com/conventional-changelog/commitlint/compare/v19.7.0...v19.7.1) (2025-02-02) + + +### Bug Fixes + +* **config-nx-scopes:** fix for projects without explicit targets ([#4261](https://github.com/conventional-changelog/commitlint/issues/4261)) ([25bb2cd](https://github.com/conventional-changelog/commitlint/commit/25bb2cd8c70353637f77d471e39f4e4b17fa4cae)) + + + + + +# [19.5.0](https://github.com/conventional-changelog/commitlint/compare/v19.4.1...v19.5.0) (2024-09-11) + +**Note:** Version bump only for package @commitlint/config-nx-scopes + + + + + +## [19.3.1](https://github.com/conventional-changelog/commitlint/compare/v19.3.0...v19.3.1) (2024-05-13) + +**Note:** Version bump only for package @commitlint/config-nx-scopes + + + + + +# [19.3.0](https://github.com/conventional-changelog/commitlint/compare/v19.2.2...v19.3.0) (2024-04-23) + +**Note:** Version bump only for package @commitlint/config-nx-scopes + + + + + +## [19.2.1](https://github.com/conventional-changelog/commitlint/compare/v19.2.0...v19.2.1) (2024-03-19) + + +### Bug Fixes + +* **config-nx-scopes:** include file extension in nx imports ([#3979](https://github.com/conventional-changelog/commitlint/issues/3979)) ([583250b](https://github.com/conventional-changelog/commitlint/commit/583250b919cf1eb338de3e3f5c848fff611a6212)) + + + + + +# [19.1.0](https://github.com/conventional-changelog/commitlint/compare/v19.0.3...v19.1.0) (2024-03-12) + + +### Bug Fixes + +* add `main` and `types` keys in package.json ([#3953](https://github.com/conventional-changelog/commitlint/issues/3953)) ([7ddaad4](https://github.com/conventional-changelog/commitlint/commit/7ddaad4bc4e71afe89f25cc02d3e19beba1ce6cd)) + + + + + +## [19.0.3](https://github.com/conventional-changelog/commitlint/compare/v19.0.2...v19.0.3) (2024-02-28) + +**Note:** Version bump only for package @commitlint/config-nx-scopes + + + + + +# [19.0.0](https://github.com/conventional-changelog/commitlint/compare/v18.6.2...v19.0.0) (2024-02-27) + + +* feat!: migrate to pure ESM (#3850) ([3423735](https://github.com/conventional-changelog/commitlint/commit/342373559bdf7c783c4ef37ff05dc38a5f681159)), closes [#3850](https://github.com/conventional-changelog/commitlint/issues/3850) + + +### Reverts + +* Revert "chore!: minimum node version v20" ([2816783](https://github.com/conventional-changelog/commitlint/commit/2816783d00e7eb967de3ac9347c2fc43dc8b94fa)) + + +### BREAKING CHANGES + +* migrate to pure ESM + +* feat: migrate to pure ESM + +* chore: update snapshot + +* fix: load `parserPreset` with another `await` + +* test: migrate to vitest + +* test: remove no replacement `--runInBand` test-ci script + +* chore: fix code reviews + +* refactor(load): rewrite resolve logic + +* fix(config-nx-scopes): fix syntax error + +* feat(resolve-extends): add resolveFrom and loadParserPreset + +* feat(load): use resolveFrom and loadParserPreset from resolve-extends + +* test: include only @commitlint/* packages src in coverage + +* test: explicit import vitest utilities + +* test: remove @jest/globals from dependencies + +* fix(resolve-extends): `resolveFrom` output should be platform aware + +* test: restore NO_COLOR to test script + +* chore: fix linting issues + +* fix: should use fileURLToPath instead of pathname for Windows compatibility + +* Apply suggestions from code review + +* fix: should reuse `cli` instead call `yargs()` + +* feat(cli): set terminalWidth as wrap to avoid work break on help + +* Update .eslintrc.cjs + +* feat: migrate @commitlint/config-conventional to pure ESM + + + + + +## [18.6.1](https://github.com/conventional-changelog/commitlint/compare/v18.6.0...v18.6.1) (2024-02-13) + +**Note:** Version bump only for package @commitlint/config-nx-scopes + + + + + +## [18.5.1](https://github.com/conventional-changelog/commitlint/compare/v18.5.0...v18.5.1) (2024-01-22) + + +### Bug Fixes + +* **config-nx-scopes:** replace import with require ([#3865](https://github.com/conventional-changelog/commitlint/issues/3865)) ([#3867](https://github.com/conventional-changelog/commitlint/issues/3867)) ([3ede3e0](https://github.com/conventional-changelog/commitlint/commit/3ede3e0e9d5af1302fff896aba049b487b90c0bf)) + + + + + +# [18.5.0](https://github.com/conventional-changelog/commitlint/compare/v18.4.4...v18.5.0) (2024-01-22) + + +### Bug Fixes + +* **config-nx-scopes:** restore compatibility with nx 17.2.0 and higher ([#3855](https://github.com/conventional-changelog/commitlint/issues/3855)) ([1e08a17](https://github.com/conventional-changelog/commitlint/commit/1e08a17eb354b40776be814e8d787eee44d5df2c)), closes [#3820](https://github.com/conventional-changelog/commitlint/issues/3820) + + + + + +## [18.4.4](https://github.com/conventional-changelog/commitlint/compare/v18.4.3...v18.4.4) (2024-01-04) + +**Note:** Version bump only for package @commitlint/config-nx-scopes + + + + + +## [18.4.3](https://github.com/conventional-changelog/commitlint/compare/v18.4.2...v18.4.3) (2023-11-21) + +**Note:** Version bump only for package @commitlint/config-nx-scopes + + + + + +# [18.4.0](https://github.com/conventional-changelog/commitlint/compare/v18.3.0...v18.4.0) (2023-11-10) + +**Note:** Version bump only for package @commitlint/config-nx-scopes + + + + + +# [18.3.0](https://github.com/conventional-changelog/commitlint/compare/v18.2.0...v18.3.0) (2023-10-26) + + +### Features + +* **config-nx-scopes:** support latest nx version ([#3728](https://github.com/conventional-changelog/commitlint/issues/3728)) ([22e6f74](https://github.com/conventional-changelog/commitlint/commit/22e6f74e3cae74497162c8ae8f5d3888e3b19f6e)) + + + + + +# [18.1.0](https://github.com/conventional-changelog/commitlint/compare/v18.0.0...v18.1.0) (2023-10-25) + +**Note:** Version bump only for package @commitlint/config-nx-scopes + + + + + +# [18.0.0](https://github.com/conventional-changelog/commitlint/compare/v17.8.1...v18.0.0) (2023-10-20) + + +* chore!: minimum node version v18 (#3644) ([5b4aeaf](https://github.com/conventional-changelog/commitlint/commit/5b4aeaf4f01c2726a7bc8631a23bb34c849baad2)), closes [#3644](https://github.com/conventional-changelog/commitlint/issues/3644) + + +### BREAKING CHANGES + +* drop node v14 and v16 support + +* chore: remove unused types + +* docs: prepare node update and new release + +* chore!: minimum TS version v5 +* drop TS v4 support + +* ci: remove node v14/16 checks + +* chore: adjust node types to minimal supported version + +* chore!: further major versions of other deps +* upgrade conventional-changelog-conventionalcommits, conventional-commits-parser, conventional-changelog-atom, + +* docs: simplify releases and remove roadmap + + + + + +## [17.8.1](https://github.com/conventional-changelog/commitlint/compare/v17.8.0...v17.8.1) (2023-10-20) + +**Note:** Version bump only for package @commitlint/config-nx-scopes + + + + + +## [17.6.4](https://github.com/conventional-changelog/commitlint/compare/v17.6.3...v17.6.4) (2023-05-07) + +**Note:** Version bump only for package @commitlint/config-nx-scopes + + + + + +## [17.4.3](https://github.com/conventional-changelog/commitlint/compare/v17.4.2...v17.4.3) (2023-02-13) + +**Note:** Version bump only for package @commitlint/config-nx-scopes + + + + + +## [17.4.2](https://github.com/conventional-changelog/commitlint/compare/v17.4.1...v17.4.2) (2023-01-12) + +**Note:** Version bump only for package @commitlint/config-nx-scopes + + + + + +# [17.4.0](https://github.com/conventional-changelog/commitlint/compare/v17.3.0...v17.4.0) (2023-01-04) + +**Note:** Version bump only for package @commitlint/config-nx-scopes + +# [17.2.0](https://github.com/conventional-changelog/commitlint/compare/v17.1.2...v17.2.0) (2022-10-31) + +### Features + +- **config-nx-scopes:** add nx version ^15.0.0 as peerDependency ([#3416](https://github.com/conventional-changelog/commitlint/issues/3416)) ([f529a3f](https://github.com/conventional-changelog/commitlint/commit/f529a3f58e03d633bbd3949d397a38d9c993579b)) + +# [17.0.0](https://github.com/conventional-changelog/commitlint/compare/v16.3.0...v17.0.0) (2022-05-16) + +- chore!: minimum node version v14 (#3128) ([ac5f9b4](https://github.com/conventional-changelog/commitlint/commit/ac5f9b47a9e3cd5c9d58b14da0feb426f06b1ef9)), closes [#3128](https://github.com/conventional-changelog/commitlint/issues/3128) + +### BREAKING CHANGES + +- drop node v12 support + +- chore: rename circleci windows job + +node version is not defned by the name anyways (i think) + +# [16.3.0](https://github.com/conventional-changelog/commitlint/compare/v16.2.4...v16.3.0) (2022-05-14) + +### Features + +- add ability to filter Nx projects in @commitlint/config-nx-scopes ([#3155](https://github.com/conventional-changelog/commitlint/issues/3155)) ([e595693](https://github.com/conventional-changelog/commitlint/commit/e595693eb9be51a874cff01580b883982083ba0e)), closes [#3152](https://github.com/conventional-changelog/commitlint/issues/3152) + +## [16.2.1](https://github.com/conventional-changelog/commitlint/compare/v16.2.0...v16.2.1) (2022-02-13) + +**Note:** Version bump only for package @commitlint/config-nx-scopes + +# [16.2.0](https://github.com/conventional-changelog/commitlint/compare/v16.1.0...v16.2.0) (2022-01-25) + +### Features + +- add support for Nx monorepos via @commitlint/config-nx-scopes ([#2995](https://github.com/conventional-changelog/commitlint/issues/2995)) ([11879ad](https://github.com/conventional-changelog/commitlint/commit/11879adacbef3c939311b1ff597a7b894fcca0dc)) diff --git a/@commitlint/config-nx-scopes/fixtures/basic/nx.json b/@commitlint/config-nx-scopes/fixtures/basic/nx.json new file mode 100644 index 0000000000..7d14dd19e9 --- /dev/null +++ b/@commitlint/config-nx-scopes/fixtures/basic/nx.json @@ -0,0 +1,39 @@ +{ + "npmScope": "secretarium", + "affected": { + "defaultBase": "main" + }, + "cli": { + "defaultCollection": "@nx/react" + }, + "tasksRunnerOptions": { + "default": { + "runner": "nx-cloud", + "options": { + "cacheableOperations": [ + "build", + "lint", + "test", + "e2e" + ] + } + } + }, + "generators": { + "@nx/react": { + "application": { + "style": "css", + "linter": "eslint", + "babel": true + }, + "component": { + "style": "css" + }, + "library": { + "style": "css", + "linter": "eslint" + } + } + }, + "defaultProject": "a" +} \ No newline at end of file diff --git a/@commitlint/config-lerna-scopes/fixtures/lerna-two/packages/a2/package.json b/@commitlint/config-nx-scopes/fixtures/basic/nx/a/package.json similarity index 60% rename from @commitlint/config-lerna-scopes/fixtures/lerna-two/packages/a2/package.json rename to @commitlint/config-nx-scopes/fixtures/basic/nx/a/package.json index caecf1e4fb..9113c2528e 100644 --- a/@commitlint/config-lerna-scopes/fixtures/lerna-two/packages/a2/package.json +++ b/@commitlint/config-nx-scopes/fixtures/basic/nx/a/package.json @@ -1,4 +1,4 @@ { - "name": "a2", + "name": "a", "version": "1.0.0" } diff --git a/@commitlint/config-nx-scopes/fixtures/basic/nx/a/project.json b/@commitlint/config-nx-scopes/fixtures/basic/nx/a/project.json new file mode 100644 index 0000000000..6d65b16d03 --- /dev/null +++ b/@commitlint/config-nx-scopes/fixtures/basic/nx/a/project.json @@ -0,0 +1,29 @@ +{ + "root": "nx/a", + "sourceRoot": "nx/a/src", + "projectType": "library", + "targets": { + "lint": { + "executor": "@nx/linter:eslint", + "outputs": [ + "{options.outputFile}" + ], + "options": { + "lintFilePatterns": [ + "nx/a/**/*.ts" + ] + } + }, + "test": { + "executor": "@nx/jest:jest", + "outputs": [ + "coverage/nx/a" + ], + "options": { + "jestConfig": "nx/a/jest.config.js", + "passWithNoTests": true + } + } + }, + "tags": [] +} \ No newline at end of file diff --git a/@commitlint/config-lerna-scopes/fixtures/lerna-two/packages/b2/package.json b/@commitlint/config-nx-scopes/fixtures/basic/nx/b/package.json similarity index 60% rename from @commitlint/config-lerna-scopes/fixtures/lerna-two/packages/b2/package.json rename to @commitlint/config-nx-scopes/fixtures/basic/nx/b/package.json index cb876f041e..c2d84cc127 100644 --- a/@commitlint/config-lerna-scopes/fixtures/lerna-two/packages/b2/package.json +++ b/@commitlint/config-nx-scopes/fixtures/basic/nx/b/package.json @@ -1,4 +1,4 @@ { - "name": "b2", + "name": "b", "version": "1.0.0" } diff --git a/@commitlint/config-nx-scopes/fixtures/basic/nx/b/project.json b/@commitlint/config-nx-scopes/fixtures/basic/nx/b/project.json new file mode 100644 index 0000000000..256f6af075 --- /dev/null +++ b/@commitlint/config-nx-scopes/fixtures/basic/nx/b/project.json @@ -0,0 +1,29 @@ +{ + "root": "nx/b", + "sourceRoot": "nx/b/src", + "projectType": "library", + "targets": { + "lint": { + "executor": "@nx/linter:eslint", + "outputs": [ + "{options.outputFile}" + ], + "options": { + "lintFilePatterns": [ + "nx/b/**/*.ts" + ] + } + }, + "test": { + "executor": "@nx/jest:jest", + "outputs": [ + "coverage/nx/b" + ], + "options": { + "jestConfig": "nx/b/jest.config.js", + "passWithNoTests": true + } + } + }, + "tags": [] +} \ No newline at end of file diff --git a/@commitlint/config-nx-scopes/fixtures/basic/package.json b/@commitlint/config-nx-scopes/fixtures/basic/package.json new file mode 100644 index 0000000000..557fdf5904 --- /dev/null +++ b/@commitlint/config-nx-scopes/fixtures/basic/package.json @@ -0,0 +1,7 @@ +{ + "name": "basic", + "version": "1.0.0", + "devDependencies": { + "nx": "^16.0.0" + } +} \ No newline at end of file diff --git a/@commitlint/config-nx-scopes/fixtures/empty/nx.json b/@commitlint/config-nx-scopes/fixtures/empty/nx.json new file mode 100644 index 0000000000..a5e2f1f8f9 --- /dev/null +++ b/@commitlint/config-nx-scopes/fixtures/empty/nx.json @@ -0,0 +1,34 @@ +{ + "npmScope": "empty", + "affected": { + "defaultBase": "main" + }, + "implicitDependencies": { + "package.json": { + "dependencies": "*", + "devDependencies": "*" + }, + ".eslintrc.json": "*" + }, + "tasksRunnerOptions": { + "default": { + "runner": "nx/tasks-runners/default", + "options": { + "cacheableOperations": [ + "build", + "lint", + "test", + "e2e" + ] + } + } + }, + "targetDependencies": { + "build": [ + { + "target": "build", + "projects": "dependencies" + } + ] + } +} \ No newline at end of file diff --git a/@commitlint/config-nx-scopes/fixtures/empty/package.json b/@commitlint/config-nx-scopes/fixtures/empty/package.json new file mode 100644 index 0000000000..af4f3c9f89 --- /dev/null +++ b/@commitlint/config-nx-scopes/fixtures/empty/package.json @@ -0,0 +1,7 @@ +{ + "name": "empty", + "version": "1.0.0", + "devDependencies": { + "nx": "^16.0.0" + } +} \ No newline at end of file diff --git a/@commitlint/config-nx-scopes/fixtures/nx14/nx.json b/@commitlint/config-nx-scopes/fixtures/nx14/nx.json new file mode 100644 index 0000000000..e1fda9a1e9 --- /dev/null +++ b/@commitlint/config-nx-scopes/fixtures/nx14/nx.json @@ -0,0 +1,39 @@ +{ + "npmScope": "secretarium", + "affected": { + "defaultBase": "main" + }, + "cli": { + "defaultCollection": "@nrwl/react" + }, + "tasksRunnerOptions": { + "default": { + "runner": "@nrwl/nx-cloud", + "options": { + "cacheableOperations": [ + "build", + "lint", + "test", + "e2e" + ] + } + } + }, + "generators": { + "@nrwl/react": { + "application": { + "style": "css", + "linter": "eslint", + "babel": true + }, + "component": { + "style": "css" + }, + "library": { + "style": "css", + "linter": "eslint" + } + } + }, + "defaultProject": "c" +} \ No newline at end of file diff --git a/@commitlint/config-nx-scopes/fixtures/nx14/nx/c/package.json b/@commitlint/config-nx-scopes/fixtures/nx14/nx/c/package.json new file mode 100644 index 0000000000..abd3384930 --- /dev/null +++ b/@commitlint/config-nx-scopes/fixtures/nx14/nx/c/package.json @@ -0,0 +1,4 @@ +{ + "name": "c", + "version": "1.0.0" +} diff --git a/@commitlint/config-nx-scopes/fixtures/nx14/nx/c/project.json b/@commitlint/config-nx-scopes/fixtures/nx14/nx/c/project.json new file mode 100644 index 0000000000..b70597129a --- /dev/null +++ b/@commitlint/config-nx-scopes/fixtures/nx14/nx/c/project.json @@ -0,0 +1,29 @@ +{ + "root": "nx/c", + "sourceRoot": "nx/c/src", + "projectType": "library", + "targets": { + "lint": { + "executor": "@nrwl/linter:eslint", + "outputs": [ + "{options.outputFile}" + ], + "options": { + "lintFilePatterns": [ + "nx/c/**/*.ts" + ] + } + }, + "test": { + "executor": "@nrwl/jest:jest", + "outputs": [ + "coverage/nx/c" + ], + "options": { + "jestConfig": "nx/c/jest.config.js", + "passWithNoTests": true + } + } + }, + "tags": [] +} \ No newline at end of file diff --git a/@commitlint/config-nx-scopes/fixtures/nx14/nx/d/package.json b/@commitlint/config-nx-scopes/fixtures/nx14/nx/d/package.json new file mode 100644 index 0000000000..9a87c98d21 --- /dev/null +++ b/@commitlint/config-nx-scopes/fixtures/nx14/nx/d/package.json @@ -0,0 +1,4 @@ +{ + "name": "d", + "version": "1.0.0" +} diff --git a/@commitlint/config-nx-scopes/fixtures/nx14/nx/d/project.json b/@commitlint/config-nx-scopes/fixtures/nx14/nx/d/project.json new file mode 100644 index 0000000000..9b7a3a2d19 --- /dev/null +++ b/@commitlint/config-nx-scopes/fixtures/nx14/nx/d/project.json @@ -0,0 +1,29 @@ +{ + "root": "nx/d", + "sourceRoot": "nx/d/src", + "projectType": "library", + "targets": { + "lint": { + "executor": "@nrwl/linter:eslint", + "outputs": [ + "{options.outputFile}" + ], + "options": { + "lintFilePatterns": [ + "nx/d/**/*.ts" + ] + } + }, + "test": { + "executor": "@nrwl/jest:jest", + "outputs": [ + "coverage/nx/d" + ], + "options": { + "jestConfig": "nx/d/jest.config.js", + "passWithNoTests": true + } + } + }, + "tags": [] +} \ No newline at end of file diff --git a/@commitlint/config-nx-scopes/fixtures/nx14/package.json b/@commitlint/config-nx-scopes/fixtures/nx14/package.json new file mode 100644 index 0000000000..c3827cefb7 --- /dev/null +++ b/@commitlint/config-nx-scopes/fixtures/nx14/package.json @@ -0,0 +1,7 @@ +{ + "name": "basic", + "version": "1.0.0", + "devDependencies": { + "nx": "^14.0.0" + } +} \ No newline at end of file diff --git a/@commitlint/config-nx-scopes/fixtures/nx14/workspace.json b/@commitlint/config-nx-scopes/fixtures/nx14/workspace.json new file mode 100644 index 0000000000..ba6aa2d02c --- /dev/null +++ b/@commitlint/config-nx-scopes/fixtures/nx14/workspace.json @@ -0,0 +1,7 @@ +{ + "version": 2, + "projects": { + "c": "nx/c", + "d": "nx/d" + } +} \ No newline at end of file diff --git a/@commitlint/config-nx-scopes/fixtures/nx15/nx.json b/@commitlint/config-nx-scopes/fixtures/nx15/nx.json new file mode 100644 index 0000000000..3f0e9751de --- /dev/null +++ b/@commitlint/config-nx-scopes/fixtures/nx15/nx.json @@ -0,0 +1,39 @@ +{ + "npmScope": "secretarium", + "affected": { + "defaultBase": "main" + }, + "cli": { + "defaultCollection": "@nrwl/react" + }, + "tasksRunnerOptions": { + "default": { + "runner": "@nrwl/nx-cloud", + "options": { + "cacheableOperations": [ + "build", + "lint", + "test", + "e2e" + ] + } + } + }, + "generators": { + "@nrwl/react": { + "application": { + "style": "css", + "linter": "eslint", + "babel": true + }, + "component": { + "style": "css" + }, + "library": { + "style": "css", + "linter": "eslint" + } + } + }, + "defaultProject": "e" +} \ No newline at end of file diff --git a/@commitlint/config-nx-scopes/fixtures/nx15/nx/e/package.json b/@commitlint/config-nx-scopes/fixtures/nx15/nx/e/package.json new file mode 100644 index 0000000000..f3ca19803a --- /dev/null +++ b/@commitlint/config-nx-scopes/fixtures/nx15/nx/e/package.json @@ -0,0 +1,4 @@ +{ + "name": "e", + "version": "1.0.0" +} diff --git a/@commitlint/config-nx-scopes/fixtures/nx15/nx/e/project.json b/@commitlint/config-nx-scopes/fixtures/nx15/nx/e/project.json new file mode 100644 index 0000000000..08ba437419 --- /dev/null +++ b/@commitlint/config-nx-scopes/fixtures/nx15/nx/e/project.json @@ -0,0 +1,29 @@ +{ + "root": "nx/e", + "sourceRoot": "nx/e/src", + "projectType": "library", + "targets": { + "lint": { + "executor": "@nrwl/linter:eslint", + "outputs": [ + "{options.outputFile}" + ], + "options": { + "lintFilePatterns": [ + "nx/e/**/*.ts" + ] + } + }, + "test": { + "executor": "@nrwl/jest:jest", + "outputs": [ + "coverage/nx/e" + ], + "options": { + "jestConfig": "nx/e/jest.config.js", + "passWithNoTests": true + } + } + }, + "tags": [] +} \ No newline at end of file diff --git a/@commitlint/config-nx-scopes/fixtures/nx15/nx/f/package.json b/@commitlint/config-nx-scopes/fixtures/nx15/nx/f/package.json new file mode 100644 index 0000000000..64560a1558 --- /dev/null +++ b/@commitlint/config-nx-scopes/fixtures/nx15/nx/f/package.json @@ -0,0 +1,4 @@ +{ + "name": "f", + "version": "1.0.0" +} diff --git a/@commitlint/config-nx-scopes/fixtures/nx15/nx/f/project.json b/@commitlint/config-nx-scopes/fixtures/nx15/nx/f/project.json new file mode 100644 index 0000000000..e3fb849310 --- /dev/null +++ b/@commitlint/config-nx-scopes/fixtures/nx15/nx/f/project.json @@ -0,0 +1,29 @@ +{ + "root": "nx/f", + "sourceRoot": "nx/f/src", + "projectType": "library", + "targets": { + "lint": { + "executor": "@nrwl/linter:eslint", + "outputs": [ + "{options.outputFile}" + ], + "options": { + "lintFilePatterns": [ + "nx/f/**/*.ts" + ] + } + }, + "test": { + "executor": "@nrwl/jest:jest", + "outputs": [ + "coverage/nx/f" + ], + "options": { + "jestConfig": "nx/f/jest.config.js", + "passWithNoTests": true + } + } + }, + "tags": [] +} \ No newline at end of file diff --git a/@commitlint/config-nx-scopes/fixtures/nx15/package.json b/@commitlint/config-nx-scopes/fixtures/nx15/package.json new file mode 100644 index 0000000000..038809a9ed --- /dev/null +++ b/@commitlint/config-nx-scopes/fixtures/nx15/package.json @@ -0,0 +1,7 @@ +{ + "name": "basic", + "version": "1.0.0", + "devDependencies": { + "nx": "^15.0.0" + } +} \ No newline at end of file diff --git a/@commitlint/config-nx-scopes/fixtures/nx17/nx.json b/@commitlint/config-nx-scopes/fixtures/nx17/nx.json new file mode 100644 index 0000000000..d9442f84fe --- /dev/null +++ b/@commitlint/config-nx-scopes/fixtures/nx17/nx.json @@ -0,0 +1,38 @@ +{ + "affected": { + "defaultBase": "main" + }, + "cli": { + "defaultCollection": "@nx/react" + }, + "tasksRunnerOptions": { + "default": { + "runner": "nx-cloud", + "options": { + "cacheableOperations": [ + "build", + "lint", + "test", + "e2e" + ] + } + } + }, + "generators": { + "@nx/react": { + "application": { + "style": "css", + "linter": "eslint", + "babel": true + }, + "component": { + "style": "css" + }, + "library": { + "style": "css", + "linter": "eslint" + } + } + }, + "defaultProject": "g" +} diff --git a/@commitlint/config-nx-scopes/fixtures/nx17/nx/g/package.json b/@commitlint/config-nx-scopes/fixtures/nx17/nx/g/package.json new file mode 100644 index 0000000000..757f60613e --- /dev/null +++ b/@commitlint/config-nx-scopes/fixtures/nx17/nx/g/package.json @@ -0,0 +1,4 @@ +{ + "name": "g", + "version": "1.0.0" +} diff --git a/@commitlint/config-nx-scopes/fixtures/nx17/nx/g/project.json b/@commitlint/config-nx-scopes/fixtures/nx17/nx/g/project.json new file mode 100644 index 0000000000..6e48e966bd --- /dev/null +++ b/@commitlint/config-nx-scopes/fixtures/nx17/nx/g/project.json @@ -0,0 +1,29 @@ +{ + "root": "nx/g", + "sourceRoot": "nx/g/src", + "projectType": "library", + "targets": { + "lint": { + "executor": "@nx/linter:eslint", + "outputs": [ + "{options.outputFile}" + ], + "options": { + "lintFilePatterns": [ + "nx/g/**/*.ts" + ] + } + }, + "test": { + "executor": "@nx/jest:jest", + "outputs": [ + "coverage/nx/g" + ], + "options": { + "jestConfig": "nx/g/jest.config.js", + "passWithNoTests": true + } + } + }, + "tags": [] +} diff --git a/@commitlint/config-nx-scopes/fixtures/nx17/nx/h/package.json b/@commitlint/config-nx-scopes/fixtures/nx17/nx/h/package.json new file mode 100644 index 0000000000..3badb57d77 --- /dev/null +++ b/@commitlint/config-nx-scopes/fixtures/nx17/nx/h/package.json @@ -0,0 +1,4 @@ +{ + "name": "h", + "version": "1.0.0" +} diff --git a/@commitlint/config-nx-scopes/fixtures/nx17/nx/h/project.json b/@commitlint/config-nx-scopes/fixtures/nx17/nx/h/project.json new file mode 100644 index 0000000000..76f93a4bf2 --- /dev/null +++ b/@commitlint/config-nx-scopes/fixtures/nx17/nx/h/project.json @@ -0,0 +1,29 @@ +{ + "root": "nx/h", + "sourceRoot": "nx/h/src", + "projectType": "library", + "targets": { + "lint": { + "executor": "@nx/linter:eslint", + "outputs": [ + "{options.outputFile}" + ], + "options": { + "lintFilePatterns": [ + "nx/h/**/*.ts" + ] + } + }, + "test": { + "executor": "@nx/jest:jest", + "outputs": [ + "coverage/nx/h" + ], + "options": { + "jestConfig": "nx/h/jest.config.js", + "passWithNoTests": true + } + } + }, + "tags": [] +} diff --git a/@commitlint/config-lerna-scopes/fixtures/lerna-two/package.json b/@commitlint/config-nx-scopes/fixtures/nx17/package.json similarity index 50% rename from @commitlint/config-lerna-scopes/fixtures/lerna-two/package.json rename to @commitlint/config-nx-scopes/fixtures/nx17/package.json index db55d4fad3..c8f6b3a845 100644 --- a/@commitlint/config-lerna-scopes/fixtures/lerna-two/package.json +++ b/@commitlint/config-nx-scopes/fixtures/nx17/package.json @@ -1,7 +1,7 @@ { - "name": "version-mismatch", + "name": "basic", "version": "1.0.0", "devDependencies": { - "lerna": "^4.0.0" + "nx": "^17.0.0" } } diff --git a/@commitlint/config-nx-scopes/index.js b/@commitlint/config-nx-scopes/index.js new file mode 100644 index 0000000000..25debbeba3 --- /dev/null +++ b/@commitlint/config-nx-scopes/index.js @@ -0,0 +1,35 @@ +import { RuleConfigSeverity } from "@commitlint/types"; +import { getProjects as getNXProjects } from "nx/src/generators/utils/project-configuration.js"; +import { FsTree } from "nx/src/generators/tree.js"; + +export default { + utils: { getProjects }, + rules: { + "scope-enum": (ctx) => + Promise.resolve([RuleConfigSeverity.Error, "always", getProjects(ctx)]), + }, +}; + +/** + * @param {(params: Pick<Nx.ProjectConfiguration, 'name' | 'projectType' | 'tags'>) => boolean} selector + */ +function getProjects(context, selector = () => true) { + const ctx = context || {}; + const cwd = ctx.cwd || process.cwd(); + + const projects = getNXProjects(new FsTree(cwd, false)); + return Array.from(projects.entries()) + .map(([name, project]) => ({ + name, + ...project, + })) + .filter((project) => + selector({ + name: project.name, + projectType: project.projectType, + tags: project.tags, + }), + ) + .map((project) => project.name) + .map((name) => (name.charAt(0) === "@" ? name.split("/")[1] : name)); +} diff --git a/@commitlint/config-nx-scopes/index.test.js b/@commitlint/config-nx-scopes/index.test.js new file mode 100644 index 0000000000..1a6f863ef3 --- /dev/null +++ b/@commitlint/config-nx-scopes/index.test.js @@ -0,0 +1,91 @@ +import { test, expect } from "vitest"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +import { npm } from "@commitlint/test"; + +import config from "./index.js"; + +const __dirname = path.resolve(fileURLToPath(import.meta.url), ".."); + +test("exports rules key", () => { + expect(config).toHaveProperty("rules"); +}); + +test("rules hold object", () => { + expect(config).toMatchObject({ + rules: expect.any(Object), + }); +}); + +test("rules contain scope-enum", () => { + expect(config).toMatchObject({ + rules: { + "scope-enum": expect.anything(), + }, + }); +}); + +test("scope-enum is function", () => { + expect(config).toMatchObject({ + rules: { + "scope-enum": expect.any(Function), + }, + }); +}); + +test("scope-enum does not throw for missing context", async () => { + const { "scope-enum": fn } = config.rules; + await expect(fn()).resolves.toBeTruthy(); +}); + +test("scope-enum has expected severity", async () => { + const { "scope-enum": fn } = config.rules; + const [severity] = await fn(); + expect(severity).toBe(2); +}); + +test("scope-enum has expected modifier", async () => { + const { "scope-enum": fn } = config.rules; + const [, modifier] = await fn(); + expect(modifier).toBe("always"); +}); + +test("returns empty value for empty nx repository", async () => { + const { "scope-enum": fn } = config.rules; + const cwd = await npm.bootstrap("fixtures/empty", __dirname); + const [, , value] = await fn({ cwd }); + expect(value).toEqual([]); +}); + +test("returns expected value for basic nx repository", async () => { + const { "scope-enum": fn } = config.rules; + const cwd = await npm.bootstrap("fixtures/basic", __dirname); + + const [, , value] = await fn({ cwd }); + expect(value).toEqual(["a", "b"]); +}); + +test("expect correct result from Nx 14", async () => { + const { "scope-enum": fn } = config.rules; + const cwd = await npm.bootstrap("fixtures/nx14", __dirname); + + const [, , value] = await fn({ cwd }); + expect(value).toEqual(["c", "d"]); +}); + +test("expect correct result from Nx 15", async () => { + const { "scope-enum": fn } = config.rules; + const cwd = await npm.bootstrap("fixtures/nx15", __dirname); + + const [, , value] = await fn({ cwd }); + expect(value).toEqual(["e", "f"]); +}); + +test("expect correct result from Nx 17", async () => { + const { "scope-enum": fn } = config.rules; + const cwd = await npm.bootstrap("fixtures/nx17", __dirname); + + const [, , value] = await fn({ cwd }); + expect(value).toEqual(["g", "h"]); +}); diff --git a/@commitlint/config-nx-scopes/license.md b/@commitlint/config-nx-scopes/license.md new file mode 100644 index 0000000000..d53adb06e4 --- /dev/null +++ b/@commitlint/config-nx-scopes/license.md @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2022 - present Florian Guitton + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/@commitlint/config-nx-scopes/package.json b/@commitlint/config-nx-scopes/package.json new file mode 100644 index 0000000000..63ad4e7848 --- /dev/null +++ b/@commitlint/config-nx-scopes/package.json @@ -0,0 +1,50 @@ +{ + "name": "@commitlint/config-nx-scopes", + "type": "module", + "version": "20.0.0", + "description": "Shareable commitlint config enforcing nx project names as scopes", + "main": "index.js", + "files": [ + "index.js" + ], + "scripts": { + "deps": "dep-check", + "pkg": "pkg-check" + }, + "repository": { + "type": "git", + "url": "https://github.com/conventional-changelog/commitlint.git", + "directory": "@commitlint/config-nx-scopes" + }, + "keywords": [ + "conventional-changelog", + "commitlint", + "commitlint-config", + "nx" + ], + "author": "Florian Guitton <florian@secretarium.com>", + "license": "MIT", + "bugs": { + "url": "https://github.com/conventional-changelog/commitlint/issues" + }, + "homepage": "https://commitlint.js.org/", + "peerDependencies": { + "nx": ">=14.0.0" + }, + "peerDependenciesMeta": { + "nx": { + "optional": true + } + }, + "engines": { + "node": ">=v18" + }, + "dependencies": { + "@commitlint/types": "^20.0.0" + }, + "devDependencies": { + "@commitlint/test": "^20.0.0", + "@commitlint/utils": "^20.0.0" + }, + "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" +} diff --git a/@commitlint/config-nx-scopes/readme.md b/@commitlint/config-nx-scopes/readme.md new file mode 100644 index 0000000000..2890f85872 --- /dev/null +++ b/@commitlint/config-nx-scopes/readme.md @@ -0,0 +1,113 @@ +# @commitlint/config-nx-scopes + +Lint your nx project commits + +Shareable `commitlint` config enforcing nx project and workspace names as scopes. +Use with [@commitlint/cli](../cli) and [@commitlint/prompt-cli](../prompt-cli). + +## Getting started + +``` +npm install --save-dev @commitlint/config-nx-scopes @commitlint/cli +echo "module.exports = {extends: ['@commitlint/config-nx-scopes']};" > commitlint.config.js +``` + +## Filtering projects + +You can filter projects by providing a filter function as the second parameter to `getProjects()`. The function will be called with an object containing each projects' `name`, `projectType`, and `tags`. Simply return a boolean to indicate whether the project should be included or not. + +As an example, the following code demonstrates how to select only applications that are not end-to-end tests. + +In your .commitlintrc.js file: + +```javascript +async function getConfig() { + const { + default: { + utils: { getProjects }, + }, + } = await import("@commitlint/config-nx-scopes"); + + return { + rules: { + "scope-enum": async (ctx) => [ + 2, + "always", + [ + ...(await getProjects( + ctx, + ({ name, projectType }) => + !name.includes("e2e") && projectType == "application", + )), + ], + ], + }, + // . . . + }; +} + +module.exports = getConfig(); +``` + +Here is another example where projects tagged with 'stage:end-of-life' are not allowed to be used as the scope for a commit. + +In your .commitlintrc.js file: + +```javascript +async function getConfig() { + const { + default: { + utils: { getProjects }, + }, + } = await import("@commitlint/config-nx-scopes"); + + return { + rules: { + "scope-enum": async (ctx) => [ + 2, + "always", + [ + ...(await getProjects( + ctx, + ({ tags }) => !tags.includes("stage:end-of-life"), + )), + ], + ], + }, + // . . . + }; +} + +module.exports = getConfig(); +``` + +## Examples + +``` +❯ cat commitlint.config.js +{ + extends: ['@commitlint/config-nx-scopes'] +} + +❯ tree packages + +packages +├── api +├── app +└── web + +❯ echo "build(api): change something in api's build" | commitlint +⧗ input: build(api): change something in api's build +✔ found 0 problems, 0 warnings + +❯ echo "test(foo): this won't pass" | commitlint +⧗ input: test(foo): this won't pass +✖ scope must be one of [api, app, web] [scope-enum] +✖ found 1 problems, 0 warnings + +❯ echo "ci: do some general maintenance" | commitlint +⧗ input: ci: do some general maintenance +✔ found 0 problems, 0 warnings +``` + +Consult [Rules reference](https://commitlint.js.org/reference/rules) for a list of available rules. diff --git a/@commitlint/config-patternplate/CHANGELOG.md b/@commitlint/config-patternplate/CHANGELOG.md index 1defae6b7b..2b236b1179 100644 --- a/@commitlint/config-patternplate/CHANGELOG.md +++ b/@commitlint/config-patternplate/CHANGELOG.md @@ -3,7 +3,7 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. -# [13.1.0](https://github.com/conventional-changelog/commitlint/compare/v13.0.0...v13.1.0) (2021-07-24) +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) **Note:** Version bump only for package @commitlint/config-patternplate @@ -11,21 +11,164 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) +## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) + +**Note:** Version bump only for package @commitlint/config-patternplate + + + + + +# [19.8.0](https://github.com/conventional-changelog/commitlint/compare/v19.7.1...v19.8.0) (2025-03-07) + + +### Performance Improvements + +* use `node:` prefix to bypass require.cache call for builtins ([#4302](https://github.com/conventional-changelog/commitlint/issues/4302)) ([0cd8f41](https://github.com/conventional-changelog/commitlint/commit/0cd8f410573fe11383f788b1ceb7e0946143591d)) + + + + + +## [19.7.1](https://github.com/conventional-changelog/commitlint/compare/v19.7.0...v19.7.1) (2025-02-02) + +**Note:** Version bump only for package @commitlint/config-patternplate + + + -* chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) +# [19.7.0](https://github.com/conventional-changelog/commitlint/compare/v19.6.1...v19.7.0) (2025-01-04) + +**Note:** Version bump only for package @commitlint/config-patternplate + + + + + +# [19.6.0](https://github.com/conventional-changelog/commitlint/compare/v19.5.0...v19.6.0) (2024-11-19) + +**Note:** Version bump only for package @commitlint/config-patternplate + + + + + +# [19.5.0](https://github.com/conventional-changelog/commitlint/compare/v19.4.1...v19.5.0) (2024-09-11) + +**Note:** Version bump only for package @commitlint/config-patternplate + + + + + +## [19.4.1](https://github.com/conventional-changelog/commitlint/compare/v19.4.0...v19.4.1) (2024-08-28) + +**Note:** Version bump only for package @commitlint/config-patternplate + + + + + +# [19.3.0](https://github.com/conventional-changelog/commitlint/compare/v19.2.2...v19.3.0) (2024-04-23) + +**Note:** Version bump only for package @commitlint/config-patternplate + + + + + +## [19.2.2](https://github.com/conventional-changelog/commitlint/compare/v19.2.1...v19.2.2) (2024-04-14) + +**Note:** Version bump only for package @commitlint/config-patternplate + + + + + +# [19.1.0](https://github.com/conventional-changelog/commitlint/compare/v19.0.3...v19.1.0) (2024-03-12) + + +### Bug Fixes + +* add `main` and `types` keys in package.json ([#3953](https://github.com/conventional-changelog/commitlint/issues/3953)) ([7ddaad4](https://github.com/conventional-changelog/commitlint/commit/7ddaad4bc4e71afe89f25cc02d3e19beba1ce6cd)) + + + + + +## [19.0.3](https://github.com/conventional-changelog/commitlint/compare/v19.0.2...v19.0.3) (2024-02-28) + +**Note:** Version bump only for package @commitlint/config-patternplate + + + + + +# [19.0.0](https://github.com/conventional-changelog/commitlint/compare/v18.6.2...v19.0.0) (2024-02-27) + + +* feat!: migrate to pure ESM (#3850) ([3423735](https://github.com/conventional-changelog/commitlint/commit/342373559bdf7c783c4ef37ff05dc38a5f681159)), closes [#3850](https://github.com/conventional-changelog/commitlint/issues/3850) + + +### Reverts + +* Revert "chore!: minimum node version v20" ([2816783](https://github.com/conventional-changelog/commitlint/commit/2816783d00e7eb967de3ac9347c2fc43dc8b94fa)) ### BREAKING CHANGES -* minimum node version is 12 +* migrate to pure ESM +* feat: migrate to pure ESM +* chore: update snapshot +* fix: load `parserPreset` with another `await` +* test: migrate to vitest -## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) +* test: remove no replacement `--runInBand` test-ci script + +* chore: fix code reviews + +* refactor(load): rewrite resolve logic + +* fix(config-nx-scopes): fix syntax error + +* feat(resolve-extends): add resolveFrom and loadParserPreset + +* feat(load): use resolveFrom and loadParserPreset from resolve-extends + +* test: include only @commitlint/* packages src in coverage + +* test: explicit import vitest utilities + +* test: remove @jest/globals from dependencies + +* fix(resolve-extends): `resolveFrom` output should be platform aware + +* test: restore NO_COLOR to test script + +* chore: fix linting issues + +* fix: should use fileURLToPath instead of pathname for Windows compatibility + +* Apply suggestions from code review + +* fix: should reuse `cli` instead call `yargs()` + +* feat(cli): set terminalWidth as wrap to avoid work break on help + +* Update .eslintrc.cjs + +* feat: migrate @commitlint/config-conventional to pure ESM + + + + + +## [18.6.1](https://github.com/conventional-changelog/commitlint/compare/v18.6.0...v18.6.1) (2024-02-13) **Note:** Version bump only for package @commitlint/config-patternplate @@ -33,7 +176,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) +# [18.6.0](https://github.com/conventional-changelog/commitlint/compare/v18.5.1...v18.6.0) (2024-01-25) **Note:** Version bump only for package @commitlint/config-patternplate @@ -41,7 +184,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) +# [18.5.0](https://github.com/conventional-changelog/commitlint/compare/v18.4.4...v18.5.0) (2024-01-22) **Note:** Version bump only for package @commitlint/config-patternplate @@ -49,7 +192,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) +## [18.4.4](https://github.com/conventional-changelog/commitlint/compare/v18.4.3...v18.4.4) (2024-01-04) **Note:** Version bump only for package @commitlint/config-patternplate @@ -57,7 +200,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) +## [18.4.3](https://github.com/conventional-changelog/commitlint/compare/v18.4.2...v18.4.3) (2023-11-21) **Note:** Version bump only for package @commitlint/config-patternplate @@ -65,29 +208,61 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) +## [18.4.2](https://github.com/conventional-changelog/commitlint/compare/v18.4.1...v18.4.2) (2023-11-16) + +**Note:** Version bump only for package @commitlint/config-patternplate + + + + + +# [18.4.0](https://github.com/conventional-changelog/commitlint/compare/v18.3.0...v18.4.0) (2023-11-10) + +**Note:** Version bump only for package @commitlint/config-patternplate + + + + + +# [18.1.0](https://github.com/conventional-changelog/commitlint/compare/v18.0.0...v18.1.0) (2023-10-25) + +**Note:** Version bump only for package @commitlint/config-patternplate + -* refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) + + +# [18.0.0](https://github.com/conventional-changelog/commitlint/compare/v17.8.1...v18.0.0) (2023-10-20) + + +* chore!: minimum node version v18 (#3644) ([5b4aeaf](https://github.com/conventional-changelog/commitlint/commit/5b4aeaf4f01c2726a7bc8631a23bb34c849baad2)), closes [#3644](https://github.com/conventional-changelog/commitlint/issues/3644) ### BREAKING CHANGES -* remove node 8 from circle-ci checks +* drop node v14 and v16 support -also remove node 13 because we do not support experimental versions +* chore: remove unused types -* docs: update node v10 to latest LTS 10 version +* docs: prepare node update and new release -Co-authored-by: Cedric van Putten <me@bycedric.com> +* chore!: minimum TS version v5 +* drop TS v4 support -Co-authored-by: Cedric van Putten <me@bycedric.com> +* ci: remove node v14/16 checks +* chore: adjust node types to minimal supported version +* chore!: further major versions of other deps +* upgrade conventional-changelog-conventionalcommits, conventional-commits-parser, conventional-changelog-atom, +* docs: simplify releases and remove roadmap -## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) + + + +## [17.8.1](https://github.com/conventional-changelog/commitlint/compare/v17.8.0...v17.8.1) (2023-10-20) **Note:** Version bump only for package @commitlint/config-patternplate @@ -95,7 +270,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) +# [17.8.0](https://github.com/conventional-changelog/commitlint/compare/v17.7.2...v17.8.0) (2023-10-14) **Note:** Version bump only for package @commitlint/config-patternplate @@ -103,7 +278,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) +# [17.7.0](https://github.com/conventional-changelog/commitlint/compare/v17.6.7...v17.7.0) (2023-08-09) **Note:** Version bump only for package @commitlint/config-patternplate @@ -111,7 +286,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) +## [17.6.7](https://github.com/conventional-changelog/commitlint/compare/v17.6.6...v17.6.7) (2023-07-19) **Note:** Version bump only for package @commitlint/config-patternplate @@ -119,18 +294,23 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) +## [17.6.6](https://github.com/conventional-changelog/commitlint/compare/v17.6.5...v17.6.6) (2023-06-24) +**Note:** Version bump only for package @commitlint/config-patternplate -### Bug Fixes -* [#840](https://github.com/conventional-changelog/commitlint/issues/840) add caret to lodash versions ([#843](https://github.com/conventional-changelog/commitlint/issues/843)) ([ffc0bac](https://github.com/conventional-changelog/commitlint/commit/ffc0bac26993acb2ab6a8fa51065f93c92b0d644)) +## [17.6.5](https://github.com/conventional-changelog/commitlint/compare/v17.6.4...v17.6.5) (2023-05-30) + +**Note:** Version bump only for package @commitlint/config-patternplate + + -## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) + +## [17.6.3](https://github.com/conventional-changelog/commitlint/compare/v17.6.2...v17.6.3) (2023-05-04) **Note:** Version bump only for package @commitlint/config-patternplate @@ -138,7 +318,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) +## [17.6.1](https://github.com/conventional-changelog/commitlint/compare/v17.6.0...v17.6.1) (2023-04-14) **Note:** Version bump only for package @commitlint/config-patternplate @@ -146,7 +326,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) +# [17.6.0](https://github.com/conventional-changelog/commitlint/compare/v17.5.1...v17.6.0) (2023-04-13) **Note:** Version bump only for package @commitlint/config-patternplate @@ -154,7 +334,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) +## [17.4.4](https://github.com/conventional-changelog/commitlint/compare/v17.4.3...v17.4.4) (2023-02-17) **Note:** Version bump only for package @commitlint/config-patternplate @@ -162,7 +342,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) +## [17.4.3](https://github.com/conventional-changelog/commitlint/compare/v17.4.2...v17.4.3) (2023-02-13) **Note:** Version bump only for package @commitlint/config-patternplate @@ -170,183 +350,304 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -<a name="7.5.0"></a> -# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) +## [17.4.2](https://github.com/conventional-changelog/commitlint/compare/v17.4.1...v17.4.2) (2023-01-12) +**Note:** Version bump only for package @commitlint/config-patternplate -### Bug Fixes -* all broken website references ([#564](https://github.com/conventional-changelog/commitlint/issues/564)) ([82eeb5a](https://github.com/conventional-changelog/commitlint/commit/82eeb5a)) -* replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) -* replace all website references with conventional changelog ([#563](https://github.com/conventional-changelog/commitlint/issues/563)) ([6b86fb1](https://github.com/conventional-changelog/commitlint/commit/6b86fb1)) +# [17.4.0](https://github.com/conventional-changelog/commitlint/compare/v17.3.0...v17.4.0) (2023-01-04) -<a name="7.3.1"></a> -## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) +**Note:** Version bump only for package @commitlint/config-patternplate +# [17.3.0](https://github.com/conventional-changelog/commitlint/compare/v17.2.1...v17.3.0) (2022-11-21) +**Note:** Version bump only for package @commitlint/config-patternplate +# [17.2.0](https://github.com/conventional-changelog/commitlint/compare/v17.1.2...v17.2.0) (2022-10-31) **Note:** Version bump only for package @commitlint/config-patternplate -<a name="7.3.0"></a> -# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) +# [17.1.0](https://github.com/conventional-changelog/commitlint/compare/v17.0.3...v17.1.0) (2022-08-27) +**Note:** Version bump only for package @commitlint/config-patternplate -### Bug Fixes +## [17.0.3](https://github.com/conventional-changelog/commitlint/compare/v17.0.2...v17.0.3) (2022-06-25) -* update to security-patched dependency versions ([97c033b](https://github.com/conventional-changelog/commitlint/commit/97c033b)) +**Note:** Version bump only for package @commitlint/config-patternplate +# [17.0.0](https://github.com/conventional-changelog/commitlint/compare/v16.3.0...v17.0.0) (2022-05-16) +- chore!: minimum node version v14 (#3128) ([ac5f9b4](https://github.com/conventional-changelog/commitlint/commit/ac5f9b47a9e3cd5c9d58b14da0feb426f06b1ef9)), closes [#3128](https://github.com/conventional-changelog/commitlint/issues/3128) +### BREAKING CHANGES -<a name="7.1.2"></a> -## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) +- drop node v12 support +- chore: rename circleci windows job +node version is not defned by the name anyways (i think) +# [16.3.0](https://github.com/conventional-changelog/commitlint/compare/v16.2.4...v16.3.0) (2022-05-14) **Note:** Version bump only for package @commitlint/config-patternplate -<a name="6.1.1"></a> -## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) +## [16.2.4](https://github.com/conventional-changelog/commitlint/compare/v16.2.3...v16.2.4) (2022-04-28) + +**Note:** Version bump only for package @commitlint/config-patternplate +## [16.2.3](https://github.com/conventional-changelog/commitlint/compare/v16.2.2...v16.2.3) (2022-03-16) +**Note:** Version bump only for package @commitlint/config-patternplate +## [16.2.1](https://github.com/conventional-changelog/commitlint/compare/v16.2.0...v16.2.1) (2022-02-13) **Note:** Version bump only for package @commitlint/config-patternplate -<a name="6.1.0"></a> -# [6.1.0](https://github.com/conventional-changelog/commitlint/compare/v6.0.5...v6.1.0) (2018-02-03) +# [16.0.0](https://github.com/conventional-changelog/commitlint/compare/v15.0.0...v16.0.0) (2021-12-26) +**Note:** Version bump only for package @commitlint/config-patternplate +# [15.0.0](https://github.com/conventional-changelog/commitlint/compare/v14.2.0...v15.0.0) (2021-11-17) +**Note:** Version bump only for package @commitlint/config-patternplate + +# [14.1.0](https://github.com/conventional-changelog/commitlint/compare/v14.0.0...v14.1.0) (2021-11-01) **Note:** Version bump only for package @commitlint/config-patternplate -<a name="6.0.4"></a> -## [6.0.4](https://github.com/conventional-changelog/commitlint/compare/v6.0.3...v6.0.4) (2018-01-31) +# [14.0.0](https://github.com/conventional-changelog/commitlint/compare/v13.2.1...v14.0.0) (2021-10-26) + +**Note:** Version bump only for package @commitlint/config-patternplate +# [13.2.0](https://github.com/conventional-changelog/commitlint/compare/v13.1.0...v13.2.0) (2021-09-28) +**Note:** Version bump only for package @commitlint/config-patternplate +# [13.1.0](https://github.com/conventional-changelog/commitlint/compare/v13.0.0...v13.1.0) (2021-07-24) **Note:** Version bump only for package @commitlint/config-patternplate -<a name="6.0.3"></a> -## [6.0.3](https://github.com/conventional-changelog/commitlint/compare/v6.0.2...v6.0.3) (2018-01-31) +# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) + +- chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) + +### BREAKING CHANGES +- minimum node version is 12 +## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) + +**Note:** Version bump only for package @commitlint/config-patternplate +## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) **Note:** Version bump only for package @commitlint/config-patternplate -<a name="6.0.2"></a> -## [6.0.2](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.2) (2018-01-12) +## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) +**Note:** Version bump only for package @commitlint/config-patternplate +# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) + +**Note:** Version bump only for package @commitlint/config-patternplate +# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) **Note:** Version bump only for package @commitlint/config-patternplate -<a name="6.0.0"></a> -# [6.0.0](https://github.com/conventional-changelog/commitlint/compare/v5.2.6...v6.0.0) (2018-01-09) +# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) +- refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) +### BREAKING CHANGES +- remove node 8 from circle-ci checks + +also remove node 13 because we do not support experimental versions + +- docs: update node v10 to latest LTS 10 version + +Co-authored-by: Cedric van Putten <me@bycedric.com> + +Co-authored-by: Cedric van Putten <me@bycedric.com> + +## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) **Note:** Version bump only for package @commitlint/config-patternplate -<a name="5.1.1"></a> -## [5.1.1](https://github.com/conventional-changelog/commitlint/compare/v5.1.0...v5.1.1) (2017-11-24) +## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) +**Note:** Version bump only for package @commitlint/config-patternplate +# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) +**Note:** Version bump only for package @commitlint/config-patternplate + +## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) **Note:** Version bump only for package @commitlint/config-patternplate -<a name="5.1.0"></a> -# [5.1.0](https://github.com/conventional-changelog/commitlint/compare/v5.0.2...v5.1.0) (2017-11-24) +# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) +### Bug Fixes -### Features +- [#840](https://github.com/conventional-changelog/commitlint/issues/840) add caret to lodash versions ([#843](https://github.com/conventional-changelog/commitlint/issues/843)) ([ffc0bac](https://github.com/conventional-changelog/commitlint/commit/ffc0bac26993acb2ab6a8fa51065f93c92b0d644)) -* **travis-cli:** add reusable travis command line interface ([3e6e6a8](https://github.com/conventional-changelog/commitlint/commit/3e6e6a8)) +## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) +**Note:** Version bump only for package @commitlint/config-patternplate +# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) +**Note:** Version bump only for package @commitlint/config-patternplate -<a name="5.0.1"></a> -## [5.0.1](https://github.com/conventional-changelog/commitlint/compare/v5.0.0...v5.0.1) (2017-11-19) +# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) + +**Note:** Version bump only for package @commitlint/config-patternplate +# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) +**Note:** Version bump only for package @commitlint/config-patternplate +# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) **Note:** Version bump only for package @commitlint/config-patternplate -<a name="4.3.0"></a> -# [4.3.0](https://github.com/conventional-changelog/commitlint/compare/v4.2.2...v4.3.0) (2017-11-08) +<a name="7.5.0"></a> +# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) +### Bug Fixes +- all broken website references ([#564](https://github.com/conventional-changelog/commitlint/issues/564)) ([82eeb5a](https://github.com/conventional-changelog/commitlint/commit/82eeb5a)) +- replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) +- replace all website references with conventional changelog ([#563](https://github.com/conventional-changelog/commitlint/issues/563)) ([6b86fb1](https://github.com/conventional-changelog/commitlint/commit/6b86fb1)) + +<a name="7.3.1"></a> + +## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) **Note:** Version bump only for package @commitlint/config-patternplate -<a name="4.2.1"></a> -## [4.2.1](https://github.com/conventional-changelog/commitlint/compare/v4.2.0...v4.2.1) (2017-10-18) +<a name="7.3.0"></a> +# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) +### Bug Fixes +- update to security-patched dependency versions ([97c033b](https://github.com/conventional-changelog/commitlint/commit/97c033b)) + +<a name="7.1.2"></a> + +## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) **Note:** Version bump only for package @commitlint/config-patternplate -<a name="4.2.0"></a> -# [4.2.0](https://github.com/conventional-changelog/commitlint/compare/v4.1.1...v4.2.0) (2017-10-14) +<a name="6.1.1"></a> +## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) +**Note:** Version bump only for package @commitlint/config-patternplate +<a name="6.1.0"></a> + +# [6.1.0](https://github.com/conventional-changelog/commitlint/compare/v6.0.5...v6.1.0) (2018-02-03) **Note:** Version bump only for package @commitlint/config-patternplate -<a name="3.0.4"></a> -## 3.0.4 (2017-08-04) +<a name="6.0.4"></a> +## [6.0.4](https://github.com/conventional-changelog/commitlint/compare/v6.0.3...v6.0.4) (2018-01-31) +**Note:** Version bump only for package @commitlint/config-patternplate -<a name="3.0.3"></a> -## 3.0.3 (2017-07-16) +<a name="6.0.3"></a> +## [6.0.3](https://github.com/conventional-changelog/commitlint/compare/v6.0.2...v6.0.3) (2018-01-31) +**Note:** Version bump only for package @commitlint/config-patternplate -<a name="3.0.2"></a> -## 3.0.2 (2017-07-11) +<a name="6.0.2"></a> +## [6.0.2](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.2) (2018-01-12) +**Note:** Version bump only for package @commitlint/config-patternplate +<a name="6.0.0"></a> -<a name="3.0.3"></a> -## 3.0.3 (2017-07-16) +# [6.0.0](https://github.com/conventional-changelog/commitlint/compare/v5.2.6...v6.0.0) (2018-01-09) +**Note:** Version bump only for package @commitlint/config-patternplate +<a name="5.1.1"></a> -<a name="3.0.2"></a> -## 3.0.2 (2017-07-11) +## [5.1.1](https://github.com/conventional-changelog/commitlint/compare/v5.1.0...v5.1.1) (2017-11-24) + +**Note:** Version bump only for package @commitlint/config-patternplate + +<a name="5.1.0"></a> + +# [5.1.0](https://github.com/conventional-changelog/commitlint/compare/v5.0.2...v5.1.0) (2017-11-24) + +### Features +- **travis-cli:** add reusable travis command line interface ([3e6e6a8](https://github.com/conventional-changelog/commitlint/commit/3e6e6a8)) +<a name="5.0.1"></a> + +## [5.0.1](https://github.com/conventional-changelog/commitlint/compare/v5.0.0...v5.0.1) (2017-11-19) + +**Note:** Version bump only for package @commitlint/config-patternplate + +<a name="4.3.0"></a> + +# [4.3.0](https://github.com/conventional-changelog/commitlint/compare/v4.2.2...v4.3.0) (2017-11-08) + +**Note:** Version bump only for package @commitlint/config-patternplate +<a name="4.2.1"></a> + +## [4.2.1](https://github.com/conventional-changelog/commitlint/compare/v4.2.0...v4.2.1) (2017-10-18) + +**Note:** Version bump only for package @commitlint/config-patternplate + +<a name="4.2.0"></a> + +# [4.2.0](https://github.com/conventional-changelog/commitlint/compare/v4.1.1...v4.2.0) (2017-10-14) + +**Note:** Version bump only for package @commitlint/config-patternplate + +<a name="3.0.4"></a> + +## 3.0.4 (2017-08-04) + +<a name="3.0.3"></a> + +## 3.0.3 (2017-07-16) <a name="3.0.2"></a> + ## 3.0.2 (2017-07-11) +<a name="3.0.3"></a> +## 3.0.3 (2017-07-16) +<a name="3.0.2"></a> -<a name="3.0.1"></a> -## 3.0.1 (2017-07-11) +## 3.0.2 (2017-07-11) + +<a name="3.0.2"></a> +## 3.0.2 (2017-07-11) +<a name="3.0.1"></a> +## 3.0.1 (2017-07-11) <a name="3.0.0"></a> + # 3.0.0 (2017-07-10) diff --git a/@commitlint/config-patternplate/README.md b/@commitlint/config-patternplate/README.md index 708c933be8..66b46901b7 100644 --- a/@commitlint/config-patternplate/README.md +++ b/@commitlint/config-patternplate/README.md @@ -1,7 +1,7 @@ -> Lint your commits, patternplate-style - # @commitlint/config-patternplate +Lint your commits, patternplate-style + Shareable `commitlint` config enforcing the patternplate commit convention. Use with [@commitlint/cli](../cli) and [@commitlint/prompt-cli](../prompt-cli). @@ -27,4 +27,4 @@ The following rules are considered problems for `@commitlint/config-patternplate - **rule**: `always` - **value**: determined based on pattern tree. `system` and all pattern ids present in `patterns` are allowed -Consult [docs/rules](https://conventional-changelog.github.io/commitlint/#/reference-rules) for a list of available rules. +Consult [Rules reference](https://commitlint.js.org/reference/rules) for a list of available rules. diff --git a/@commitlint/config-patternplate/index.js b/@commitlint/config-patternplate/index.js index 38755dc112..240efb9655 100644 --- a/@commitlint/config-patternplate/index.js +++ b/@commitlint/config-patternplate/index.js @@ -1,23 +1,24 @@ -const path = require('path'); -const globby = require('globby'); -const merge = require('lodash/merge'); +import path from "node:path"; + +import configAngular from "@commitlint/config-angular"; +import { glob } from "glob"; +import merge from "lodash.merge"; function pathToId(root, filePath) { const relativePath = path.relative(root, filePath); - return path.dirname(relativePath).split(path.sep).join('/'); + return path.dirname(relativePath).split(path.sep).join("/"); } -function getPatternIDs() { - const root = path.resolve(process.cwd(), './patterns'); - const glob = path.resolve(root, '**/pattern.json'); - return globby(glob).then((results) => - results.map((result) => pathToId(root, result)) - ); +async function getPatternIDs() { + const root = path.resolve(process.cwd(), "./patterns"); + const pattern = path.resolve(root, "**/pattern.json"); + const files = glob(pattern); + return files.map((result) => pathToId(root, result)); } -module.exports = merge(require('@commitlint/config-angular'), { +export default merge(configAngular, { rules: { - 'scope-enum': () => - getPatternIDs().then((ids) => [2, 'always', ids.concat(['system'])]), + "scope-enum": () => + getPatternIDs().then((ids) => [2, "always", ids.concat(["system"])]), }, }); diff --git a/@commitlint/config-patternplate/package.json b/@commitlint/config-patternplate/package.json index 4176b5d63e..91d166fd6f 100644 --- a/@commitlint/config-patternplate/package.json +++ b/@commitlint/config-patternplate/package.json @@ -1,7 +1,9 @@ { "name": "@commitlint/config-patternplate", - "version": "13.1.0", + "type": "module", + "version": "20.0.0", "description": "Lint your commits, patternplate-style", + "main": "index.js", "files": [ "index.js" ], @@ -11,7 +13,8 @@ }, "repository": { "type": "git", - "url": "https://github.com/conventional-changelog/commitlint.git" + "url": "https://github.com/conventional-changelog/commitlint.git", + "directory": "@commitlint/config-patternplate" }, "keywords": [ "conventional-changelog", @@ -24,17 +27,18 @@ "bugs": { "url": "https://github.com/conventional-changelog/commitlint/issues" }, - "homepage": "https://github.com/conventional-changelog/commitlint#readme", + "homepage": "https://commitlint.js.org/", "engines": { - "node": ">=v12" + "node": ">=v18" }, "dependencies": { - "@commitlint/config-angular": "^13.1.0", - "globby": "^11.0.0", - "lodash": "^4.17.19" + "@commitlint/config-angular": "^20.0.0", + "glob": "^10.3.10", + "lodash.merge": "^4.6.2" }, "devDependencies": { - "@commitlint/utils": "^13.0.0" + "@commitlint/utils": "^20.0.0", + "@types/lodash.merge": "^4.6.8" }, - "gitHead": "d829bf6260304ca8d6811f329fcdd1b6c50e9749" + "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" } diff --git a/@commitlint/config-pnpm-scopes/CHANGELOG.md b/@commitlint/config-pnpm-scopes/CHANGELOG.md new file mode 100644 index 0000000000..27daf022c2 --- /dev/null +++ b/@commitlint/config-pnpm-scopes/CHANGELOG.md @@ -0,0 +1,261 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [20.1.0](https://github.com/conventional-changelog/commitlint/compare/v20.0.0...v20.1.0) (2025-09-30) + + +### Features + +* **config-pnpm-scopes:** allow global scope ([#4553](https://github.com/conventional-changelog/commitlint/issues/4553)) ([e571970](https://github.com/conventional-changelog/commitlint/commit/e57197061447eb9ea74b8d81ab003ad3b4652be6)) + + + + + +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + +**Note:** Version bump only for package @commitlint/config-pnpm-scopes + + + + + +## [19.9.1](https://github.com/conventional-changelog/commitlint/compare/v19.9.0...v19.9.1) (2025-08-29) + + +### Bug Fixes + +* add TypeScript support and configuration for pnpm scopes ([#4544](https://github.com/conventional-changelog/commitlint/issues/4544)) ([ea75778](https://github.com/conventional-changelog/commitlint/commit/ea75778e8d32c932d85062902456cd821e471fdd)) + + + + + +# [19.9.0](https://github.com/conventional-changelog/commitlint/compare/v19.8.1...v19.9.0) (2025-08-26) + + +### Features + +* **config-pnpm-scopes:** migrate package to TypeScript ([#4541](https://github.com/conventional-changelog/commitlint/issues/4541)) ([6ae36ea](https://github.com/conventional-changelog/commitlint/commit/6ae36ea5a55d7736024461ec6af94a14b821acc4)) + + + + + +## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) + +**Note:** Version bump only for package @commitlint/config-pnpm-scopes + + + + + +# [19.8.0](https://github.com/conventional-changelog/commitlint/compare/v19.7.1...v19.8.0) (2025-03-07) + + +### Performance Improvements + +* use `node:` prefix to bypass require.cache call for builtins ([#4302](https://github.com/conventional-changelog/commitlint/issues/4302)) ([0cd8f41](https://github.com/conventional-changelog/commitlint/commit/0cd8f410573fe11383f788b1ceb7e0946143591d)) + + + + + +# [19.5.0](https://github.com/conventional-changelog/commitlint/compare/v19.4.1...v19.5.0) (2024-09-11) + +**Note:** Version bump only for package @commitlint/config-pnpm-scopes + + + + + +# [19.1.0](https://github.com/conventional-changelog/commitlint/compare/v19.0.3...v19.1.0) (2024-03-12) + + +### Bug Fixes + +* add `main` and `types` keys in package.json ([#3953](https://github.com/conventional-changelog/commitlint/issues/3953)) ([7ddaad4](https://github.com/conventional-changelog/commitlint/commit/7ddaad4bc4e71afe89f25cc02d3e19beba1ce6cd)) + + + + + +# [19.0.0](https://github.com/conventional-changelog/commitlint/compare/v18.6.2...v19.0.0) (2024-02-27) + + +* feat!: migrate to pure ESM (#3850) ([3423735](https://github.com/conventional-changelog/commitlint/commit/342373559bdf7c783c4ef37ff05dc38a5f681159)), closes [#3850](https://github.com/conventional-changelog/commitlint/issues/3850) + + +### Reverts + +* Revert "chore!: minimum node version v20" ([2816783](https://github.com/conventional-changelog/commitlint/commit/2816783d00e7eb967de3ac9347c2fc43dc8b94fa)) + + +### BREAKING CHANGES + +* migrate to pure ESM + +* feat: migrate to pure ESM + +* chore: update snapshot + +* fix: load `parserPreset` with another `await` + +* test: migrate to vitest + +* test: remove no replacement `--runInBand` test-ci script + +* chore: fix code reviews + +* refactor(load): rewrite resolve logic + +* fix(config-nx-scopes): fix syntax error + +* feat(resolve-extends): add resolveFrom and loadParserPreset + +* feat(load): use resolveFrom and loadParserPreset from resolve-extends + +* test: include only @commitlint/* packages src in coverage + +* test: explicit import vitest utilities + +* test: remove @jest/globals from dependencies + +* fix(resolve-extends): `resolveFrom` output should be platform aware + +* test: restore NO_COLOR to test script + +* chore: fix linting issues + +* fix: should use fileURLToPath instead of pathname for Windows compatibility + +* Apply suggestions from code review + +* fix: should reuse `cli` instead call `yargs()` + +* feat(cli): set terminalWidth as wrap to avoid work break on help + +* Update .eslintrc.cjs + +* feat: migrate @commitlint/config-conventional to pure ESM + + + + + +## [18.6.1](https://github.com/conventional-changelog/commitlint/compare/v18.6.0...v18.6.1) (2024-02-13) + +**Note:** Version bump only for package @commitlint/config-pnpm-scopes + + + + + +## [18.4.4](https://github.com/conventional-changelog/commitlint/compare/v18.4.3...v18.4.4) (2024-01-04) + +**Note:** Version bump only for package @commitlint/config-pnpm-scopes + + + + + +## [18.4.3](https://github.com/conventional-changelog/commitlint/compare/v18.4.2...v18.4.3) (2023-11-21) + +**Note:** Version bump only for package @commitlint/config-pnpm-scopes + + + + + +# [18.4.0](https://github.com/conventional-changelog/commitlint/compare/v18.3.0...v18.4.0) (2023-11-10) + +**Note:** Version bump only for package @commitlint/config-pnpm-scopes + + + + + +# [18.1.0](https://github.com/conventional-changelog/commitlint/compare/v18.0.0...v18.1.0) (2023-10-25) + +**Note:** Version bump only for package @commitlint/config-pnpm-scopes + + + + + +# [18.0.0](https://github.com/conventional-changelog/commitlint/compare/v17.8.1...v18.0.0) (2023-10-20) + + +* chore!: minimum node version v18 (#3644) ([5b4aeaf](https://github.com/conventional-changelog/commitlint/commit/5b4aeaf4f01c2726a7bc8631a23bb34c849baad2)), closes [#3644](https://github.com/conventional-changelog/commitlint/issues/3644) + + +### BREAKING CHANGES + +* drop node v14 and v16 support + +* chore: remove unused types + +* docs: prepare node update and new release + +* chore!: minimum TS version v5 +* drop TS v4 support + +* ci: remove node v14/16 checks + +* chore: adjust node types to minimal supported version + +* chore!: further major versions of other deps +* upgrade conventional-changelog-conventionalcommits, conventional-commits-parser, conventional-changelog-atom, + +* docs: simplify releases and remove roadmap + + + + + +## [17.8.1](https://github.com/conventional-changelog/commitlint/compare/v17.8.0...v17.8.1) (2023-10-20) + +**Note:** Version bump only for package @commitlint/config-pnpm-scopes + + + + + +# [17.7.0](https://github.com/conventional-changelog/commitlint/compare/v17.6.7...v17.7.0) (2023-08-09) + +**Note:** Version bump only for package @commitlint/config-pnpm-scopes + + + + + +# [17.5.0](https://github.com/conventional-changelog/commitlint/compare/v17.4.4...v17.5.0) (2023-03-22) + + +### Bug Fixes + +* **config-pnpm-scopes:** refactor to remove peer dependencies ([#3564](https://github.com/conventional-changelog/commitlint/issues/3564)) ([f1f3bd5](https://github.com/conventional-changelog/commitlint/commit/f1f3bd5b7f33f7198719ed4aead3417e894a10ec)), closes [#3556](https://github.com/conventional-changelog/commitlint/issues/3556) + + + + + +## [17.4.2](https://github.com/conventional-changelog/commitlint/compare/v17.4.1...v17.4.2) (2023-01-12) + +**Note:** Version bump only for package @commitlint/config-pnpm-scopes + + + + + +# [17.4.0](https://github.com/conventional-changelog/commitlint/compare/v17.3.0...v17.4.0) (2023-01-04) + +**Note:** Version bump only for package @commitlint/config-pnpm-scopes + +# [17.3.0](https://github.com/conventional-changelog/commitlint/compare/v17.2.1...v17.3.0) (2022-11-21) + +### Features + +- **config-pnpm-scopes:** implement config-pnpm-scopes ([#3427](https://github.com/conventional-changelog/commitlint/issues/3427)) ([ca3ae8b](https://github.com/conventional-changelog/commitlint/commit/ca3ae8b14271c62910d228a622bec20b1be8ed63)) diff --git a/@commitlint/config-pnpm-scopes/fixtures/basic/package.json b/@commitlint/config-pnpm-scopes/fixtures/basic/package.json new file mode 100644 index 0000000000..d05965fc49 --- /dev/null +++ b/@commitlint/config-pnpm-scopes/fixtures/basic/package.json @@ -0,0 +1,6 @@ +{ + "name": "basic", + "version": "1.0.0", + "private": true, + "devDependencies": {} +} diff --git a/@commitlint/config-pnpm-scopes/fixtures/basic/packages/a/package.json b/@commitlint/config-pnpm-scopes/fixtures/basic/packages/a/package.json new file mode 100644 index 0000000000..9113c2528e --- /dev/null +++ b/@commitlint/config-pnpm-scopes/fixtures/basic/packages/a/package.json @@ -0,0 +1,4 @@ +{ + "name": "a", + "version": "1.0.0" +} diff --git a/@commitlint/config-pnpm-scopes/fixtures/basic/packages/b/package.json b/@commitlint/config-pnpm-scopes/fixtures/basic/packages/b/package.json new file mode 100644 index 0000000000..c2d84cc127 --- /dev/null +++ b/@commitlint/config-pnpm-scopes/fixtures/basic/packages/b/package.json @@ -0,0 +1,4 @@ +{ + "name": "b", + "version": "1.0.0" +} diff --git a/@commitlint/config-pnpm-scopes/fixtures/basic/pnpm-workspace.yaml b/@commitlint/config-pnpm-scopes/fixtures/basic/pnpm-workspace.yaml new file mode 100644 index 0000000000..18ec407efc --- /dev/null +++ b/@commitlint/config-pnpm-scopes/fixtures/basic/pnpm-workspace.yaml @@ -0,0 +1,2 @@ +packages: + - 'packages/*' diff --git a/@commitlint/config-pnpm-scopes/fixtures/empty/package.json b/@commitlint/config-pnpm-scopes/fixtures/empty/package.json new file mode 100644 index 0000000000..d1f96fc54d --- /dev/null +++ b/@commitlint/config-pnpm-scopes/fixtures/empty/package.json @@ -0,0 +1,6 @@ +{ + "name": "empty", + "version": "1.0.0", + "private": true, + "devDependencies": {} +} diff --git a/@commitlint/config-pnpm-scopes/fixtures/empty/pnpm-workspace.yaml b/@commitlint/config-pnpm-scopes/fixtures/empty/pnpm-workspace.yaml new file mode 100644 index 0000000000..18ec407efc --- /dev/null +++ b/@commitlint/config-pnpm-scopes/fixtures/empty/pnpm-workspace.yaml @@ -0,0 +1,2 @@ +packages: + - 'packages/*' diff --git a/@commitlint/config-pnpm-scopes/fixtures/scoped/package.json b/@commitlint/config-pnpm-scopes/fixtures/scoped/package.json new file mode 100644 index 0000000000..d05965fc49 --- /dev/null +++ b/@commitlint/config-pnpm-scopes/fixtures/scoped/package.json @@ -0,0 +1,6 @@ +{ + "name": "basic", + "version": "1.0.0", + "private": true, + "devDependencies": {} +} diff --git a/@commitlint/config-pnpm-scopes/fixtures/scoped/packages/a/package.json b/@commitlint/config-pnpm-scopes/fixtures/scoped/packages/a/package.json new file mode 100644 index 0000000000..38d30f225c --- /dev/null +++ b/@commitlint/config-pnpm-scopes/fixtures/scoped/packages/a/package.json @@ -0,0 +1,4 @@ +{ + "name": "@scope/a", + "version": "1.0.0" +} diff --git a/@commitlint/config-pnpm-scopes/fixtures/scoped/packages/b/package.json b/@commitlint/config-pnpm-scopes/fixtures/scoped/packages/b/package.json new file mode 100644 index 0000000000..812c697ce5 --- /dev/null +++ b/@commitlint/config-pnpm-scopes/fixtures/scoped/packages/b/package.json @@ -0,0 +1,4 @@ +{ + "name": "@scope/b", + "version": "1.0.0" +} diff --git a/@commitlint/config-pnpm-scopes/fixtures/scoped/pnpm-workspace.yaml b/@commitlint/config-pnpm-scopes/fixtures/scoped/pnpm-workspace.yaml new file mode 100644 index 0000000000..18ec407efc --- /dev/null +++ b/@commitlint/config-pnpm-scopes/fixtures/scoped/pnpm-workspace.yaml @@ -0,0 +1,2 @@ +packages: + - 'packages/*' diff --git a/@commitlint/config-pnpm-scopes/index.test.ts b/@commitlint/config-pnpm-scopes/index.test.ts new file mode 100644 index 0000000000..8fd934b3e6 --- /dev/null +++ b/@commitlint/config-pnpm-scopes/index.test.ts @@ -0,0 +1,76 @@ +import { test, expect } from "vitest"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +import { npm } from "@commitlint/test"; + +import config from "./index.js"; + +const __dirname = path.resolve(fileURLToPath(import.meta.url), ".."); + +test("exports rules key", () => { + expect(config).toHaveProperty("rules"); +}); + +test("rules hold object", () => { + expect(config).toMatchObject({ + rules: expect.any(Object), + }); +}); + +test("rules contain scope-enum", () => { + expect(config).toMatchObject({ + rules: { + "scope-enum": expect.anything(), + }, + }); +}); + +test("scope-enum is function", () => { + expect(config).toMatchObject({ + rules: { + "scope-enum": expect.any(Function), + }, + }); +}); + +test("scope-enum does not throw for missing context", async () => { + const { "scope-enum": fn } = config.rules; + await expect(fn()).resolves.toBeTruthy(); +}); + +test("scope-enum has expected severity", async () => { + const { "scope-enum": fn } = config.rules; + const [severity] = await fn(); + expect(severity).toBe(2); +}); + +test("scope-enum has expected modifier", async () => { + const { "scope-enum": fn } = config.rules; + const [, modifier] = await fn(); + expect(modifier).toBe("always"); +}); + +test("returns global scope for empty pnpm repository", async () => { + const { "scope-enum": fn } = config.rules; + const cwd = await npm.bootstrap("fixtures/empty", __dirname); + const [, , value] = await fn({ cwd }); + expect(value).toEqual(["global"]); +}); + +test("returns expected value for basic pnpm repository", async () => { + const { "scope-enum": fn } = config.rules; + const cwd = await npm.bootstrap("fixtures/basic", __dirname); + + const [, , value] = await fn({ cwd }); + expect(value).toEqual(["a", "b", "global"]); +}); + +test("returns expected value for scoped pnpm repository", async () => { + const { "scope-enum": fn } = config.rules; + const cwd = await npm.bootstrap("fixtures/scoped", __dirname); + + const [, , value] = await fn({ cwd }); + + expect(value).toEqual(["a", "b", "global"]); +}); diff --git a/@commitlint/config-pnpm-scopes/index.ts b/@commitlint/config-pnpm-scopes/index.ts new file mode 100644 index 0000000000..10dde7a74c --- /dev/null +++ b/@commitlint/config-pnpm-scopes/index.ts @@ -0,0 +1,85 @@ +import path from "node:path"; + +import fg from "fast-glob"; +import readYamlFileModule from "read-yaml-file"; +import { readExactProjectManifest } from "@pnpm/read-project-manifest"; +const readYamlFile = readYamlFileModule.default; + +export default { + utils: { getProjects }, + rules: { + "scope-enum": (ctx = {}) => + getProjects(ctx).then((packages: any) => [2, "always", packages]), + }, +}; + +function requirePackagesManifest(dir: any) { + return readYamlFile(path.join(dir, "pnpm-workspace.yaml")).catch( + (err: any) => { + if (err.code === "ENOENT") { + return null; + } + + throw err; + }, + ); +} + +function normalizePatterns(patterns: any) { + const normalizedPatterns = []; + for (const pattern of patterns) { + normalizedPatterns.push(pattern.replace(/\/?$/, "/package.json")); + normalizedPatterns.push(pattern.replace(/\/?$/, "/package.json5")); + normalizedPatterns.push(pattern.replace(/\/?$/, "/package.yaml")); + } + return normalizedPatterns; +} + +function findWorkspacePackages(cwd: any) { + return requirePackagesManifest(cwd) + .then((manifest: any) => { + const patterns = normalizePatterns( + (manifest && manifest.packages) || ["**"], + ); + const opts = { + cwd, + ignore: ["**/node_modules/**", "**/bower_components/**"], + }; + + return fg(patterns, opts); + }) + .then((entries: any) => { + const paths = Array.from( + new Set(entries.map((entry: any) => path.join(cwd, entry))), + ); + + return Promise.all( + paths.map((manifestPath: any) => + readExactProjectManifest(manifestPath), + ), + ); + }) + .then((manifests: any) => { + return manifests.map((manifest: any) => manifest.manifest); + }); +} + +function getProjects(context: any) { + const ctx = context || {}; + const cwd = ctx.cwd || process.cwd(); + + return findWorkspacePackages(cwd).then((projects: any) => { + const scopes = projects.reduce((acc: any, project: any) => { + const name = project.name; + + if (name) { + acc.add(name.charAt(0) === "@" ? name.split("/")[1] : name); + } + + return acc; + }, new Set()); + scopes.add("global"); + + return Array.from(scopes).sort(); + }); +} diff --git a/@commitlint/config-pnpm-scopes/license.md b/@commitlint/config-pnpm-scopes/license.md new file mode 100644 index 0000000000..8f8a80980d --- /dev/null +++ b/@commitlint/config-pnpm-scopes/license.md @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2022 - present Dan Onoshko + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/@commitlint/config-pnpm-scopes/package.json b/@commitlint/config-pnpm-scopes/package.json new file mode 100644 index 0000000000..861dffcf97 --- /dev/null +++ b/@commitlint/config-pnpm-scopes/package.json @@ -0,0 +1,56 @@ +{ + "name": "@commitlint/config-pnpm-scopes", + "type": "module", + "version": "20.1.0", + "description": "Shareable commitlint config enforcing pnpm workspaces names as scopes", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "files": [ + "dist" + ], + "scripts": { + "build": "tsc", + "test": "jest", + "deps": "dep-check", + "pkg": "pkg-check" + }, + "repository": { + "type": "git", + "url": "https://github.com/conventional-changelog/commitlint.git", + "directory": "@commitlint/config-pnpm-scopes" + }, + "keywords": [ + "conventional-changelog", + "commitlint", + "commitlint-config", + "pnpm" + ], + "author": "Dan Onoshko <danon0404@gmail.com>", + "license": "MIT", + "bugs": { + "url": "https://github.com/conventional-changelog/commitlint/issues" + }, + "homepage": "https://commitlint.js.org/", + "engines": { + "node": ">=v18" + }, + "dependencies": { + "@pnpm/read-project-manifest": "^5.0.10", + "fast-glob": "^3.3.1", + "read-yaml-file": "^2.1.0" + }, + "devDependencies": { + "@commitlint/test": "^20.0.0", + "@commitlint/utils": "^20.0.0", + "@types/node": "^18.19.17", + "typescript": "^5.2.2" + }, + "exports": { + ".": { + "import": "./dist/index.js", + "require": "./dist/index.js", + "types": "./dist/index.d.ts" + } + }, + "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" +} diff --git a/@commitlint/config-pnpm-scopes/readme.md b/@commitlint/config-pnpm-scopes/readme.md new file mode 100644 index 0000000000..45d65af9dc --- /dev/null +++ b/@commitlint/config-pnpm-scopes/readme.md @@ -0,0 +1,44 @@ +# @commitlint/config-pnpm-scopes + +Lint your pnpm workspaces project commits + +Shareable `commitlint` config enforcing pnpm workspaces names as scopes. +Use with [@commitlint/cli](../cli) and [@commitlint/prompt-cli](../prompt-cli). + +## Getting started + +``` +npm install --save-dev @commitlint/config-pnpm-scopes @commitlint/cli +echo "module.exports = {extends: ['@commitlint/config-pnpm-scopes']};" > commitlint.config.js +``` + +## Examples + +``` +❯ cat commitlint.config.js +{ + extends: ['@commitlint/config-pnpm-scopes'] +} + +❯ tree packages + +packages +├── api +├── app +└── web + +❯ echo "build(api): change something in api's build" | commitlint +⧗ input: build(api): change something in api's build +✔ found 0 problems, 0 warnings + +❯ echo "test(foo): this won't pass" | commitlint +⧗ input: test(foo): this won't pass +✖ scope must be one of [api, app, web] [scope-enum] +✖ found 1 problems, 0 warnings + +❯ echo "ci: do some general maintenance" | commitlint +⧗ input: ci: do some general maintenance +✔ found 0 problems, 0 warnings +``` + +Consult [Rules reference](https://commitlint.js.org/reference/rules) for a list of available rules. diff --git a/@commitlint/config-pnpm-scopes/tsconfig.json b/@commitlint/config-pnpm-scopes/tsconfig.json new file mode 100644 index 0000000000..dddda3a388 --- /dev/null +++ b/@commitlint/config-pnpm-scopes/tsconfig.json @@ -0,0 +1,11 @@ +{ + "extends": "../../tsconfig.shared.json", + "compilerOptions": { + "composite": true, + "rootDir": "./", + "outDir": "./dist" + }, + "include": ["*.ts"], + "exclude": ["./dist/**/*"], + "references": [{ "path": "../types" }] +} diff --git a/@commitlint/config-rush-scopes/CHANGELOG.md b/@commitlint/config-rush-scopes/CHANGELOG.md new file mode 100644 index 0000000000..1caf82066a --- /dev/null +++ b/@commitlint/config-rush-scopes/CHANGELOG.md @@ -0,0 +1,229 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + +**Note:** Version bump only for package @commitlint/config-rush-scopes + + + + + +## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) + +**Note:** Version bump only for package @commitlint/config-rush-scopes + + + + + +# [19.8.0](https://github.com/conventional-changelog/commitlint/compare/v19.7.1...v19.8.0) (2025-03-07) + + +### Performance Improvements + +* use `node:` prefix to bypass require.cache call for builtins ([#4302](https://github.com/conventional-changelog/commitlint/issues/4302)) ([0cd8f41](https://github.com/conventional-changelog/commitlint/commit/0cd8f410573fe11383f788b1ceb7e0946143591d)) + + + + + +# [19.5.0](https://github.com/conventional-changelog/commitlint/compare/v19.4.1...v19.5.0) (2024-09-11) + +**Note:** Version bump only for package @commitlint/config-rush-scopes + + + + + +# [19.1.0](https://github.com/conventional-changelog/commitlint/compare/v19.0.3...v19.1.0) (2024-03-12) + + +### Bug Fixes + +* add `main` and `types` keys in package.json ([#3953](https://github.com/conventional-changelog/commitlint/issues/3953)) ([7ddaad4](https://github.com/conventional-changelog/commitlint/commit/7ddaad4bc4e71afe89f25cc02d3e19beba1ce6cd)) + + + + + +# [19.0.0](https://github.com/conventional-changelog/commitlint/compare/v18.6.2...v19.0.0) (2024-02-27) + + +* feat!: migrate to pure ESM (#3850) ([3423735](https://github.com/conventional-changelog/commitlint/commit/342373559bdf7c783c4ef37ff05dc38a5f681159)), closes [#3850](https://github.com/conventional-changelog/commitlint/issues/3850) + + +### Reverts + +* Revert "chore!: minimum node version v20" ([2816783](https://github.com/conventional-changelog/commitlint/commit/2816783d00e7eb967de3ac9347c2fc43dc8b94fa)) + + +### BREAKING CHANGES + +* migrate to pure ESM + +* feat: migrate to pure ESM + +* chore: update snapshot + +* fix: load `parserPreset` with another `await` + +* test: migrate to vitest + +* test: remove no replacement `--runInBand` test-ci script + +* chore: fix code reviews + +* refactor(load): rewrite resolve logic + +* fix(config-nx-scopes): fix syntax error + +* feat(resolve-extends): add resolveFrom and loadParserPreset + +* feat(load): use resolveFrom and loadParserPreset from resolve-extends + +* test: include only @commitlint/* packages src in coverage + +* test: explicit import vitest utilities + +* test: remove @jest/globals from dependencies + +* fix(resolve-extends): `resolveFrom` output should be platform aware + +* test: restore NO_COLOR to test script + +* chore: fix linting issues + +* fix: should use fileURLToPath instead of pathname for Windows compatibility + +* Apply suggestions from code review + +* fix: should reuse `cli` instead call `yargs()` + +* feat(cli): set terminalWidth as wrap to avoid work break on help + +* Update .eslintrc.cjs + +* feat: migrate @commitlint/config-conventional to pure ESM + + + + + +## [18.6.1](https://github.com/conventional-changelog/commitlint/compare/v18.6.0...v18.6.1) (2024-02-13) + +**Note:** Version bump only for package @commitlint/config-rush-scopes + + + + + +## [18.4.4](https://github.com/conventional-changelog/commitlint/compare/v18.4.3...v18.4.4) (2024-01-04) + +**Note:** Version bump only for package @commitlint/config-rush-scopes + + + + + +## [18.4.3](https://github.com/conventional-changelog/commitlint/compare/v18.4.2...v18.4.3) (2023-11-21) + +**Note:** Version bump only for package @commitlint/config-rush-scopes + + + + + +# [18.4.0](https://github.com/conventional-changelog/commitlint/compare/v18.3.0...v18.4.0) (2023-11-10) + +**Note:** Version bump only for package @commitlint/config-rush-scopes + + + + + +# [18.1.0](https://github.com/conventional-changelog/commitlint/compare/v18.0.0...v18.1.0) (2023-10-25) + +**Note:** Version bump only for package @commitlint/config-rush-scopes + + + + + +# [18.0.0](https://github.com/conventional-changelog/commitlint/compare/v17.8.1...v18.0.0) (2023-10-20) + + +* chore!: minimum node version v18 (#3644) ([5b4aeaf](https://github.com/conventional-changelog/commitlint/commit/5b4aeaf4f01c2726a7bc8631a23bb34c849baad2)), closes [#3644](https://github.com/conventional-changelog/commitlint/issues/3644) + + +### BREAKING CHANGES + +* drop node v14 and v16 support + +* chore: remove unused types + +* docs: prepare node update and new release + +* chore!: minimum TS version v5 +* drop TS v4 support + +* ci: remove node v14/16 checks + +* chore: adjust node types to minimal supported version + +* chore!: further major versions of other deps +* upgrade conventional-changelog-conventionalcommits, conventional-commits-parser, conventional-changelog-atom, + +* docs: simplify releases and remove roadmap + + + + + +## [17.8.1](https://github.com/conventional-changelog/commitlint/compare/v17.8.0...v17.8.1) (2023-10-20) + +**Note:** Version bump only for package @commitlint/config-rush-scopes + + + + + +## [17.4.2](https://github.com/conventional-changelog/commitlint/compare/v17.4.1...v17.4.2) (2023-01-12) + +**Note:** Version bump only for package @commitlint/config-rush-scopes + + + + + +# [17.4.0](https://github.com/conventional-changelog/commitlint/compare/v17.3.0...v17.4.0) (2023-01-04) + +**Note:** Version bump only for package @commitlint/config-rush-scopes + +# [17.2.0](https://github.com/conventional-changelog/commitlint/compare/v17.1.2...v17.2.0) (2022-10-31) + +**Note:** Version bump only for package @commitlint/config-rush-scopes + +# [17.0.0](https://github.com/conventional-changelog/commitlint/compare/v16.3.0...v17.0.0) (2022-05-16) + +- chore!: minimum node version v14 (#3128) ([ac5f9b4](https://github.com/conventional-changelog/commitlint/commit/ac5f9b47a9e3cd5c9d58b14da0feb426f06b1ef9)), closes [#3128](https://github.com/conventional-changelog/commitlint/issues/3128) + +### BREAKING CHANGES + +- drop node v12 support + +- chore: rename circleci windows job + +node version is not defned by the name anyways (i think) + +## [16.2.1](https://github.com/conventional-changelog/commitlint/compare/v16.2.0...v16.2.1) (2022-02-13) + +**Note:** Version bump only for package @commitlint/config-rush-scopes + +# [16.0.0](https://github.com/conventional-changelog/commitlint/compare/v15.0.0...v16.0.0) (2021-12-26) + +### Features + +- **config-rush-scopes:** add config for rush monorepo ([#2878](https://github.com/conventional-changelog/commitlint/issues/2878)) ([befa677](https://github.com/conventional-changelog/commitlint/commit/befa677c3c2bed38085a62da161366784d971906)) diff --git a/@commitlint/config-rush-scopes/fixtures/basic/packages/a/package.json b/@commitlint/config-rush-scopes/fixtures/basic/packages/a/package.json new file mode 100644 index 0000000000..9113c2528e --- /dev/null +++ b/@commitlint/config-rush-scopes/fixtures/basic/packages/a/package.json @@ -0,0 +1,4 @@ +{ + "name": "a", + "version": "1.0.0" +} diff --git a/@commitlint/config-rush-scopes/fixtures/basic/packages/b/package.json b/@commitlint/config-rush-scopes/fixtures/basic/packages/b/package.json new file mode 100644 index 0000000000..c2d84cc127 --- /dev/null +++ b/@commitlint/config-rush-scopes/fixtures/basic/packages/b/package.json @@ -0,0 +1,4 @@ +{ + "name": "b", + "version": "1.0.0" +} diff --git a/@commitlint/config-rush-scopes/fixtures/basic/rush.json b/@commitlint/config-rush-scopes/fixtures/basic/rush.json new file mode 100644 index 0000000000..a858a46ccc --- /dev/null +++ b/@commitlint/config-rush-scopes/fixtures/basic/rush.json @@ -0,0 +1,441 @@ +/** + * This is the main configuration file for Rush. + * For full documentation, please see https://rushjs.io + */ + { + "$schema": "https://developer.microsoft.com/json-schemas/rush/v5/rush.schema.json", + /** + * (Required) This specifies the version of the Rush engine to be used in this repo. + * Rush's "version selector" feature ensures that the globally installed tool will + * behave like this release, regardless of which version is installed globally. + * + * The common/scripts/install-run-rush.js automation script also uses this version. + * + * NOTE: If you upgrade to a new major version of Rush, you should replace the "v5" + * path segment in the "$schema" field for all your Rush config files. This will ensure + * correct error-underlining and tab-completion for editors such as VS Code. + */ + "rushVersion": "5.56.0", + /** + * The next field selects which package manager should be installed and determines its version. + * Rush installs its own local copy of the package manager to ensure that your build process + * is fully isolated from whatever tools are present in the local environment. + * + * Specify one of: "pnpmVersion", "npmVersion", or "yarnVersion". See the Rush documentation + * for details about these alternatives. + */ + "pnpmVersion": "6.20.3", + // "npmVersion": "6.14.15", + // "yarnVersion": "1.9.4", + /** + * Options that are only used when the PNPM package manager is selected + */ + "pnpmOptions": { + /** + * Specifies the location of the PNPM store. There are two possible values: + * + * - "local" - use the "pnpm-store" folder in the current configured temp folder: + * "common/temp/pnpm-store" by default. + * - "global" - use PNPM's global store, which has the benefit of being shared + * across multiple repo folders, but the disadvantage of less isolation for builds + * (e.g. bugs or incompatibilities when two repos use different releases of PNPM) + * + * RUSH_PNPM_STORE_PATH will override the directory that will be used as the store + * + * In all cases, the store path will be overridden by the environment variable RUSH_PNPM_STORE_PATH. + * + * The default value is "local". + */ + // "pnpmStore": "local", + /** + * If true, then Rush will add the "--strict-peer-dependencies" option when invoking PNPM. + * This causes "rush install" to fail if there are unsatisfied peer dependencies, which is + * an invalid state that can cause build failures or incompatible dependency versions. + * (For historical reasons, JavaScript package managers generally do not treat this invalid + * state as an error.) + * + * The default value is false to avoid legacy compatibility issues. + * It is strongly recommended to set strictPeerDependencies=true. + */ + // "strictPeerDependencies": true, + /** + * Configures the strategy used to select versions during installation. + * + * This feature requires PNPM version 3.1 or newer. It corresponds to the "--resolution-strategy" command-line + * option for PNPM. Possible values are "fast" and "fewer-dependencies". PNPM's default is "fast", but this may + * be incompatible with certain packages, for example the "@types" packages from DefinitelyTyped. Rush's default + * is "fewer-dependencies", which causes PNPM to avoid installing a newer version if an already installed version + * can be reused; this is more similar to NPM's algorithm. + * + * After modifying this field, it's recommended to run "rush update --full" so that the package manager + * will recalculate all version selections. + */ + // "resolutionStrategy": "fast", + /** + * If true, then `rush install` will report an error if manual modifications + * were made to the PNPM shrinkwrap file without running "rush update" afterwards. + * + * This feature protects against accidental inconsistencies that may be introduced + * if the PNPM shrinkwrap file ("pnpm-lock.yaml") is manually edited. When this + * feature is enabled, "rush update" will append a hash to the file as a YAML comment, + * and then "rush update" and "rush install" will validate the hash. Note that this does not prohibit + * manual modifications, but merely requires "rush update" be run + * afterwards, ensuring that PNPM can report or repair any potential inconsistencies. + * + * To temporarily disable this validation when invoking "rush install", use the + * "--bypass-policy" command-line parameter. + * + * The default value is false. + */ + // "preventManualShrinkwrapChanges": true, + /** + * If true, then `rush install` will use the PNPM workspaces feature to perform the + * install. + * + * This feature uses PNPM to perform the entire monorepo install. When using workspaces, Rush will + * generate a "pnpm-workspace.yaml" file referencing all local projects to install. Rush will + * also generate a "pnpmfile.js" which is used to provide preferred versions support. When install + * is run, this pnpmfile will be used to replace dependency version ranges with a smaller subset + * of the original range. If the preferred version is not fully a subset of the original version + * range, it will be left as-is. After this, the pnpmfile.js provided in the repository (if one + * exists) will be called to further modify package dependencies. + * + * This option is experimental. The default value is false. + */ + // "useWorkspaces": true + }, + /** + * Older releases of the Node.js engine may be missing features required by your system. + * Other releases may have bugs. In particular, the "latest" version will not be a + * Long Term Support (LTS) version and is likely to have regressions. + * + * Specify a SemVer range to ensure developers use a Node.js version that is appropriate + * for your repo. + * + * LTS schedule: https://nodejs.org/en/about/releases/ + * LTS versions: https://nodejs.org/en/download/releases/ + */ + "nodeSupportedVersionRange": ">=16.9.0 <17.0.0", + /** + * Odd-numbered major versions of Node.js are experimental. Even-numbered releases + * spend six months in a stabilization period before the first Long Term Support (LTS) version. + * For example, 8.9.0 was the first LTS version of Node.js 8. Pre-LTS versions are not recommended + * for production usage because they frequently have bugs. They may cause Rush itself + * to malfunction. + * + * Rush normally prints a warning if it detects a pre-LTS Node.js version. If you are testing + * pre-LTS versions in preparation for supporting the first LTS version, you can use this setting + * to disable Rush's warning. + */ + // "suppressNodeLtsWarning": false, + /** + * If you would like the version specifiers for your dependencies to be consistent, then + * uncomment this line. This is effectively similar to running "rush check" before any + * of the following commands: + * + * rush install, rush update, rush link, rush version, rush publish + * + * In some cases you may want this turned on, but need to allow certain packages to use a different + * version. In those cases, you will need to add an entry to the "allowedAlternativeVersions" + * section of the common-versions.json. + */ + // "ensureConsistentVersions": true, + /** + * Large monorepos can become intimidating for newcomers if project folder paths don't follow + * a consistent and recognizable pattern. When the system allows nested folder trees, + * we've found that teams will often use subfolders to create islands that isolate + * their work from others ("shipping the org"). This hinders collaboration and code sharing. + * + * The Rush developers recommend a "category folder" model, where buildable project folders + * must always be exactly two levels below the repo root. The parent folder acts as the category. + * This provides a basic facility for grouping related projects (e.g. "apps", "libraries", + * "tools", "prototypes") while still encouraging teams to organize their projects into + * a unified taxonomy. Limiting to 2 levels seems very restrictive at first, but if you have + * 20 categories and 20 projects in each category, this scheme can easily accommodate hundreds + * of projects. In practice, you will find that the folder hierarchy needs to be rebalanced + * occasionally, but if that's painful, it's a warning sign that your development style may + * discourage refactoring. Reorganizing the categories should be an enlightening discussion + * that brings people together, and maybe also identifies poor coding practices (e.g. file + * references that reach into other project's folders without using Node.js module resolution). + * + * The defaults are projectFolderMinDepth=1 and projectFolderMaxDepth=2. + * + * To remove these restrictions, you could set projectFolderMinDepth=1 + * and set projectFolderMaxDepth to a large number. + */ + // "projectFolderMinDepth": 2, + // "projectFolderMaxDepth": 2, + /** + * Today the npmjs.com registry enforces fairly strict naming rules for packages, but in the early + * days there was no standard and hardly any enforcement. A few large legacy projects are still using + * nonstandard package names, and private registries sometimes allow it. Set "allowMostlyStandardPackageNames" + * to true to relax Rush's enforcement of package names. This allows upper case letters and in the future may + * relax other rules, however we want to minimize these exceptions. Many popular tools use certain punctuation + * characters as delimiters, based on the assumption that they will never appear in a package name; thus if we relax + * the rules too much it is likely to cause very confusing malfunctions. + * + * The default value is false. + */ + // "allowMostlyStandardPackageNames": true, + /** + * This feature helps you to review and approve new packages before they are introduced + * to your monorepo. For example, you may be concerned about licensing, code quality, + * performance, or simply accumulating too many libraries with overlapping functionality. + * The approvals are tracked in two config files "browser-approved-packages.json" + * and "nonbrowser-approved-packages.json". See the Rush documentation for details. + */ + // "approvedPackagesPolicy": { + // /** + // * The review categories allow you to say for example "This library is approved for usage + // * in prototypes, but not in production code." + // * + // * Each project can be associated with one review category, by assigning the "reviewCategory" field + // * in the "projects" section of rush.json. The approval is then recorded in the files + // * "common/config/rush/browser-approved-packages.json" and "nonbrowser-approved-packages.json" + // * which are automatically generated during "rush update". + // * + // * Designate categories with whatever granularity is appropriate for your review process, + // * or you could just have a single category called "default". + // */ + // "reviewCategories": [ + // // Some example categories: + // "production", // projects that ship to production + // "tools", // non-shipping projects that are part of the developer toolchain + // "prototypes" // experiments that should mostly be ignored by the review process + // ], + // + // /** + // * A list of NPM package scopes that will be excluded from review. + // * We recommend to exclude TypeScript typings (the "@types" scope), because + // * if the underlying package was already approved, this would imply that the typings + // * are also approved. + // */ + // // "ignoredNpmScopes": ["@types"] + // }, + /** + * If you use Git as your version control system, this section has some additional + * optional features you can use. + */ + "gitPolicy": { + /** + * Work at a big company? Tired of finding Git commits at work with unprofessional Git + * emails such as "beer-lover@my-college.edu"? Rush can validate people's Git email address + * before they get started. + * + * Define a list of regular expressions describing allowable e-mail patterns for Git commits. + * They are case-insensitive anchored JavaScript RegExps. Example: ".*@example\.com" + * + * IMPORTANT: Because these are regular expressions encoded as JSON string literals, + * RegExp escapes need two backslashes, and ordinary periods should be "\\.". + */ + // "allowedEmailRegExps": [ + // "[^@]+@users\\.noreply\\.github\\.com", + // "travis@example\\.org" + // ], + /** + * When Rush reports that the address is malformed, the notice can include an example + * of a recommended email. Make sure it conforms to one of the allowedEmailRegExps + * expressions. + */ + // "sampleEmail": "mrexample@users.noreply.github.com", + /** + * The commit message to use when committing changes during 'rush publish'. + * + * For example, if you want to prevent these commits from triggering a CI build, + * you might configure your system's trigger to look for a special string such as "[skip-ci]" + * in the commit message, and then customize Rush's message to contain that string. + */ + "versionBumpCommitMessage": "chore: bump versions [skip ci]", + /** + * The commit message to use when committing changes during 'rush version'. + * + * For example, if you want to prevent these commits from triggering a CI build, + * you might configure your system's trigger to look for a special string such as "[skip-ci]" + * in the commit message, and then customize Rush's message to contain that string. + */ + "changeLogUpdateCommitMessage": "docs: update changelogs [skip ci]" + }, + "repository": { + /** + * The URL of this Git repository, used by "rush change" to determine the base branch for your PR. + * + * The "rush change" command needs to determine which files are affected by your PR diff. + * If you merged or cherry-picked commits from the master branch into your PR branch, those commits + * should be excluded from this diff (since they belong to some other PR). In order to do that, + * Rush needs to know where to find the base branch for your PR. This information cannot be + * determined from Git alone, since the "pull request" feature is not a Git concept. Ideally + * Rush would use a vendor-specific protocol to query the information from GitHub, Azure DevOps, etc. + * But to keep things simple, "rush change" simply assumes that your PR is against the "master" branch + * of the Git remote indicated by the repository.url setting in rush.json. If you are working in + * a GitHub "fork" of the real repo, this setting will be different from the repository URL of your + * your PR branch, and in this situation "rush change" will also automatically invoke "git fetch" + * to retrieve the latest activity for the remote master branch. + */ + /** TODO: CHANGE THIS **/ + "url": "https://github.com/microsoft/rush-example", + /** + * The default branch name. This tells "rush change" which remote branch to compare against. + * The default value is "master" + */ + "defaultBranch": "master", + /** + * The default remote. This tells "rush change" which remote to compare against if the remote URL is + * not set or if a remote matching the provided remote URL is not found. + */ + "defaultRemote": "origin" + }, + /** + * Event hooks are customized script actions that Rush executes when specific events occur + */ + "eventHooks": { + /** + * The list of shell commands to run before the Rush installation starts + */ + "preRushInstall": [ + // "common/scripts/pre-rush-install.js" + ], + /** + * The list of shell commands to run after the Rush installation finishes + */ + "postRushInstall": [], + /** + * The list of shell commands to run before the Rush build command starts + */ + "preRushBuild": [], + /** + * The list of shell commands to run after the Rush build command finishes + */ + "postRushBuild": [] + }, + /** + * Installation variants allow you to maintain a parallel set of configuration files that can be + * used to build the entire monorepo with an alternate set of dependencies. For example, suppose + * you upgrade all your projects to use a new release of an important framework, but during a transition period + * you intend to maintain compatibility with the old release. In this situation, you probably want your + * CI validation to build the entire repo twice: once with the old release, and once with the new release. + * + * Rush "installation variants" correspond to sets of config files located under this folder: + * + * common/config/rush/variants/<variant_name> + * + * The variant folder can contain an alternate common-versions.json file. Its "preferredVersions" field can be used + * to select older versions of dependencies (within a loose SemVer range specified in your package.json files). + * To install a variant, run "rush install --variant <variant_name>". + * + * For more details and instructions, see this article: https://rushjs.io/pages/advanced/installation_variants/ + */ + "variants": [ + // { + // /** + // * The folder name for this variant. + // */ + // "variantName": "old-sdk", + // + // /** + // * An informative description + // */ + // "description": "Build this repo using the previous release of the SDK" + // } + ], + /** + * Rush can collect anonymous telemetry about everyday developer activity such as + * success/failure of installs, builds, and other operations. You can use this to identify + * problems with your toolchain or Rush itself. THIS TELEMETRY IS NOT SHARED WITH MICROSOFT. + * It is written into JSON files in the common/temp folder. It's up to you to write scripts + * that read these JSON files and do something with them. These scripts are typically registered + * in the "eventHooks" section. + */ + // "telemetryEnabled": false, + /** + * Allows creation of hotfix changes. This feature is experimental so it is disabled by default. + * If this is set, 'rush change' only allows a 'hotfix' change type to be specified. This change type + * will be used when publishing subsequent changes from the monorepo. + */ + // "hotfixChangeEnabled": false, + /** + * (Required) This is the inventory of projects to be managed by Rush. + * + * Rush does not automatically scan for projects using wildcards, for a few reasons: + * 1. Depth-first scans are expensive, particularly when tools need to repeatedly collect the list. + * 2. On a caching CI machine, scans can accidentally pick up files left behind from a previous build. + * 3. It's useful to have a centralized inventory of all projects and their important metadata. + */ + "projects": [ + { + "packageName": "a", + "projectFolder": "packages/a" + }, + { + "packageName": "b", + "projectFolder": "packages/b" + } + // { + // /** + // * The NPM package name of the project (must match package.json) + // */ + // "packageName": "my-app", + // + // /** + // * The path to the project folder, relative to the rush.json config file. + // */ + // "projectFolder": "apps/my-app", + // + // /** + // * An optional category for usage in the "browser-approved-packages.json" + // * and "nonbrowser-approved-packages.json" files. The value must be one of the + // * strings from the "reviewCategories" defined above. + // */ + // "reviewCategory": "production", + // + // /** + // * A list of local projects that appear as devDependencies for this project, but cannot be + // * locally linked because it would create a cyclic dependency; instead, the last published + // * version will be installed in the Common folder. + // */ + // "cyclicDependencyProjects": [ + // // "my-toolchain" + // ], + // + // /** + // * If true, then this project will be ignored by the "rush check" command. + // * The default value is false. + // */ + // // "skipRushCheck": false, + // + // /** + // * A flag indicating that changes to this project will be published to npm, which affects + // * the Rush change and publish workflows. The default value is false. + // * NOTE: "versionPolicyName" and "shouldPublish" are alternatives; you cannot specify them both. + // */ + // // "shouldPublish": false, + // + // /** + // * Facilitates postprocessing of a project's files prior to publishing. + // * + // * If specified, the "publishFolder" is the relative path to a subfolder of the project folder. + // * The "rush publish" command will publish the subfolder instead of the project folder. The subfolder + // * must contain its own package.json file, which is typically a build output. + // */ + // // "publishFolder": "temp/publish", + // + // /** + // * An optional version policy associated with the project. Version policies are defined + // * in "version-policies.json" file. See the "rush publish" documentation for more info. + // * NOTE: "versionPolicyName" and "shouldPublish" are alternatives; you cannot specify them both. + // */ + // // "versionPolicyName": "" + // }, + // + // { + // "packageName": "my-controls", + // "projectFolder": "libraries/my-controls", + // "reviewCategory": "production" + // }, + // + // { + // "packageName": "my-toolchain", + // "projectFolder": "tools/my-toolchain", + // "reviewCategory": "tools" + // } + ] +} diff --git a/@commitlint/config-rush-scopes/fixtures/empty/rush.json b/@commitlint/config-rush-scopes/fixtures/empty/rush.json new file mode 100644 index 0000000000..af249b513b --- /dev/null +++ b/@commitlint/config-rush-scopes/fixtures/empty/rush.json @@ -0,0 +1,433 @@ +/** + * This is the main configuration file for Rush. + * For full documentation, please see https://rushjs.io + */ + { + "$schema": "https://developer.microsoft.com/json-schemas/rush/v5/rush.schema.json", + /** + * (Required) This specifies the version of the Rush engine to be used in this repo. + * Rush's "version selector" feature ensures that the globally installed tool will + * behave like this release, regardless of which version is installed globally. + * + * The common/scripts/install-run-rush.js automation script also uses this version. + * + * NOTE: If you upgrade to a new major version of Rush, you should replace the "v5" + * path segment in the "$schema" field for all your Rush config files. This will ensure + * correct error-underlining and tab-completion for editors such as VS Code. + */ + "rushVersion": "5.56.0", + /** + * The next field selects which package manager should be installed and determines its version. + * Rush installs its own local copy of the package manager to ensure that your build process + * is fully isolated from whatever tools are present in the local environment. + * + * Specify one of: "pnpmVersion", "npmVersion", or "yarnVersion". See the Rush documentation + * for details about these alternatives. + */ + "pnpmVersion": "6.20.3", + // "npmVersion": "6.14.15", + // "yarnVersion": "1.9.4", + /** + * Options that are only used when the PNPM package manager is selected + */ + "pnpmOptions": { + /** + * Specifies the location of the PNPM store. There are two possible values: + * + * - "local" - use the "pnpm-store" folder in the current configured temp folder: + * "common/temp/pnpm-store" by default. + * - "global" - use PNPM's global store, which has the benefit of being shared + * across multiple repo folders, but the disadvantage of less isolation for builds + * (e.g. bugs or incompatibilities when two repos use different releases of PNPM) + * + * RUSH_PNPM_STORE_PATH will override the directory that will be used as the store + * + * In all cases, the store path will be overridden by the environment variable RUSH_PNPM_STORE_PATH. + * + * The default value is "local". + */ + // "pnpmStore": "local", + /** + * If true, then Rush will add the "--strict-peer-dependencies" option when invoking PNPM. + * This causes "rush install" to fail if there are unsatisfied peer dependencies, which is + * an invalid state that can cause build failures or incompatible dependency versions. + * (For historical reasons, JavaScript package managers generally do not treat this invalid + * state as an error.) + * + * The default value is false to avoid legacy compatibility issues. + * It is strongly recommended to set strictPeerDependencies=true. + */ + // "strictPeerDependencies": true, + /** + * Configures the strategy used to select versions during installation. + * + * This feature requires PNPM version 3.1 or newer. It corresponds to the "--resolution-strategy" command-line + * option for PNPM. Possible values are "fast" and "fewer-dependencies". PNPM's default is "fast", but this may + * be incompatible with certain packages, for example the "@types" packages from DefinitelyTyped. Rush's default + * is "fewer-dependencies", which causes PNPM to avoid installing a newer version if an already installed version + * can be reused; this is more similar to NPM's algorithm. + * + * After modifying this field, it's recommended to run "rush update --full" so that the package manager + * will recalculate all version selections. + */ + // "resolutionStrategy": "fast", + /** + * If true, then `rush install` will report an error if manual modifications + * were made to the PNPM shrinkwrap file without running "rush update" afterwards. + * + * This feature protects against accidental inconsistencies that may be introduced + * if the PNPM shrinkwrap file ("pnpm-lock.yaml") is manually edited. When this + * feature is enabled, "rush update" will append a hash to the file as a YAML comment, + * and then "rush update" and "rush install" will validate the hash. Note that this does not prohibit + * manual modifications, but merely requires "rush update" be run + * afterwards, ensuring that PNPM can report or repair any potential inconsistencies. + * + * To temporarily disable this validation when invoking "rush install", use the + * "--bypass-policy" command-line parameter. + * + * The default value is false. + */ + // "preventManualShrinkwrapChanges": true, + /** + * If true, then `rush install` will use the PNPM workspaces feature to perform the + * install. + * + * This feature uses PNPM to perform the entire monorepo install. When using workspaces, Rush will + * generate a "pnpm-workspace.yaml" file referencing all local projects to install. Rush will + * also generate a "pnpmfile.js" which is used to provide preferred versions support. When install + * is run, this pnpmfile will be used to replace dependency version ranges with a smaller subset + * of the original range. If the preferred version is not fully a subset of the original version + * range, it will be left as-is. After this, the pnpmfile.js provided in the repository (if one + * exists) will be called to further modify package dependencies. + * + * This option is experimental. The default value is false. + */ + // "useWorkspaces": true + }, + /** + * Older releases of the Node.js engine may be missing features required by your system. + * Other releases may have bugs. In particular, the "latest" version will not be a + * Long Term Support (LTS) version and is likely to have regressions. + * + * Specify a SemVer range to ensure developers use a Node.js version that is appropriate + * for your repo. + * + * LTS schedule: https://nodejs.org/en/about/releases/ + * LTS versions: https://nodejs.org/en/download/releases/ + */ + "nodeSupportedVersionRange": ">=16.9.0 <17.0.0", + /** + * Odd-numbered major versions of Node.js are experimental. Even-numbered releases + * spend six months in a stabilization period before the first Long Term Support (LTS) version. + * For example, 8.9.0 was the first LTS version of Node.js 8. Pre-LTS versions are not recommended + * for production usage because they frequently have bugs. They may cause Rush itself + * to malfunction. + * + * Rush normally prints a warning if it detects a pre-LTS Node.js version. If you are testing + * pre-LTS versions in preparation for supporting the first LTS version, you can use this setting + * to disable Rush's warning. + */ + // "suppressNodeLtsWarning": false, + /** + * If you would like the version specifiers for your dependencies to be consistent, then + * uncomment this line. This is effectively similar to running "rush check" before any + * of the following commands: + * + * rush install, rush update, rush link, rush version, rush publish + * + * In some cases you may want this turned on, but need to allow certain packages to use a different + * version. In those cases, you will need to add an entry to the "allowedAlternativeVersions" + * section of the common-versions.json. + */ + // "ensureConsistentVersions": true, + /** + * Large monorepos can become intimidating for newcomers if project folder paths don't follow + * a consistent and recognizable pattern. When the system allows nested folder trees, + * we've found that teams will often use subfolders to create islands that isolate + * their work from others ("shipping the org"). This hinders collaboration and code sharing. + * + * The Rush developers recommend a "category folder" model, where buildable project folders + * must always be exactly two levels below the repo root. The parent folder acts as the category. + * This provides a basic facility for grouping related projects (e.g. "apps", "libraries", + * "tools", "prototypes") while still encouraging teams to organize their projects into + * a unified taxonomy. Limiting to 2 levels seems very restrictive at first, but if you have + * 20 categories and 20 projects in each category, this scheme can easily accommodate hundreds + * of projects. In practice, you will find that the folder hierarchy needs to be rebalanced + * occasionally, but if that's painful, it's a warning sign that your development style may + * discourage refactoring. Reorganizing the categories should be an enlightening discussion + * that brings people together, and maybe also identifies poor coding practices (e.g. file + * references that reach into other project's folders without using Node.js module resolution). + * + * The defaults are projectFolderMinDepth=1 and projectFolderMaxDepth=2. + * + * To remove these restrictions, you could set projectFolderMinDepth=1 + * and set projectFolderMaxDepth to a large number. + */ + // "projectFolderMinDepth": 2, + // "projectFolderMaxDepth": 2, + /** + * Today the npmjs.com registry enforces fairly strict naming rules for packages, but in the early + * days there was no standard and hardly any enforcement. A few large legacy projects are still using + * nonstandard package names, and private registries sometimes allow it. Set "allowMostlyStandardPackageNames" + * to true to relax Rush's enforcement of package names. This allows upper case letters and in the future may + * relax other rules, however we want to minimize these exceptions. Many popular tools use certain punctuation + * characters as delimiters, based on the assumption that they will never appear in a package name; thus if we relax + * the rules too much it is likely to cause very confusing malfunctions. + * + * The default value is false. + */ + // "allowMostlyStandardPackageNames": true, + /** + * This feature helps you to review and approve new packages before they are introduced + * to your monorepo. For example, you may be concerned about licensing, code quality, + * performance, or simply accumulating too many libraries with overlapping functionality. + * The approvals are tracked in two config files "browser-approved-packages.json" + * and "nonbrowser-approved-packages.json". See the Rush documentation for details. + */ + // "approvedPackagesPolicy": { + // /** + // * The review categories allow you to say for example "This library is approved for usage + // * in prototypes, but not in production code." + // * + // * Each project can be associated with one review category, by assigning the "reviewCategory" field + // * in the "projects" section of rush.json. The approval is then recorded in the files + // * "common/config/rush/browser-approved-packages.json" and "nonbrowser-approved-packages.json" + // * which are automatically generated during "rush update". + // * + // * Designate categories with whatever granularity is appropriate for your review process, + // * or you could just have a single category called "default". + // */ + // "reviewCategories": [ + // // Some example categories: + // "production", // projects that ship to production + // "tools", // non-shipping projects that are part of the developer toolchain + // "prototypes" // experiments that should mostly be ignored by the review process + // ], + // + // /** + // * A list of NPM package scopes that will be excluded from review. + // * We recommend to exclude TypeScript typings (the "@types" scope), because + // * if the underlying package was already approved, this would imply that the typings + // * are also approved. + // */ + // // "ignoredNpmScopes": ["@types"] + // }, + /** + * If you use Git as your version control system, this section has some additional + * optional features you can use. + */ + "gitPolicy": { + /** + * Work at a big company? Tired of finding Git commits at work with unprofessional Git + * emails such as "beer-lover@my-college.edu"? Rush can validate people's Git email address + * before they get started. + * + * Define a list of regular expressions describing allowable e-mail patterns for Git commits. + * They are case-insensitive anchored JavaScript RegExps. Example: ".*@example\.com" + * + * IMPORTANT: Because these are regular expressions encoded as JSON string literals, + * RegExp escapes need two backslashes, and ordinary periods should be "\\.". + */ + // "allowedEmailRegExps": [ + // "[^@]+@users\\.noreply\\.github\\.com", + // "travis@example\\.org" + // ], + /** + * When Rush reports that the address is malformed, the notice can include an example + * of a recommended email. Make sure it conforms to one of the allowedEmailRegExps + * expressions. + */ + // "sampleEmail": "mrexample@users.noreply.github.com", + /** + * The commit message to use when committing changes during 'rush publish'. + * + * For example, if you want to prevent these commits from triggering a CI build, + * you might configure your system's trigger to look for a special string such as "[skip-ci]" + * in the commit message, and then customize Rush's message to contain that string. + */ + "versionBumpCommitMessage": "chore: bump versions [skip ci]", + /** + * The commit message to use when committing changes during 'rush version'. + * + * For example, if you want to prevent these commits from triggering a CI build, + * you might configure your system's trigger to look for a special string such as "[skip-ci]" + * in the commit message, and then customize Rush's message to contain that string. + */ + "changeLogUpdateCommitMessage": "docs: update changelogs [skip ci]" + }, + "repository": { + /** + * The URL of this Git repository, used by "rush change" to determine the base branch for your PR. + * + * The "rush change" command needs to determine which files are affected by your PR diff. + * If you merged or cherry-picked commits from the master branch into your PR branch, those commits + * should be excluded from this diff (since they belong to some other PR). In order to do that, + * Rush needs to know where to find the base branch for your PR. This information cannot be + * determined from Git alone, since the "pull request" feature is not a Git concept. Ideally + * Rush would use a vendor-specific protocol to query the information from GitHub, Azure DevOps, etc. + * But to keep things simple, "rush change" simply assumes that your PR is against the "master" branch + * of the Git remote indicated by the repository.url setting in rush.json. If you are working in + * a GitHub "fork" of the real repo, this setting will be different from the repository URL of your + * your PR branch, and in this situation "rush change" will also automatically invoke "git fetch" + * to retrieve the latest activity for the remote master branch. + */ + /** TODO: CHANGE THIS **/ + "url": "https://github.com/microsoft/rush-example", + /** + * The default branch name. This tells "rush change" which remote branch to compare against. + * The default value is "master" + */ + "defaultBranch": "master", + /** + * The default remote. This tells "rush change" which remote to compare against if the remote URL is + * not set or if a remote matching the provided remote URL is not found. + */ + "defaultRemote": "origin" + }, + /** + * Event hooks are customized script actions that Rush executes when specific events occur + */ + "eventHooks": { + /** + * The list of shell commands to run before the Rush installation starts + */ + "preRushInstall": [ + // "common/scripts/pre-rush-install.js" + ], + /** + * The list of shell commands to run after the Rush installation finishes + */ + "postRushInstall": [], + /** + * The list of shell commands to run before the Rush build command starts + */ + "preRushBuild": [], + /** + * The list of shell commands to run after the Rush build command finishes + */ + "postRushBuild": [] + }, + /** + * Installation variants allow you to maintain a parallel set of configuration files that can be + * used to build the entire monorepo with an alternate set of dependencies. For example, suppose + * you upgrade all your projects to use a new release of an important framework, but during a transition period + * you intend to maintain compatibility with the old release. In this situation, you probably want your + * CI validation to build the entire repo twice: once with the old release, and once with the new release. + * + * Rush "installation variants" correspond to sets of config files located under this folder: + * + * common/config/rush/variants/<variant_name> + * + * The variant folder can contain an alternate common-versions.json file. Its "preferredVersions" field can be used + * to select older versions of dependencies (within a loose SemVer range specified in your package.json files). + * To install a variant, run "rush install --variant <variant_name>". + * + * For more details and instructions, see this article: https://rushjs.io/pages/advanced/installation_variants/ + */ + "variants": [ + // { + // /** + // * The folder name for this variant. + // */ + // "variantName": "old-sdk", + // + // /** + // * An informative description + // */ + // "description": "Build this repo using the previous release of the SDK" + // } + ], + /** + * Rush can collect anonymous telemetry about everyday developer activity such as + * success/failure of installs, builds, and other operations. You can use this to identify + * problems with your toolchain or Rush itself. THIS TELEMETRY IS NOT SHARED WITH MICROSOFT. + * It is written into JSON files in the common/temp folder. It's up to you to write scripts + * that read these JSON files and do something with them. These scripts are typically registered + * in the "eventHooks" section. + */ + // "telemetryEnabled": false, + /** + * Allows creation of hotfix changes. This feature is experimental so it is disabled by default. + * If this is set, 'rush change' only allows a 'hotfix' change type to be specified. This change type + * will be used when publishing subsequent changes from the monorepo. + */ + // "hotfixChangeEnabled": false, + /** + * (Required) This is the inventory of projects to be managed by Rush. + * + * Rush does not automatically scan for projects using wildcards, for a few reasons: + * 1. Depth-first scans are expensive, particularly when tools need to repeatedly collect the list. + * 2. On a caching CI machine, scans can accidentally pick up files left behind from a previous build. + * 3. It's useful to have a centralized inventory of all projects and their important metadata. + */ + "projects": [ + // { + // /** + // * The NPM package name of the project (must match package.json) + // */ + // "packageName": "my-app", + // + // /** + // * The path to the project folder, relative to the rush.json config file. + // */ + // "projectFolder": "apps/my-app", + // + // /** + // * An optional category for usage in the "browser-approved-packages.json" + // * and "nonbrowser-approved-packages.json" files. The value must be one of the + // * strings from the "reviewCategories" defined above. + // */ + // "reviewCategory": "production", + // + // /** + // * A list of local projects that appear as devDependencies for this project, but cannot be + // * locally linked because it would create a cyclic dependency; instead, the last published + // * version will be installed in the Common folder. + // */ + // "cyclicDependencyProjects": [ + // // "my-toolchain" + // ], + // + // /** + // * If true, then this project will be ignored by the "rush check" command. + // * The default value is false. + // */ + // // "skipRushCheck": false, + // + // /** + // * A flag indicating that changes to this project will be published to npm, which affects + // * the Rush change and publish workflows. The default value is false. + // * NOTE: "versionPolicyName" and "shouldPublish" are alternatives; you cannot specify them both. + // */ + // // "shouldPublish": false, + // + // /** + // * Facilitates postprocessing of a project's files prior to publishing. + // * + // * If specified, the "publishFolder" is the relative path to a subfolder of the project folder. + // * The "rush publish" command will publish the subfolder instead of the project folder. The subfolder + // * must contain its own package.json file, which is typically a build output. + // */ + // // "publishFolder": "temp/publish", + // + // /** + // * An optional version policy associated with the project. Version policies are defined + // * in "version-policies.json" file. See the "rush publish" documentation for more info. + // * NOTE: "versionPolicyName" and "shouldPublish" are alternatives; you cannot specify them both. + // */ + // // "versionPolicyName": "" + // }, + // + // { + // "packageName": "my-controls", + // "projectFolder": "libraries/my-controls", + // "reviewCategory": "production" + // }, + // + // { + // "packageName": "my-toolchain", + // "projectFolder": "tools/my-toolchain", + // "reviewCategory": "tools" + // } + ] +} diff --git a/@commitlint/config-lerna-scopes/fixtures/yarn/@packages/a/package.json b/@commitlint/config-rush-scopes/fixtures/scoped/@packages/a/package.json similarity index 100% rename from @commitlint/config-lerna-scopes/fixtures/yarn/@packages/a/package.json rename to @commitlint/config-rush-scopes/fixtures/scoped/@packages/a/package.json diff --git a/@commitlint/config-lerna-scopes/fixtures/yarn/@packages/b/package.json b/@commitlint/config-rush-scopes/fixtures/scoped/@packages/b/package.json similarity index 100% rename from @commitlint/config-lerna-scopes/fixtures/yarn/@packages/b/package.json rename to @commitlint/config-rush-scopes/fixtures/scoped/@packages/b/package.json diff --git a/@commitlint/config-rush-scopes/fixtures/scoped/rush.json b/@commitlint/config-rush-scopes/fixtures/scoped/rush.json new file mode 100644 index 0000000000..fd49ec1d07 --- /dev/null +++ b/@commitlint/config-rush-scopes/fixtures/scoped/rush.json @@ -0,0 +1,441 @@ +/** + * This is the main configuration file for Rush. + * For full documentation, please see https://rushjs.io + */ + { + "$schema": "https://developer.microsoft.com/json-schemas/rush/v5/rush.schema.json", + /** + * (Required) This specifies the version of the Rush engine to be used in this repo. + * Rush's "version selector" feature ensures that the globally installed tool will + * behave like this release, regardless of which version is installed globally. + * + * The common/scripts/install-run-rush.js automation script also uses this version. + * + * NOTE: If you upgrade to a new major version of Rush, you should replace the "v5" + * path segment in the "$schema" field for all your Rush config files. This will ensure + * correct error-underlining and tab-completion for editors such as VS Code. + */ + "rushVersion": "5.56.0", + /** + * The next field selects which package manager should be installed and determines its version. + * Rush installs its own local copy of the package manager to ensure that your build process + * is fully isolated from whatever tools are present in the local environment. + * + * Specify one of: "pnpmVersion", "npmVersion", or "yarnVersion". See the Rush documentation + * for details about these alternatives. + */ + "pnpmVersion": "6.20.3", + // "npmVersion": "6.14.15", + // "yarnVersion": "1.9.4", + /** + * Options that are only used when the PNPM package manager is selected + */ + "pnpmOptions": { + /** + * Specifies the location of the PNPM store. There are two possible values: + * + * - "local" - use the "pnpm-store" folder in the current configured temp folder: + * "common/temp/pnpm-store" by default. + * - "global" - use PNPM's global store, which has the benefit of being shared + * across multiple repo folders, but the disadvantage of less isolation for builds + * (e.g. bugs or incompatibilities when two repos use different releases of PNPM) + * + * RUSH_PNPM_STORE_PATH will override the directory that will be used as the store + * + * In all cases, the store path will be overridden by the environment variable RUSH_PNPM_STORE_PATH. + * + * The default value is "local". + */ + // "pnpmStore": "local", + /** + * If true, then Rush will add the "--strict-peer-dependencies" option when invoking PNPM. + * This causes "rush install" to fail if there are unsatisfied peer dependencies, which is + * an invalid state that can cause build failures or incompatible dependency versions. + * (For historical reasons, JavaScript package managers generally do not treat this invalid + * state as an error.) + * + * The default value is false to avoid legacy compatibility issues. + * It is strongly recommended to set strictPeerDependencies=true. + */ + // "strictPeerDependencies": true, + /** + * Configures the strategy used to select versions during installation. + * + * This feature requires PNPM version 3.1 or newer. It corresponds to the "--resolution-strategy" command-line + * option for PNPM. Possible values are "fast" and "fewer-dependencies". PNPM's default is "fast", but this may + * be incompatible with certain packages, for example the "@types" packages from DefinitelyTyped. Rush's default + * is "fewer-dependencies", which causes PNPM to avoid installing a newer version if an already installed version + * can be reused; this is more similar to NPM's algorithm. + * + * After modifying this field, it's recommended to run "rush update --full" so that the package manager + * will recalculate all version selections. + */ + // "resolutionStrategy": "fast", + /** + * If true, then `rush install` will report an error if manual modifications + * were made to the PNPM shrinkwrap file without running "rush update" afterwards. + * + * This feature protects against accidental inconsistencies that may be introduced + * if the PNPM shrinkwrap file ("pnpm-lock.yaml") is manually edited. When this + * feature is enabled, "rush update" will append a hash to the file as a YAML comment, + * and then "rush update" and "rush install" will validate the hash. Note that this does not prohibit + * manual modifications, but merely requires "rush update" be run + * afterwards, ensuring that PNPM can report or repair any potential inconsistencies. + * + * To temporarily disable this validation when invoking "rush install", use the + * "--bypass-policy" command-line parameter. + * + * The default value is false. + */ + // "preventManualShrinkwrapChanges": true, + /** + * If true, then `rush install` will use the PNPM workspaces feature to perform the + * install. + * + * This feature uses PNPM to perform the entire monorepo install. When using workspaces, Rush will + * generate a "pnpm-workspace.yaml" file referencing all local projects to install. Rush will + * also generate a "pnpmfile.js" which is used to provide preferred versions support. When install + * is run, this pnpmfile will be used to replace dependency version ranges with a smaller subset + * of the original range. If the preferred version is not fully a subset of the original version + * range, it will be left as-is. After this, the pnpmfile.js provided in the repository (if one + * exists) will be called to further modify package dependencies. + * + * This option is experimental. The default value is false. + */ + // "useWorkspaces": true + }, + /** + * Older releases of the Node.js engine may be missing features required by your system. + * Other releases may have bugs. In particular, the "latest" version will not be a + * Long Term Support (LTS) version and is likely to have regressions. + * + * Specify a SemVer range to ensure developers use a Node.js version that is appropriate + * for your repo. + * + * LTS schedule: https://nodejs.org/en/about/releases/ + * LTS versions: https://nodejs.org/en/download/releases/ + */ + "nodeSupportedVersionRange": ">=16.9.0 <17.0.0", + /** + * Odd-numbered major versions of Node.js are experimental. Even-numbered releases + * spend six months in a stabilization period before the first Long Term Support (LTS) version. + * For example, 8.9.0 was the first LTS version of Node.js 8. Pre-LTS versions are not recommended + * for production usage because they frequently have bugs. They may cause Rush itself + * to malfunction. + * + * Rush normally prints a warning if it detects a pre-LTS Node.js version. If you are testing + * pre-LTS versions in preparation for supporting the first LTS version, you can use this setting + * to disable Rush's warning. + */ + // "suppressNodeLtsWarning": false, + /** + * If you would like the version specifiers for your dependencies to be consistent, then + * uncomment this line. This is effectively similar to running "rush check" before any + * of the following commands: + * + * rush install, rush update, rush link, rush version, rush publish + * + * In some cases you may want this turned on, but need to allow certain packages to use a different + * version. In those cases, you will need to add an entry to the "allowedAlternativeVersions" + * section of the common-versions.json. + */ + // "ensureConsistentVersions": true, + /** + * Large monorepos can become intimidating for newcomers if project folder paths don't follow + * a consistent and recognizable pattern. When the system allows nested folder trees, + * we've found that teams will often use subfolders to create islands that isolate + * their work from others ("shipping the org"). This hinders collaboration and code sharing. + * + * The Rush developers recommend a "category folder" model, where buildable project folders + * must always be exactly two levels below the repo root. The parent folder acts as the category. + * This provides a basic facility for grouping related projects (e.g. "apps", "libraries", + * "tools", "prototypes") while still encouraging teams to organize their projects into + * a unified taxonomy. Limiting to 2 levels seems very restrictive at first, but if you have + * 20 categories and 20 projects in each category, this scheme can easily accommodate hundreds + * of projects. In practice, you will find that the folder hierarchy needs to be rebalanced + * occasionally, but if that's painful, it's a warning sign that your development style may + * discourage refactoring. Reorganizing the categories should be an enlightening discussion + * that brings people together, and maybe also identifies poor coding practices (e.g. file + * references that reach into other project's folders without using Node.js module resolution). + * + * The defaults are projectFolderMinDepth=1 and projectFolderMaxDepth=2. + * + * To remove these restrictions, you could set projectFolderMinDepth=1 + * and set projectFolderMaxDepth to a large number. + */ + // "projectFolderMinDepth": 2, + // "projectFolderMaxDepth": 2, + /** + * Today the npmjs.com registry enforces fairly strict naming rules for packages, but in the early + * days there was no standard and hardly any enforcement. A few large legacy projects are still using + * nonstandard package names, and private registries sometimes allow it. Set "allowMostlyStandardPackageNames" + * to true to relax Rush's enforcement of package names. This allows upper case letters and in the future may + * relax other rules, however we want to minimize these exceptions. Many popular tools use certain punctuation + * characters as delimiters, based on the assumption that they will never appear in a package name; thus if we relax + * the rules too much it is likely to cause very confusing malfunctions. + * + * The default value is false. + */ + // "allowMostlyStandardPackageNames": true, + /** + * This feature helps you to review and approve new packages before they are introduced + * to your monorepo. For example, you may be concerned about licensing, code quality, + * performance, or simply accumulating too many libraries with overlapping functionality. + * The approvals are tracked in two config files "browser-approved-packages.json" + * and "nonbrowser-approved-packages.json". See the Rush documentation for details. + */ + // "approvedPackagesPolicy": { + // /** + // * The review categories allow you to say for example "This library is approved for usage + // * in prototypes, but not in production code." + // * + // * Each project can be associated with one review category, by assigning the "reviewCategory" field + // * in the "projects" section of rush.json. The approval is then recorded in the files + // * "common/config/rush/browser-approved-packages.json" and "nonbrowser-approved-packages.json" + // * which are automatically generated during "rush update". + // * + // * Designate categories with whatever granularity is appropriate for your review process, + // * or you could just have a single category called "default". + // */ + // "reviewCategories": [ + // // Some example categories: + // "production", // projects that ship to production + // "tools", // non-shipping projects that are part of the developer toolchain + // "prototypes" // experiments that should mostly be ignored by the review process + // ], + // + // /** + // * A list of NPM package scopes that will be excluded from review. + // * We recommend to exclude TypeScript typings (the "@types" scope), because + // * if the underlying package was already approved, this would imply that the typings + // * are also approved. + // */ + // // "ignoredNpmScopes": ["@types"] + // }, + /** + * If you use Git as your version control system, this section has some additional + * optional features you can use. + */ + "gitPolicy": { + /** + * Work at a big company? Tired of finding Git commits at work with unprofessional Git + * emails such as "beer-lover@my-college.edu"? Rush can validate people's Git email address + * before they get started. + * + * Define a list of regular expressions describing allowable e-mail patterns for Git commits. + * They are case-insensitive anchored JavaScript RegExps. Example: ".*@example\.com" + * + * IMPORTANT: Because these are regular expressions encoded as JSON string literals, + * RegExp escapes need two backslashes, and ordinary periods should be "\\.". + */ + // "allowedEmailRegExps": [ + // "[^@]+@users\\.noreply\\.github\\.com", + // "travis@example\\.org" + // ], + /** + * When Rush reports that the address is malformed, the notice can include an example + * of a recommended email. Make sure it conforms to one of the allowedEmailRegExps + * expressions. + */ + // "sampleEmail": "mrexample@users.noreply.github.com", + /** + * The commit message to use when committing changes during 'rush publish'. + * + * For example, if you want to prevent these commits from triggering a CI build, + * you might configure your system's trigger to look for a special string such as "[skip-ci]" + * in the commit message, and then customize Rush's message to contain that string. + */ + "versionBumpCommitMessage": "chore: bump versions [skip ci]", + /** + * The commit message to use when committing changes during 'rush version'. + * + * For example, if you want to prevent these commits from triggering a CI build, + * you might configure your system's trigger to look for a special string such as "[skip-ci]" + * in the commit message, and then customize Rush's message to contain that string. + */ + "changeLogUpdateCommitMessage": "docs: update changelogs [skip ci]" + }, + "repository": { + /** + * The URL of this Git repository, used by "rush change" to determine the base branch for your PR. + * + * The "rush change" command needs to determine which files are affected by your PR diff. + * If you merged or cherry-picked commits from the master branch into your PR branch, those commits + * should be excluded from this diff (since they belong to some other PR). In order to do that, + * Rush needs to know where to find the base branch for your PR. This information cannot be + * determined from Git alone, since the "pull request" feature is not a Git concept. Ideally + * Rush would use a vendor-specific protocol to query the information from GitHub, Azure DevOps, etc. + * But to keep things simple, "rush change" simply assumes that your PR is against the "master" branch + * of the Git remote indicated by the repository.url setting in rush.json. If you are working in + * a GitHub "fork" of the real repo, this setting will be different from the repository URL of your + * your PR branch, and in this situation "rush change" will also automatically invoke "git fetch" + * to retrieve the latest activity for the remote master branch. + */ + /** TODO: CHANGE THIS **/ + "url": "https://github.com/microsoft/rush-example", + /** + * The default branch name. This tells "rush change" which remote branch to compare against. + * The default value is "master" + */ + "defaultBranch": "master", + /** + * The default remote. This tells "rush change" which remote to compare against if the remote URL is + * not set or if a remote matching the provided remote URL is not found. + */ + "defaultRemote": "origin" + }, + /** + * Event hooks are customized script actions that Rush executes when specific events occur + */ + "eventHooks": { + /** + * The list of shell commands to run before the Rush installation starts + */ + "preRushInstall": [ + // "common/scripts/pre-rush-install.js" + ], + /** + * The list of shell commands to run after the Rush installation finishes + */ + "postRushInstall": [], + /** + * The list of shell commands to run before the Rush build command starts + */ + "preRushBuild": [], + /** + * The list of shell commands to run after the Rush build command finishes + */ + "postRushBuild": [] + }, + /** + * Installation variants allow you to maintain a parallel set of configuration files that can be + * used to build the entire monorepo with an alternate set of dependencies. For example, suppose + * you upgrade all your projects to use a new release of an important framework, but during a transition period + * you intend to maintain compatibility with the old release. In this situation, you probably want your + * CI validation to build the entire repo twice: once with the old release, and once with the new release. + * + * Rush "installation variants" correspond to sets of config files located under this folder: + * + * common/config/rush/variants/<variant_name> + * + * The variant folder can contain an alternate common-versions.json file. Its "preferredVersions" field can be used + * to select older versions of dependencies (within a loose SemVer range specified in your package.json files). + * To install a variant, run "rush install --variant <variant_name>". + * + * For more details and instructions, see this article: https://rushjs.io/pages/advanced/installation_variants/ + */ + "variants": [ + // { + // /** + // * The folder name for this variant. + // */ + // "variantName": "old-sdk", + // + // /** + // * An informative description + // */ + // "description": "Build this repo using the previous release of the SDK" + // } + ], + /** + * Rush can collect anonymous telemetry about everyday developer activity such as + * success/failure of installs, builds, and other operations. You can use this to identify + * problems with your toolchain or Rush itself. THIS TELEMETRY IS NOT SHARED WITH MICROSOFT. + * It is written into JSON files in the common/temp folder. It's up to you to write scripts + * that read these JSON files and do something with them. These scripts are typically registered + * in the "eventHooks" section. + */ + // "telemetryEnabled": false, + /** + * Allows creation of hotfix changes. This feature is experimental so it is disabled by default. + * If this is set, 'rush change' only allows a 'hotfix' change type to be specified. This change type + * will be used when publishing subsequent changes from the monorepo. + */ + // "hotfixChangeEnabled": false, + /** + * (Required) This is the inventory of projects to be managed by Rush. + * + * Rush does not automatically scan for projects using wildcards, for a few reasons: + * 1. Depth-first scans are expensive, particularly when tools need to repeatedly collect the list. + * 2. On a caching CI machine, scans can accidentally pick up files left behind from a previous build. + * 3. It's useful to have a centralized inventory of all projects and their important metadata. + */ + "projects": [ + { + "packageName": "@packages/a", + "projectFolder": "@packages/a" + }, + { + "packageName": "@packages/b", + "projectFolder": "@packages/b" + } + // { + // /** + // * The NPM package name of the project (must match package.json) + // */ + // "packageName": "my-app", + // + // /** + // * The path to the project folder, relative to the rush.json config file. + // */ + // "projectFolder": "apps/my-app", + // + // /** + // * An optional category for usage in the "browser-approved-packages.json" + // * and "nonbrowser-approved-packages.json" files. The value must be one of the + // * strings from the "reviewCategories" defined above. + // */ + // "reviewCategory": "production", + // + // /** + // * A list of local projects that appear as devDependencies for this project, but cannot be + // * locally linked because it would create a cyclic dependency; instead, the last published + // * version will be installed in the Common folder. + // */ + // "cyclicDependencyProjects": [ + // // "my-toolchain" + // ], + // + // /** + // * If true, then this project will be ignored by the "rush check" command. + // * The default value is false. + // */ + // // "skipRushCheck": false, + // + // /** + // * A flag indicating that changes to this project will be published to npm, which affects + // * the Rush change and publish workflows. The default value is false. + // * NOTE: "versionPolicyName" and "shouldPublish" are alternatives; you cannot specify them both. + // */ + // // "shouldPublish": false, + // + // /** + // * Facilitates postprocessing of a project's files prior to publishing. + // * + // * If specified, the "publishFolder" is the relative path to a subfolder of the project folder. + // * The "rush publish" command will publish the subfolder instead of the project folder. The subfolder + // * must contain its own package.json file, which is typically a build output. + // */ + // // "publishFolder": "temp/publish", + // + // /** + // * An optional version policy associated with the project. Version policies are defined + // * in "version-policies.json" file. See the "rush publish" documentation for more info. + // * NOTE: "versionPolicyName" and "shouldPublish" are alternatives; you cannot specify them both. + // */ + // // "versionPolicyName": "" + // }, + // + // { + // "packageName": "my-controls", + // "projectFolder": "libraries/my-controls", + // "reviewCategory": "production" + // }, + // + // { + // "packageName": "my-toolchain", + // "projectFolder": "tools/my-toolchain", + // "reviewCategory": "tools" + // } + ] +} diff --git a/@commitlint/config-rush-scopes/index.js b/@commitlint/config-rush-scopes/index.js new file mode 100644 index 0000000000..07fc2e1d07 --- /dev/null +++ b/@commitlint/config-rush-scopes/index.js @@ -0,0 +1,32 @@ +import Path from "node:path"; +import fs from "fs/promises"; + +import jsonc from "jsonc"; + +export default { + utils: { getPackages }, + rules: { + "scope-enum": (ctx) => + getPackages(ctx).then((packages) => [2, "always", packages]), + }, +}; + +function getPackages(context) { + return Promise.resolve() + .then(() => { + const ctx = context || {}; + const cwd = ctx.cwd || process.cwd(); + + return fs + .readFile(Path.join(cwd, "rush.json"), { encoding: "utf8" }) + .then((content) => jsonc.parse(content)) + .then(({ projects }) => projects) + .catch(() => []); + }) + .then((packages) => { + return packages + .map((pkg) => pkg.packageName) + .filter(Boolean) + .map((name) => (name.charAt(0) === "@" ? name.split("/")[1] : name)); + }); +} diff --git a/@commitlint/config-rush-scopes/index.test.js b/@commitlint/config-rush-scopes/index.test.js new file mode 100644 index 0000000000..a5ce89033e --- /dev/null +++ b/@commitlint/config-rush-scopes/index.test.js @@ -0,0 +1,76 @@ +import { test, expect } from "vitest"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +import { npm } from "@commitlint/test"; + +import config from "./index.js"; + +const __dirname = path.resolve(fileURLToPath(import.meta.url), ".."); + +test("exports rules key", () => { + expect(config).toHaveProperty("rules"); +}); + +test("rules hold object", () => { + expect(config).toMatchObject({ + rules: expect.any(Object), + }); +}); + +test("rules contain scope-enum", () => { + expect(config).toMatchObject({ + rules: { + "scope-enum": expect.anything(), + }, + }); +}); + +test("scope-enum is function", () => { + expect(config).toMatchObject({ + rules: { + "scope-enum": expect.any(Function), + }, + }); +}); + +test("scope-enum does not throw for missing context", async () => { + const { "scope-enum": fn } = config.rules; + await expect(fn()).resolves.toBeTruthy(); +}); + +test("scope-enum has expected severity", async () => { + const { "scope-enum": fn } = config.rules; + const [severity] = await fn(); + expect(severity).toBe(2); +}); + +test("scope-enum has expected modifier", async () => { + const { "scope-enum": fn } = config.rules; + const [, modifier] = await fn(); + expect(modifier).toBe("always"); +}); + +test("returns empty value for empty rush repository", async () => { + const { "scope-enum": fn } = config.rules; + const cwd = await npm.bootstrap("fixtures/empty", __dirname); + const [, , value] = await fn({ cwd }); + expect(value).toEqual([]); +}); + +test("returns expected value for basic rush repository", async () => { + const { "scope-enum": fn } = config.rules; + const cwd = await npm.bootstrap("fixtures/basic", __dirname); + + const [, , value] = await fn({ cwd }); + expect(value).toEqual(["a", "b"]); +}); + +test("returns expected value for scoped lerna repository", async () => { + const { "scope-enum": fn } = config.rules; + const cwd = await npm.bootstrap("fixtures/scoped", __dirname); + + const [, , value] = await fn({ cwd }); + + expect(value).toEqual(["a", "b"]); +}); diff --git a/@commitlint/config-rush-scopes/license.md b/@commitlint/config-rush-scopes/license.md new file mode 100644 index 0000000000..9f7de65293 --- /dev/null +++ b/@commitlint/config-rush-scopes/license.md @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2016 - present Mario Nebl + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/@commitlint/config-rush-scopes/package.json b/@commitlint/config-rush-scopes/package.json new file mode 100644 index 0000000000..cf0b0136f8 --- /dev/null +++ b/@commitlint/config-rush-scopes/package.json @@ -0,0 +1,45 @@ +{ + "name": "@commitlint/config-rush-scopes", + "type": "module", + "version": "20.0.0", + "description": "Shareable commitlint config enforcing rush package and workspace names as scopes", + "main": "index.js", + "files": [ + "index.js" + ], + "scripts": { + "deps": "dep-check", + "pkg": "pkg-check" + }, + "repository": { + "type": "git", + "url": "https://github.com/conventional-changelog/commitlint.git", + "directory": "@commitlint/config-rush-scopes" + }, + "keywords": [ + "conventional-changelog", + "commitlint", + "commitlint-config", + "rush" + ], + "author": { + "name": "Alexander Vyzhanov", + "email": "lembdev@gmail.com" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/conventional-changelog/commitlint/issues" + }, + "homepage": "https://commitlint.js.org/", + "engines": { + "node": ">=v18" + }, + "dependencies": { + "jsonc": "^2.0.0" + }, + "devDependencies": { + "@commitlint/test": "^20.0.0", + "@commitlint/utils": "^20.0.0" + }, + "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" +} diff --git a/@commitlint/config-rush-scopes/readme.md b/@commitlint/config-rush-scopes/readme.md new file mode 100644 index 0000000000..505b681720 --- /dev/null +++ b/@commitlint/config-rush-scopes/readme.md @@ -0,0 +1,44 @@ +# @commitlint/config-rush-scopes + +Lint your rush project commits + +Shareable `commitlint` config enforcing rush package and workspace names as scopes. +Use with [@commitlint/cli](../cli) and [@commitlint/prompt-cli](../prompt-cli). + +## Getting started + +```sh +npm install --save-dev @commitlint/config-rush-scopes @commitlint/cli +echo "export default {extends: ['@commitlint/config-rush-scopes']};" > commitlint.config.js +``` + +## Examples + +```text +❯ cat commitlint.config.js +{ + extends: ['@commitlint/config-rush-scopes'] +} + +❯ tree packages + +packages +├── api +├── app +└── web + +❯ echo "build(api): change something in api's build" | commitlint +⧗ input: build(api): change something in api's build +✔ found 0 problems, 0 warnings + +❯ echo "test(foo): this won't pass" | commitlint +⧗ input: test(foo): this won't pass +✖ scope must be one of [api, app, web] [scope-enum] +✖ found 1 problems, 0 warnings + +❯ echo "ci: do some general maintenance" | commitlint +⧗ input: ci: do some general maintenance +✔ found 0 problems, 0 warnings +``` + +Consult [Rules reference](https://commitlint.js.org/reference/rules) for a list of available rules. diff --git a/@commitlint/config-validator/CHANGELOG.md b/@commitlint/config-validator/CHANGELOG.md new file mode 100644 index 0000000000..070307d41e --- /dev/null +++ b/@commitlint/config-validator/CHANGELOG.md @@ -0,0 +1,260 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + +**Note:** Version bump only for package @commitlint/config-validator + + + + + +## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) + +**Note:** Version bump only for package @commitlint/config-validator + + + + + +# [19.8.0](https://github.com/conventional-changelog/commitlint/compare/v19.7.1...v19.8.0) (2025-03-07) + + +### Performance Improvements + +* use `node:` prefix to bypass require.cache call for builtins ([#4302](https://github.com/conventional-changelog/commitlint/issues/4302)) ([0cd8f41](https://github.com/conventional-changelog/commitlint/commit/0cd8f410573fe11383f788b1ceb7e0946143591d)) + + + + + +# [19.5.0](https://github.com/conventional-changelog/commitlint/compare/v19.4.1...v19.5.0) (2024-09-11) + +**Note:** Version bump only for package @commitlint/config-validator + + + + + +## [19.0.3](https://github.com/conventional-changelog/commitlint/compare/v19.0.2...v19.0.3) (2024-02-28) + +**Note:** Version bump only for package @commitlint/config-validator + + + + + +# [19.0.0](https://github.com/conventional-changelog/commitlint/compare/v18.6.2...v19.0.0) (2024-02-27) + + +* feat!: migrate to pure ESM (#3850) ([3423735](https://github.com/conventional-changelog/commitlint/commit/342373559bdf7c783c4ef37ff05dc38a5f681159)), closes [#3850](https://github.com/conventional-changelog/commitlint/issues/3850) + + +### Reverts + +* Revert "chore!: minimum node version v20" ([2816783](https://github.com/conventional-changelog/commitlint/commit/2816783d00e7eb967de3ac9347c2fc43dc8b94fa)) + + +### BREAKING CHANGES + +* migrate to pure ESM + +* feat: migrate to pure ESM + +* chore: update snapshot + +* fix: load `parserPreset` with another `await` + +* test: migrate to vitest + +* test: remove no replacement `--runInBand` test-ci script + +* chore: fix code reviews + +* refactor(load): rewrite resolve logic + +* fix(config-nx-scopes): fix syntax error + +* feat(resolve-extends): add resolveFrom and loadParserPreset + +* feat(load): use resolveFrom and loadParserPreset from resolve-extends + +* test: include only @commitlint/* packages src in coverage + +* test: explicit import vitest utilities + +* test: remove @jest/globals from dependencies + +* fix(resolve-extends): `resolveFrom` output should be platform aware + +* test: restore NO_COLOR to test script + +* chore: fix linting issues + +* fix: should use fileURLToPath instead of pathname for Windows compatibility + +* Apply suggestions from code review + +* fix: should reuse `cli` instead call `yargs()` + +* feat(cli): set terminalWidth as wrap to avoid work break on help + +* Update .eslintrc.cjs + +* feat: migrate @commitlint/config-conventional to pure ESM + + + + + +## [18.6.1](https://github.com/conventional-changelog/commitlint/compare/v18.6.0...v18.6.1) (2024-02-13) + +**Note:** Version bump only for package @commitlint/config-validator + + + + + +# [18.6.0](https://github.com/conventional-changelog/commitlint/compare/v18.5.1...v18.6.0) (2024-01-25) + +**Note:** Version bump only for package @commitlint/config-validator + + + + + +# [18.5.0](https://github.com/conventional-changelog/commitlint/compare/v18.4.4...v18.5.0) (2024-01-22) + +**Note:** Version bump only for package @commitlint/config-validator + + + + + +## [18.4.4](https://github.com/conventional-changelog/commitlint/compare/v18.4.3...v18.4.4) (2024-01-04) + +**Note:** Version bump only for package @commitlint/config-validator + + + + + +## [18.4.3](https://github.com/conventional-changelog/commitlint/compare/v18.4.2...v18.4.3) (2023-11-21) + +**Note:** Version bump only for package @commitlint/config-validator + + + + + +# [18.4.0](https://github.com/conventional-changelog/commitlint/compare/v18.3.0...v18.4.0) (2023-11-10) + +**Note:** Version bump only for package @commitlint/config-validator + + + + + +# [18.1.0](https://github.com/conventional-changelog/commitlint/compare/v18.0.0...v18.1.0) (2023-10-25) + +**Note:** Version bump only for package @commitlint/config-validator + + + + + +# [18.0.0](https://github.com/conventional-changelog/commitlint/compare/v17.8.1...v18.0.0) (2023-10-20) + + +* chore!: minimum node version v18 (#3644) ([5b4aeaf](https://github.com/conventional-changelog/commitlint/commit/5b4aeaf4f01c2726a7bc8631a23bb34c849baad2)), closes [#3644](https://github.com/conventional-changelog/commitlint/issues/3644) + + +### BREAKING CHANGES + +* drop node v14 and v16 support + +* chore: remove unused types + +* docs: prepare node update and new release + +* chore!: minimum TS version v5 +* drop TS v4 support + +* ci: remove node v14/16 checks + +* chore: adjust node types to minimal supported version + +* chore!: further major versions of other deps +* upgrade conventional-changelog-conventionalcommits, conventional-commits-parser, conventional-changelog-atom, + +* docs: simplify releases and remove roadmap + + + + + +## [17.8.1](https://github.com/conventional-changelog/commitlint/compare/v17.8.0...v17.8.1) (2023-10-20) + +**Note:** Version bump only for package @commitlint/config-validator + + + + + +## [17.6.7](https://github.com/conventional-changelog/commitlint/compare/v17.6.6...v17.6.7) (2023-07-19) + +**Note:** Version bump only for package @commitlint/config-validator + + + + + +## [17.4.4](https://github.com/conventional-changelog/commitlint/compare/v17.4.3...v17.4.4) (2023-02-17) + +**Note:** Version bump only for package @commitlint/config-validator + + + + + +# [17.4.0](https://github.com/conventional-changelog/commitlint/compare/v17.3.0...v17.4.0) (2023-01-04) + +**Note:** Version bump only for package @commitlint/config-validator + +# [17.1.0](https://github.com/conventional-changelog/commitlint/compare/v17.0.3...v17.1.0) (2022-08-27) + +**Note:** Version bump only for package @commitlint/config-validator + +## [17.0.3](https://github.com/conventional-changelog/commitlint/compare/v17.0.2...v17.0.3) (2022-06-25) + +**Note:** Version bump only for package @commitlint/config-validator + +# [17.0.0](https://github.com/conventional-changelog/commitlint/compare/v16.3.0...v17.0.0) (2022-05-16) + +- chore!: minimum node version v14 (#3128) ([ac5f9b4](https://github.com/conventional-changelog/commitlint/commit/ac5f9b47a9e3cd5c9d58b14da0feb426f06b1ef9)), closes [#3128](https://github.com/conventional-changelog/commitlint/issues/3128) + +### BREAKING CHANGES + +- drop node v12 support + +- chore: rename circleci windows job + +node version is not defned by the name anyways (i think) + +## [16.2.1](https://github.com/conventional-changelog/commitlint/compare/v16.2.0...v16.2.1) (2022-02-13) + +**Note:** Version bump only for package @commitlint/config-validator + +# [16.1.0](https://github.com/conventional-changelog/commitlint/compare/v16.0.3...v16.1.0) (2022-01-20) + +### Features + +- **load:** accept functions as parser presets ([#2982](https://github.com/conventional-changelog/commitlint/issues/2982)) ([420e8d6](https://github.com/conventional-changelog/commitlint/commit/420e8d6a4d5663ade953272275a9e0fa7c5ddff0)), closes [#2964](https://github.com/conventional-changelog/commitlint/issues/2964) [#2964](https://github.com/conventional-changelog/commitlint/issues/2964) + +# [16.0.0](https://github.com/conventional-changelog/commitlint/compare/v15.0.0...v16.0.0) (2021-12-26) + +### Features + +- config validation ([#2412](https://github.com/conventional-changelog/commitlint/issues/2412)) ([c717202](https://github.com/conventional-changelog/commitlint/commit/c7172022097b11f46b33617e4a94d751243c1049)), closes [#327](https://github.com/conventional-changelog/commitlint/issues/327) diff --git a/@commitlint/config-validator/package.json b/@commitlint/config-validator/package.json new file mode 100644 index 0000000000..567436d46c --- /dev/null +++ b/@commitlint/config-validator/package.json @@ -0,0 +1,46 @@ +{ + "name": "@commitlint/config-validator", + "type": "module", + "version": "20.0.0", + "description": "config validator for commitlint.config.js", + "main": "lib/validate.js", + "types": "lib/validate.d.ts", + "files": [ + "lib/" + ], + "scripts": { + "deps": "dep-check", + "pkg": "pkg-check --skip-import" + }, + "engines": { + "node": ">=v18" + }, + "repository": { + "type": "git", + "url": "https://github.com/conventional-changelog/commitlint.git", + "directory": "@commitlint/config-validator" + }, + "bugs": { + "url": "https://github.com/conventional-changelog/commitlint/issues" + }, + "homepage": "https://commitlint.js.org/", + "keywords": [ + "conventional-changelog", + "commitlint", + "library", + "core" + ], + "author": { + "name": "Mario Nebl", + "email": "hello@herebecode.com" + }, + "license": "MIT", + "devDependencies": { + "@commitlint/utils": "^20.0.0" + }, + "dependencies": { + "@commitlint/types": "^20.0.0", + "ajv": "^8.11.0" + }, + "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" +} diff --git a/@commitlint/config-validator/src/__snapshots__/validate.test.ts.snap b/@commitlint/config-validator/src/__snapshots__/validate.test.ts.snap new file mode 100644 index 0000000000..5e8ec1505b --- /dev/null +++ b/@commitlint/config-validator/src/__snapshots__/validate.test.ts.snap @@ -0,0 +1,135 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`validation should fail for > defaultIgnoresNotBoolean 1`] = ` +[Error: Commitlint configuration in defaultIgnoresNotBoolean.js is invalid: + - Property "defaultIgnores" has the wrong type - must be boolean. +] +`; + +exports[`validation should fail for > extendsAsObject 1`] = ` +[Error: Commitlint configuration in extendsAsObject.js is invalid: + - Property "extends" has the wrong type - must be array. + - Property "extends" has the wrong type - must be string. + - "/extends" must match exactly one schema in oneOf. Value: {"test":1}. +] +`; + +exports[`validation should fail for > extendsWithFunction 1`] = ` +[Error: Commitlint configuration in extendsWithFunction.js is invalid: + - Property "extends/0" has the wrong type - must be string. + - Property "extends" has the wrong type - must be string. + - "/extends" must match exactly one schema in oneOf. Value: [null]. +] +`; + +exports[`validation should fail for > formatterAsObject 1`] = ` +[Error: Commitlint configuration in formatterAsObject.js is invalid: + - Property "formatter" has the wrong type - must be string. +] +`; + +exports[`validation should fail for > helpUrlAsArray 1`] = ` +[Error: Commitlint configuration in helpUrlAsArray.js is invalid: + - Property "helpUrl" has the wrong type - must be string. +] +`; + +exports[`validation should fail for > helpUrlNotString 1`] = ` +[Error: Commitlint configuration in helpUrlNotString.js is invalid: + - Property "helpUrl" has the wrong type - must be string. +] +`; + +exports[`validation should fail for > ignoresFunction 1`] = ` +[Error: Commitlint configuration in ignoresFunction.js is invalid: + - Property "ignores" has the wrong type - must be array. +] +`; + +exports[`validation should fail for > ignoresNotFunction 1`] = ` +[Error: Commitlint configuration in ignoresNotFunction.js is invalid: + - "/ignores/0" should be a function. Value: 1. +] +`; + +exports[`validation should fail for > parserPreset 1`] = ` +[Error: Commitlint configuration in parserPreset.js is invalid: + - Property "parserPreset" has the wrong type - must be string. + - Property "parserPreset" has the wrong type - must be object. + - "/parserPreset" should be a function. Value: []. + - "/parserPreset" must match exactly one schema in oneOf. Value: []. +] +`; + +exports[`validation should fail for > pluginsNotArray 1`] = ` +[Error: Commitlint configuration in pluginsNotArray.js is invalid: + - Property "plugins" has the wrong type - must be array. +] +`; + +exports[`validation should fail for > rules1 1`] = ` +[Error: Commitlint configuration in rules1.js is invalid: + - "/rules/a/0" must be equal to one of the allowed values. Value: 3. + - "/rules/a" should be a function. Value: [3]. + - "/rules/a" must match exactly one schema in oneOf. Value: [3]. +] +`; + +exports[`validation should fail for > rules2 1`] = ` +[Error: Commitlint configuration in rules2.js is invalid: + - "/rules/b" must NOT have more than 3 items. Value: [1,"test",2,2]. + - "/rules/b" should be a function. Value: [1,"test",2,2]. + - "/rules/b" must match exactly one schema in oneOf. Value: [1,"test",2,2]. +] +`; + +exports[`validation should fail for > rules3 1`] = ` +[Error: Commitlint configuration in rules3.js is invalid: + - "/rules/c" must NOT have fewer than 1 items. Value: []. + - "/rules/c" should be a function. Value: []. + - "/rules/c" must match exactly one schema in oneOf. Value: []. +] +`; + +exports[`validation should fail for > rules4 1`] = ` +[Error: Commitlint configuration in rules4.js is invalid: + - Property "rules/d/0" has the wrong type - must be number. + - "/rules/d/0" must be equal to one of the allowed values. Value: []. + - "/rules/d" should be a function. Value: [[],[],[]]. + - "/rules/d" must match exactly one schema in oneOf. Value: [[],[],[]]. +] +`; + +exports[`validation should fail for > rules5 1`] = ` +[Error: Commitlint configuration in rules5.js is invalid: + - Property "rules/e" has the wrong type - must be array. + - "/rules/e" should be a function. Value: {}. + - "/rules/e" must match exactly one schema in oneOf. Value: {}. +] +`; + +exports[`validation should fail for > rulesAsArray 1`] = ` +[Error: Commitlint configuration in rulesAsArray.js is invalid: + - Property "rules" has the wrong type - must be object. +] +`; + +exports[`validation should fail for > whenConfigIsNotObject 1`] = ` +[Error: Commitlint configuration in whenConfigIsNotObject.js is invalid: + - Config has the wrong type - must be object. +] +`; + +exports[`validation should fail for > whenConfigIsNotObject2 1`] = ` +[Error: Commitlint configuration in whenConfigIsNotObject2.js is invalid: + - Config has the wrong type - must be object. +] +`; + +exports[`validation should fail for > withPluginsAsObject 1`] = ` +[Error: Commitlint configuration in withPluginsAsObject.js is invalid: + - Property "plugins/0" has the wrong type - must be string. + - "/plugins/0" must have required property 'rules'. Value: {}. + - "/plugins/0" must match a schema in anyOf. Value: {}. +] +`; diff --git a/@commitlint/config-validator/src/commitlint.schema.json b/@commitlint/config-validator/src/commitlint.schema.json new file mode 100644 index 0000000000..2c6d2075a9 --- /dev/null +++ b/@commitlint/config-validator/src/commitlint.schema.json @@ -0,0 +1,105 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema", + "type": "object", + "definitions": { + "rule": { + "oneOf": [ + { + "description": "A rule", + "type": "array", + "items": [ + { + "description": "Level: 0 disables the rule. For 1 it will be considered a warning, for 2 an error", + "type": "number", + "enum": [0, 1, 2] + }, + { + "description": "Applicable: always|never: never inverts the rule", + "type": "string", + "enum": ["always", "never"] + }, + { + "description": "Value: the value for this rule" + } + ], + "minItems": 1, + "maxItems": 3, + "additionalItems": false + }, + { + "description": "A rule", + "typeof": "function" + } + ] + } + }, + "properties": { + "extends": { + "description": "Resolveable ids to commitlint configurations to extend", + "oneOf": [ + { + "type": "array", + "items": { "type": "string" } + }, + { "type": "string" } + ] + }, + "parserPreset": { + "description": "Resolveable id to conventional-changelog parser preset to import and use", + "oneOf": [ + { "type": "string" }, + { + "type": "object", + "properties": { + "name": { "type": "string" }, + "path": { "type": "string" }, + "parserOpts": {} + }, + "additionalProperties": true + }, + { "typeof": "function" } + ] + }, + "helpUrl": { + "description": "Custom URL to show upon failure", + "type": "string" + }, + "formatter": { + "description": "Resolveable id to package, from node_modules, which formats the output", + "type": "string" + }, + "rules": { + "description": "Rules to check against", + "type": "object", + "propertyNames": { "type": "string" }, + "additionalProperties": { "$ref": "#/definitions/rule" } + }, + "plugins": { + "description": "Resolveable ids of commitlint plugins from node_modules", + "type": "array", + "items": { + "anyOf": [ + { "type": "string" }, + { + "type": "object", + "required": ["rules"], + "properties": { + "rules": { + "type": "object" + } + } + } + ] + } + }, + "ignores": { + "type": "array", + "items": { "typeof": "function" }, + "description": "Additional commits to ignore, defined by ignore matchers" + }, + "defaultIgnores": { + "description": "Whether commitlint uses the default ignore rules", + "type": "boolean" + } + } +} diff --git a/@commitlint/config-validator/src/formatErrors.ts b/@commitlint/config-validator/src/formatErrors.ts new file mode 100644 index 0000000000..1021c92eb8 --- /dev/null +++ b/@commitlint/config-validator/src/formatErrors.ts @@ -0,0 +1,45 @@ +import type { ErrorObject } from "ajv"; + +/** + * Formats an array of schema validation errors. + * @param errors An array of error messages to format. + * @returns Formatted error message + * Based on https://github.com/eslint/eslint/blob/master/lib/shared/config-validator.js#L237-L261 + */ +export function formatErrors(errors: ErrorObject[]): string { + return errors + .map((error) => { + if ( + error.keyword === "additionalProperties" && + "additionalProperty" in error.params + ) { + const formattedPropertyPath = error.instancePath.length + ? `${error.instancePath.slice(1)}.${error.params.additionalProperty}` + : error.params.additionalProperty; + + return `Unexpected top-level property "${formattedPropertyPath}"`; + } + if (error.keyword === "type") { + const formattedField = error.instancePath.slice(1); + if (!formattedField) { + return `Config has the wrong type - ${error.message}`; + } + return `Property "${formattedField}" has the wrong type - ${error.message}`; + } + const field = + (error.instancePath[0] === "." + ? error.instancePath.slice(1) + : error.instancePath) || "Config"; + if (error.keyword === "typeof") { + return `"${field}" should be a ${error.schema}. Value: ${JSON.stringify( + error.data, + )}`; + } + + return `"${field}" ${error.message}. Value: ${JSON.stringify( + error.data, + )}`; + }) + .map((message) => `\t- ${message}.\n`) + .join(""); +} diff --git a/@commitlint/config-validator/src/validate.test.ts b/@commitlint/config-validator/src/validate.test.ts new file mode 100644 index 0000000000..1a3c402c4b --- /dev/null +++ b/@commitlint/config-validator/src/validate.test.ts @@ -0,0 +1,75 @@ +import { describe, test, expect } from "vitest"; +import { RuleConfigSeverity, UserConfig } from "@commitlint/types"; + +import { validateConfig } from "./validate.js"; + +const validSchemas: Record<string, UserConfig> = { + empty: {}, + withEmptyExtends: { extends: [] }, + withStringExtends: { extends: "test" }, + withSingleExtends: { extends: ["test"] }, + withMultipleExtends: { extends: ["test", "test2"] }, + withFormatter: { formatter: "" }, + withHelpUrl: { helpUrl: "" }, + withRules: { + rules: { + a: [RuleConfigSeverity.Disabled], + b: [RuleConfigSeverity.Warning, "never"], + c: [RuleConfigSeverity.Error, "never", true], + }, + }, + withParserPresetString: { parserPreset: "test" }, + withParserPresetObject: { parserPreset: {} }, + withParserPresetObject2: { parserPreset: { name: "string", path: "string" } }, + withParserPresetObjectPromise: { + parserPreset: Promise.resolve({ name: "string" }), + }, + withParserPresetOpts: { parserPreset: { parserOpts: { test: 1 } } }, + withParserPresetOptsPromise: { + parserPreset: { parserOpts: Promise.resolve({ test: 1 }) }, + }, + withEmptyIgnores: { ignores: [] }, + withIgnores: { ignores: [() => true] }, + withDefaultIgnoresTrue: { defaultIgnores: true }, + withDefaultIgnoresFalse: { defaultIgnores: false }, + withEmptyPlugins: { plugins: [] }, + withPluginsAsString: { plugins: ["test"] }, + withPluginsAsObject: { plugins: [{ rules: {} }] }, + shouldSkipAllowAdditionalProperties: { foo: 1 }, +}; + +const invalidSchemas: Record<string, any> = { + whenConfigIsNotObject: [], + whenConfigIsNotObject2: "", + extendsAsObject: { extends: { test: 1 } }, + extendsWithFunction: { extends: [() => true] }, + formatterAsObject: { formatter: {} }, + helpUrlAsArray: { helpUrl: [] }, + rulesAsArray: { rules: ["a"] }, + rules1: { rules: { a: [3] } }, + rules2: { rules: { b: [1, "test", 2, 2] } }, + rules3: { rules: { c: [] } }, + rules4: { rules: { d: [[], [], []] } }, + rules5: { rules: { e: {} } }, + parserPreset: { parserPreset: [] }, + ignoresFunction: { ignores: () => true }, + ignoresNotFunction: { ignores: [1] }, + defaultIgnoresNotBoolean: { defaultIgnores: "true" }, + pluginsNotArray: { plugins: "test" }, + withPluginsAsObject: { plugins: [{}] }, + helpUrlNotString: { helpUrl: {} }, +}; + +describe("validation should pass for", () => { + test.each(Object.entries(validSchemas))("%s", (file, config) => { + expect(() => validateConfig(`${file}.js`, config)).not.toThrow(); + }); +}); + +describe("validation should fail for", () => { + test.each(Object.entries(invalidSchemas))("%s", (file, config) => { + expect(() => + validateConfig(`${file}.js`, config), + ).toThrowErrorMatchingSnapshot(); + }); +}); diff --git a/@commitlint/config-validator/src/validate.ts b/@commitlint/config-validator/src/validate.ts new file mode 100644 index 0000000000..d4c28a2c7a --- /dev/null +++ b/@commitlint/config-validator/src/validate.ts @@ -0,0 +1,56 @@ +import { createRequire } from "node:module"; + +import { UserConfig } from "@commitlint/types"; +import _Ajv from "ajv"; + +import { formatErrors } from "./formatErrors.js"; + +const require = createRequire(import.meta.url); + +const schema: typeof import("./commitlint.schema.json") = require("./commitlint.schema.json"); + +const TYPE_OF = [ + "undefined", + "string", + "number", + "object", + "function", + "boolean", + "symbol", +]; + +// FIXME: https://github.com/ajv-validator/ajv/issues/2132 +const Ajv = _Ajv as unknown as typeof _Ajv.default; + +export function validateConfig( + source: string, + config: unknown, +): asserts config is UserConfig { + const ajv = new Ajv({ + meta: false, + strict: false, + useDefaults: true, + validateSchema: false, + verbose: true, + }); + + ajv.addKeyword({ + keyword: "typeof", + validate: function typeOfFunc(schema: any, data: any) { + return typeof data === schema; + }, + metaSchema: { type: "string", enum: TYPE_OF }, + schema: true, + }); + + const validate = ajv.compile(schema); + const isValid = validate(config); + + if (!isValid && validate.errors && validate.errors.length) { + throw new Error( + `Commitlint configuration in ${source} is invalid:\n${formatErrors( + validate.errors, + )}`, + ); + } +} diff --git a/@commitlint/config-validator/tsconfig.json b/@commitlint/config-validator/tsconfig.json new file mode 100644 index 0000000000..5ef37ea5e3 --- /dev/null +++ b/@commitlint/config-validator/tsconfig.json @@ -0,0 +1,11 @@ +{ + "extends": "../../tsconfig.shared.json", + "compilerOptions": { + "composite": true, + "rootDir": "./src", + "outDir": "./lib" + }, + "include": ["./src/**/*.ts", "./src/**/*.json"], + "exclude": ["./src/**/*.test.ts", "./lib/**/*"], + "references": [{ "path": "../types" }] +} diff --git a/@commitlint/config-workspace-scopes/CHANGELOG.md b/@commitlint/config-workspace-scopes/CHANGELOG.md new file mode 100644 index 0000000000..3635a1164f --- /dev/null +++ b/@commitlint/config-workspace-scopes/CHANGELOG.md @@ -0,0 +1,37 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + +**Note:** Version bump only for package @commitlint/config-workspace-scopes + + + + + +## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) + +**Note:** Version bump only for package @commitlint/config-workspace-scopes + + + + + +# [19.8.0](https://github.com/conventional-changelog/commitlint/compare/v19.7.1...v19.8.0) (2025-03-07) + + +### Bug Fixes + +* **config-lerna-scopes:** remove deprecated @lerna/project dependency ([#4284](https://github.com/conventional-changelog/commitlint/issues/4284)) ([f2f78f1](https://github.com/conventional-changelog/commitlint/commit/f2f78f105a32d040d8eb7e340f59a1d50fad9ac0)) + + +### Features + +* **config-workspace-scopes:** add config preset for npm and yarn workspaces ([#4269](https://github.com/conventional-changelog/commitlint/issues/4269)) ([67ff9e8](https://github.com/conventional-changelog/commitlint/commit/67ff9e82c10898757052df1d4233566b0b2cb433)) + + +### Performance Improvements + +* use `node:` prefix to bypass require.cache call for builtins ([#4302](https://github.com/conventional-changelog/commitlint/issues/4302)) ([0cd8f41](https://github.com/conventional-changelog/commitlint/commit/0cd8f410573fe11383f788b1ceb7e0946143591d)) diff --git a/@commitlint/config-workspace-scopes/fixtures/basic/@packages/a/package.json b/@commitlint/config-workspace-scopes/fixtures/basic/@packages/a/package.json new file mode 100644 index 0000000000..7ba283037e --- /dev/null +++ b/@commitlint/config-workspace-scopes/fixtures/basic/@packages/a/package.json @@ -0,0 +1,4 @@ +{ + "name": "@packages/a", + "version": "1.0.0" +} diff --git a/@commitlint/config-workspace-scopes/fixtures/basic/@packages/b/package.json b/@commitlint/config-workspace-scopes/fixtures/basic/@packages/b/package.json new file mode 100644 index 0000000000..3fd2cf7616 --- /dev/null +++ b/@commitlint/config-workspace-scopes/fixtures/basic/@packages/b/package.json @@ -0,0 +1,4 @@ +{ + "name": "@packages/b", + "version": "1.0.0" +} diff --git a/@commitlint/config-lerna-scopes/fixtures/yarn/package.json b/@commitlint/config-workspace-scopes/fixtures/basic/package.json similarity index 62% rename from @commitlint/config-lerna-scopes/fixtures/yarn/package.json rename to @commitlint/config-workspace-scopes/fixtures/basic/package.json index 40f5ac83a8..1a28bd53f8 100644 --- a/@commitlint/config-lerna-scopes/fixtures/yarn/package.json +++ b/@commitlint/config-workspace-scopes/fixtures/basic/package.json @@ -1,9 +1,6 @@ { "name": "yarn", "version": "1.0.0", - "devDependencies": { - "lerna": "^4.0.0" - }, "workspaces": [ "@packages/*" ] diff --git a/@commitlint/config-workspace-scopes/fixtures/empty/package.json b/@commitlint/config-workspace-scopes/fixtures/empty/package.json new file mode 100644 index 0000000000..a0d311fba7 --- /dev/null +++ b/@commitlint/config-workspace-scopes/fixtures/empty/package.json @@ -0,0 +1,4 @@ +{ + "name": "empty", + "version": "1.0.0" +} diff --git a/@commitlint/config-workspace-scopes/fixtures/nested-workspaces/@packages/a/nested-a/package.json b/@commitlint/config-workspace-scopes/fixtures/nested-workspaces/@packages/a/nested-a/package.json new file mode 100644 index 0000000000..d22626edd3 --- /dev/null +++ b/@commitlint/config-workspace-scopes/fixtures/nested-workspaces/@packages/a/nested-a/package.json @@ -0,0 +1,4 @@ +{ + "name": "@packages/nested-a", + "version": "1.0.0" +} diff --git a/@commitlint/config-workspace-scopes/fixtures/nested-workspaces/@packages/b/nested-b/package.json b/@commitlint/config-workspace-scopes/fixtures/nested-workspaces/@packages/b/nested-b/package.json new file mode 100644 index 0000000000..a2006192a7 --- /dev/null +++ b/@commitlint/config-workspace-scopes/fixtures/nested-workspaces/@packages/b/nested-b/package.json @@ -0,0 +1,4 @@ +{ + "name": "@packages/nested-b", + "version": "1.0.0" +} diff --git a/@commitlint/config-workspace-scopes/fixtures/nested-workspaces/package.json b/@commitlint/config-workspace-scopes/fixtures/nested-workspaces/package.json new file mode 100644 index 0000000000..21e671fb54 --- /dev/null +++ b/@commitlint/config-workspace-scopes/fixtures/nested-workspaces/package.json @@ -0,0 +1,7 @@ +{ + "name": "nested-workspaces", + "version": "1.0.0", + "workspaces": [ + "@packages/**" + ] +} diff --git a/@commitlint/config-workspace-scopes/fixtures/scoped/@packages/a/package.json b/@commitlint/config-workspace-scopes/fixtures/scoped/@packages/a/package.json new file mode 100644 index 0000000000..7ba283037e --- /dev/null +++ b/@commitlint/config-workspace-scopes/fixtures/scoped/@packages/a/package.json @@ -0,0 +1,4 @@ +{ + "name": "@packages/a", + "version": "1.0.0" +} diff --git a/@commitlint/config-workspace-scopes/fixtures/scoped/@packages/b/package.json b/@commitlint/config-workspace-scopes/fixtures/scoped/@packages/b/package.json new file mode 100644 index 0000000000..3fd2cf7616 --- /dev/null +++ b/@commitlint/config-workspace-scopes/fixtures/scoped/@packages/b/package.json @@ -0,0 +1,4 @@ +{ + "name": "@packages/b", + "version": "1.0.0" +} diff --git a/@commitlint/config-lerna-scopes/fixtures/lerna-two/lerna.json b/@commitlint/config-workspace-scopes/fixtures/scoped/lerna.json similarity index 58% rename from @commitlint/config-lerna-scopes/fixtures/lerna-two/lerna.json rename to @commitlint/config-workspace-scopes/fixtures/scoped/lerna.json index 41c31e2033..8e0ca65b2e 100644 --- a/@commitlint/config-lerna-scopes/fixtures/lerna-two/lerna.json +++ b/@commitlint/config-workspace-scopes/fixtures/scoped/lerna.json @@ -1,5 +1,5 @@ { "lerna": "4", "version": "1.0.0", - "packages": ["packages/*"] + "packages": ["@packages/*"] } diff --git a/@commitlint/config-workspace-scopes/fixtures/scoped/package.json b/@commitlint/config-workspace-scopes/fixtures/scoped/package.json new file mode 100644 index 0000000000..2d12e9469c --- /dev/null +++ b/@commitlint/config-workspace-scopes/fixtures/scoped/package.json @@ -0,0 +1,7 @@ +{ + "name": "scoped", + "version": "1.0.0", + "workspaces": [ + "@packages/**" + ] +} diff --git a/@commitlint/config-workspace-scopes/index.js b/@commitlint/config-workspace-scopes/index.js new file mode 100644 index 0000000000..e4fc5ea0f3 --- /dev/null +++ b/@commitlint/config-workspace-scopes/index.js @@ -0,0 +1,41 @@ +import { createRequire } from "node:module"; +import Path from "node:path"; + +import { globSync } from "glob"; + +const require = createRequire(import.meta.url); + +export default { + utils: { getPackages }, + rules: { + "scope-enum": (ctx) => + getPackages(ctx).then((packages) => [2, "always", packages]), + }, +}; + +function getPackages(context) { + return Promise.resolve() + .then(() => { + const ctx = context || {}; + const cwd = ctx.cwd || process.cwd(); + + const { workspaces } = require(Path.join(cwd, "package.json")); + if (!Array.isArray(workspaces)) { + // no workspaces configured, skipping + return []; + } + + const wsGlobs = workspaces.flatMap((ws) => { + const path = Path.posix.join(ws, "package.json"); + return globSync(path, { cwd, ignore: ["**/node_modules/**"] }); + }); + + return wsGlobs.sort().map((pJson) => require(Path.join(cwd, pJson))); + }) + .then((packages) => { + return packages + .map((pkg) => pkg.name) + .filter(Boolean) + .map((name) => (name.charAt(0) === "@" ? name.split("/")[1] : name)); + }); +} diff --git a/@commitlint/config-workspace-scopes/index.test.js b/@commitlint/config-workspace-scopes/index.test.js new file mode 100644 index 0000000000..a7d09239a0 --- /dev/null +++ b/@commitlint/config-workspace-scopes/index.test.js @@ -0,0 +1,86 @@ +import { test, expect } from "vitest"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +import { npm } from "@commitlint/test"; + +import config from "./index.js"; + +const __dirname = path.resolve(fileURLToPath(import.meta.url), ".."); + +test("exports rules key", () => { + expect(config).toHaveProperty("rules"); +}); + +test("rules hold object", () => { + expect(config).toMatchObject({ + rules: expect.any(Object), + }); +}); + +test("rules contain scope-enum", () => { + expect(config).toMatchObject({ + rules: { + "scope-enum": expect.anything(), + }, + }); +}); + +test("scope-enum is function", () => { + expect(config).toMatchObject({ + rules: { + "scope-enum": expect.any(Function), + }, + }); +}); + +test("scope-enum does not throw for missing context", async () => { + const { "scope-enum": fn } = config.rules; + await expect(fn()).resolves.toBeTruthy(); +}); + +test("scope-enum has expected severity", async () => { + const { "scope-enum": fn } = config.rules; + const [severity] = await fn(); + expect(severity).toBe(2); +}); + +test("scope-enum has expected modifier", async () => { + const { "scope-enum": fn } = config.rules; + const [, modifier] = await fn(); + expect(modifier).toBe("always"); +}); + +test("returns empty value for empty workspaces", async () => { + const { "scope-enum": fn } = config.rules; + const cwd = await npm.bootstrap("fixtures/empty", __dirname); + const [, , value] = await fn({ cwd }); + expect(value).toEqual([]); +}); + +test("returns expected value for basic workspaces", async () => { + const { "scope-enum": fn } = config.rules; + const cwd = await npm.bootstrap("fixtures/basic", __dirname); + + const [, , value] = await fn({ cwd }); + expect(value).toEqual(["a", "b"]); +}); + +test("returns expected value for scoped workspaces", async () => { + const { "scope-enum": fn } = config.rules; + const cwd = await npm.bootstrap("fixtures/scoped", __dirname); + + const [, , value] = await fn({ cwd }); + expect(value).toEqual(["a", "b"]); +}); + +test("returns expected value for workspaces has nested packages", async () => { + const { "scope-enum": fn } = config.rules; + const cwd = await npm.bootstrap("fixtures/nested-workspaces", __dirname); + + const [, , value] = await fn({ cwd }); + expect(value).toEqual(expect.arrayContaining(["nested-a", "nested-b"])); + expect(value).toEqual( + expect.not.arrayContaining(["dependency-a", "dependency-b"]), + ); +}); diff --git a/@commitlint/config-workspace-scopes/license.md b/@commitlint/config-workspace-scopes/license.md new file mode 100644 index 0000000000..678b1e6e32 --- /dev/null +++ b/@commitlint/config-workspace-scopes/license.md @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2024 - present Jan Biasi + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/@commitlint/config-workspace-scopes/package.json b/@commitlint/config-workspace-scopes/package.json new file mode 100644 index 0000000000..d68b65fe6d --- /dev/null +++ b/@commitlint/config-workspace-scopes/package.json @@ -0,0 +1,41 @@ +{ + "name": "@commitlint/config-workspace-scopes", + "type": "module", + "version": "20.0.0", + "description": "Shareable commitlint config enforcing workspace names as scopes", + "main": "index.js", + "scripts": { + "deps": "dep-check", + "pkg": "pkg-check" + }, + "repository": { + "type": "git", + "url": "https://github.com/conventional-changelog/commitlint.git", + "directory": "@commitlint/config-lerna-scopes" + }, + "keywords": [ + "conventional-changelog", + "commitlint", + "commitlint-config", + "npm-workspaces", + "yarn-workspaces" + ], + "author": "Jan Biasi (https://github.com/janbiasi)", + "license": "MIT", + "bugs": { + "url": "https://github.com/conventional-changelog/commitlint/issues" + }, + "homepage": "https://commitlint.js.org/", + "engines": { + "node": ">=v18" + }, + "dependencies": { + "glob": "^10.3.10" + }, + "devDependencies": { + "@commitlint/test": "^20.0.0", + "@commitlint/utils": "^20.0.0", + "@types/glob": "^8.1.0" + }, + "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" +} diff --git a/@commitlint/config-workspace-scopes/readme.md b/@commitlint/config-workspace-scopes/readme.md new file mode 100644 index 0000000000..05f70a8826 --- /dev/null +++ b/@commitlint/config-workspace-scopes/readme.md @@ -0,0 +1,47 @@ +# @commitlint/config-workspace-scopes + +Shareable `commitlint` config enforcing workspace names as scopes. +Use with [@commitlint/cli](../cli) and [@commitlint/prompt-cli](../prompt-cli). + +## Getting started + +```sh +npm install --save-dev @commitlint/config-workspace-scopes @commitlint/cli +echo "export default {extends: ['@commitlint/config-workspace-scopes']};" > commitlint.config.js +``` + +## Examples + +```text +❯ cat package.json +{ + "workspaces": ["packages/*"] +} + +❯ cat commitlint.config.js +{ + extends: ['@commitlint/config-workspace-scopes'] +} + +❯ tree packages + +packages +├── api +├── app +└── web + +❯ echo "build(api): change something in api's build" | commitlint +⧗ input: build(api): change something in api's build +✔ found 0 problems, 0 warnings + +❯ echo "test(foo): this won't pass" | commitlint +⧗ input: test(foo): this won't pass +✖ scope must be one of [api, app, web] [scope-enum] +✖ found 1 problems, 0 warnings + +❯ echo "ci: do some general maintenance" | commitlint +⧗ input: ci: do some general maintenance +✔ found 0 problems, 0 warnings +``` + +Consult [Rules reference](https://commitlint.js.org/reference/rules) for a list of available rules. diff --git a/@commitlint/core/CHANGELOG.md b/@commitlint/core/CHANGELOG.md index a3493f0356..51c59d17ca 100644 --- a/@commitlint/core/CHANGELOG.md +++ b/@commitlint/core/CHANGELOG.md @@ -3,7 +3,7 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. -# [13.1.0](https://github.com/conventional-changelog/commitlint/compare/v13.0.0...v13.1.0) (2021-07-24) +# [20.1.0](https://github.com/conventional-changelog/commitlint/compare/v20.0.0...v20.1.0) (2025-09-30) **Note:** Version bump only for package @commitlint/core @@ -11,21 +11,206 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + +**Note:** Version bump only for package @commitlint/core + + + + + +## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) + +**Note:** Version bump only for package @commitlint/core + + + + + +# [19.8.0](https://github.com/conventional-changelog/commitlint/compare/v19.7.1...v19.8.0) (2025-03-07) + +**Note:** Version bump only for package @commitlint/core + + + + + +## [19.7.1](https://github.com/conventional-changelog/commitlint/compare/v19.7.0...v19.7.1) (2025-02-02) + +**Note:** Version bump only for package @commitlint/core + + + + + +## [19.6.1](https://github.com/conventional-changelog/commitlint/compare/v19.6.0...v19.6.1) (2024-12-15) + +**Note:** Version bump only for package @commitlint/core + + + + + +# [19.6.0](https://github.com/conventional-changelog/commitlint/compare/v19.5.0...v19.6.0) (2024-11-19) + +**Note:** Version bump only for package @commitlint/core + + + + + +# [19.5.0](https://github.com/conventional-changelog/commitlint/compare/v19.4.1...v19.5.0) (2024-09-11) + +**Note:** Version bump only for package @commitlint/core + + + + + +## [19.4.1](https://github.com/conventional-changelog/commitlint/compare/v19.4.0...v19.4.1) (2024-08-28) + +**Note:** Version bump only for package @commitlint/core + + + + + +# [19.4.0](https://github.com/conventional-changelog/commitlint/compare/v19.3.1...v19.4.0) (2024-08-07) + +**Note:** Version bump only for package @commitlint/core + + + + + +# [19.3.0](https://github.com/conventional-changelog/commitlint/compare/v19.2.2...v19.3.0) (2024-04-23) + +**Note:** Version bump only for package @commitlint/core + + + + + +## [19.2.2](https://github.com/conventional-changelog/commitlint/compare/v19.2.1...v19.2.2) (2024-04-14) + +**Note:** Version bump only for package @commitlint/core + + + + + +## [19.2.1](https://github.com/conventional-changelog/commitlint/compare/v19.2.0...v19.2.1) (2024-03-19) + +**Note:** Version bump only for package @commitlint/core + + + + + +# [19.2.0](https://github.com/conventional-changelog/commitlint/compare/v19.1.0...v19.2.0) (2024-03-15) + +**Note:** Version bump only for package @commitlint/core + + + + + +# [19.1.0](https://github.com/conventional-changelog/commitlint/compare/v19.0.3...v19.1.0) (2024-03-12) + +**Note:** Version bump only for package @commitlint/core + + + + + +## [19.0.3](https://github.com/conventional-changelog/commitlint/compare/v19.0.2...v19.0.3) (2024-02-28) + +**Note:** Version bump only for package @commitlint/core -* chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) + + + +## [19.0.2](https://github.com/conventional-changelog/commitlint/compare/v19.0.1...v19.0.2) (2024-02-28) + +**Note:** Version bump only for package @commitlint/core + + + + + +## [19.0.1](https://github.com/conventional-changelog/commitlint/compare/v19.0.0...v19.0.1) (2024-02-27) + +**Note:** Version bump only for package @commitlint/core + + + + + +# [19.0.0](https://github.com/conventional-changelog/commitlint/compare/v18.6.2...v19.0.0) (2024-02-27) + + +* feat!: migrate to pure ESM (#3850) ([3423735](https://github.com/conventional-changelog/commitlint/commit/342373559bdf7c783c4ef37ff05dc38a5f681159)), closes [#3850](https://github.com/conventional-changelog/commitlint/issues/3850) + + +### Reverts + +* Revert "chore!: minimum node version v20" ([2816783](https://github.com/conventional-changelog/commitlint/commit/2816783d00e7eb967de3ac9347c2fc43dc8b94fa)) ### BREAKING CHANGES -* minimum node version is 12 +* migrate to pure ESM +* feat: migrate to pure ESM +* chore: update snapshot +* fix: load `parserPreset` with another `await` +* test: migrate to vitest -## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) +* test: remove no replacement `--runInBand` test-ci script + +* chore: fix code reviews + +* refactor(load): rewrite resolve logic + +* fix(config-nx-scopes): fix syntax error + +* feat(resolve-extends): add resolveFrom and loadParserPreset + +* feat(load): use resolveFrom and loadParserPreset from resolve-extends + +* test: include only @commitlint/* packages src in coverage + +* test: explicit import vitest utilities + +* test: remove @jest/globals from dependencies + +* fix(resolve-extends): `resolveFrom` output should be platform aware + +* test: restore NO_COLOR to test script + +* chore: fix linting issues + +* fix: should use fileURLToPath instead of pathname for Windows compatibility + +* Apply suggestions from code review + +* fix: should reuse `cli` instead call `yargs()` + +* feat(cli): set terminalWidth as wrap to avoid work break on help + +* Update .eslintrc.cjs + +* feat: migrate @commitlint/config-conventional to pure ESM + + + + + +## [18.6.1](https://github.com/conventional-changelog/commitlint/compare/v18.6.0...v18.6.1) (2024-02-13) **Note:** Version bump only for package @commitlint/core @@ -33,7 +218,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.1.2](https://github.com/conventional-changelog/commitlint/compare/v12.1.1...v12.1.2) (2021-04-29) +# [18.6.0](https://github.com/conventional-changelog/commitlint/compare/v18.5.1...v18.6.0) (2024-01-25) **Note:** Version bump only for package @commitlint/core @@ -41,7 +226,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) +# [18.5.0](https://github.com/conventional-changelog/commitlint/compare/v18.4.4...v18.5.0) (2024-01-22) **Note:** Version bump only for package @commitlint/core @@ -49,7 +234,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [12.1.0](https://github.com/conventional-changelog/commitlint/compare/v12.0.1...v12.1.0) (2021-03-06) +## [18.4.4](https://github.com/conventional-changelog/commitlint/compare/v18.4.3...v18.4.4) (2024-01-04) **Note:** Version bump only for package @commitlint/core @@ -57,7 +242,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) +## [18.4.3](https://github.com/conventional-changelog/commitlint/compare/v18.4.2...v18.4.3) (2023-11-21) **Note:** Version bump only for package @commitlint/core @@ -65,7 +250,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) +## [18.4.2](https://github.com/conventional-changelog/commitlint/compare/v18.4.1...v18.4.2) (2023-11-16) **Note:** Version bump only for package @commitlint/core @@ -73,7 +258,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) +## [18.4.1](https://github.com/conventional-changelog/commitlint/compare/v18.4.0...v18.4.1) (2023-11-12) **Note:** Version bump only for package @commitlint/core @@ -81,29 +266,61 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) +# [18.4.0](https://github.com/conventional-changelog/commitlint/compare/v18.3.0...v18.4.0) (2023-11-10) + +**Note:** Version bump only for package @commitlint/core + -* refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) + + +# [18.2.0](https://github.com/conventional-changelog/commitlint/compare/v18.1.0...v18.2.0) (2023-10-26) + +**Note:** Version bump only for package @commitlint/core + + + + + +# [18.1.0](https://github.com/conventional-changelog/commitlint/compare/v18.0.0...v18.1.0) (2023-10-25) + +**Note:** Version bump only for package @commitlint/core + + + + + +# [18.0.0](https://github.com/conventional-changelog/commitlint/compare/v17.8.1...v18.0.0) (2023-10-20) + + +* chore!: minimum node version v18 (#3644) ([5b4aeaf](https://github.com/conventional-changelog/commitlint/commit/5b4aeaf4f01c2726a7bc8631a23bb34c849baad2)), closes [#3644](https://github.com/conventional-changelog/commitlint/issues/3644) ### BREAKING CHANGES -* remove node 8 from circle-ci checks +* drop node v14 and v16 support -also remove node 13 because we do not support experimental versions +* chore: remove unused types -* docs: update node v10 to latest LTS 10 version +* docs: prepare node update and new release -Co-authored-by: Cedric van Putten <me@bycedric.com> +* chore!: minimum TS version v5 +* drop TS v4 support -Co-authored-by: Cedric van Putten <me@bycedric.com> +* ci: remove node v14/16 checks +* chore: adjust node types to minimal supported version +* chore!: further major versions of other deps +* upgrade conventional-changelog-conventionalcommits, conventional-commits-parser, conventional-changelog-atom, +* docs: simplify releases and remove roadmap -## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) + + + +## [17.8.1](https://github.com/conventional-changelog/commitlint/compare/v17.8.0...v17.8.1) (2023-10-20) **Note:** Version bump only for package @commitlint/core @@ -111,7 +328,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) +# [17.8.0](https://github.com/conventional-changelog/commitlint/compare/v17.7.2...v17.8.0) (2023-10-14) **Note:** Version bump only for package @commitlint/core @@ -119,7 +336,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) +## [17.7.2](https://github.com/conventional-changelog/commitlint/compare/v17.7.1...v17.7.2) (2023-09-28) **Note:** Version bump only for package @commitlint/core @@ -127,7 +344,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) +## [17.7.1](https://github.com/conventional-changelog/commitlint/compare/v17.7.0...v17.7.1) (2023-08-10) **Note:** Version bump only for package @commitlint/core @@ -135,7 +352,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) +# [17.7.0](https://github.com/conventional-changelog/commitlint/compare/v17.6.7...v17.7.0) (2023-08-09) **Note:** Version bump only for package @commitlint/core @@ -143,7 +360,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [8.3.5](https://github.com/conventional-changelog/commitlint/compare/v8.3.4...v8.3.5) (2020-01-15) +## [17.6.7](https://github.com/conventional-changelog/commitlint/compare/v17.6.6...v17.6.7) (2023-07-19) **Note:** Version bump only for package @commitlint/core @@ -151,7 +368,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) +## [17.6.6](https://github.com/conventional-changelog/commitlint/compare/v17.6.5...v17.6.6) (2023-06-24) **Note:** Version bump only for package @commitlint/core @@ -159,7 +376,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [8.3.1](https://github.com/conventional-changelog/commitlint/compare/v8.3.0...v8.3.1) (2019-10-16) +## [17.6.5](https://github.com/conventional-changelog/commitlint/compare/v17.6.4...v17.6.5) (2023-05-30) **Note:** Version bump only for package @commitlint/core @@ -167,7 +384,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) +## [17.6.3](https://github.com/conventional-changelog/commitlint/compare/v17.6.2...v17.6.3) (2023-05-04) **Note:** Version bump only for package @commitlint/core @@ -175,7 +392,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) +## [17.6.1](https://github.com/conventional-changelog/commitlint/compare/v17.6.0...v17.6.1) (2023-04-14) **Note:** Version bump only for package @commitlint/core @@ -183,7 +400,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) +# [17.6.0](https://github.com/conventional-changelog/commitlint/compare/v17.5.1...v17.6.0) (2023-04-13) **Note:** Version bump only for package @commitlint/core @@ -191,7 +408,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [7.6.1](https://github.com/conventional-changelog/commitlint/compare/v7.6.0...v7.6.1) (2019-05-09) +## [17.5.1](https://github.com/conventional-changelog/commitlint/compare/v17.5.0...v17.5.1) (2023-03-28) **Note:** Version bump only for package @commitlint/core @@ -199,7 +416,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) +# [17.5.0](https://github.com/conventional-changelog/commitlint/compare/v17.4.4...v17.5.0) (2023-03-22) **Note:** Version bump only for package @commitlint/core @@ -207,7 +424,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [7.5.2](https://github.com/conventional-changelog/commitlint/compare/v7.5.1...v7.5.2) (2019-02-11) +## [17.4.4](https://github.com/conventional-changelog/commitlint/compare/v17.4.3...v17.4.4) (2023-02-17) **Note:** Version bump only for package @commitlint/core @@ -215,7 +432,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [7.5.1](https://github.com/conventional-changelog/commitlint/compare/v7.5.0...v7.5.1) (2019-02-09) +## [17.4.3](https://github.com/conventional-changelog/commitlint/compare/v17.4.2...v17.4.3) (2023-02-13) **Note:** Version bump only for package @commitlint/core @@ -223,93 +440,286 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -<a name="7.5.0"></a> -# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) +## [17.4.2](https://github.com/conventional-changelog/commitlint/compare/v17.4.1...v17.4.2) (2023-01-12) +**Note:** Version bump only for package @commitlint/core -### Bug Fixes -* replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) +## [17.4.1](https://github.com/conventional-changelog/commitlint/compare/v17.4.0...v17.4.1) (2023-01-09) -<a name="7.4.0"></a> -# [7.4.0](https://github.com/conventional-changelog/commitlint/compare/v7.3.2...v7.4.0) (2019-01-27) +**Note:** Version bump only for package @commitlint/core + +# [17.4.0](https://github.com/conventional-changelog/commitlint/compare/v17.3.0...v17.4.0) (2023-01-04) + **Note:** Version bump only for package @commitlint/core -<a name="7.3.2"></a> -## [7.3.2](https://github.com/conventional-changelog/commitlint/compare/v7.3.1...v7.3.2) (2019-01-15) +# [17.3.0](https://github.com/conventional-changelog/commitlint/compare/v17.2.1...v17.3.0) (2022-11-21) +**Note:** Version bump only for package @commitlint/core + +# [17.2.0](https://github.com/conventional-changelog/commitlint/compare/v17.1.2...v17.2.0) (2022-10-31) +**Note:** Version bump only for package @commitlint/core +## [17.1.2](https://github.com/conventional-changelog/commitlint/compare/v17.1.1...v17.1.2) (2022-08-29) **Note:** Version bump only for package @commitlint/core -<a name="7.3.1"></a> -## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) +## [17.1.1](https://github.com/conventional-changelog/commitlint/compare/v17.1.0...v17.1.1) (2022-08-27) + +**Note:** Version bump only for package @commitlint/core +# [17.1.0](https://github.com/conventional-changelog/commitlint/compare/v17.0.3...v17.1.0) (2022-08-27) +**Note:** Version bump only for package @commitlint/core +## [17.0.3](https://github.com/conventional-changelog/commitlint/compare/v17.0.2...v17.0.3) (2022-06-25) **Note:** Version bump only for package @commitlint/core -<a name="7.3.0"></a> -# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) +# [17.0.0](https://github.com/conventional-changelog/commitlint/compare/v16.3.0...v17.0.0) (2022-05-16) + +- chore!: minimum node version v14 (#3128) ([ac5f9b4](https://github.com/conventional-changelog/commitlint/commit/ac5f9b47a9e3cd5c9d58b14da0feb426f06b1ef9)), closes [#3128](https://github.com/conventional-changelog/commitlint/issues/3128) + +### BREAKING CHANGES +- drop node v12 support +- chore: rename circleci windows job +node version is not defned by the name anyways (i think) + +# [16.3.0](https://github.com/conventional-changelog/commitlint/compare/v16.2.4...v16.3.0) (2022-05-14) **Note:** Version bump only for package @commitlint/core -<a name="7.2.1"></a> -## [7.2.1](https://github.com/conventional-changelog/commitlint/compare/v7.2.0...v7.2.1) (2018-10-11) +## [16.2.4](https://github.com/conventional-changelog/commitlint/compare/v16.2.3...v16.2.4) (2022-04-28) +**Note:** Version bump only for package @commitlint/core + +## [16.2.3](https://github.com/conventional-changelog/commitlint/compare/v16.2.2...v16.2.3) (2022-03-16) +**Note:** Version bump only for package @commitlint/core +## [16.2.1](https://github.com/conventional-changelog/commitlint/compare/v16.2.0...v16.2.1) (2022-02-13) **Note:** Version bump only for package @commitlint/core -<a name="7.2.0"></a> -# [7.2.0](https://github.com/conventional-changelog/commitlint/compare/v7.1.2...v7.2.0) (2018-10-05) +# [16.1.0](https://github.com/conventional-changelog/commitlint/compare/v16.0.3...v16.1.0) (2022-01-20) +**Note:** Version bump only for package @commitlint/core +# [16.0.0](https://github.com/conventional-changelog/commitlint/compare/v15.0.0...v16.0.0) (2021-12-26) +**Note:** Version bump only for package @commitlint/core + +# [15.0.0](https://github.com/conventional-changelog/commitlint/compare/v14.2.0...v15.0.0) (2021-11-17) **Note:** Version bump only for package @commitlint/core -<a name="7.1.2"></a> -## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) +# [14.1.0](https://github.com/conventional-changelog/commitlint/compare/v14.0.0...v14.1.0) (2021-11-01) +**Note:** Version bump only for package @commitlint/core + +# [14.0.0](https://github.com/conventional-changelog/commitlint/compare/v13.2.1...v14.0.0) (2021-10-26) +**Note:** Version bump only for package @commitlint/core +## [13.2.1](https://github.com/conventional-changelog/commitlint/compare/v13.2.0...v13.2.1) (2021-10-09) **Note:** Version bump only for package @commitlint/core -<a name="7.1.0"></a> -# [7.1.0](https://github.com/conventional-changelog/commitlint/compare/v7.0.1...v7.1.0) (2018-08-29) +# [13.2.0](https://github.com/conventional-changelog/commitlint/compare/v13.1.0...v13.2.0) (2021-09-28) +**Note:** Version bump only for package @commitlint/core +# [13.1.0](https://github.com/conventional-changelog/commitlint/compare/v13.0.0...v13.1.0) (2021-07-24) +**Note:** Version bump only for package @commitlint/core + +# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) + +- chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) + +### BREAKING CHANGES + +- minimum node version is 12 + +## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) **Note:** Version bump only for package @commitlint/core -<a name="6.2.0"></a> -# [6.2.0](https://github.com/conventional-changelog/commitlint/compare/v6.1.3...v6.2.0) (2018-05-01) +## [12.1.2](https://github.com/conventional-changelog/commitlint/compare/v12.1.1...v12.1.2) (2021-04-29) +**Note:** Version bump only for package @commitlint/core +## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) +**Note:** Version bump only for package @commitlint/core + +# [12.1.0](https://github.com/conventional-changelog/commitlint/compare/v12.0.1...v12.1.0) (2021-03-06) **Note:** Version bump only for package @commitlint/core -<a name="6.1.1"></a> -## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) +## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) + +**Note:** Version bump only for package @commitlint/core + +# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) + +**Note:** Version bump only for package @commitlint/core + +# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) + +**Note:** Version bump only for package @commitlint/core + +# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) + +- refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) + +### BREAKING CHANGES + +- remove node 8 from circle-ci checks + +also remove node 13 because we do not support experimental versions + +- docs: update node v10 to latest LTS 10 version + +Co-authored-by: Cedric van Putten <me@bycedric.com> + +Co-authored-by: Cedric van Putten <me@bycedric.com> + +## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) + +**Note:** Version bump only for package @commitlint/core + +## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) + +**Note:** Version bump only for package @commitlint/core + +# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) + +**Note:** Version bump only for package @commitlint/core + +## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) + +**Note:** Version bump only for package @commitlint/core + +# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) + +**Note:** Version bump only for package @commitlint/core + +## [8.3.5](https://github.com/conventional-changelog/commitlint/compare/v8.3.4...v8.3.5) (2020-01-15) + +**Note:** Version bump only for package @commitlint/core + +## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) + +**Note:** Version bump only for package @commitlint/core + +## [8.3.1](https://github.com/conventional-changelog/commitlint/compare/v8.3.0...v8.3.1) (2019-10-16) + +**Note:** Version bump only for package @commitlint/core + +# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) +**Note:** Version bump only for package @commitlint/core + +# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) +**Note:** Version bump only for package @commitlint/core +# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) + +**Note:** Version bump only for package @commitlint/core + +## [7.6.1](https://github.com/conventional-changelog/commitlint/compare/v7.6.0...v7.6.1) (2019-05-09) + +**Note:** Version bump only for package @commitlint/core + +# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) + +**Note:** Version bump only for package @commitlint/core + +## [7.5.2](https://github.com/conventional-changelog/commitlint/compare/v7.5.1...v7.5.2) (2019-02-11) + +**Note:** Version bump only for package @commitlint/core + +## [7.5.1](https://github.com/conventional-changelog/commitlint/compare/v7.5.0...v7.5.1) (2019-02-09) + +**Note:** Version bump only for package @commitlint/core + +<a name="7.5.0"></a> + +# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) + +### Bug Fixes + +- replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) + +<a name="7.4.0"></a> + +# [7.4.0](https://github.com/conventional-changelog/commitlint/compare/v7.3.2...v7.4.0) (2019-01-27) + +**Note:** Version bump only for package @commitlint/core + +<a name="7.3.2"></a> + +## [7.3.2](https://github.com/conventional-changelog/commitlint/compare/v7.3.1...v7.3.2) (2019-01-15) + +**Note:** Version bump only for package @commitlint/core + +<a name="7.3.1"></a> + +## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) + +**Note:** Version bump only for package @commitlint/core + +<a name="7.3.0"></a> + +# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) + +**Note:** Version bump only for package @commitlint/core + +<a name="7.2.1"></a> + +## [7.2.1](https://github.com/conventional-changelog/commitlint/compare/v7.2.0...v7.2.1) (2018-10-11) + +**Note:** Version bump only for package @commitlint/core + +<a name="7.2.0"></a> + +# [7.2.0](https://github.com/conventional-changelog/commitlint/compare/v7.1.2...v7.2.0) (2018-10-05) + +**Note:** Version bump only for package @commitlint/core + +<a name="7.1.2"></a> + +## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) + +**Note:** Version bump only for package @commitlint/core + +<a name="7.1.0"></a> + +# [7.1.0](https://github.com/conventional-changelog/commitlint/compare/v7.0.1...v7.1.0) (2018-08-29) + +**Note:** Version bump only for package @commitlint/core + +<a name="6.2.0"></a> + +# [6.2.0](https://github.com/conventional-changelog/commitlint/compare/v6.1.3...v6.2.0) (2018-05-01) + +**Note:** Version bump only for package @commitlint/core + +<a name="6.1.1"></a> + +## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) **Note:** Version bump only for package @commitlint/core diff --git a/@commitlint/core/package.json b/@commitlint/core/package.json index f4b910673f..1407cce57f 100644 --- a/@commitlint/core/package.json +++ b/@commitlint/core/package.json @@ -1,6 +1,7 @@ { "name": "@commitlint/core", - "version": "13.1.0", + "type": "module", + "version": "20.1.0", "description": "Lint your commit messages", "main": "lib/core.js", "types": "lib/core.d.ts", @@ -12,16 +13,17 @@ "pkg": "pkg-check --skip-import" }, "engines": { - "node": ">=v12" + "node": ">=v18" }, "repository": { "type": "git", - "url": "https://github.com/conventional-changelog/commitlint.git" + "url": "https://github.com/conventional-changelog/commitlint.git", + "directory": "@commitlint/core" }, "bugs": { "url": "https://github.com/conventional-changelog/commitlint/issues" }, - "homepage": "https://github.com/conventional-changelog/commitlint#readme", + "homepage": "https://commitlint.js.org/", "keywords": [ "conventional-changelog", "commitlint", @@ -34,13 +36,13 @@ }, "license": "MIT", "dependencies": { - "@commitlint/format": "^13.1.0", - "@commitlint/lint": "^13.1.0", - "@commitlint/load": "^13.1.0", - "@commitlint/read": "^13.1.0" + "@commitlint/format": "^20.0.0", + "@commitlint/lint": "^20.0.0", + "@commitlint/load": "^20.1.0", + "@commitlint/read": "^20.0.0" }, "devDependencies": { - "@commitlint/utils": "^13.0.0" + "@commitlint/utils": "^20.0.0" }, - "gitHead": "70f7f4688b51774e7ac5e40e896cdaa3f132b2bc" + "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" } diff --git a/@commitlint/core/src/core.ts b/@commitlint/core/src/core.ts index 614c17ac14..3181e0ac71 100644 --- a/@commitlint/core/src/core.ts +++ b/@commitlint/core/src/core.ts @@ -1,11 +1,6 @@ -import format from '@commitlint/format'; -import load from '@commitlint/load'; -import lint from '@commitlint/lint'; -import read from '@commitlint/read'; +import format from "@commitlint/format"; +import load from "@commitlint/load"; +import lint from "@commitlint/lint"; +import read from "@commitlint/read"; -export = { - format, - load, - lint, - read, -}; +export { format, load, lint, read }; diff --git a/@commitlint/cz-commitlint/CHANGELOG.md b/@commitlint/cz-commitlint/CHANGELOG.md index 9537e2a4e7..7f1b3bc6b8 100644 --- a/@commitlint/cz-commitlint/CHANGELOG.md +++ b/@commitlint/cz-commitlint/CHANGELOG.md @@ -3,18 +3,87 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. -# [13.1.0](https://github.com/conventional-changelog/commitlint/compare/v13.0.0...v13.1.0) (2021-07-24) +# [20.1.0](https://github.com/conventional-changelog/commitlint/compare/v20.0.0...v20.1.0) (2025-09-30) + +**Note:** Version bump only for package @commitlint/cz-commitlint + + + + + +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + +**Note:** Version bump only for package @commitlint/cz-commitlint + + + + + +## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) + +**Note:** Version bump only for package @commitlint/cz-commitlint + + + + + +# [19.8.0](https://github.com/conventional-changelog/commitlint/compare/v19.7.1...v19.8.0) (2025-03-07) + +**Note:** Version bump only for package @commitlint/cz-commitlint + + + + + +## [19.6.1](https://github.com/conventional-changelog/commitlint/compare/v19.6.0...v19.6.1) (2024-12-15) + +**Note:** Version bump only for package @commitlint/cz-commitlint + + + + + +# [19.5.0](https://github.com/conventional-changelog/commitlint/compare/v19.4.1...v19.5.0) (2024-09-11) + +**Note:** Version bump only for package @commitlint/cz-commitlint + + + + + +# [19.4.0](https://github.com/conventional-changelog/commitlint/compare/v19.3.1...v19.4.0) (2024-08-07) + +**Note:** Version bump only for package @commitlint/cz-commitlint + + + + + +# [19.2.0](https://github.com/conventional-changelog/commitlint/compare/v19.1.0...v19.2.0) (2024-03-15) + +**Note:** Version bump only for package @commitlint/cz-commitlint + + + + + +# [19.1.0](https://github.com/conventional-changelog/commitlint/compare/v19.0.3...v19.1.0) (2024-03-12) ### Bug Fixes -* **cz-commitlint:** fix minor formatting issues ([99d8881](https://github.com/conventional-changelog/commitlint/commit/99d8881d0d951deded6d9e31bbb279d04101549b)) +* add missing cjs entry in package ([#3967](https://github.com/conventional-changelog/commitlint/issues/3967)) ([9cea6fd](https://github.com/conventional-changelog/commitlint/commit/9cea6fdb7b1bf7cfc9a86e882e2742379b4b6aec)) +### Features + +* add CJS export for cz-commitlint ([#3963](https://github.com/conventional-changelog/commitlint/issues/3963)) ([6ae3c6a](https://github.com/conventional-changelog/commitlint/commit/6ae3c6a827de8622d827146ffb0984a9e62fe505)), closes [/github.com/conventional-changelog/commitlint/pull/3850#issuecomment-1984932236](https://github.com//github.com/conventional-changelog/commitlint/pull/3850/issues/issuecomment-1984932236) [#3949](https://github.com/conventional-changelog/commitlint/issues/3949) + -# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) + +## [19.0.3](https://github.com/conventional-changelog/commitlint/compare/v19.0.2...v19.0.3) (2024-02-28) **Note:** Version bump only for package @commitlint/cz-commitlint @@ -22,13 +91,392 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) +## [19.0.2](https://github.com/conventional-changelog/commitlint/compare/v19.0.1...v19.0.2) (2024-02-28) + +**Note:** Version bump only for package @commitlint/cz-commitlint + + + + + +## [19.0.1](https://github.com/conventional-changelog/commitlint/compare/v19.0.0...v19.0.1) (2024-02-27) + +**Note:** Version bump only for package @commitlint/cz-commitlint + + + + + +# [19.0.0](https://github.com/conventional-changelog/commitlint/compare/v18.6.2...v19.0.0) (2024-02-27) + + +* feat!: migrate to pure ESM (#3850) ([3423735](https://github.com/conventional-changelog/commitlint/commit/342373559bdf7c783c4ef37ff05dc38a5f681159)), closes [#3850](https://github.com/conventional-changelog/commitlint/issues/3850) + + +### Reverts + +* Revert "chore!: minimum node version v20" ([2816783](https://github.com/conventional-changelog/commitlint/commit/2816783d00e7eb967de3ac9347c2fc43dc8b94fa)) + + +### BREAKING CHANGES + +* migrate to pure ESM + +* feat: migrate to pure ESM + +* chore: update snapshot + +* fix: load `parserPreset` with another `await` + +* test: migrate to vitest + +* test: remove no replacement `--runInBand` test-ci script + +* chore: fix code reviews + +* refactor(load): rewrite resolve logic + +* fix(config-nx-scopes): fix syntax error + +* feat(resolve-extends): add resolveFrom and loadParserPreset + +* feat(load): use resolveFrom and loadParserPreset from resolve-extends + +* test: include only @commitlint/* packages src in coverage + +* test: explicit import vitest utilities + +* test: remove @jest/globals from dependencies + +* fix(resolve-extends): `resolveFrom` output should be platform aware + +* test: restore NO_COLOR to test script + +* chore: fix linting issues + +* fix: should use fileURLToPath instead of pathname for Windows compatibility + +* Apply suggestions from code review + +* fix: should reuse `cli` instead call `yargs()` + +* feat(cli): set terminalWidth as wrap to avoid work break on help + +* Update .eslintrc.cjs + +* feat: migrate @commitlint/config-conventional to pure ESM + + + + + +## [18.6.1](https://github.com/conventional-changelog/commitlint/compare/v18.6.0...v18.6.1) (2024-02-13) + +**Note:** Version bump only for package @commitlint/cz-commitlint + + + + + +# [18.6.0](https://github.com/conventional-changelog/commitlint/compare/v18.5.1...v18.6.0) (2024-01-25) + +**Note:** Version bump only for package @commitlint/cz-commitlint + + + + + +# [18.5.0](https://github.com/conventional-changelog/commitlint/compare/v18.4.4...v18.5.0) (2024-01-22) + +**Note:** Version bump only for package @commitlint/cz-commitlint + + + + + +## [18.4.4](https://github.com/conventional-changelog/commitlint/compare/v18.4.3...v18.4.4) (2024-01-04) + +**Note:** Version bump only for package @commitlint/cz-commitlint + + + + + +## [18.4.3](https://github.com/conventional-changelog/commitlint/compare/v18.4.2...v18.4.3) (2023-11-21) + +**Note:** Version bump only for package @commitlint/cz-commitlint + + + + + +## [18.4.2](https://github.com/conventional-changelog/commitlint/compare/v18.4.1...v18.4.2) (2023-11-16) + +**Note:** Version bump only for package @commitlint/cz-commitlint + + + + + +## [18.4.1](https://github.com/conventional-changelog/commitlint/compare/v18.4.0...v18.4.1) (2023-11-12) + +**Note:** Version bump only for package @commitlint/cz-commitlint + + + + + +# [18.4.0](https://github.com/conventional-changelog/commitlint/compare/v18.3.0...v18.4.0) (2023-11-10) + +**Note:** Version bump only for package @commitlint/cz-commitlint + + + + + +# [18.2.0](https://github.com/conventional-changelog/commitlint/compare/v18.1.0...v18.2.0) (2023-10-26) + +**Note:** Version bump only for package @commitlint/cz-commitlint + + + + + +# [18.1.0](https://github.com/conventional-changelog/commitlint/compare/v18.0.0...v18.1.0) (2023-10-25) + +**Note:** Version bump only for package @commitlint/cz-commitlint + + + + + +# [18.0.0](https://github.com/conventional-changelog/commitlint/compare/v17.8.1...v18.0.0) (2023-10-20) + + +* chore!: minimum node version v18 (#3644) ([5b4aeaf](https://github.com/conventional-changelog/commitlint/commit/5b4aeaf4f01c2726a7bc8631a23bb34c849baad2)), closes [#3644](https://github.com/conventional-changelog/commitlint/issues/3644) + + +### BREAKING CHANGES + +* drop node v14 and v16 support + +* chore: remove unused types + +* docs: prepare node update and new release + +* chore!: minimum TS version v5 +* drop TS v4 support + +* ci: remove node v14/16 checks + +* chore: adjust node types to minimal supported version + +* chore!: further major versions of other deps +* upgrade conventional-changelog-conventionalcommits, conventional-commits-parser, conventional-changelog-atom, + +* docs: simplify releases and remove roadmap + + + + + +## [17.8.1](https://github.com/conventional-changelog/commitlint/compare/v17.8.0...v17.8.1) (2023-10-20) + +**Note:** Version bump only for package @commitlint/cz-commitlint + + + + + +# [17.8.0](https://github.com/conventional-changelog/commitlint/compare/v17.7.2...v17.8.0) (2023-10-14) + +**Note:** Version bump only for package @commitlint/cz-commitlint + + + + + +## [17.7.2](https://github.com/conventional-changelog/commitlint/compare/v17.7.1...v17.7.2) (2023-09-28) + +**Note:** Version bump only for package @commitlint/cz-commitlint + + + + + +## [17.7.1](https://github.com/conventional-changelog/commitlint/compare/v17.7.0...v17.7.1) (2023-08-10) + +**Note:** Version bump only for package @commitlint/cz-commitlint + + + + + +# [17.7.0](https://github.com/conventional-changelog/commitlint/compare/v17.6.7...v17.7.0) (2023-08-09) + +**Note:** Version bump only for package @commitlint/cz-commitlint + + + + + +## [17.6.7](https://github.com/conventional-changelog/commitlint/compare/v17.6.6...v17.6.7) (2023-07-19) + +**Note:** Version bump only for package @commitlint/cz-commitlint + + + + + +# [17.5.0](https://github.com/conventional-changelog/commitlint/compare/v17.4.4...v17.5.0) (2023-03-22) + +**Note:** Version bump only for package @commitlint/cz-commitlint + + + + + +## [17.4.4](https://github.com/conventional-changelog/commitlint/compare/v17.4.3...v17.4.4) (2023-02-17) + +**Note:** Version bump only for package @commitlint/cz-commitlint + + + + + +## [17.4.2](https://github.com/conventional-changelog/commitlint/compare/v17.4.1...v17.4.2) (2023-01-12) + +**Note:** Version bump only for package @commitlint/cz-commitlint + + + + + +## [17.4.1](https://github.com/conventional-changelog/commitlint/compare/v17.4.0...v17.4.1) (2023-01-09) + +**Note:** Version bump only for package @commitlint/cz-commitlint + + + + + +# [17.4.0](https://github.com/conventional-changelog/commitlint/compare/v17.3.0...v17.4.0) (2023-01-04) + +**Note:** Version bump only for package @commitlint/cz-commitlint + +# [17.3.0](https://github.com/conventional-changelog/commitlint/compare/v17.2.1...v17.3.0) (2022-11-21) + +**Note:** Version bump only for package @commitlint/cz-commitlint + +# [17.2.0](https://github.com/conventional-changelog/commitlint/compare/v17.1.2...v17.2.0) (2022-10-31) + +**Note:** Version bump only for package @commitlint/cz-commitlint + +## [17.1.2](https://github.com/conventional-changelog/commitlint/compare/v17.1.1...v17.1.2) (2022-08-29) + +**Note:** Version bump only for package @commitlint/cz-commitlint + +## [17.1.1](https://github.com/conventional-changelog/commitlint/compare/v17.1.0...v17.1.1) (2022-08-27) + +**Note:** Version bump only for package @commitlint/cz-commitlint + +# [17.1.0](https://github.com/conventional-changelog/commitlint/compare/v17.0.3...v17.1.0) (2022-08-27) + +**Note:** Version bump only for package @commitlint/cz-commitlint + +## [17.0.3](https://github.com/conventional-changelog/commitlint/compare/v17.0.2...v17.0.3) (2022-06-25) + +**Note:** Version bump only for package @commitlint/cz-commitlint + +# [17.0.0](https://github.com/conventional-changelog/commitlint/compare/v16.3.0...v17.0.0) (2022-05-16) + +- chore!: minimum node version v14 (#3128) ([ac5f9b4](https://github.com/conventional-changelog/commitlint/commit/ac5f9b47a9e3cd5c9d58b14da0feb426f06b1ef9)), closes [#3128](https://github.com/conventional-changelog/commitlint/issues/3128) + +### BREAKING CHANGES + +- drop node v12 support + +- chore: rename circleci windows job + +node version is not defned by the name anyways (i think) + +# [16.3.0](https://github.com/conventional-changelog/commitlint/compare/v16.2.4...v16.3.0) (2022-05-14) + +**Note:** Version bump only for package @commitlint/cz-commitlint + +## [16.2.4](https://github.com/conventional-changelog/commitlint/compare/v16.2.3...v16.2.4) (2022-04-28) + +**Note:** Version bump only for package @commitlint/cz-commitlint + +## [16.2.3](https://github.com/conventional-changelog/commitlint/compare/v16.2.2...v16.2.3) (2022-03-16) **Note:** Version bump only for package @commitlint/cz-commitlint +## [16.2.1](https://github.com/conventional-changelog/commitlint/compare/v16.2.0...v16.2.1) (2022-02-13) +**Note:** Version bump only for package @commitlint/cz-commitlint + +# [16.1.0](https://github.com/conventional-changelog/commitlint/compare/v16.0.3...v16.1.0) (2022-01-20) + +**Note:** Version bump only for package @commitlint/cz-commitlint + +## [16.0.3](https://github.com/conventional-changelog/commitlint/compare/v16.0.2...v16.0.3) (2022-01-19) + +### Bug Fixes + +- commit body should be empty by default ([#2980](https://github.com/conventional-changelog/commitlint/issues/2980)) ([e6582e0](https://github.com/conventional-changelog/commitlint/commit/e6582e03608621e46f617a097b4880750ae85021)) + +# [16.0.0](https://github.com/conventional-changelog/commitlint/compare/v15.0.0...v16.0.0) (2021-12-26) + +### Bug Fixes + +- **cz-commitlint:** combine commit body with issuesBody/breakingBody when body has an empty string ([#2915](https://github.com/conventional-changelog/commitlint/issues/2915)) ([a038b41](https://github.com/conventional-changelog/commitlint/commit/a038b419f7f1d2073977ec1e6fe59ffcbba38931)) + +### Features + +- **cz-commitlint:** support select scope with radio list by setting disableMultipleScopes ([#2911](https://github.com/conventional-changelog/commitlint/issues/2911)) ([9d8d73f](https://github.com/conventional-changelog/commitlint/commit/9d8d73f36e0c62c8cd9e3e913b66a5ca46ebf622)), closes [#2782](https://github.com/conventional-changelog/commitlint/issues/2782) + +### BREAKING CHANGES + +- **cz-commitlint:** users who is using multiple scopes need to set enableMultipleScopes to true + +# [15.0.0](https://github.com/conventional-changelog/commitlint/compare/v14.2.0...v15.0.0) (2021-11-17) + +**Note:** Version bump only for package @commitlint/cz-commitlint + +# [14.1.0](https://github.com/conventional-changelog/commitlint/compare/v14.0.0...v14.1.0) (2021-11-01) + +**Note:** Version bump only for package @commitlint/cz-commitlint +# [14.0.0](https://github.com/conventional-changelog/commitlint/compare/v13.2.1...v14.0.0) (2021-10-26) +- support multiple scopes and multiple cases & fix sentence-case is not consistent with commitlint/cli (#2806) ([2c71a7e](https://github.com/conventional-changelog/commitlint/commit/2c71a7e2965a2beff805982d37243b79a48c9360)), closes [#2806](https://github.com/conventional-changelog/commitlint/issues/2806) [#2782](https://github.com/conventional-changelog/commitlint/issues/2782) + +### BREAKING CHANGES + +- add prompt.settings configuration + +## [13.2.1](https://github.com/conventional-changelog/commitlint/compare/v13.2.0...v13.2.1) (2021-10-09) + +**Note:** Version bump only for package @commitlint/cz-commitlint + +# [13.2.0](https://github.com/conventional-changelog/commitlint/compare/v13.1.0...v13.2.0) (2021-09-28) + +**Note:** Version bump only for package @commitlint/cz-commitlint + +# [13.1.0](https://github.com/conventional-changelog/commitlint/compare/v13.0.0...v13.1.0) (2021-07-24) + +### Bug Fixes + +- **cz-commitlint:** fix minor formatting issues ([99d8881](https://github.com/conventional-changelog/commitlint/commit/99d8881d0d951deded6d9e31bbb279d04101549b)) + +# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) + +**Note:** Version bump only for package @commitlint/cz-commitlint + +## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) + +**Note:** Version bump only for package @commitlint/cz-commitlint ## [12.1.2](https://github.com/conventional-changelog/commitlint/compare/v12.1.1...v12.1.2) (2021-04-29) diff --git a/@commitlint/cz-commitlint/README.md b/@commitlint/cz-commitlint/README.md index f1f3d27167..fa92c1fe73 100644 --- a/@commitlint/cz-commitlint/README.md +++ b/@commitlint/cz-commitlint/README.md @@ -13,9 +13,9 @@ The interactive process is inspired by [cz-conventional-changelog](https://githu ### Configure commitizen adapter ```bash -npm install --save-dev @commitlint/cz-commitlint commitizen +npm install --save-dev @commitlint/cz-commitlint commitizen inquirer@9 # inquirer is required as peer dependency # or yarn -yarn add -D @commitlint/cz-commitlint commitizen +yarn add -D @commitlint/cz-commitlint commitizen inquirer@9 # inquirer is required as peer dependency ``` In package.json @@ -58,4 +58,4 @@ yarn commit ## Related -- [Commitlint Reference Prompt](https://commitlint.js.org/#/reference-prompt) - How to customize prompt information by setting commitlint.config.js +- [Commitlint Reference Prompt](https://commitlint.js.org/reference/prompt) - How to customize prompt information by setting commitlint.config.js diff --git a/@commitlint/cz-commitlint/index.cjs b/@commitlint/cz-commitlint/index.cjs new file mode 100644 index 0000000000..b5614ae470 --- /dev/null +++ b/@commitlint/cz-commitlint/index.cjs @@ -0,0 +1,6 @@ +'use strict'; + +/** @type {Awaited<typeof import('./lib/index.js')>['prompter']} */ +exports.prompter = async (...args) => { + (await import('./lib/index.js')).prompter(...args); +}; diff --git a/@commitlint/cz-commitlint/package.json b/@commitlint/cz-commitlint/package.json index cefb39f886..dd10160dda 100644 --- a/@commitlint/cz-commitlint/package.json +++ b/@commitlint/cz-commitlint/package.json @@ -1,9 +1,15 @@ { "name": "@commitlint/cz-commitlint", - "version": "13.1.0", + "type": "module", + "version": "20.1.0", "description": "Commitizen adapter using the commitlint.config.js", "main": "./lib/index.js", + "exports": { + "import": "./lib/index.js", + "require": "./index.cjs" + }, "files": [ + "index.cjs", "lib" ], "keywords": [ @@ -16,17 +22,18 @@ "scripts": { "commit": "git-cz" }, - "homepage": "https://github.com/conventional-changelog/commitlint#readme", + "homepage": "https://commitlint.js.org/", "bugs": { "url": "https://github.com/conventional-changelog/commitlint/issues" }, "repository": { "type": "git", - "url": "https://github.com/conventional-changelog/commitlint.git" + "url": "https://github.com/conventional-changelog/commitlint.git", + "directory": "@commitlint/cz-commitlint" }, "engineStrict": true, "engines": { - "node": ">= 10" + "node": ">=v18" }, "author": "Curly Brackets <water.curly@outlook.com>", "license": "MIT", @@ -36,17 +43,23 @@ } }, "dependencies": { - "@commitlint/load": "^13.1.0", - "@commitlint/types": "^13.1.0", - "chalk": "^4.1.0", - "lodash": "^4.17.21", - "word-wrap": "^1.2.3" + "@commitlint/ensure": "^20.0.0", + "@commitlint/load": "^20.1.0", + "@commitlint/types": "^20.0.0", + "chalk": "^5.3.0", + "lodash.isplainobject": "^4.0.6", + "word-wrap": "^1.2.5" }, "peerDependencies": { "commitizen": "^4.0.3", - "inquirer": "^8.0.0" + "inquirer": "^9.0.0" }, "devDependencies": { - "@types/inquirer": "^7.3.1" - } + "@types/inquirer": "^9.0.7", + "@types/lodash.isfunction": "^3.0.8", + "@types/lodash.isplainobject": "^4.0.8", + "commitizen": "^4.2.4", + "lodash.isfunction": "^3.0.9" + }, + "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" } diff --git a/@commitlint/cz-commitlint/src/Process.test.ts b/@commitlint/cz-commitlint/src/Process.test.ts index c5de547c79..fefca0c40a 100644 --- a/@commitlint/cz-commitlint/src/Process.test.ts +++ b/@commitlint/cz-commitlint/src/Process.test.ts @@ -1,33 +1,41 @@ -import {QualifiedRules, UserPromptConfig} from '@commitlint/types'; -import {Answers, DistinctQuestion} from 'inquirer'; -import isFunction from 'lodash/isFunction'; -import process from './Process'; +import { describe, test, expect, vi, beforeEach, afterEach } from "vitest"; +import { + QualifiedRules, + RuleConfigSeverity, + UserPromptConfig, +} from "@commitlint/types"; +import { Answers, DistinctQuestion } from "inquirer"; +import isFunction from "lodash.isfunction"; -const mockShowTitle = jest.fn(); -const mockShowValidation = jest.fn((message) => message); +import process from "./Process.js"; + +const mockShowTitle = vi.fn(); +const mockShowValidation = vi.fn((message) => message); // mock inquirer -const mockPrompt = jest.fn(function (questions, answers) { - for (const {name, message, when, filter, validate} of questions) { - if (!when || when(answers)) { +const mockPrompt = vi.fn(async function ( + questions: DistinctQuestion[], + answers: Answers, +) { + for (const { name, message, when, filter, validate } of questions) { + if (typeof when !== "function" || (await when(answers))) { const title = message && isFunction(message) - ? message(answers) - : typeof message === 'string' - ? message - : ''; + ? await message(answers) + : typeof message === "string" + ? message + : ""; mockShowTitle(title); - const validation: boolean | string = - !validate || validate(answers[name] ?? '', answers); + const validation = + typeof validate !== "function" || + (await validate((name && answers[name]) ?? "", answers)); - if (typeof validation === 'string') { + if (typeof validation === "string") { mockShowValidation(validation); break; - } else { - if (filter && answers[name]) { - answers[name] = filter(answers[name]); - } + } else if (filter && name && answers[name]) { + answers[name] = filter(answers[name], answers); } } } @@ -35,13 +43,9 @@ const mockPrompt = jest.fn(function (questions, answers) { function InquirerFactory(answers: Answers) { const inquirer = { - prompt: function (questions: DistinctQuestion) { - return { - then: function (callback: (answers: Answers) => void) { - mockPrompt(questions, answers); - callback(answers); - }, - }; + async prompt(questions: DistinctQuestion[]) { + await mockPrompt(questions, answers); + return answers; }, }; @@ -49,12 +53,12 @@ function InquirerFactory(answers: Answers) { } const MESSAGES = { - skip: '(press enter to skip)', - max: 'upper %d chars', - min: '%d chars at least', - emptyWarning: '%s can not be empty', - upperLimitWarning: '%s: %s over limit %d', - lowerLimitWarning: '%s: %s below limit %d', + skip: "(press enter to skip)", + max: "upper %d chars", + min: "%d chars at least", + emptyWarning: "%s can not be empty", + upperLimitWarning: "%s: %s over limit %d", + lowerLimitWarning: "%s: %s below limit %d", }; let rules: QualifiedRules; @@ -65,41 +69,41 @@ afterEach(() => { mockShowValidation.mockClear(); }); -describe('conventional-changlog', () => { +describe("conventional-changlog", () => { beforeEach(() => { rules = { - 'body-leading-blank': [1, 'always'], - 'body-max-line-length': [2, 'always', 100], - 'footer-leading-blank': [1, 'always'], - 'footer-max-line-length': [2, 'always', 100], - 'header-max-length': [2, 'always', 100], - 'subject-case': [ - 2, - 'never', - ['sentence-case', 'start-case', 'pascal-case', 'upper-case'], + "body-leading-blank": [RuleConfigSeverity.Warning, "always"], + "body-max-line-length": [RuleConfigSeverity.Error, "always", 100], + "footer-leading-blank": [RuleConfigSeverity.Warning, "always"], + "footer-max-line-length": [RuleConfigSeverity.Error, "always", 100], + "header-max-length": [RuleConfigSeverity.Error, "always", 100], + "subject-case": [ + RuleConfigSeverity.Error, + "never", + ["sentence-case", "start-case", "pascal-case", "upper-case"], ], - 'subject-empty': [2, 'never'], - 'subject-full-stop': [2, 'never', '.'], - 'type-case': [2, 'always', 'lower-case'], - 'type-empty': [2, 'never'], - 'type-enum': [ - 2, - 'always', + "subject-empty": [RuleConfigSeverity.Error, "never"], + "subject-full-stop": [RuleConfigSeverity.Error, "never", "."], + "type-case": [RuleConfigSeverity.Error, "always", "lower-case"], + "type-empty": [RuleConfigSeverity.Error, "never"], + "type-enum": [ + RuleConfigSeverity.Error, + "always", [ - 'build', - 'chore', - 'ci', - 'docs', - 'feat', - 'fix', - 'perf', - 'refactor', - 'revert', - 'style', - 'test', + "build", + "chore", + "ci", + "docs", + "feat", + "fix", + "perf", + "refactor", + "revert", + "style", + "test", ], ], - } as any; + }; prompts = { messages: MESSAGES, questions: { @@ -107,93 +111,93 @@ describe('conventional-changlog', () => { description: "Select the type of change that you're committing:", enum: { feat: { - description: 'A new feature', - title: 'Features', - emoji: '✨', + description: "A new feature", + title: "Features", + emoji: "✨", }, fix: { - description: 'A bug fix', - title: 'Bug Fixes', - emoji: '🐛', + description: "A bug fix", + title: "Bug Fixes", + emoji: "🐛", }, docs: { - description: 'Documentation only changes', - title: 'Documentation', - emoji: '📚', + description: "Documentation only changes", + title: "Documentation", + emoji: "📚", }, style: { description: - 'Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)', - title: 'Styles', - emoji: '💎', + "Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)", + title: "Styles", + emoji: "💎", }, refactor: { description: - 'A code change that neither fixes a bug nor adds a feature', - title: 'Code Refactoring', - emoji: '📦', + "A code change that neither fixes a bug nor adds a feature", + title: "Code Refactoring", + emoji: "📦", }, perf: { - description: 'A code change that improves performance', - title: 'Performance Improvements', - emoji: '🚀', + description: "A code change that improves performance", + title: "Performance Improvements", + emoji: "🚀", }, test: { - description: 'Adding missing tests or correcting existing tests', - title: 'Tests', - emoji: '🚨', + description: "Adding missing tests or correcting existing tests", + title: "Tests", + emoji: "🚨", }, build: { description: - 'Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm)', - title: 'Builds', - emoji: '🛠', + "Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm)", + title: "Builds", + emoji: "🛠", }, ci: { description: - 'Changes to our CI configuration files and scripts (example scopes: Travis, Circle, BrowserStack, SauceLabs)', - title: 'Continuous Integrations', - emoji: '⚙️', + "Changes to our CI configuration files and scripts (example scopes: Travis, Circle, BrowserStack, SauceLabs)", + title: "Continuous Integrations", + emoji: "⚙️", }, chore: { description: "Other changes that don't modify src or test files", - title: 'Chores', - emoji: '♻️', + title: "Chores", + emoji: "♻️", }, revert: { - description: 'Reverts a previous commit', - title: 'Reverts', - emoji: '🗑', + description: "Reverts a previous commit", + title: "Reverts", + emoji: "🗑", }, }, }, scope: { description: - 'What is the scope of this change (e.g. component or file name)', + "What is the scope of this change (e.g. component or file name)", }, subject: { description: - 'Write a short, imperative tense description of the change', + "Write a short, imperative tense description of the change", }, body: { - description: 'Provide a longer description of the change', + description: "Provide a longer description of the change", }, isBreaking: { - description: 'Are there any breaking changes?', + description: "Are there any breaking changes?", }, breakingBody: { description: - 'A BREAKING CHANGE commit requires a body. Please enter a longer description of the commit itself', + "A BREAKING CHANGE commit requires a body. Please enter a longer description of the commit itself", }, breaking: { - description: 'Describe the breaking changes', + description: "Describe the breaking changes", }, isIssueAffected: { - description: 'Does this change affect any open issues?', + description: "Does this change affect any open issues?", }, issuesBody: { description: - 'If issues are closed, the commit requires a body. Please enter a longer description of the commit itself', + "If issues are closed, the commit requires a body. Please enter a longer description of the commit itself", }, issues: { description: 'Add issue references (e.g. "fix #123", "re #123".)', @@ -201,41 +205,41 @@ describe('conventional-changlog', () => { }, }; }); - test('should process works well', () => { + test("should process works well", () => { const answers = { - type: 'refactor', - scope: 'prompt', - subject: 'refactor prompt based on inquirer', - body: 'inspired by commitizen/cz-conventional-changelog', + type: "refactor", + scope: "prompt", + subject: "refactor prompt based on inquirer", + body: "inspired by commitizen/cz-conventional-changelog", isBreaking: true, - breaking: 'refactor types', + breaking: "refactor types", isIssueAffected: true, - issues: 'https://github.com/conventional-changelog/commitlint/issues/94', + issues: "https://github.com/conventional-changelog/commitlint/issues/94", }; - return process(rules as any, prompts, InquirerFactory(answers) as any).then( + return process(rules, prompts, InquirerFactory(answers)).then( (commitMessage) => { expect(commitMessage).toBe( - 'refactor(prompt): refactor prompt based on inquirer\n\ninspired by commitizen/cz-conventional-changelog\n\nBREAKING CHANGE: refactor types\nhttps://github.com/conventional-changelog/commitlint/issues/94' + "refactor(prompt): refactor prompt based on inquirer\n\ninspired by commitizen/cz-conventional-changelog\n\nBREAKING CHANGE: refactor types\nhttps://github.com/conventional-changelog/commitlint/issues/94", ); - } + }, ); }); - test('should show validation and stop process when subject is empty', () => { + test("should show validation and stop process when subject is empty", () => { const answers = { - type: 'refactor', - scope: 'prompt', - body: 'inspired by commitizen/cz-conventional-changelog', + type: "refactor", + scope: "prompt", + body: "inspired by commitizen/cz-conventional-changelog", isBreaking: true, - breaking: 'refactor types', + breaking: "refactor types", isIssueAffected: true, - issues: 'https://github.com/conventional-changelog/commitlint/issues/94', + issues: "https://github.com/conventional-changelog/commitlint/issues/94", }; - return process(rules as any, prompts, InquirerFactory(answers) as any).then( - () => { - expect(mockShowValidation).toBeCalledWith('subject can not be empty'); - expect(mockShowTitle).toBeCalledTimes(3); - } - ); + return process(rules, prompts, InquirerFactory(answers)).then(() => { + expect(mockShowValidation).toHaveBeenCalledWith( + "subject can not be empty", + ); + expect(mockShowTitle).toHaveBeenCalledTimes(3); + }); }); }); diff --git a/@commitlint/cz-commitlint/src/Process.ts b/@commitlint/cz-commitlint/src/Process.ts index f1ec42d36f..48ec039d6f 100644 --- a/@commitlint/cz-commitlint/src/Process.ts +++ b/@commitlint/cz-commitlint/src/Process.ts @@ -1,24 +1,27 @@ -import {QualifiedRules, UserPromptConfig} from '@commitlint/types'; -import {Inquirer} from 'inquirer'; +import { QualifiedRules, UserPromptConfig } from "@commitlint/types"; +import type { Answers, DistinctQuestion } from "inquirer"; + import { combineCommitMessage as combineBody, getQuestions as getBodyQuestions, -} from './SectionBody'; +} from "./SectionBody.js"; import { combineCommitMessage as combineFooter, getQuestions as getFooterQuestions, -} from './SectionFooter'; +} from "./SectionFooter.js"; import { combineCommitMessage as combineHeader, getQuestions as getHeaderQuestions, -} from './SectionHeader'; -import {setPromptConfig} from './store/prompts'; -import {setRules} from './store/rules'; +} from "./SectionHeader.js"; +import { setPromptConfig } from "./store/prompts.js"; +import { setRules } from "./store/rules.js"; export default async function ( rules: QualifiedRules, prompts: UserPromptConfig, - inquirer: Inquirer + inquirer: { + prompt(questions: DistinctQuestion[]): Promise<Answers>; + }, ): Promise<string> { setRules(rules); setPromptConfig(prompts); @@ -32,5 +35,5 @@ export default async function ( const body = combineBody(answers); const footer = combineFooter(answers); - return [header, body, footer].filter(Boolean).join('\n'); + return [header, body, footer].filter(Boolean).join("\n"); } diff --git a/@commitlint/cz-commitlint/src/Question.test.ts b/@commitlint/cz-commitlint/src/Question.test.ts index 7a3cfb7d5b..d04ba708fb 100644 --- a/@commitlint/cz-commitlint/src/Question.test.ts +++ b/@commitlint/cz-commitlint/src/Question.test.ts @@ -1,317 +1,368 @@ -import chalk from 'chalk'; -import inquirer, {Answers, InputQuestionOptions} from 'inquirer'; -import Question from './Question'; +import { describe, test, expect, vi } from "vitest"; +import chalk from "chalk"; +import inquirer, { Answers, InputQuestionOptions } from "inquirer"; + +import Question from "./Question.js"; const MESSAGES = { - skip: '(press enter to skip)', - max: 'upper %d chars', - min: '%d chars at least', - emptyWarning: '%s can not be empty', - upperLimitWarning: '%s: %s over limit %d', - lowerLimitWarning: '%s: %s below limit %d', + skip: "(press enter to skip)", + max: "upper %d chars", + min: "%d chars at least", + emptyWarning: "%s can not be empty", + upperLimitWarning: "%s: %s over limit %d", + lowerLimitWarning: "%s: %s below limit %d", }; const QUESTION_CONFIG = { - title: 'please input', + title: "please input", messages: MESSAGES, }; -describe('name', () => { - test('should throw error when name is not a meaningful string', () => { +const caseFn = (input: string | string[], delimiter?: string) => + (Array.isArray(input) ? input : [input]) + .map((segment) => segment[0].toUpperCase() + segment.slice(1)) + .join(delimiter); + +describe("name", () => { + test("should throw error when name is not a meaningful string", () => { expect( () => - new Question('' as any, { + new Question("" as any, { ...QUESTION_CONFIG, - }) + }), ).toThrow(); expect( () => new Question( function () { - return 'scope'; + return "scope"; } as any, { ...QUESTION_CONFIG, - } - ) + }, + ), ).toThrow(); }); - test('should set name when name is valid', () => { + test("should set name when name is valid", () => { expect( - new Question('test' as any, { + new Question("test" as any, { ...QUESTION_CONFIG, - }).question - ).toHaveProperty('name', 'test'); + }).question, + ).toHaveProperty("name", "test"); }); }); -describe('type', () => { - test('should return "list" type when enumList is array', () => { - const question = new Question('scope', { +describe("type", () => { + test('should return "list" type when enumList is array and multipleSelectDefaultDelimiter is undefined', () => { + const question = new Question("scope", { + ...QUESTION_CONFIG, + enumList: ["cli", "core"], + }).question; + expect(question).toHaveProperty("type", "list"); + expect(question).toHaveProperty("choices", ["cli", "core"]); + expect(question).not.toHaveProperty("transformer"); + }); + + test('should return "checkbox" type when enumList is array and multipleSelectDefaultDelimiter is defined', () => { + const question = new Question("scope", { ...QUESTION_CONFIG, - enumList: ['cli', 'core'], + enumList: ["cli", "core"], + multipleSelectDefaultDelimiter: ",", }).question; - expect(question).toHaveProperty('type', 'list'); - expect(question).toHaveProperty('choices', ['cli', 'core']); - expect(question).not.toHaveProperty('transformer'); + expect(question).toHaveProperty("type", "checkbox"); + expect(question).toHaveProperty("choices", ["cli", "core"]); + expect(question).not.toHaveProperty("transformer"); }); test('should contain "skip" list item when enumList is array and skip is true', () => { - const question = new Question('scope', { + const question = new Question("scope", { ...QUESTION_CONFIG, - enumList: ['cli', 'core'], + enumList: ["cli", "core"], skip: true, }).question; - expect(question).toHaveProperty('type', 'list'); - expect(question).toHaveProperty('choices', [ - 'cli', - 'core', + expect(question).toHaveProperty("type", "list"); + expect(question).toHaveProperty("choices", [ + "cli", + "core", new inquirer.Separator(), { - name: 'empty', - value: '', + name: "empty", + value: "", }, ]); - expect(question).not.toHaveProperty('transformer'); + expect(question).not.toHaveProperty("transformer"); }); test('should return "confirm" type when name is start with "is"', () => { - const question = new Question('isSubmit' as any, { + const question = new Question("isSubmit" as any, { ...QUESTION_CONFIG, }).question; - expect(question).toHaveProperty('type', 'confirm'); - expect(question).not.toHaveProperty('choices'); - expect(question).not.toHaveProperty('transformer'); + expect(question).toHaveProperty("type", "confirm"); + expect(question).not.toHaveProperty("choices"); + expect(question).not.toHaveProperty("transformer"); }); test('should return "input" type in other cases', () => { - const question = new Question('body', { + const question = new Question("body", { ...QUESTION_CONFIG, }).question; - expect(question).toHaveProperty('type', 'input'); - expect(question).not.toHaveProperty('choices'); - expect(question).toHaveProperty('transformer', expect.any(Function)); + expect(question).toHaveProperty("type", "input"); + expect(question).not.toHaveProperty("choices"); + expect(question).toHaveProperty("transformer", expect.any(Function)); }); }); -describe('message', () => { - test('should display title when it is not input', () => { - const question = new Question('body', { +describe("message", () => { + test("should display title when it is not input", () => { + const question = new Question("body", { ...QUESTION_CONFIG, - enumList: ['cli', 'core'], + enumList: ["cli", "core"], }).question; - expect(question).toHaveProperty('message', expect.any(Function)); - expect((question.message as any)()).toBe('please input:'); + expect(question).toHaveProperty("message", expect.any(Function)); + expect((question.message as any)()).toBe("please input:"); }); - test('should display skip hint when it is input and can skip', () => { - const question = new Question('body' as any, { + test("should display skip hint when it is input and can skip", () => { + const question = new Question("body" as any, { ...QUESTION_CONFIG, skip: true, }).question; - expect(question).toHaveProperty('message', expect.any(Function)); + expect(question).toHaveProperty("message", expect.any(Function)); expect((question.message as any)()).toBe( - 'please input (press enter to skip):\n' + "please input (press enter to skip):\n", ); }); - test('should not display skip hint when it is input and without skip string', () => { - const question = new Question('scope', { + test("should not display skip hint when it is input and without skip string", () => { + const question = new Question("scope", { ...QUESTION_CONFIG, messages: {}, skip: true, } as any).question; - expect(question).toHaveProperty('message', expect.any(Function)); - expect((question.message as any)()).toBe('please input:\n'); + expect(question).toHaveProperty("message", expect.any(Function)); + expect((question.message as any)()).toBe("please input:\n"); }); - test('should display upper limit hint when it is input and has max length', () => { - const question = new Question('scope', { + test("should display upper limit hint when it is input and has max length", () => { + const question = new Question("scope", { ...QUESTION_CONFIG, maxLength: 80, } as any).question; - expect(question).toHaveProperty('message', expect.any(Function)); - expect((question.message as any)()).toBe('please input: upper 80 chars\n'); + expect(question).toHaveProperty("message", expect.any(Function)); + expect((question.message as any)()).toBe("please input: upper 80 chars\n"); }); - test('should display lower limit hint when it is input and has min length', () => { - const question = new Question('scope', { + test("should display lower limit hint when it is input and has min length", () => { + const question = new Question("scope", { ...QUESTION_CONFIG, minLength: 10, } as any).question; - expect(question).toHaveProperty('message', expect.any(Function)); + expect(question).toHaveProperty("message", expect.any(Function)); expect((question.message as any)()).toBe( - 'please input: 10 chars at least\n' + "please input: 10 chars at least\n", ); }); - test('should display hints with correct format', () => { - const question = new Question('scope', { + test("should display hints with correct format", () => { + const question = new Question("scope", { ...QUESTION_CONFIG, minLength: 10, maxLength: 80, skip: true, } as any).question; - expect(question).toHaveProperty('message', expect.any(Function)); + expect(question).toHaveProperty("message", expect.any(Function)); expect((question.message as any)()).toBe( - 'please input (press enter to skip): 10 chars at least, upper 80 chars\n' + "please input (press enter to skip): 10 chars at least, upper 80 chars\n", ); }); - test('should execute function beforeQuestionStart when init message', () => { - const mockFn = jest.fn(); + test("should execute function beforeQuestionStart when init message", () => { + const mockFn = vi.fn(); class CustomQuestion extends Question { beforeQuestionStart(answers: Answers): void { mockFn(answers); } } - const question = new CustomQuestion('body', { + const question = new CustomQuestion("body", { ...QUESTION_CONFIG, } as any).question; - expect(question).toHaveProperty('message', expect.any(Function)); + expect(question).toHaveProperty("message", expect.any(Function)); const answers = { - header: 'This is header', - footer: 'This is footer', + header: "This is header", + footer: "This is footer", }; (question.message as any)(answers); expect(mockFn).toHaveBeenCalledWith(answers); }); }); -describe('filter', () => { - test('should auto fix case and full-stop', () => { - const question = new Question('body', { +describe("filter", () => { + test("should auto fix case and full-stop", () => { + const question = new Question("body", { + ...QUESTION_CONFIG, + caseFn, + fullStopFn: (input: string) => input + "!", + }).question; + + expect(question.filter?.("xxxx", {})).toBe("Xxxx!"); + }); + + test("should transform each item with same case when input is array", () => { + const question = new Question("body", { + ...QUESTION_CONFIG, + caseFn, + fullStopFn: (input: string) => input + "!", + }).question; + + expect(question.filter?.(["xxxx", "yyyy"], {})).toBe("Xxxx,Yyyy!"); + }); + + test("should concat items with multipleSelectDefaultDelimiter when input is array", () => { + const question = new Question("body", { + ...QUESTION_CONFIG, + caseFn, + fullStopFn: (input: string) => input + "!", + multipleSelectDefaultDelimiter: "|", + }).question; + + expect(question.filter?.(["xxxx", "yyyy"], {})).toBe("Xxxx|Yyyy!"); + }); + + test("should split the string to items when multipleValueDelimiters is defined", () => { + const question = new Question("body", { ...QUESTION_CONFIG, - caseFn: (input: string) => input[0].toUpperCase() + input.slice(1), - fullStopFn: (input: string) => input + '!', + caseFn, + fullStopFn: (input: string) => input + "!", + multipleValueDelimiters: /,|\|/g, }).question; - expect(question.filter?.('xxxx', {})).toBe('Xxxx!'); + expect(question.filter?.("xxxx,yyyy|zzzz", {})).toBe("Xxxx,Yyyy|Zzzz!"); + expect(question.filter?.("xxxx-yyyy-zzzz", {})).toBe("Xxxx-yyyy-zzzz!"); }); - test('should works well when does not pass caseFn/fullStopFn', () => { - const question = new Question('body', { + test("should works well when does not pass caseFn/fullStopFn", () => { + const question = new Question("body", { ...QUESTION_CONFIG, }).question; - expect(question.filter?.('xxxx', {})).toBe('xxxx'); + expect(question.filter?.("xxxx", {})).toBe("xxxx"); }); }); -describe('validate', () => { - test('should display empty warning when can not skip but string is empty', () => { - const question = new Question('body', { +describe("validate", () => { + test("should display empty warning when can not skip but string is empty", () => { + const question = new Question("body", { ...QUESTION_CONFIG, skip: false, }).question; - expect(question.validate?.('')).toBe('body can not be empty'); + expect(question.validate?.("")).toBe("body can not be empty"); }); - test('should ignore empty validation when can skip', () => { - const question = new Question('body', { + test("should ignore empty validation when can skip", () => { + const question = new Question("body", { ...QUESTION_CONFIG, skip: true, }).question; - expect(question.validate?.('')).toBe(true); + expect(question.validate?.("")).toBe(true); }); - test('should display upper limit warning when char count is over upper limit', () => { - const question = new Question('body', { + test("should display upper limit warning when char count is over upper limit", () => { + const question = new Question("body", { ...QUESTION_CONFIG, maxLength: 5, }).question; - expect(question.validate?.('xxxxxx')).toBe('body: body over limit 1'); + expect(question.validate?.("xxxxxx")).toBe("body: body over limit 1"); }); - test('should display lower limit warning when char count is less than lower limit', () => { - const question = new Question('body', { + test("should display lower limit warning when char count is less than lower limit", () => { + const question = new Question("body", { ...QUESTION_CONFIG, minLength: 5, }).question; - expect(question.validate?.('xxx')).toBe('body: body below limit 2'); + expect(question.validate?.("xxx")).toBe("body: body below limit 2"); }); - test('should validate the final submit string', () => { - const question = new Question('body', { + test("should validate the final submit string", () => { + const question = new Question("body", { ...QUESTION_CONFIG, - caseFn: () => '', + caseFn: () => "", skip: false, }).question; - expect(question.validate?.('xxxx')).not.toBe(true); + expect(question.validate?.("xxxx")).not.toBe(true); }); }); -describe('transformer', () => { - test('should auto transform case and full-stop', () => { - const question = new Question('body', { +describe("transformer", () => { + test("should auto transform case and full-stop", () => { + const question = new Question("body", { ...QUESTION_CONFIG, - caseFn: (input: string) => input[0].toUpperCase() + input.slice(1), - fullStopFn: (input: string) => input + '!', + caseFn, + fullStopFn: (input: string) => input + "!", }).question; expect( - (question as InputQuestionOptions)?.transformer?.('xxxx', {}, {}) - ).toBe('Xxxx!'); + (question as InputQuestionOptions)?.transformer?.("xxxx", {}, {}), + ).toBe("Xxxx!"); }); - test('should char count with green color when in the limit range', () => { - let question = new Question('body', { + test("should char count with green color when in the limit range", () => { + let question = new Question("body", { ...QUESTION_CONFIG, maxLength: 5, }).question; expect( - (question as InputQuestionOptions)?.transformer?.('xxx', {}, {}) + (question as InputQuestionOptions)?.transformer?.("xxx", {}, {}), ).toEqual(chalk.green(`(3) xxx`)); - question = new Question('body', { + question = new Question("body", { ...QUESTION_CONFIG, minLength: 2, }).question; expect( - (question as InputQuestionOptions)?.transformer?.('xxx', {}, {}) + (question as InputQuestionOptions)?.transformer?.("xxx", {}, {}), ).toEqual(chalk.green(`(3) xxx`)); }); - test('should char count with red color when over the limit range', () => { - let question = new Question('body', { + test("should char count with red color when over the limit range", () => { + let question = new Question("body", { ...QUESTION_CONFIG, maxLength: 5, }).question; expect( - (question as InputQuestionOptions)?.transformer?.('xxxxxx', {}, {}) + (question as InputQuestionOptions)?.transformer?.("xxxxxx", {}, {}), ).toEqual(chalk.red(`(6) xxxxxx`)); - question = new Question('body', { + question = new Question("body", { ...QUESTION_CONFIG, minLength: 2, }).question; expect( - (question as InputQuestionOptions)?.transformer?.('x', {}, {}) + (question as InputQuestionOptions)?.transformer?.("x", {}, {}), ).toEqual(chalk.red(`(1) x`)); }); }); -describe('inquirer question', () => { +describe("inquirer question", () => { test('should pass "when" and "default" field to inquirer question', () => { const when = (answers: Answers) => !!answers.header; - const question = new Question('body', { + const question = new Question("body", { ...QUESTION_CONFIG, when, - defaultValue: 'update', + defaultValue: "update", }).question; - expect(question).toHaveProperty('default', 'update'); - expect(question).toHaveProperty('when', when); + expect(question).toHaveProperty("default", "update"); + expect(question).toHaveProperty("when", when); }); }); diff --git a/@commitlint/cz-commitlint/src/Question.ts b/@commitlint/cz-commitlint/src/Question.ts index 109db59ef8..c6a7ab24ad 100644 --- a/@commitlint/cz-commitlint/src/Question.ts +++ b/@commitlint/cz-commitlint/src/Question.ts @@ -1,8 +1,13 @@ -import {PromptMessages, PromptName} from '@commitlint/types'; -import chalk from 'chalk'; -import inquirer, {Answers, ChoiceCollection, DistinctQuestion} from 'inquirer'; -import {CaseFn} from './utils/case-fn'; -import {FullStopFn} from './utils/full-stop-fn'; +import { PromptMessages, PromptName } from "@commitlint/types"; +import chalk from "chalk"; +import inquirer, { + Answers, + ChoiceCollection, + DistinctQuestion, +} from "inquirer"; + +import { CaseFn } from "./utils/case-fn.js"; +import { FullStopFn } from "./utils/full-stop-fn.js"; export type QuestionConfig = { title: string; @@ -10,12 +15,14 @@ export type QuestionConfig = { maxLength?: number; minLength?: number; defaultValue?: string; - when?: DistinctQuestion['when']; + when?: DistinctQuestion["when"]; skip?: boolean; enumList?: ChoiceCollection<{ name: string; value: string; }> | null; + multipleValueDelimiters?: RegExp; + multipleSelectDefaultDelimiter?: string; fullStopFn?: FullStopFn; caseFn?: CaseFn; }; @@ -29,6 +36,8 @@ export default class Question { private title: string; private caseFn: CaseFn; private fullStopFn: FullStopFn; + private multipleValueDelimiters?: RegExp; + private multipleSelectDefaultDelimiter?: string; constructor( name: PromptName, { @@ -42,40 +51,47 @@ export default class Question { caseFn, maxLength, minLength, - }: QuestionConfig + multipleValueDelimiters, + multipleSelectDefaultDelimiter, + }: QuestionConfig, ) { - if (!name || typeof name !== 'string') - throw new Error('Question: name is required'); + if (!name || typeof name !== "string") + throw new Error("Question: name is required"); this._maxLength = maxLength ?? Infinity; this._minLength = minLength ?? 0; this.messages = messages; - this.title = title ?? ''; + this.title = title ?? ""; this.skip = skip ?? false; this.fullStopFn = fullStopFn ?? ((_: string) => _); - this.caseFn = caseFn ?? ((_: string) => _); + this.caseFn = + caseFn ?? + ((input: string | string[], delimiter?: string) => + Array.isArray(input) ? input.join(delimiter) : input); + this.multipleValueDelimiters = multipleValueDelimiters; + this.multipleSelectDefaultDelimiter = multipleSelectDefaultDelimiter; if (enumList && Array.isArray(enumList)) { this._question = { - type: 'list', + type: multipleSelectDefaultDelimiter ? "checkbox" : "list", choices: skip ? [ ...enumList, new inquirer.Separator(), { - name: 'empty', - value: '', + name: "empty", + value: "", }, - ] + ] : [...enumList], }; } else if (/^is[A-Z]/.test(name)) { this._question = { - type: 'confirm', + type: "confirm", }; } else { this._question = { - type: 'input', + type: "input", transformer: this.transformer.bind(this), }; } @@ -91,7 +107,7 @@ export default class Question { } getMessage(key: string): string { - return this.messages[key] ?? ''; + return this.messages[key] ?? ""; } get question(): Readonly<DistinctQuestion> { @@ -120,19 +136,19 @@ export default class Question { protected validate(input: string): boolean | string { const output = this.filter(input); - const questionName = this.question.name ?? ''; + const questionName = this.question.name ?? ""; if (!this.skip && output.length === 0) { - return this.getMessage('emptyWarning').replace(/%s/g, questionName); + return this.getMessage("emptyWarning").replace(/%s/g, questionName); } if (output.length > this.maxLength) { - return this.getMessage('upperLimitWarning') + return this.getMessage("upperLimitWarning") .replace(/%s/g, questionName) .replace(/%d/g, `${output.length - this.maxLength}`); } if (output.length < this.minLength) { - return this.getMessage('lowerLimitWarning') + return this.getMessage("lowerLimitWarning") .replace(/%s/g, questionName) .replace(/%d/g, `${this.minLength - output.length}`); } @@ -140,8 +156,25 @@ export default class Question { return true; } - protected filter(input: string): string { - return this.caseFn(this.fullStopFn(input)); + protected filter(input: string | string[]): string { + let toCased; + if (Array.isArray(input)) { + toCased = this.caseFn(input, this.multipleSelectDefaultDelimiter); + } else if (this.multipleValueDelimiters) { + const segments = input.split(this.multipleValueDelimiters); + const casedString = this.caseFn(segments, ","); + const casedSegments = casedString.split(","); + toCased = input.replace( + new RegExp(`[^${this.multipleValueDelimiters.source}]+`, "g"), + (segment) => { + return casedSegments[segments.indexOf(segment)]; + }, + ); + } else { + toCased = this.caseFn(input); + } + + return this.fullStopFn(toCased); } protected transformer(input: string, _answers: Answers): string { @@ -154,36 +187,38 @@ export default class Question { output.length <= this.maxLength && output.length >= this.minLength ? chalk.green : chalk.red; - return color('(' + output.length + ') ' + input); + return color("(" + output.length + ") " + output); } protected decorateMessage(_answers: Answers): string { - this.beforeQuestionStart && this.beforeQuestionStart(_answers); - if (this.question.type === 'input') { + if (this.beforeQuestionStart) { + this.beforeQuestionStart(_answers); + } + if (this.question.type === "input") { const countLimitMessage = (() => { const messages = []; - if (this.minLength > 0 && this.getMessage('min')) { + if (this.minLength > 0 && this.getMessage("min")) { messages.push( - this.getMessage('min').replace(/%d/g, this.minLength + '') + this.getMessage("min").replace(/%d/g, this.minLength + ""), ); } - if (this.maxLength < Infinity && this.getMessage('max')) { + if (this.maxLength < Infinity && this.getMessage("max")) { messages.push( - this.getMessage('max').replace(/%d/g, this.maxLength + '') + this.getMessage("max").replace(/%d/g, this.maxLength + ""), ); } - return messages.join(', '); + return messages.join(", "); })(); - const skipMessage = this.skip && this.getMessage('skip'); + const skipMessage = this.skip && this.getMessage("skip"); return ( this.title + - (skipMessage ? ` ${skipMessage}` : '') + - ':' + - (countLimitMessage ? ` ${countLimitMessage}` : '') + - '\n' + (skipMessage ? ` ${skipMessage}` : "") + + ":" + + (countLimitMessage ? ` ${countLimitMessage}` : "") + + "\n" ); } else { return `${this.title}:`; diff --git a/@commitlint/cz-commitlint/src/SectionBody.test.ts b/@commitlint/cz-commitlint/src/SectionBody.test.ts index 12e4acc6e5..0d7e2bf9c9 100644 --- a/@commitlint/cz-commitlint/src/SectionBody.test.ts +++ b/@commitlint/cz-commitlint/src/SectionBody.test.ts @@ -1,77 +1,96 @@ -import {RuleConfigSeverity} from '@commitlint/types'; -import {combineCommitMessage, getQuestions} from './SectionBody'; -import {setRules} from './store/rules'; +import { describe, test, expect } from "vitest"; +import { RuleConfigSeverity } from "@commitlint/types"; -describe('getQuestions', () => { - test('should exclude question when body must be empty', () => { +import { combineCommitMessage, getQuestions } from "./SectionBody.js"; +import { setRules } from "./store/rules.js"; + +describe("getQuestions", () => { + test("should exclude question when body must be empty", () => { setRules({ - 'body-empty': [RuleConfigSeverity.Error, 'always'], + "body-empty": [RuleConfigSeverity.Error, "always"], }); const questions = getQuestions(); expect(questions).toHaveLength(0); }); - test('should only return body question', () => { + test("should only return body question", () => { setRules({}); const questions = getQuestions(); expect(questions).toHaveLength(1); expect(questions).toEqual([ expect.objectContaining({ - name: 'body', + name: "body", }), ]); }); }); -describe('combineCommitMessage', () => { - test('should wrap message to multi lines when max-line-length set', () => { +describe("combineCommitMessage", () => { + test("should wrap message to multi lines when max-line-length set", () => { setRules({ - 'body-max-line-length': [RuleConfigSeverity.Error, 'always', 10], + "body-max-line-length": [RuleConfigSeverity.Error, "always", 10], }); const commitMessage = combineCommitMessage({ - body: 'This is the body message.', + body: "This is the body message.", }); - expect(commitMessage).toBe('This is\nthe body\nmessage.'); + expect(commitMessage).toBe("This is\nthe body\nmessage."); }); - test('should auto apply leading blank', () => { + test("should auto apply leading blank", () => { setRules({ - 'body-leading-blank': [RuleConfigSeverity.Error, 'always'], + "body-leading-blank": [RuleConfigSeverity.Error, "always"], }); const commitMessage = combineCommitMessage({ - body: 'This is the body message.', + body: "This is the body message.", }); - expect(commitMessage).toBe('\nThis is the body message.'); + expect(commitMessage).toBe("\nThis is the body message."); }); - test('should return correct string when leading-blank and max-line-length both set', () => { + test("should return correct string when leading-blank and max-line-length both set", () => { setRules({ - 'body-max-line-length': [RuleConfigSeverity.Error, 'always', 10], - 'body-leading-blank': [RuleConfigSeverity.Error, 'always'], + "body-max-line-length": [RuleConfigSeverity.Error, "always", 10], + "body-leading-blank": [RuleConfigSeverity.Error, "always"], + }); + const commitMessage = combineCommitMessage({ + body: "This is the body message.", }); + expect(commitMessage).toBe("\nThis is\nthe body\nmessage."); + }); + + test("should use breakingBody when body message is empty but commit has BREAK CHANGE", () => { + setRules({}); + const commitMessage = combineCommitMessage({ + breakingBody: "This is breaking body message.", + }); + expect(commitMessage).toBe("This is breaking body message."); + }); + + test("should use issueBody when body message is empty but commit has issue note", () => { + setRules({}); const commitMessage = combineCommitMessage({ - body: 'This is the body message.', + issuesBody: "This is issue body message.", }); - expect(commitMessage).toBe('\nThis is\nthe body\nmessage.'); + expect(commitMessage).toBe("This is issue body message."); }); - test('should use breakingBody when body message is empty but commit has BREAK CHANGE', () => { + test("should use issueBody when body message is empty string but commit has issue note", () => { setRules({}); const commitMessage = combineCommitMessage({ - breakingBody: 'This is breaking body message.', + body: "", + issuesBody: "This is issue body message.", }); - expect(commitMessage).toBe('This is breaking body message.'); + expect(commitMessage).toBe("This is issue body message."); }); - test('should use issueBody when body message is empty but commit has issue note', () => { + test("should return empty message when body is empty", () => { setRules({}); const commitMessage = combineCommitMessage({ - issuesBody: 'This is issue body message.', + body: "", }); - expect(commitMessage).toBe('This is issue body message.'); + expect(commitMessage).toBe(""); }); }); diff --git a/@commitlint/cz-commitlint/src/SectionBody.ts b/@commitlint/cz-commitlint/src/SectionBody.ts index de528b8858..07f1c22cd0 100644 --- a/@commitlint/cz-commitlint/src/SectionBody.ts +++ b/@commitlint/cz-commitlint/src/SectionBody.ts @@ -1,25 +1,26 @@ -import {Answers, DistinctQuestion} from 'inquirer'; -import wrap from 'word-wrap'; -import Question from './Question'; -import getRuleQuestionConfig from './services/getRuleQuestionConfig'; -import {getRule} from './store/rules'; -import getLeadingBlankFn from './utils/leading-blank-fn'; -import {getMaxLength} from './utils/rules'; +import { Answers, DistinctQuestion } from "inquirer"; +import wrap from "word-wrap"; + +import Question from "./Question.js"; +import getRuleQuestionConfig from "./services/getRuleQuestionConfig.js"; +import { getRule } from "./store/rules.js"; +import getLeadingBlankFn from "./utils/leading-blank-fn.js"; +import { getMaxLength } from "./utils/rules.js"; export function getQuestions(): Array<DistinctQuestion> { // body - const questionConfig = getRuleQuestionConfig('body'); + const questionConfig = getRuleQuestionConfig("body"); if (!questionConfig) return []; - else return [new Question('body', questionConfig).question]; + else return [new Question("body", questionConfig).question]; } export function combineCommitMessage(answers: Answers): string { - const maxLineLength = getMaxLength(getRule('body', 'max-line-length')); - const leadingBlankFn = getLeadingBlankFn(getRule('body', 'leading-blank')); - const {body, breakingBody, issuesBody} = answers; + const maxLineLength = getMaxLength(getRule("body", "max-line-length")); + const leadingBlankFn = getLeadingBlankFn(getRule("body", "leading-blank")); + const { body, breakingBody, issuesBody } = answers; - const commitBody = body ?? breakingBody ?? issuesBody ?? '-'; + const commitBody = body || breakingBody || issuesBody || ""; if (commitBody) { return leadingBlankFn( @@ -27,11 +28,11 @@ export function combineCommitMessage(answers: Answers): string { ? wrap(commitBody, { width: maxLineLength, trim: true, - indent: '', - }) - : commitBody.trim() + indent: "", + }) + : commitBody.trim(), ); } else { - return ''; + return ""; } } diff --git a/@commitlint/cz-commitlint/src/SectionFooter.test.ts b/@commitlint/cz-commitlint/src/SectionFooter.test.ts index 06752401d5..e16c9fadc8 100644 --- a/@commitlint/cz-commitlint/src/SectionFooter.test.ts +++ b/@commitlint/cz-commitlint/src/SectionFooter.test.ts @@ -1,22 +1,24 @@ -import {RuleConfigSeverity} from '@commitlint/types'; -import {combineCommitMessage, getQuestions} from './SectionFooter'; -import {setPromptConfig} from './store/prompts'; -import {setRules} from './store/rules'; +import { describe, test, expect, beforeEach } from "vitest"; +import { RuleConfigSeverity } from "@commitlint/types"; + +import { combineCommitMessage, getQuestions } from "./SectionFooter.js"; +import { setPromptConfig } from "./store/prompts.js"; +import { setRules } from "./store/rules.js"; beforeEach(() => { setRules({}); setPromptConfig({}); }); -describe('getQuestions', () => { - test('should only ask questions that listed in prompt question config', () => { +describe("getQuestions", () => { + test("should only ask questions that listed in prompt question config", () => { setPromptConfig({ questions: { footer: { description: - '<footer> holds further meta data, such as breaking changes and issue ids', + "<footer> holds further meta data, such as breaking changes and issue ids", }, issues: { - description: '<issues> link', + description: "<issues> link", }, }, }); @@ -26,19 +28,19 @@ describe('getQuestions', () => { expect(questions).toHaveLength(2); expect(questions).toEqual([ expect.objectContaining({ - name: 'issues', + name: "issues", }), expect.objectContaining({ - name: 'footer', + name: "footer", }), ]); }); - test('should not have break change as default', () => { + test("should not have break change as default", () => { setPromptConfig({ questions: { isBreaking: { - description: 'Are there any breaking changes?', + description: "Are there any breaking changes?", }, }, }); @@ -46,20 +48,20 @@ describe('getQuestions', () => { const questions = getQuestions(); expect(questions).toEqual([ expect.objectContaining({ - name: 'isBreaking', + name: "isBreaking", default: false, }), ]); }); - test('should ask for break change info when have break change', () => { + test("should ask for break change info when have break change", () => { setPromptConfig({ questions: { isBreaking: { - description: 'Are there any breaking changes?', + description: "Are there any breaking changes?", }, breaking: { - description: 'Describe the breaking changes', + description: "Describe the breaking changes", }, }, }); @@ -68,24 +70,24 @@ describe('getQuestions', () => { expect( (questions[1].when as any)({ isBreaking: false, - }) + }), ).toBe(false); expect( (questions[1].when as any)({ isBreaking: true, - }) + }), ).toBe(true); }); - test('should ask for body info when have break change but does not have body message', () => { + test("should ask for body info when have break change but does not have body message", () => { setPromptConfig({ questions: { isBreaking: { - description: 'Describe the breaking changes', + description: "Describe the breaking changes", }, breakingBody: { description: - 'A BREAKING CHANGE commit requires a body. Please enter a longer description of the commit itself', + "A BREAKING CHANGE commit requires a body. Please enter a longer description of the commit itself", }, }, }); @@ -95,28 +97,28 @@ describe('getQuestions', () => { expect( (questions[1].when as any)({ isBreaking: true, - }) + }), ).toBe(true); expect( (questions[1].when as any)({ isBreaking: true, - body: 'xxx', - }) + body: "xxx", + }), ).toBe(false); expect( (questions[1].when as any)({ isBreaking: false, - }) + }), ).toBe(false); }); - test('should change does not affect any issues as default', () => { + test("should change does not affect any issues as default", () => { setPromptConfig({ questions: { isIssueAffected: { - description: 'Does this change affect any open issues?', + description: "Does this change affect any open issues?", }, }, }); @@ -124,17 +126,17 @@ describe('getQuestions', () => { const questions = getQuestions(); expect(questions).toEqual([ expect.objectContaining({ - name: 'isIssueAffected', + name: "isIssueAffected", default: false, }), ]); }); - test('should ask for issue info when have issue affected', () => { + test("should ask for issue info when have issue affected", () => { setPromptConfig({ questions: { isIssueAffected: { - description: 'Does this change affect any open issues?', + description: "Does this change affect any open issues?", }, issues: { description: 'Add issue references (e.g. "fix #123", "re #123".)', @@ -146,24 +148,24 @@ describe('getQuestions', () => { expect( (questions[1].when as any)({ isIssueAffected: false, - }) + }), ).toBe(false); expect( (questions[1].when as any)({ isIssueAffected: true, - }) + }), ).toBe(true); }); - test('should ask for body info when have issue affected but does not have body message', () => { + test("should ask for body info when have issue affected but does not have body message", () => { setPromptConfig({ questions: { isIssueAffected: { - description: 'Does this change affect any open issues?', + description: "Does this change affect any open issues?", }, issuesBody: { description: - 'If issues are closed, the commit requires a body. Please enter a longer description of the commit itself', + "If issues are closed, the commit requires a body. Please enter a longer description of the commit itself", }, issues: { description: 'Add issue references (e.g. "fix #123", "re #123".)', @@ -176,139 +178,139 @@ describe('getQuestions', () => { expect( (questions[1].when as any)({ isIssueAffected: true, - }) + }), ).toBe(true); expect( (questions[1].when as any)({ isIssueAffected: true, - body: 'xxx', - }) + body: "xxx", + }), ).toBe(false); expect( (questions[1].when as any)({ isIssueAffected: false, - breaking: 'xxxxx', - }) + breaking: "xxxxx", + }), ).toBe(false); }); }); -describe('combineCommitMessage', () => { +describe("combineCommitMessage", () => { test('should return BreakChange start with "BREAKING CHANGE: "', () => { let commitMessage = combineCommitMessage({ - breaking: 'BREAKING CHANGE: xxxxxx', + breaking: "BREAKING CHANGE: xxxxxx", }); - expect(commitMessage).toBe('BREAKING CHANGE: xxxxxx'); + expect(commitMessage).toBe("BREAKING CHANGE: xxxxxx"); commitMessage = combineCommitMessage({ - breaking: 'xxxxxx', + breaking: "xxxxxx", }); - expect(commitMessage).toBe('BREAKING CHANGE: xxxxxx'); + expect(commitMessage).toBe("BREAKING CHANGE: xxxxxx"); }); - test('should return correct string with BreakChange,issue,footer', () => { + test("should return correct string with BreakChange,issue,footer", () => { const commitMessage = combineCommitMessage({ issues: - 'https://github.com/conventional-changelog/commitlint/issues/2507', - breaking: 'BREAKING CHANGE: xxxxxx', - footer: 'Other footer information.', + "https://github.com/conventional-changelog/commitlint/issues/2507", + breaking: "BREAKING CHANGE: xxxxxx", + footer: "Other footer information.", }); expect(commitMessage).toBe( - 'BREAKING CHANGE: xxxxxx\nhttps://github.com/conventional-changelog/commitlint/issues/2507\nOther footer information.' + "BREAKING CHANGE: xxxxxx\nhttps://github.com/conventional-changelog/commitlint/issues/2507\nOther footer information.", ); }); - test('should return wrap string with footer-max-line-length', () => { + test("should return wrap string with footer-max-line-length", () => { setRules({ - 'footer-max-line-length': [RuleConfigSeverity.Error, 'always', 10], + "footer-max-line-length": [RuleConfigSeverity.Error, "always", 10], }); const commitMessage = combineCommitMessage({ issues: - 'https://github.com/conventional-changelog/commitlint/issues/2507', - breaking: 'BREAKING CHANGE: xxxxxx', - footer: 'Other footer information.', + "https://github.com/conventional-changelog/commitlint/issues/2507", + breaking: "BREAKING CHANGE: xxxxxx", + footer: "Other footer information.", }); expect(commitMessage).toBe( - 'BREAKING\nCHANGE:\nxxxxxx\nhttps://github.com/conventional-changelog/commitlint/issues/2507\nOther\nfooter\ninformation.' + "BREAKING\nCHANGE:\nxxxxxx\nhttps://github.com/conventional-changelog/commitlint/issues/2507\nOther\nfooter\ninformation.", ); }); - test('should auto leading blank when footer-leading-blank is set', () => { + test("should auto leading blank when footer-leading-blank is set", () => { setRules({ - 'footer-max-line-length': [RuleConfigSeverity.Error, 'always', 10], - 'footer-leading-blank': [RuleConfigSeverity.Error, 'always'], + "footer-max-line-length": [RuleConfigSeverity.Error, "always", 10], + "footer-leading-blank": [RuleConfigSeverity.Error, "always"], }); const commitMessage = combineCommitMessage({ issues: - 'https://github.com/conventional-changelog/commitlint/issues/2507', - breaking: 'BREAKING CHANGE: xxxxxx', - footer: 'Other footer information.', + "https://github.com/conventional-changelog/commitlint/issues/2507", + breaking: "BREAKING CHANGE: xxxxxx", + footer: "Other footer information.", }); expect(commitMessage).toBe( - '\nBREAKING\nCHANGE:\nxxxxxx\nhttps://github.com/conventional-changelog/commitlint/issues/2507\nOther\nfooter\ninformation.' + "\nBREAKING\nCHANGE:\nxxxxxx\nhttps://github.com/conventional-changelog/commitlint/issues/2507\nOther\nfooter\ninformation.", ); }); - test('when does not have break change', () => { + test("when does not have break change", () => { const commitMessage = combineCommitMessage({ issues: - 'https://github.com/conventional-changelog/commitlint/issues/2507', - footer: 'Other footer information.', + "https://github.com/conventional-changelog/commitlint/issues/2507", + footer: "Other footer information.", }); expect(commitMessage).toBe( - 'https://github.com/conventional-changelog/commitlint/issues/2507\nOther footer information.' + "https://github.com/conventional-changelog/commitlint/issues/2507\nOther footer information.", ); }); - test('when does not have issue', () => { + test("when does not have issue", () => { const commitMessage = combineCommitMessage({ - footer: 'Other footer information.', + footer: "Other footer information.", }); - expect(commitMessage).toBe('Other footer information.'); + expect(commitMessage).toBe("Other footer information."); }); }); -describe('FooterQuestion', () => { - test('should limited by footer maxLength and minLength', () => { +describe("FooterQuestion", () => { + test("should limited by footer maxLength and minLength", () => { setRules({ - 'footer-max-length': [RuleConfigSeverity.Error, 'always', 30], - 'footer-min-length': [RuleConfigSeverity.Error, 'always', 10], + "footer-max-length": [RuleConfigSeverity.Error, "always", 30], + "footer-min-length": [RuleConfigSeverity.Error, "always", 10], }); setPromptConfig({ messages: { - skip: '(press enter to skip)', - max: 'upper %d chars', - min: '%d chars at least', - emptyWarning: '%s can not be empty', - upperLimitWarning: '%s: %s over limit %d', - lowerLimitWarning: '%s: %s below limit %d', + skip: "(press enter to skip)", + max: "upper %d chars", + min: "%d chars at least", + emptyWarning: "%s can not be empty", + upperLimitWarning: "%s: %s over limit %d", + lowerLimitWarning: "%s: %s below limit %d", }, questions: { breaking: { - description: 'Describe the breaking changes', + description: "Describe the breaking changes", }, issues: { - description: '<issues> link', + description: "<issues> link", }, footer: { description: - '<footer> holds further meta data, such as breaking changes and issue ids', + "<footer> holds further meta data, such as breaking changes and issue ids", }, }, }); const questions = getQuestions(); const answers = { - breaking: 'BREAKING CHANGE: xxxxxx', - issues: ''.padEnd(6, 'y'), + breaking: "BREAKING CHANGE: xxxxxx", + issues: "".padEnd(6, "y"), }; const lastQuestion = questions[2]; (lastQuestion.message as any)(answers); - expect(lastQuestion?.validate?.(''.padEnd(10, 'z'), answers)).toBe( - 'footer: footer over limit 11' + expect(lastQuestion?.validate?.("".padEnd(10, "z"), answers)).toBe( + "footer: footer over limit 11", ); }); }); diff --git a/@commitlint/cz-commitlint/src/SectionFooter.ts b/@commitlint/cz-commitlint/src/SectionFooter.ts index de184cd07f..f278e226eb 100644 --- a/@commitlint/cz-commitlint/src/SectionFooter.ts +++ b/@commitlint/cz-commitlint/src/SectionFooter.ts @@ -1,12 +1,13 @@ -import {PromptName} from '@commitlint/types'; -import {Answers, DistinctQuestion} from 'inquirer'; -import wrap from 'word-wrap'; -import Question, {QuestionConfig} from './Question'; -import getRuleQuestionConfig from './services/getRuleQuestionConfig'; -import {getPromptMessages, getPromptQuestions} from './store/prompts'; -import {getRule} from './store/rules'; -import getLeadingBlankFn from './utils/leading-blank-fn'; -import {getMaxLength} from './utils/rules'; +import { PromptName } from "@commitlint/types"; +import { Answers, DistinctQuestion } from "inquirer"; +import wrap from "word-wrap"; + +import Question, { QuestionConfig } from "./Question.js"; +import getRuleQuestionConfig from "./services/getRuleQuestionConfig.js"; +import { getPromptMessages, getPromptQuestions } from "./store/prompts.js"; +import { getRule } from "./store/rules.js"; +import getLeadingBlankFn from "./utils/leading-blank-fn.js"; +import { getMaxLength } from "./utils/rules.js"; export class FooterQuestion extends Question { footerMaxLength: number; @@ -15,7 +16,7 @@ export class FooterQuestion extends Question { name: PromptName, questionConfig: QuestionConfig, footerMaxLength?: number, - footerMinLength?: number + footerMinLength?: number, ) { super(name, questionConfig); this.footerMaxLength = footerMaxLength ?? Infinity; @@ -23,14 +24,14 @@ export class FooterQuestion extends Question { } beforeQuestionStart(answers: Answers): void { const footerRemainLength = - this.footerMaxLength - combineCommitMessage(answers).length - '\n'.length; + this.footerMaxLength - combineCommitMessage(answers).length - "\n".length; this.maxLength = Math.min(this.maxLength, footerRemainLength); this.minLength = Math.min(this.minLength, this.footerMinLength); } } export function getQuestions(): Array<DistinctQuestion> { - const footerQuestionConfig = getRuleQuestionConfig('footer'); + const footerQuestionConfig = getRuleQuestionConfig("footer"); if (!footerQuestionConfig) return []; @@ -38,13 +39,13 @@ export function getQuestions(): Array<DistinctQuestion> { const footerMinLength = footerQuestionConfig.minLength; const fields: PromptName[] = [ - 'isBreaking', - 'breakingBody', - 'breaking', - 'isIssueAffected', - 'issuesBody', - 'issues', - 'footer', + "isBreaking", + "breakingBody", + "breaking", + "isIssueAffected", + "issuesBody", + "issues", + "footer", ]; return fields @@ -53,19 +54,19 @@ export function getQuestions(): Array<DistinctQuestion> { const questions = getPromptQuestions(); const questionConfigs = { - title: questions[name]?.description ?? '', + title: questions[name]?.description ?? "", messages: getPromptMessages(), footerMaxLength, footerMinLength, }; - if (name === 'isBreaking') { + if (name === "isBreaking") { Object.assign(questionConfigs, { defaultValue: false, }); } - if (name === 'breakingBody') { + if (name === "breakingBody") { Object.assign(questionConfigs, { when: (answers: Answers) => { return answers.isBreaking && !answers.body; @@ -73,7 +74,7 @@ export function getQuestions(): Array<DistinctQuestion> { }); } - if (name === 'breaking') { + if (name === "breaking") { Object.assign(questionConfigs, { when: (answers: Answers) => { return answers.isBreaking; @@ -81,13 +82,13 @@ export function getQuestions(): Array<DistinctQuestion> { }); } - if (name === 'isIssueAffected') { + if (name === "isIssueAffected") { Object.assign(questionConfigs, { defaultValue: false, }); } - if (name === 'issuesBody') { + if (name === "issuesBody") { Object.assign(questionConfigs, { when: (answers: Answers) => { return ( @@ -97,7 +98,7 @@ export function getQuestions(): Array<DistinctQuestion> { }); } - if (name === 'issues') { + if (name === "issues") { Object.assign(questionConfigs, { when: (answers: Answers) => { return answers.isIssueAffected; @@ -105,7 +106,7 @@ export function getQuestions(): Array<DistinctQuestion> { }); } - if (name === 'footer') { + if (name === "footer") { Object.assign(questionConfigs, { ...footerQuestionConfig, }); @@ -115,7 +116,7 @@ export function getQuestions(): Array<DistinctQuestion> { name, questionConfigs, footerMaxLength, - footerMinLength + footerMinLength, ); return instance.question; @@ -125,24 +126,24 @@ export function getQuestions(): Array<DistinctQuestion> { export function combineCommitMessage(answers: Answers): string { // TODO references-empty // TODO signed-off-by - const maxLineLength = getMaxLength(getRule('footer', 'max-line-length')); - const leadingBlankFn = getLeadingBlankFn(getRule('footer', 'leading-blank')); + const maxLineLength = getMaxLength(getRule("footer", "max-line-length")); + const leadingBlankFn = getLeadingBlankFn(getRule("footer", "leading-blank")); - const {footer, breaking, issues} = answers; + const { footer, breaking, issues } = answers; const footerNotes: string[] = []; if (breaking) { - const BREAKING_CHANGE = 'BREAKING CHANGE: '; + const BREAKING_CHANGE = "BREAKING CHANGE: "; const message = - BREAKING_CHANGE + breaking.replace(new RegExp(`^${BREAKING_CHANGE}`), ''); + BREAKING_CHANGE + breaking.replace(new RegExp(`^${BREAKING_CHANGE}`), ""); footerNotes.push( maxLineLength < Infinity ? wrap(message, { width: maxLineLength, trim: true, - indent: '', - }) - : message.trim() + indent: "", + }) + : message.trim(), ); } @@ -152,9 +153,9 @@ export function combineCommitMessage(answers: Answers): string { ? wrap(issues, { width: maxLineLength, trim: true, - indent: '', - }) - : issues.trim() + indent: "", + }) + : issues.trim(), ); } @@ -164,11 +165,11 @@ export function combineCommitMessage(answers: Answers): string { ? wrap(footer, { width: maxLineLength, trim: true, - indent: '', - }) - : footer + indent: "", + }) + : footer, ); } - return leadingBlankFn(footerNotes.join('\n')); + return leadingBlankFn(footerNotes.join("\n")); } diff --git a/@commitlint/cz-commitlint/src/SectionHeader.test.ts b/@commitlint/cz-commitlint/src/SectionHeader.test.ts index 90fe7358be..350c1fe746 100644 --- a/@commitlint/cz-commitlint/src/SectionHeader.test.ts +++ b/@commitlint/cz-commitlint/src/SectionHeader.test.ts @@ -1,114 +1,156 @@ -import {RuleConfigSeverity} from '@commitlint/types'; -import {combineCommitMessage, getQuestions} from './SectionHeader'; -import {setPromptConfig} from './store/prompts'; -import {setRules} from './store/rules'; -describe('getQuestions', () => { +import { describe, test, expect, beforeEach } from "vitest"; +import { RuleConfigSeverity } from "@commitlint/types"; + +import { + combineCommitMessage, + getQuestions, + getQuestionConfig, +} from "./SectionHeader.js"; +import { setPromptConfig } from "./store/prompts.js"; +import { setRules } from "./store/rules.js"; + +beforeEach(() => { + setRules({}); + setPromptConfig({}); +}); +describe("getQuestions", () => { test("should contain 'type','scope','subject'", () => { const questions = getQuestions(); expect(questions).toHaveLength(3); expect(questions).toEqual([ expect.objectContaining({ - name: 'type', + name: "type", }), expect.objectContaining({ - name: 'scope', + name: "scope", }), expect.objectContaining({ - name: 'subject', + name: "subject", }), ]); }); - test('should exclude question when must be empty', () => { + test("should exclude question when must be empty", () => { setRules({ - 'scope-empty': [RuleConfigSeverity.Error, 'always'], + "scope-empty": [RuleConfigSeverity.Error, "always"], }); const questions = getQuestions(); expect(questions).toHaveLength(2); expect(questions).toEqual([ expect.objectContaining({ - name: 'type', + name: "type", }), expect.objectContaining({ - name: 'subject', + name: "subject", }), ]); }); }); -describe('combineCommitMessage', () => { - test('should return correct string when type,scope,subject are not empty', () => { +describe("getQuestionConfig", () => { + test("should 'scope' supports multiple items separated with ',\\/'", () => { + const config = getQuestionConfig("scope"); + expect(config).toEqual( + expect.objectContaining({ + multipleValueDelimiters: /\/|\\|,/g, + }), + ); + }); + + test("should 'scope' supports multiple select separated with settings.scopeEnumSeparator and enableMultipleScopes", () => { + setPromptConfig({ + settings: { + scopeEnumSeparator: "/", + enableMultipleScopes: true, + }, + }); + const config = getQuestionConfig("scope"); + expect(config).toEqual( + expect.objectContaining({ + multipleSelectDefaultDelimiter: "/", + }), + ); + }); + + test("should 'scope' disable multiple select by default", () => { + const config = getQuestionConfig("scope"); + expect(config).not.toContain("multipleSelectDefaultDelimiter"); + }); +}); + +describe("combineCommitMessage", () => { + test("should return correct string when type,scope,subject are not empty", () => { const commitMessage = combineCommitMessage({ - type: 'build', - scope: 'typescript', - subject: 'update tsconfig.json', + type: "build", + scope: "typescript", + subject: "update tsconfig.json", }); - expect(commitMessage).toBe('build(typescript): update tsconfig.json'); + expect(commitMessage).toBe("build(typescript): update tsconfig.json"); }); - test('when type is empty', () => { + test("when type is empty", () => { let commitMessage = combineCommitMessage({ - scope: 'typescript', - subject: 'update tsconfig.json', + scope: "typescript", + subject: "update tsconfig.json", }); - expect(commitMessage).toBe('(typescript): update tsconfig.json'); + expect(commitMessage).toBe("(typescript): update tsconfig.json"); commitMessage = combineCommitMessage({ - scope: 'typescript', + scope: "typescript", }); - expect(commitMessage).toBe('(typescript)'); + expect(commitMessage).toBe("(typescript)"); }); - test('when scope is empty', () => { + test("when scope is empty", () => { let commitMessage = combineCommitMessage({ - type: 'build', - subject: 'update tsconfig.json', + type: "build", + subject: "update tsconfig.json", }); - expect(commitMessage).toBe('build: update tsconfig.json'); + expect(commitMessage).toBe("build: update tsconfig.json"); commitMessage = combineCommitMessage({ - subject: 'update tsconfig.json', + subject: "update tsconfig.json", }); - expect(commitMessage).toBe('update tsconfig.json'); + expect(commitMessage).toBe("update tsconfig.json"); }); - test('when subject is empty', () => { + test("when subject is empty", () => { const commitMessage = combineCommitMessage({ - type: 'build', - scope: 'typescript', + type: "build", + scope: "typescript", }); - expect(commitMessage).toBe('build(typescript)'); + expect(commitMessage).toBe("build(typescript)"); }); }); -describe('HeaderQuestion', () => { - test('should limited by header maxLength and minLength', () => { +describe("HeaderQuestion", () => { + test("should limited by header maxLength and minLength", () => { setRules({ - 'header-max-length': [RuleConfigSeverity.Error, 'always', 20], - 'header-min-length': [RuleConfigSeverity.Error, 'always', 10], - 'subject-max-length': [RuleConfigSeverity.Error, 'always', 10], - 'subject-min-length': [RuleConfigSeverity.Error, 'always', 5], + "header-max-length": [RuleConfigSeverity.Error, "always", 20], + "header-min-length": [RuleConfigSeverity.Error, "always", 10], + "subject-max-length": [RuleConfigSeverity.Error, "always", 10], + "subject-min-length": [RuleConfigSeverity.Error, "always", 5], }); setPromptConfig({ messages: { - skip: '(press enter to skip)', - max: 'upper %d chars', - min: '%d chars at least', - emptyWarning: '%s can not be empty', - upperLimitWarning: '%s: %s over limit %d', - lowerLimitWarning: '%s: %s below limit %d', + skip: "(press enter to skip)", + max: "upper %d chars", + min: "%d chars at least", + emptyWarning: "%s can not be empty", + upperLimitWarning: "%s: %s over limit %d", + lowerLimitWarning: "%s: %s below limit %d", }, }); const questions = getQuestions(); const answers = { - type: ''.padEnd(8, 'x'), - scope: ''.padEnd(6, 'y'), + type: "".padEnd(8, "x"), + scope: "".padEnd(6, "y"), }; const lastQuestion = questions[2]; (lastQuestion.message as any)(answers); - expect(lastQuestion?.validate?.(''.padEnd(10, 'z'), answers)).toBe( - 'subject: subject over limit 6' + expect(lastQuestion?.validate?.("".padEnd(10, "z"), answers)).toBe( + "subject: subject over limit 6", ); }); }); diff --git a/@commitlint/cz-commitlint/src/SectionHeader.ts b/@commitlint/cz-commitlint/src/SectionHeader.ts index 9905ddcc33..bf43f0a2a3 100644 --- a/@commitlint/cz-commitlint/src/SectionHeader.ts +++ b/@commitlint/cz-commitlint/src/SectionHeader.ts @@ -1,7 +1,9 @@ -import {PromptName, RuleField} from '@commitlint/types'; -import {Answers, DistinctQuestion} from 'inquirer'; -import Question, {QuestionConfig} from './Question'; -import getRuleQuestionConfig from './services/getRuleQuestionConfig'; +import { PromptName, RuleField } from "@commitlint/types"; +import { Answers, DistinctQuestion } from "inquirer"; + +import Question, { QuestionConfig } from "./Question.js"; +import getRuleQuestionConfig from "./services/getRuleQuestionConfig.js"; +import { getPromptSettings } from "./store/prompts.js"; export class HeaderQuestion extends Question { headerMaxLength: number; @@ -10,7 +12,7 @@ export class HeaderQuestion extends Question { name: PromptName, questionConfig: QuestionConfig, headerMaxLength?: number, - headerMinLength?: number + headerMinLength?: number, ) { super(name, questionConfig); this.headerMaxLength = headerMaxLength ?? Infinity; @@ -25,11 +27,11 @@ export class HeaderQuestion extends Question { } export function combineCommitMessage(answers: Answers): string { - const {type = '', scope = '', subject = ''} = answers; - const prefix = `${type}${scope ? `(${scope})` : ''}`; + const { type = "", scope = "", subject = "" } = answers; + const prefix = `${type}${scope ? `(${scope})` : ""}`; if (subject) { - return ((prefix ? prefix + ': ' : '') + subject).trim(); + return ((prefix ? prefix + ": " : "") + subject).trim(); } else { return prefix.trim(); } @@ -39,24 +41,43 @@ export function getQuestions(): Array<DistinctQuestion> { // header: type, scope, subject const questions: Array<DistinctQuestion> = []; - const headerRuleFields: RuleField[] = ['type', 'scope', 'subject']; - const headerRuleQuestionConfig = getRuleQuestionConfig('header'); + const headerRuleFields: RuleField[] = ["type", "scope", "subject"]; + const headerRuleQuestionConfig = getRuleQuestionConfig("header"); if (!headerRuleQuestionConfig) { return []; } headerRuleFields.forEach((name) => { - const questionConfig = getRuleQuestionConfig(name); + const questionConfig = getQuestionConfig(name); if (questionConfig) { const instance = new HeaderQuestion( name, questionConfig, headerRuleQuestionConfig.maxLength, - headerRuleQuestionConfig.minLength + headerRuleQuestionConfig.minLength, ); questions.push(instance.question); } }); return questions; } + +export function getQuestionConfig( + name: RuleField, +): ReturnType<typeof getRuleQuestionConfig> { + const questionConfig = getRuleQuestionConfig(name); + + if (questionConfig) { + if (name === "scope") { + if (getPromptSettings()["enableMultipleScopes"]) { + questionConfig.multipleSelectDefaultDelimiter = + getPromptSettings()["scopeEnumSeparator"]; + } + // split scope string to segments, match commitlint rules + questionConfig.multipleValueDelimiters = /\/|\\|,/g; + } + } + + return questionConfig; +} diff --git a/@commitlint/cz-commitlint/src/index.ts b/@commitlint/cz-commitlint/src/index.ts index 7a48d0cec1..0baeefbf2c 100644 --- a/@commitlint/cz-commitlint/src/index.ts +++ b/@commitlint/cz-commitlint/src/index.ts @@ -1,16 +1,22 @@ -import load from '@commitlint/load'; -import {Inquirer} from 'inquirer'; -import process from './Process'; +import load from "@commitlint/load"; +import type { Answers, DistinctQuestion } from "inquirer"; + +import process from "./Process.js"; type Commit = (message: string) => void; /** * Entry point for commitizen - * @param inquirer instance passed by commitizen, unused + * @param inquirerIns instance passed by commitizen, unused * @param commit callback to execute with complete commit message * @return {void} */ -export function prompter(inquirer: Inquirer, commit: Commit): void { - load().then(({rules, prompt = {}}) => { - process(rules, prompt, inquirer).then(commit); +export function prompter( + inquirerIns: { + prompt(questions: DistinctQuestion[]): Promise<Answers>; + }, + commit: Commit, +): void { + load().then(({ rules, prompt = {} }) => { + process(rules, prompt, inquirerIns).then(commit); }); } diff --git a/@commitlint/cz-commitlint/src/services/getRuleQuestionConfig.test.ts b/@commitlint/cz-commitlint/src/services/getRuleQuestionConfig.test.ts index 6518b58483..ddae52ae61 100644 --- a/@commitlint/cz-commitlint/src/services/getRuleQuestionConfig.test.ts +++ b/@commitlint/cz-commitlint/src/services/getRuleQuestionConfig.test.ts @@ -1,58 +1,60 @@ -import {RuleConfigSeverity} from '@commitlint/types'; -import {setPromptConfig} from '../store/prompts'; -import {setRules} from '../store/rules'; -import getRuleQuestionConfig from './getRuleQuestionConfig'; +import { RuleConfigSeverity } from "@commitlint/types"; +import { describe, expect, test } from "vitest"; + +import { setPromptConfig } from "../store/prompts.js"; +import { setRules } from "../store/rules.js"; +import getRuleQuestionConfig from "./getRuleQuestionConfig.js"; // let rules = {}; // let rules: QualifiedRules = {}; // const getRules = jest.fn().mockReturnValue(rules); -describe('empty rule', () => { - test('should return null when must be empty', () => { +describe("empty rule", () => { + test("should return null when must be empty", () => { setRules({ - 'body-empty': [RuleConfigSeverity.Error, 'always'], + "body-empty": [RuleConfigSeverity.Error, "always"], }); - expect(getRuleQuestionConfig('body')).toBe(null); + expect(getRuleQuestionConfig("body")).toBe(null); }); test("should field 'skip' be false when can not be empty", () => { setRules({ - 'body-empty': [RuleConfigSeverity.Error, 'never'], + "body-empty": [RuleConfigSeverity.Error, "never"], }); - expect(getRuleQuestionConfig('body')?.skip).toBe(false); + expect(getRuleQuestionConfig("body")?.skip).toBe(false); }); test('should field "skip" be true when not set empty rule', () => { setRules({ - 'body-case': [RuleConfigSeverity.Warning, 'never', 'camel-case'], - 'body-max-length': [RuleConfigSeverity.Error, 'always', 100], + "body-case": [RuleConfigSeverity.Warning, "never", "camel-case"], + "body-max-length": [RuleConfigSeverity.Error, "always", 100], }); - expect(getRuleQuestionConfig('body')?.skip).toBe(true); + expect(getRuleQuestionConfig("body")?.skip).toBe(true); }); test('should field "skip" be true when disable empty rule', () => { setRules({ - 'body-empty': [RuleConfigSeverity.Disabled], + "body-empty": [RuleConfigSeverity.Disabled], }); - expect(getRuleQuestionConfig('body')?.skip).toBe(true); + expect(getRuleQuestionConfig("body")?.skip).toBe(true); setRules({ - 'body-empty': [RuleConfigSeverity.Disabled, 'always'], + "body-empty": [RuleConfigSeverity.Disabled, "always"], }); - expect(getRuleQuestionConfig('body')?.skip).toBe(true); + expect(getRuleQuestionConfig("body")?.skip).toBe(true); setRules({ - 'body-empty': [RuleConfigSeverity.Disabled, 'never'], + "body-empty": [RuleConfigSeverity.Disabled, "never"], }); - expect(getRuleQuestionConfig('body')?.skip).toBe(true); + expect(getRuleQuestionConfig("body")?.skip).toBe(true); }); }); -describe('title', () => { +describe("title", () => { test("should field 'title' set by 'description config'", () => { - const TEST_DESC = 'test the description'; + const TEST_DESC = "test the description"; setPromptConfig({ questions: { body: { @@ -61,7 +63,7 @@ describe('title', () => { }, }); - expect(getRuleQuestionConfig('body')?.title).toBe(TEST_DESC); + expect(getRuleQuestionConfig("body")?.title).toBe(TEST_DESC); }); test("should field 'title' be default string when without 'description' config", () => { @@ -71,83 +73,83 @@ describe('title', () => { }, }); - expect(getRuleQuestionConfig('body')?.title).toBe('body:'); + expect(getRuleQuestionConfig("body")?.title).toBe("body:"); }); }); -describe('enum list', () => { - test('should enumList be undefined when without enum rule', () => { +describe("enum list", () => { + test("should enumList be undefined when without enum rule", () => { setRules({ - 'scope-case': [RuleConfigSeverity.Warning, 'never', 'camel-case'], + "scope-case": [RuleConfigSeverity.Warning, "never", "camel-case"], }); - expect(getRuleQuestionConfig('scope')?.enumList).toBeUndefined(); + expect(getRuleQuestionConfig("scope")?.enumList).toBeUndefined(); }); - test('should enumList be undefined when enum rule is not active', () => { + test("should enumList be undefined when enum rule is not active", () => { setRules({ - 'scope-enum': [RuleConfigSeverity.Disabled], + "scope-enum": [RuleConfigSeverity.Disabled], }); - expect(getRuleQuestionConfig('scope')?.enumList).toBeUndefined(); + expect(getRuleQuestionConfig("scope")?.enumList).toBeUndefined(); setRules({ - 'scope-enum': [ + "scope-enum": [ RuleConfigSeverity.Error, - 'never', - ['cli', 'core', 'lint'], + "never", + ["cli", "core", "lint"], ], }); - expect(getRuleQuestionConfig('scope')?.enumList).toBeUndefined(); + expect(getRuleQuestionConfig("scope")?.enumList).toBeUndefined(); setRules({ - 'scope-enum': [RuleConfigSeverity.Error, 'always'], + "scope-enum": [RuleConfigSeverity.Error, "always"], } as any); - expect(getRuleQuestionConfig('scope')?.enumList).toBeUndefined(); + expect(getRuleQuestionConfig("scope")?.enumList).toBeUndefined(); }); - test('should enumList be undefined when enum rule is not a array', () => { + test("should enumList be undefined when enum rule is not a array", () => { setRules({ - 'scope-enum': [RuleConfigSeverity.Error, 'always', {}], + "scope-enum": [RuleConfigSeverity.Error, "always", {}], } as any); - expect(getRuleQuestionConfig('scope')?.enumList).toBeUndefined(); + expect(getRuleQuestionConfig("scope")?.enumList).toBeUndefined(); }); test("should enumList same with enum rule when without 'enum' config", () => { - const ENUM_RULE_LIST = ['cli', 'core', 'lint']; + const ENUM_RULE_LIST = ["cli", "core", "lint"]; setRules({ - 'scope-enum': [RuleConfigSeverity.Error, 'always', ENUM_RULE_LIST], + "scope-enum": [RuleConfigSeverity.Error, "always", ENUM_RULE_LIST], } as any); setPromptConfig({ questions: { scope: { - description: 'test scope', + description: "test scope", }, }, }); - const enumList = getRuleQuestionConfig('scope')?.enumList; + const enumList = getRuleQuestionConfig("scope")?.enumList; expect(enumList).not.toBe(ENUM_RULE_LIST); expect(enumList).toEqual(ENUM_RULE_LIST); }); - test('should enumList item concat description', () => { - const ENUM_RULE_LIST = ['cli', 'core', 'lint']; + test("should enumList item concat description", () => { + const ENUM_RULE_LIST = ["cli", "core", "lint"]; setRules({ - 'scope-enum': [RuleConfigSeverity.Error, 'always', ENUM_RULE_LIST], + "scope-enum": [RuleConfigSeverity.Error, "always", ENUM_RULE_LIST], } as any); setPromptConfig({ questions: { scope: { - description: 'test scope', + description: "test scope", enum: { cli: { - description: 'CLI', + description: "CLI", }, core: { - description: 'CORE', + description: "CORE", }, lint: {}, }, @@ -155,70 +157,70 @@ describe('enum list', () => { }, }); - const enumList = getRuleQuestionConfig('scope')?.enumList; + const enumList = getRuleQuestionConfig("scope")?.enumList; expect(enumList).toHaveLength(3); expect(enumList).toEqual([ { name: expect.stringMatching(/cli:[\s]*CLI/), - value: 'cli', - short: 'cli', + value: "cli", + short: "cli", }, { name: expect.stringMatching(/core:[\s]*CORE/), - value: 'core', - short: 'core', + value: "core", + short: "core", }, - 'lint', + "lint", ]); }); - test('should enumList item padding format with 4 blank', () => { + test("should enumList item padding format with 4 blank", () => { const LONGEST = 12; - const longestItem = ''.padEnd(LONGEST, 'x'); - const enumRuleList = ['cli', 'core', longestItem]; + const longestItem = "".padEnd(LONGEST, "x"); + const enumRuleList = ["cli", "core", longestItem]; setRules({ - 'scope-enum': [RuleConfigSeverity.Error, 'always', enumRuleList], + "scope-enum": [RuleConfigSeverity.Error, "always", enumRuleList], } as any); setPromptConfig({ questions: { scope: { - description: 'test scope', + description: "test scope", enum: { cli: { - description: 'Test CLI', + description: "Test CLI", }, core: { - description: 'Test CORE', + description: "Test CORE", }, [longestItem]: { - description: 'Test', + description: "Test", }, }, }, }, }); - const enumList = getRuleQuestionConfig('scope')?.enumList; + const enumList = getRuleQuestionConfig("scope")?.enumList; expect(enumList).toHaveLength(3); expect(enumList).toEqual([ { name: expect.stringMatching( - new RegExp(`^cli:[\\s]{${LONGEST - 4 + 4}}Test CLI$`) + new RegExp(`^cli:[\\s]{${LONGEST - 4 + 4}}Test CLI$`), ), - value: 'cli', - short: 'cli', + value: "cli", + short: "cli", }, { name: expect.stringMatching( - new RegExp(`^core:[\\s]{${LONGEST - 5 + 4}}Test CORE$`) + new RegExp(`^core:[\\s]{${LONGEST - 5 + 4}}Test CORE$`), ), - value: 'core', - short: 'core', + value: "core", + short: "core", }, { name: expect.stringMatching( - new RegExp(`^${longestItem}:[\\s]{${-1 + 4}}Test$`) + new RegExp(`^${longestItem}:[\\s]{${-1 + 4}}Test$`), ), value: longestItem, short: longestItem, @@ -227,15 +229,15 @@ describe('enum list', () => { }); test("should enumList item sorted by 'enum' config order", () => { - const ENUM_RULE_LIST = ['cli', 'core', 'lint']; + const ENUM_RULE_LIST = ["cli", "core", "lint"]; setRules({ - 'scope-enum': [RuleConfigSeverity.Error, 'always', ENUM_RULE_LIST], + "scope-enum": [RuleConfigSeverity.Error, "always", ENUM_RULE_LIST], } as any); setPromptConfig({ questions: { scope: { - description: 'test scope', + description: "test scope", enum: { core: {}, lint: {}, @@ -245,89 +247,359 @@ describe('enum list', () => { }, }); - const enumList = getRuleQuestionConfig('scope')?.enumList; + const enumList = getRuleQuestionConfig("scope")?.enumList; expect(enumList).toHaveLength(3); - expect(enumList?.[0]).toBe('core'); - expect(enumList?.[1]).toBe('lint'); - expect(enumList?.[2]).toBe('cli'); + expect(enumList?.[0]).toBe("core"); + expect(enumList?.[1]).toBe("lint"); + expect(enumList?.[2]).toBe("cli"); + }); + + test("should format enum items with emojis and descriptions, ensuring consistent spacing", () => { + const ENUM_RULE_LIST = ["feat", "fix", "chore"]; + setRules({ + "type-enum": [RuleConfigSeverity.Error, "always", ENUM_RULE_LIST], + } as any); + + setPromptConfig({ + questions: { + type: { + enum: { + feat: { + description: "Features", + emoji: "✨", + }, + fix: { + description: "Bug fixes", + emoji: "🐛", + }, + chore: { + description: "Chore", + emoji: "♻️", + }, + }, + }, + }, + }); + + const enumList = getRuleQuestionConfig("type")?.enumList; + expect(enumList).toEqual([ + { + name: "✨ feat: Features", + value: "feat", + short: "feat", + }, + { + name: "🐛 fix: Bug fixes", + value: "fix", + short: "fix", + }, + { + name: "♻️ chore: Chore", + value: "chore", + short: "chore", + }, + ]); + }); + + test("should handle custom alignment for emoji and description with extra space", () => { + const ENUM_RULE_LIST = ["feat", "fix", "chore"]; + setRules({ + "type-enum": [RuleConfigSeverity.Error, "always", ENUM_RULE_LIST], + } as any); + + setPromptConfig({ + questions: { + type: { + enum: { + feat: { + description: "Features", + emoji: "✨ ", + }, + fix: { + description: "Bug fixes", + emoji: "🐛 ", + }, + chore: { + description: "Chore", + emoji: "♻️ ", + }, + }, + }, + }, + }); + + const enumList = getRuleQuestionConfig("type")?.enumList; + expect(enumList).toEqual([ + { + name: "✨ feat: Features", + value: "feat", + short: "feat", + }, + { + name: "🐛 fix: Bug fixes", + value: "fix", + short: "fix", + }, + { + name: "♻️ chore: Chore", + value: "chore", + short: "chore", + }, + ]); + }); + + test("should handle inconsistent emoji usage by using 4 blank spaces as a prefix", () => { + const ENUM_RULE_LIST = ["feat", "fix", "chore"]; + setRules({ + "type-enum": [RuleConfigSeverity.Error, "always", ENUM_RULE_LIST], + } as any); + + setPromptConfig({ + questions: { + type: { + enum: { + feat: { + description: "Features", + emoji: "✨", + }, + fix: { + description: "Bug fixes", + }, + chore: { + description: "Chore", + }, + }, + }, + }, + }); + + const enumList = getRuleQuestionConfig("type")?.enumList; + expect(enumList).toEqual([ + { + name: "✨ feat: Features", + value: "feat", + short: "feat", + }, + { + name: " fix: Bug fixes", + value: "fix", + short: "fix", + }, + { + name: " chore: Chore", + value: "chore", + short: "chore", + }, + ]); + }); + + test("should handle no enums having emojis correctly", () => { + const ENUM_RULE_LIST = ["feat", "fix", "chore"]; + setRules({ + "type-enum": [RuleConfigSeverity.Error, "always", ENUM_RULE_LIST], + } as any); + + setPromptConfig({ + questions: { + type: { + enum: { + feat: { + description: "Features", + }, + fix: { + description: "Bug fixes", + }, + chore: { + description: "Chore", + }, + }, + }, + }, + }); + + const enumList = getRuleQuestionConfig("type")?.enumList; + expect(enumList).toEqual([ + { + name: "feat: Features", + value: "feat", + short: "feat", + }, + { + name: "fix: Bug fixes", + value: "fix", + short: "fix", + }, + { + name: "chore: Chore", + value: "chore", + short: "chore", + }, + ]); + }); + + test("should include the emoji in the value when `emojiInHeader` is true", () => { + const ENUM_RULE_LIST = ["feat", "fix"]; + setRules({ + "type-enum": [RuleConfigSeverity.Error, "always", ENUM_RULE_LIST], + } as any); + + setPromptConfig({ + questions: { + type: { + emojiInHeader: true, + enum: { + feat: { + description: "Features", + emoji: "✨", + }, + fix: { + description: "Bug fixes", + emoji: "🐛", + }, + }, + }, + }, + }); + + const enumList = getRuleQuestionConfig("type")?.enumList; + expect(enumList).toEqual([ + { + name: "✨ feat: Features", + value: "✨ feat", + short: "feat", + }, + { + name: "🐛 fix: Bug fixes", + value: "🐛 fix", + short: "fix", + }, + ]); + }); + + test("should trim empty spaces from emoji in the answer", () => { + const ENUM_RULE_LIST = ["feat", "fix", "chore"]; + setRules({ + "type-enum": [RuleConfigSeverity.Error, "always", ENUM_RULE_LIST], + } as any); + + setPromptConfig({ + questions: { + type: { + emojiInHeader: true, + enum: { + feat: { + description: "Features", + emoji: "✨ ", + }, + fix: { + description: "Bug fixes", + emoji: "🐛 ", + }, + chore: { + description: "Chore", + emoji: "♻️ ", + }, + }, + }, + }, + }); + + const enumList = getRuleQuestionConfig("type")?.enumList; + expect(enumList).toEqual([ + { + name: "✨ feat: Features", + value: "✨ feat", + short: "feat", + }, + { + name: "🐛 fix: Bug fixes", + value: "🐛 fix", + short: "fix", + }, + { + name: "♻️ chore: Chore", + value: "♻️ chore", + short: "chore", + }, + ]); }); }); -test('should return correct question config', () => { +test("should return correct question config", () => { setRules({ - 'body-empty': [RuleConfigSeverity.Error, 'never'], - 'body-case': [RuleConfigSeverity.Error, 'always', 'sentence-case'], - 'body-full-stop': [RuleConfigSeverity.Error, 'always', '!'], - 'body-min-length': [RuleConfigSeverity.Error, 'always', 10], - 'body-max-length': [RuleConfigSeverity.Error, 'always', 100], - 'scope-enum': [RuleConfigSeverity.Error, 'always', ['cli', 'core', 'lint']], + "body-empty": [RuleConfigSeverity.Error, "never"], + "body-case": [RuleConfigSeverity.Error, "always", "sentence-case"], + "body-full-stop": [RuleConfigSeverity.Error, "always", "!"], + "body-min-length": [RuleConfigSeverity.Error, "always", 10], + "body-max-length": [RuleConfigSeverity.Error, "always", 100], + "scope-enum": [RuleConfigSeverity.Error, "always", ["cli", "core", "lint"]], } as any); const MESSAGES = { - skip: ':skip', - max: 'upper %d chars', - min: '%d chars at least', - emptyWarning: 'can not be empty', - upperLimitWarning: 'over limit', - lowerLimitWarning: 'below limit', + skip: ":skip", + max: "upper %d chars", + min: "%d chars at least", + emptyWarning: "can not be empty", + upperLimitWarning: "over limit", + lowerLimitWarning: "below limit", }; setPromptConfig({ messages: MESSAGES, questions: { body: { - description: 'please input body: (Test)', + description: "please input body: (Test)", }, scope: { - description: 'please choose the scope: (Test)', + description: "please choose the scope: (Test)", enum: { core: { - description: 'CORE', + description: "CORE", }, lint: { - description: 'LINT', + description: "LINT", }, cli: { - description: 'CLI', + description: "CLI", }, }, }, }, }); - const scopeQuestionConfig = getRuleQuestionConfig('scope'); + const scopeQuestionConfig = getRuleQuestionConfig("scope"); expect(scopeQuestionConfig).toEqual({ skip: true, - title: 'please choose the scope: (Test)', + title: "please choose the scope: (Test)", messages: MESSAGES, minLength: 0, maxLength: Infinity, enumList: [ { - name: 'core: CORE', - value: 'core', - short: 'core', + name: "core: CORE", + value: "core", + short: "core", }, { - name: 'lint: LINT', - value: 'lint', - short: 'lint', + name: "lint: LINT", + value: "lint", + short: "lint", }, { - name: 'cli: CLI', - value: 'cli', - short: 'cli', + name: "cli: CLI", + value: "cli", + short: "cli", }, ], caseFn: expect.any(Function), fullStopFn: expect.any(Function), }); - expect(scopeQuestionConfig?.caseFn?.('xxxx')).toBe('xxxx'); - expect(scopeQuestionConfig?.fullStopFn?.('xxxx')).toBe('xxxx'); + expect(scopeQuestionConfig?.caseFn?.("xxxx")).toBe("xxxx"); + expect(scopeQuestionConfig?.fullStopFn?.("xxxx")).toBe("xxxx"); - const bodyQuestionConfig = getRuleQuestionConfig('body'); + const bodyQuestionConfig = getRuleQuestionConfig("body"); expect(bodyQuestionConfig).toEqual({ skip: false, - title: 'please input body: (Test)', + title: "please input body: (Test)", messages: MESSAGES, minLength: 10, maxLength: 100, @@ -335,6 +607,6 @@ test('should return correct question config', () => { caseFn: expect.any(Function), fullStopFn: expect.any(Function), }); - expect(bodyQuestionConfig?.caseFn?.('xxxx')).toBe('Xxxx'); - expect(bodyQuestionConfig?.fullStopFn?.('xxxx')).toBe('xxxx!'); + expect(bodyQuestionConfig?.caseFn?.("xxxx")).toBe("Xxxx"); + expect(bodyQuestionConfig?.fullStopFn?.("xxxx")).toBe("xxxx!"); }); diff --git a/@commitlint/cz-commitlint/src/services/getRuleQuestionConfig.ts b/@commitlint/cz-commitlint/src/services/getRuleQuestionConfig.ts index 8edbef8b16..50ee8a1907 100644 --- a/@commitlint/cz-commitlint/src/services/getRuleQuestionConfig.ts +++ b/@commitlint/cz-commitlint/src/services/getRuleQuestionConfig.ts @@ -1,9 +1,9 @@ -import {RuleField} from '@commitlint/types'; -import {QuestionConfig} from '../Question'; -import {getPromptMessages, getPromptQuestions} from '../store/prompts'; -import {getRule} from '../store/rules'; -import getCaseFn from '../utils/case-fn'; -import getFullStopFn from '../utils/full-stop-fn'; +import { RuleField } from "@commitlint/types"; +import { QuestionConfig } from "../Question.js"; +import { getPromptMessages, getPromptQuestions } from "../store/prompts.js"; +import { getRule } from "../store/rules.js"; +import getCaseFn from "../utils/case-fn.js"; +import getFullStopFn from "../utils/full-stop-fn.js"; import { enumRuleIsActive, getEnumList, @@ -12,12 +12,12 @@ import { ruleIsActive, ruleIsApplicable, ruleIsDisabled, -} from '../utils/rules'; +} from "../utils/rules.js"; export default function (rulePrefix: RuleField): QuestionConfig | null { const questions = getPromptQuestions(); const questionSettings = questions[rulePrefix]; - const emptyRule = getRule(rulePrefix, 'empty'); + const emptyRule = getRule(rulePrefix, "empty"); const mustBeEmpty = emptyRule && ruleIsActive(emptyRule) && ruleIsApplicable(emptyRule); @@ -28,30 +28,48 @@ export default function (rulePrefix: RuleField): QuestionConfig | null { const canBeSkip = !emptyRule || ruleIsDisabled(emptyRule); - const enumRule = getRule(rulePrefix, 'enum'); + const enumRule = getRule(rulePrefix, "enum"); const enumRuleList = enumRule && enumRuleIsActive(enumRule) ? getEnumList(enumRule) : null; let enumList; if (enumRuleList) { - const enumDescriptions = questionSettings?.['enum']; + const enumDescriptions = questionSettings?.["enum"]; + const emojiInHeader = questionSettings?.emojiInHeader; if (enumDescriptions) { const enumNames = Object.keys(enumDescriptions); const longest = Math.max( - ...enumRuleList.map((enumName) => enumName.length) + ...enumRuleList.map((enumName) => enumName.length), + ); + const firstHasEmoji = + (enumDescriptions[enumNames[0]]?.emoji?.length ?? 0) > 0; + const hasConsistentEmojiUsage = !enumRuleList.some( + (enumName) => + (enumDescriptions[enumName]?.emoji?.length ?? 0) > 0 !== + firstHasEmoji, ); - // TODO emoji + title enumList = enumRuleList .sort((a, b) => enumNames.indexOf(a) - enumNames.indexOf(b)) .map((enumName) => { const enumDescription = enumDescriptions[enumName]?.description; if (enumDescription) { - return { - name: `${enumName}:`.padEnd(longest + 4) + enumDescription, - value: enumName, - short: enumName, - }; + const emoji = enumDescriptions[enumName]?.emoji; + + const emojiPrefix = emoji + ? `${emoji} ` + : hasConsistentEmojiUsage + ? "" + : " "; + + const paddedName = `${enumName}:`.padEnd(longest + 4); + + const name = `${emojiPrefix}${paddedName}${enumDescription}`; + + const value = + emojiInHeader && emoji ? `${emoji.trim()} ${enumName}` : enumName; + + return { name, value, short: enumName }; } else { return enumName; } @@ -64,11 +82,11 @@ export default function (rulePrefix: RuleField): QuestionConfig | null { return { skip: canBeSkip, enumList, - title: questionSettings?.['description'] ?? `${rulePrefix}:`, - caseFn: getCaseFn(getRule(rulePrefix, 'case')), - fullStopFn: getFullStopFn(getRule(rulePrefix, 'full-stop')), - minLength: getMinLength(getRule(rulePrefix, 'min-length')), - maxLength: getMaxLength(getRule(rulePrefix, 'max-length')), + title: questionSettings?.["description"] ?? `${rulePrefix}:`, + caseFn: getCaseFn(getRule(rulePrefix, "case")), + fullStopFn: getFullStopFn(getRule(rulePrefix, "full-stop")), + minLength: getMinLength(getRule(rulePrefix, "min-length")), + maxLength: getMaxLength(getRule(rulePrefix, "max-length")), messages: getPromptMessages(), }; } diff --git a/@commitlint/cz-commitlint/src/store/defaultPromptConfigs.ts b/@commitlint/cz-commitlint/src/store/defaultPromptConfigs.ts index 99c649a1e5..650b3762d8 100644 --- a/@commitlint/cz-commitlint/src/store/defaultPromptConfigs.ts +++ b/@commitlint/cz-commitlint/src/store/defaultPromptConfigs.ts @@ -1,29 +1,33 @@ export default { + settings: { + scopeEnumSeparator: ",", + enableMultipleScopes: false, + }, messages: { - skip: '(press enter to skip)', - max: '(max %d chars)', - min: '(min %d chars)', - emptyWarning: '(%s is required)', - upperLimitWarning: '%s is %d characters longer than the upper limit', - lowerLimitWarning: '%s is %d characters less than the lower limit', + skip: "(press enter to skip)", + max: "(max %d chars)", + min: "(min %d chars)", + emptyWarning: "(%s is required)", + upperLimitWarning: "%s is %d characters longer than the upper limit", + lowerLimitWarning: "%s is %d characters less than the lower limit", }, questions: { type: { - description: '<type> holds information about the goal of a change.', + description: "<type> holds information about the goal of a change.", }, scope: { description: - '<scope> marks which sub-component of the project is affected', + "<scope> marks which sub-component of the project is affected", }, subject: { - description: '<subject> is a short, high-level description of the change', + description: "<subject> is a short, high-level description of the change", }, body: { - description: '<body> holds additional information about the change', + description: "<body> holds additional information about the change", }, footer: { description: - '<footer> holds further meta data, such as breaking changes and issue ids', + "<footer> holds further meta data, such as breaking changes and issue ids", }, }, }; diff --git a/@commitlint/cz-commitlint/src/store/prompts.test.ts b/@commitlint/cz-commitlint/src/store/prompts.test.ts index b1584d6d4b..9d378b4ed5 100644 --- a/@commitlint/cz-commitlint/src/store/prompts.test.ts +++ b/@commitlint/cz-commitlint/src/store/prompts.test.ts @@ -1,21 +1,27 @@ -import * as prompts from './prompts'; +import { describe, test, expect, vi, beforeEach } from "vitest"; +import * as prompts from "./prompts.js"; let getPromptQuestions: typeof prompts.getPromptQuestions; let getPromptMessages: typeof prompts.getPromptMessages; +let getPromptSettings: typeof prompts.getPromptSettings; let setPromptConfig: typeof prompts.setPromptConfig; -beforeEach(() => { - jest.resetModules(); - getPromptMessages = require('./prompts').getPromptMessages; - getPromptQuestions = require('./prompts').getPromptQuestions; - setPromptConfig = require('./prompts').setPromptConfig; +beforeEach(async () => { + vi.resetModules(); + ({ + getPromptQuestions, + getPromptMessages, + getPromptSettings, + setPromptConfig, + } = await import("./prompts.js")); }); -describe('setPromptConfig', () => { - test('should cover questions when prompt config questions is plain object', () => { + +describe("setPromptConfig", () => { + test("should cover questions when prompt config questions is plain object", () => { const promptConfig = { questions: { type: { - description: 'input type', + description: "input type", }, }, }; @@ -23,15 +29,15 @@ describe('setPromptConfig', () => { expect(getPromptQuestions()).toBe(promptConfig.questions); }); - test('should not set questions when prompt config questions is not a plain object', () => { - const initialQuestions = {...getPromptQuestions()}; + test("should not set questions when prompt config questions is not a plain object", () => { + const initialQuestions = { ...getPromptQuestions() }; setPromptConfig({ questions: null, } as any); expect(getPromptQuestions()).toEqual(initialQuestions); setPromptConfig({ - questions: 'questions', + questions: "questions", } as any); expect(getPromptQuestions()).toEqual(initialQuestions); @@ -41,69 +47,98 @@ describe('setPromptConfig', () => { expect(getPromptQuestions()).toEqual(initialQuestions); }); - test('should merge message when prompt config message is string', () => { - const initialMessages = {...getPromptMessages()}; + test("should merge message when prompt config message is string", () => { + const initialMessages = { ...getPromptMessages() }; const promptConfig = { messages: { - emptyWarning: '(%s can not be empty)', + emptyWarning: "(%s can not be empty)", }, }; setPromptConfig(promptConfig); - expect(getPromptMessages()['emptyWarning']).toBe( - promptConfig.messages.emptyWarning + expect(getPromptMessages()["emptyWarning"]).toBe( + promptConfig.messages.emptyWarning, ); - expect(getPromptMessages()['lowerLimitWarning']).toBe( - initialMessages['lowerLimitWarning'] + expect(getPromptMessages()["lowerLimitWarning"]).toBe( + initialMessages["lowerLimitWarning"], ); }); - test('should not merge message when prompt config message is not a string', () => { - const initialMessages = {...getPromptMessages()}; + test("should not merge message when prompt config message is not a string", () => { + const initialMessages = { ...getPromptMessages() }; const promptConfig = { messages: { - emptyWarning: '(%s can not be empty)', + emptyWarning: "(%s can not be empty)", min: function () { - return 'min:'; + return "min:"; }, }, }; setPromptConfig(promptConfig as any); - expect(getPromptMessages()['emptyWarning']).toBe( - promptConfig.messages.emptyWarning + expect(getPromptMessages()["emptyWarning"]).toBe( + promptConfig.messages.emptyWarning, ); - expect(getPromptMessages()['min']).toBe(initialMessages['min']); + expect(getPromptMessages()["min"]).toBe(initialMessages["min"]); }); - test('should ignore non-essential message', () => { - const initialMessages = {...getPromptMessages()}; + test("should ignore non-essential message", () => { + const initialMessages = { ...getPromptMessages() }; const promptConfig = { messages: { - more: 'learn more', + more: "learn more", }, }; setPromptConfig(promptConfig); expect(getPromptMessages()).toEqual(initialMessages); }); - test('should fields be independent', () => { - const initialQuestions = {...getPromptQuestions()}; + test("should fields be independent", () => { + const initialQuestions = { ...getPromptQuestions() }; setPromptConfig({ messages: { - emptyWarning: '(%s can not be empty)', + emptyWarning: "(%s can not be empty)", }, }); expect(getPromptQuestions()).toEqual(initialQuestions); - const initialMessages = {...getPromptMessages()}; + const initialMessages = { ...getPromptMessages() }; setPromptConfig({ questions: { type: { - description: 'input type', + description: "input type", }, }, }); expect(getPromptMessages()).toEqual(initialMessages); }); + + test('should settings scopeEnumSeparator be set when value is ",\\/"', () => { + setPromptConfig({ + settings: { + scopeEnumSeparator: "/", + }, + }); + expect(getPromptSettings()["scopeEnumSeparator"]).toEqual("/"); + + const processExit = vi + .spyOn(process, "exit") + .mockImplementation(() => undefined as never); + setPromptConfig({ + settings: { + scopeEnumSeparator: "-", + }, + }); + expect(processExit).toHaveBeenCalledWith(1); + processExit.mockClear(); + }); + + test("should pass on settings", () => { + setPromptConfig({ + settings: { + enableMultipleScopes: true, + }, + }); + expect(getPromptSettings()["enableMultipleScopes"]).toEqual(true); + }); }); diff --git a/@commitlint/cz-commitlint/src/store/prompts.ts b/@commitlint/cz-commitlint/src/store/prompts.ts index 649cd8d804..dfa1846833 100644 --- a/@commitlint/cz-commitlint/src/store/prompts.ts +++ b/@commitlint/cz-commitlint/src/store/prompts.ts @@ -1,8 +1,9 @@ -import {PromptConfig, UserPromptConfig} from '@commitlint/types'; -import isPlainObject from 'lodash/isPlainObject'; -import defaultPromptConfigs from './defaultPromptConfigs'; +import type { PromptConfig, UserPromptConfig } from "@commitlint/types"; +import isPlainObject from "lodash.isplainobject"; -const storeKey = Symbol('promptConfig'); +import defaultPromptConfigs from "./defaultPromptConfigs.js"; + +const storeKey = Symbol("promptConfig"); const store: { [storeKey]: PromptConfig; @@ -11,26 +12,46 @@ const store: { }; export function setPromptConfig(newPromptConfig: UserPromptConfig): void { - const {messages, questions} = newPromptConfig; + const { settings, messages, questions } = newPromptConfig; if (messages) { const requiredMessageKeys = Object.keys(defaultPromptConfigs.messages); requiredMessageKeys.forEach((key: string) => { const message = messages[key]; - if (typeof message === 'string') { - store[storeKey]['messages'][key] = message; + if (typeof message === "string") { + store[storeKey]["messages"][key] = message; } }); } if (questions && isPlainObject(questions)) { - store[storeKey]['questions'] = questions; + store[storeKey]["questions"] = questions; + } + + if (settings && isPlainObject(settings)) { + if ( + settings["scopeEnumSeparator"] && + !/^\/|\\|,$/.test(settings["scopeEnumSeparator"]) + ) { + console.log( + `prompt.settings.scopeEnumSeparator must be one of ',', '\\', '/'.`, + ); + process.exit(1); + } + store[storeKey]["settings"] = { + ...defaultPromptConfigs.settings, + ...settings, + }; } } -export function getPromptMessages(): Readonly<PromptConfig['messages']> { - return (store[storeKey] && store[storeKey]['messages']) ?? {}; +export function getPromptMessages(): Readonly<PromptConfig["messages"]> { + return (store[storeKey] && store[storeKey]["messages"]) ?? {}; +} + +export function getPromptQuestions(): Readonly<PromptConfig["questions"]> { + return (store[storeKey] && store[storeKey]["questions"]) ?? {}; } -export function getPromptQuestions(): Readonly<PromptConfig['questions']> { - return (store[storeKey] && store[storeKey]['questions']) ?? {}; +export function getPromptSettings(): Readonly<PromptConfig["settings"]> { + return (store[storeKey] && store[storeKey]["settings"]) ?? {}; } diff --git a/@commitlint/cz-commitlint/src/store/rules.test.ts b/@commitlint/cz-commitlint/src/store/rules.test.ts index 1d12a9e851..373dd6f101 100644 --- a/@commitlint/cz-commitlint/src/store/rules.test.ts +++ b/@commitlint/cz-commitlint/src/store/rules.test.ts @@ -1,67 +1,70 @@ -import {QualifiedRules} from '@commitlint/types'; -import {GetRuleMethod, SetRulesMethod} from './rules'; +import { describe, test, expect, vi, beforeEach } from "vitest"; +import { QualifiedRules, RuleConfigSeverity } from "@commitlint/types"; + +import { GetRuleMethod, SetRulesMethod } from "./rules.js"; let getRule: GetRuleMethod; let setRules: SetRulesMethod; -beforeEach(() => { - jest.resetModules(); - getRule = require('./rules').getRule; - setRules = require('./rules').setRules; + +beforeEach(async () => { + vi.resetModules(); + ({ getRule, setRules } = await import("./rules.js")); }); -describe('getRule', () => { - test('should get rule when prefix and property strict match', () => { + +describe("getRule", () => { + test("should get rule when prefix and property strict match", () => { const rules: QualifiedRules = { - 'body-max-length': [2, 'always', 100], - 'footer-max-line-length': [2, 'always', 100], - 'subject-empty': [2, 'never'], + "body-max-length": [RuleConfigSeverity.Error, "always", 100], + "footer-max-line-length": [RuleConfigSeverity.Error, "always", 100], + "subject-empty": [RuleConfigSeverity.Error, "never"], }; setRules(rules); - expect(getRule('body', 'max-length')).toBe(rules['body-max-length']); - expect(getRule('footer', 'max-line-length')).toBe( - rules['footer-max-line-length'] + expect(getRule("body", "max-length")).toBe(rules["body-max-length"]); + expect(getRule("footer", "max-line-length")).toBe( + rules["footer-max-line-length"], ); - expect(getRule('subject', 'empty')).toBe(rules['subject-empty']); + expect(getRule("subject", "empty")).toBe(rules["subject-empty"]); }); - test('should not get rule when prefix is invalid', () => { + test("should not get rule when prefix is invalid", () => { const rules: QualifiedRules = { - 'body-max-length': [2, 'always', 100], + "body-max-length": [RuleConfigSeverity.Error, "always", 100], }; setRules(rules); - expect(getRule('body-max', 'length')).toBeUndefined(); - expect(getRule('body-max', 'max-length')).toBeUndefined(); - expect(getRule('', 'body-max-length')).toBeUndefined(); + expect(getRule("body-max", "length")).toBeUndefined(); + expect(getRule("body-max", "max-length")).toBeUndefined(); + expect(getRule("", "body-max-length")).toBeUndefined(); }); - test('should not get rule when property is partial match', () => { + test("should not get rule when property is partial match", () => { const rules: QualifiedRules = { - 'body-max-length': [2, 'always', 100], - 'body-leading-blank': [1, 'always'], + "body-max-length": [RuleConfigSeverity.Error, "always", 100], + "body-leading-blank": [RuleConfigSeverity.Warning, "always"], }; setRules(rules); - expect(getRule('body', 'length')).toBeUndefined(); - expect(getRule('body', 'line-leading-blank')).toBeUndefined(); + expect(getRule("body", "length")).toBeUndefined(); + expect(getRule("body", "line-leading-blank")).toBeUndefined(); }); }); -describe('setRule', () => { - test('should overwrite all rules when setRule', () => { - expect(getRule('body', 'max-length')).toBeUndefined(); +describe("setRule", () => { + test("should overwrite all rules when setRule", () => { + expect(getRule("body", "max-length")).toBeUndefined(); let rules: QualifiedRules = { - 'body-max-length': [2, 'always', 100], + "body-max-length": [RuleConfigSeverity.Error, "always", 100], }; setRules(rules); - expect(getRule('body', 'max-length')).toBe(rules['body-max-length']); + expect(getRule("body", "max-length")).toBe(rules["body-max-length"]); rules = { - 'footer-max-length': [2, 'always', 100], + "footer-max-length": [RuleConfigSeverity.Error, "always", 100], }; setRules(rules); - expect(getRule('body', 'max-length')).toBeUndefined(); - expect(getRule('footer', 'max-length')).toBe(rules['footer-max-length']); + expect(getRule("body", "max-length")).toBeUndefined(); + expect(getRule("footer", "max-length")).toBe(rules["footer-max-length"]); }); }); diff --git a/@commitlint/cz-commitlint/src/store/rules.ts b/@commitlint/cz-commitlint/src/store/rules.ts index 5ad229ffb5..661d4e0ebd 100644 --- a/@commitlint/cz-commitlint/src/store/rules.ts +++ b/@commitlint/cz-commitlint/src/store/rules.ts @@ -1,7 +1,8 @@ -import {QualifiedRules} from '@commitlint/types'; -import {Rule} from '../types'; +import { QualifiedRules } from "@commitlint/types"; -const storeKey = Symbol('rules'); +import type { Rule } from "../types.js"; + +const storeKey = Symbol("rules"); const store: { [storeKey]: QualifiedRules; @@ -10,7 +11,7 @@ const store: { }; export function getRule(key: string, property: string): Rule | undefined { - if (key.split('-').length > 1) { + if (key.split("-").length > 1) { return; } return store[storeKey][`${key}-${property}`]; diff --git a/@commitlint/cz-commitlint/src/types.ts b/@commitlint/cz-commitlint/src/types.ts index fba53c54eb..b0c2d2c528 100644 --- a/@commitlint/cz-commitlint/src/types.ts +++ b/@commitlint/cz-commitlint/src/types.ts @@ -1,4 +1,4 @@ -import {RuleConfigCondition, RuleConfigSeverity} from '@commitlint/types'; +import { RuleConfigCondition, RuleConfigSeverity } from "@commitlint/types"; export type Rule = | Readonly<[RuleConfigSeverity.Disabled]> diff --git a/@commitlint/cz-commitlint/src/utils/case-fn.test.ts b/@commitlint/cz-commitlint/src/utils/case-fn.test.ts index 038f70589f..a1c0a44f33 100644 --- a/@commitlint/cz-commitlint/src/utils/case-fn.test.ts +++ b/@commitlint/cz-commitlint/src/utils/case-fn.test.ts @@ -1,80 +1,93 @@ -import {RuleConfigSeverity} from '@commitlint/types'; -import getCaseFn from './case-fn'; +import { test, expect } from "vitest"; +import { RuleConfigSeverity } from "@commitlint/types"; -test('should not apply', () => { +import getCaseFn from "./case-fn.js"; + +test("should not transform when rule is disabled", () => { let rule = getCaseFn([RuleConfigSeverity.Disabled]); - expect(rule('test')).toBe('test'); - expect(rule('test-foo')).toBe('test-foo'); - expect(rule('testFoo')).toBe('testFoo'); - expect(rule('TEST_FOO')).toBe('TEST_FOO'); + expect(rule("test")).toBe("test"); + expect(rule("test-foo")).toBe("test-foo"); + expect(rule("testFoo")).toBe("testFoo"); + expect(rule("TEST_FOO")).toBe("TEST_FOO"); rule = getCaseFn(); - expect(rule('test')).toBe('test'); - expect(rule('test-foo')).toBe('test-foo'); - expect(rule('testFoo')).toBe('testFoo'); - expect(rule('TEST_FOO')).toBe('TEST_FOO'); - - rule = getCaseFn([RuleConfigSeverity.Warning, 'never']); - expect(rule('test')).toBe('test'); - expect(rule('test-foo')).toBe('test-foo'); - expect(rule('testFoo')).toBe('testFoo'); - expect(rule('TEST_FOO')).toBe('TEST_FOO'); - - rule = getCaseFn([ - RuleConfigSeverity.Warning, - 'always', - ['camel-case', 'lowercase'], - ]); - expect(rule('test')).toBe('test'); - expect(rule('test-foo')).toBe('test-foo'); - expect(rule('testFoo')).toBe('testFoo'); - expect(rule('TEST_FOO')).toBe('TEST_FOO'); + expect(rule("test")).toBe("test"); + expect(rule("test-foo")).toBe("test-foo"); + expect(rule("testFoo")).toBe("testFoo"); + expect(rule("TEST_FOO")).toBe("TEST_FOO"); + + rule = getCaseFn([RuleConfigSeverity.Warning, "never"]); + expect(rule("test")).toBe("test"); + expect(rule("test-foo")).toBe("test-foo"); + expect(rule("testFoo")).toBe("testFoo"); + expect(rule("TEST_FOO")).toBe("TEST_FOO"); }); -test('should throw error on invalid casing', () => { - expect(() => getCaseFn([RuleConfigSeverity.Warning, 'always'])).toThrow( - 'Unknown target case "undefined"' - ); +test("should throw error on invalid casing", () => { + let rule = getCaseFn([RuleConfigSeverity.Warning, "always"]); + expect(() => rule("test")).toThrow('Unknown target case "undefined"'); - expect(() => - getCaseFn([RuleConfigSeverity.Warning, 'always', 'foo']) - ).toThrow('Unknown target case "foo"'); + rule = getCaseFn([RuleConfigSeverity.Warning, "always", "foo"]); + expect(() => rule("test")).toThrow('Unknown target case "foo"'); }); -test('should convert text correctly', () => { - let rule = getCaseFn([RuleConfigSeverity.Warning, 'always', 'camel-case']); - expect(rule('TEST_FOOBar-baz baz')).toBe('testFooBarBazBaz'); +test("should transform text correctly with single case", () => { + let rule = getCaseFn([RuleConfigSeverity.Warning, "always", "camel-case"]); + expect(rule("TEST_FOOBar-baz baz")).toBe("testFooBarBazBaz"); + + rule = getCaseFn([RuleConfigSeverity.Warning, "always", "kebab-case"]); + expect(rule("TEST_FOOBar-baz baz")).toBe("test-foo-bar-baz-baz"); + + rule = getCaseFn([RuleConfigSeverity.Warning, "always", "snake-case"]); + expect(rule("TEST_FOOBar-baz baz")).toBe("test_foo_bar_baz_baz"); - rule = getCaseFn([RuleConfigSeverity.Warning, 'always', 'kebab-case']); - expect(rule('TEST_FOOBar-baz baz')).toBe('test-foo-bar-baz-baz'); + rule = getCaseFn([RuleConfigSeverity.Warning, "always", "pascal-case"]); + expect(rule("TEST_FOOBar-baz baz")).toBe("TestFooBarBazBaz"); - rule = getCaseFn([RuleConfigSeverity.Warning, 'always', 'snake-case']); - expect(rule('TEST_FOOBar-baz baz')).toBe('test_foo_bar_baz_baz'); + rule = getCaseFn([RuleConfigSeverity.Warning, "always", "start-case"]); + expect(rule("TEST_FOOBar-baz baz")).toBe("TEST FOO Bar Baz Baz"); - rule = getCaseFn([RuleConfigSeverity.Warning, 'always', 'pascal-case']); - expect(rule('TEST_FOOBar-baz baz')).toBe('TestFooBarBazBaz'); + rule = getCaseFn([RuleConfigSeverity.Warning, "always", "upper-case"]); + expect(rule("TEST_FOOBar-baz baz")).toBe("TEST_FOOBAR-BAZ BAZ"); - rule = getCaseFn([RuleConfigSeverity.Warning, 'always', 'start-case']); - expect(rule('TEST_FOOBar-baz baz')).toBe('TEST FOO Bar Baz Baz'); + rule = getCaseFn([RuleConfigSeverity.Warning, "always", "uppercase"]); + expect(rule("TEST_FOOBar-baz baz")).toBe("TEST_FOOBAR-BAZ BAZ"); - rule = getCaseFn([RuleConfigSeverity.Warning, 'always', 'upper-case']); - expect(rule('TEST_FOOBar-baz baz')).toBe('TEST_FOOBAR-BAZ BAZ'); + rule = getCaseFn([RuleConfigSeverity.Warning, "always", "sentence-case"]); + expect(rule("tEST_FOOBar-baz baz")).toBe("TEST_FOOBar-baz baz"); - rule = getCaseFn([RuleConfigSeverity.Warning, 'always', 'uppercase']); - expect(rule('TEST_FOOBar-baz baz')).toBe('TEST_FOOBAR-BAZ BAZ'); + rule = getCaseFn([RuleConfigSeverity.Warning, "always", "sentencecase"]); + expect(rule("tEST_FOOBar-baz baz")).toBe("TEST_FOOBar-baz baz"); - rule = getCaseFn([RuleConfigSeverity.Warning, 'always', 'sentence-case']); - expect(rule('TEST_FOOBar-baz baz')).toBe('Test_foobar-baz baz'); + rule = getCaseFn([RuleConfigSeverity.Warning, "always", "lower-case"]); + expect(rule("TEST_FOOBar-baz baz")).toBe("test_foobar-baz baz"); - rule = getCaseFn([RuleConfigSeverity.Warning, 'always', 'sentencecase']); - expect(rule('TEST_FOOBar-baz baz')).toBe('Test_foobar-baz baz'); + rule = getCaseFn([RuleConfigSeverity.Warning, "always", "lowercase"]); + expect(rule("TEST_FOOBar-baz baz")).toBe("test_foobar-baz baz"); - rule = getCaseFn([RuleConfigSeverity.Warning, 'always', 'lower-case']); - expect(rule('TEST_FOOBar-baz baz')).toBe('test_foobar-baz baz'); + rule = getCaseFn([RuleConfigSeverity.Warning, "always", "lowerCase"]); + expect(rule("TEST_FOOBar-baz baz")).toBe("test_foobar-baz baz"); - rule = getCaseFn([RuleConfigSeverity.Warning, 'always', 'lowercase']); - expect(rule('TEST_FOOBar-baz baz')).toBe('test_foobar-baz baz'); + rule = getCaseFn([RuleConfigSeverity.Warning, "always", "lowerCase"]); + expect(rule(["TEST_FOOBar-baz", "bAz"])).toBe("test_foobar-baz,baz"); - rule = getCaseFn([RuleConfigSeverity.Warning, 'always', 'lowerCase']); - expect(rule('TEST_FOOBar-baz baz')).toBe('test_foobar-baz baz'); + rule = getCaseFn([RuleConfigSeverity.Warning, "always", "lowerCase"]); + expect(rule(["TEST_FOOBar-baz", "bAz"], "|")).toBe("test_foobar-baz|baz"); +}); + +test("should transform text correctly with multiple cases", () => { + const rule = getCaseFn([ + RuleConfigSeverity.Warning, + "always", + ["camel-case", "lowercase"], + ]); + expect(rule("test")).toBe("test"); + expect(rule("test-foo")).toBe("test-foo"); + expect(rule("testFoo")).toBe("testFoo"); + expect(rule("TEST_FOO")).toBe("testFoo"); + + expect(rule(["testFoo", "test_foo"])).toBe("testFoo,testFoo"); + expect(rule(["TEST_foo", "test_foo"])).toBe("test_foo,test_foo"); + expect(rule(["TEST_FOO", "Test_foo"])).toBe("testFoo,testFoo"); + expect(rule(["TEST_FOO", "Test_foo"], "|")).toBe("testFoo|testFoo"); }); diff --git a/@commitlint/cz-commitlint/src/utils/case-fn.ts b/@commitlint/cz-commitlint/src/utils/case-fn.ts index 0bb098c7bf..81723af7ca 100644 --- a/@commitlint/cz-commitlint/src/utils/case-fn.ts +++ b/@commitlint/cz-commitlint/src/utils/case-fn.ts @@ -1,12 +1,10 @@ -import camelCase from 'lodash/camelCase'; -import kebabCase from 'lodash/kebabCase'; -import snakeCase from 'lodash/snakeCase'; -import startCase from 'lodash/startCase'; -import upperFirst from 'lodash/upperFirst'; -import {Rule} from '../types'; -import {ruleIsActive, ruleIsNotApplicable} from './rules'; +import { case as ensureCase, toCase } from "@commitlint/ensure"; +import { TargetCaseType } from "@commitlint/types"; -export type CaseFn = (input: string) => string; +import { Rule } from "../types.js"; +import { ruleIsActive, ruleIsNotApplicable } from "./rules.js"; + +export type CaseFn = (input: string | string[], delimiter?: string) => string; /** * Get forced case for rule @@ -14,41 +12,33 @@ export type CaseFn = (input: string) => string; * @return transform function applying the enforced case */ export default function getCaseFn(rule?: Rule): CaseFn { - const noop = (input: string) => input; + const noop = (input: string | string[], delimiter?: string) => + Array.isArray(input) ? input.join(delimiter) : input; if (!rule || !ruleIsActive(rule) || ruleIsNotApplicable(rule)) { return noop; } - const target = rule[2]; + const value = rule[2]; - if (Array.isArray(target)) { - return noop; - } + const caseList = Array.isArray(value) ? value : [value]; - switch (target) { - case 'camel-case': - return (input: string) => camelCase(input); - case 'kebab-case': - return (input: string) => kebabCase(input); - case 'snake-case': - return (input: string) => snakeCase(input); - case 'pascal-case': - return (input: string) => upperFirst(camelCase(input)); - case 'start-case': - return (input: string) => startCase(input); - case 'upper-case': - case 'uppercase': - return (input: string) => input.toUpperCase(); - case 'sentence-case': - case 'sentencecase': - return (input: string) => - `${input.charAt(0).toUpperCase()}${input.substring(1).toLowerCase()}`; - case 'lower-case': - case 'lowercase': - case 'lowerCase': // Backwards compat config-angular v4 - return (input: string) => input.toLowerCase(); - default: - throw new TypeError(`Unknown target case "${target}"`); - } + return (input: string | string[], delimiter?: string) => { + let matchedCase: TargetCaseType = caseList[0]; + const segments = Array.isArray(input) ? input : [input]; + + for (const segment of segments) { + const check = caseList.find((a) => ensureCase(segment, a)); + if (check) { + matchedCase = check; + break; + } + } + + return segments + .map((segment) => { + return toCase(segment, matchedCase); + }) + .join(delimiter); + }; } diff --git a/@commitlint/cz-commitlint/src/utils/full-stop-fn-test.ts b/@commitlint/cz-commitlint/src/utils/full-stop-fn-test.ts deleted file mode 100644 index a1b56a6f7d..0000000000 --- a/@commitlint/cz-commitlint/src/utils/full-stop-fn-test.ts +++ /dev/null @@ -1,67 +0,0 @@ -import {RuleConfigSeverity} from '@commitlint/types'; -import getFullStopFn from './full-stop-fn'; - -test('should not apply', () => { - let rule = getFullStopFn([RuleConfigSeverity.Disabled]); - expect(rule('test.')).toBe('test.'); - expect(rule('test')).toBe('test'); - expect(rule('test..')).toBe('test..'); - expect(rule('')).toBe(''); - - rule = getFullStopFn(); - expect(rule('test.')).toBe('test.'); - expect(rule('test')).toBe('test'); - expect(rule('test..')).toBe('test..'); - expect(rule('')).toBe(''); - - rule = getFullStopFn([RuleConfigSeverity.Disabled, 'always']); - expect(rule('test.')).toBe('test.'); - expect(rule('test')).toBe('test'); - expect(rule('test..')).toBe('test..'); - expect(rule('')).toBe(''); - - rule = getFullStopFn([RuleConfigSeverity.Disabled, 'always', 1]); - expect(rule('test.')).toBe('test.'); - expect(rule('test')).toBe('test'); - expect(rule('test..')).toBe('test..'); - expect(rule('')).toBe(''); - - rule = getFullStopFn([RuleConfigSeverity.Disabled, 'never']); - expect(rule('test.')).toBe('test.'); - expect(rule('test')).toBe('test'); - expect(rule('test..')).toBe('test..'); - expect(rule('')).toBe(''); - - rule = getFullStopFn([RuleConfigSeverity.Disabled, 'never', ['.']]); - expect(rule('test.')).toBe('test.'); - expect(rule('test')).toBe('test'); - expect(rule('test..')).toBe('test..'); - expect(rule('')).toBe(''); -}); - -test('should add full stop', () => { - let rule = getFullStopFn([RuleConfigSeverity.Error, 'always', '.']); - expect(rule('test')).toBe('test.'); - expect(rule('test.')).toBe('test.'); - expect(rule('')).toBe('.'); - - rule = getFullStopFn([RuleConfigSeverity.Error, 'always', '\n']); - expect(rule('test')).toBe('test\n'); - expect(rule('test.')).toBe('test.\n'); - expect(rule('')).toBe('\n'); -}); - -test('should remove full stop', () => { - let rule = getFullStopFn([RuleConfigSeverity.Error, 'never', '.']); - expect(rule('test')).toBe('test'); - expect(rule('test.')).toBe('test'); - expect(rule('')).toBe(''); - expect(rule('test..')).toBe('test'); - expect(rule('test.end')).toBe('test.end'); - - rule = getFullStopFn([RuleConfigSeverity.Error, 'never', '\n']); - expect(rule('test')).toBe('test'); - expect(rule('test.')).toBe('test.'); - expect(rule('test\n\n')).toBe('test'); - expect(rule('test.\n')).toBe('test.'); -}); diff --git a/@commitlint/cz-commitlint/src/utils/full-stop-fn.test.ts b/@commitlint/cz-commitlint/src/utils/full-stop-fn.test.ts new file mode 100644 index 0000000000..418af8af35 --- /dev/null +++ b/@commitlint/cz-commitlint/src/utils/full-stop-fn.test.ts @@ -0,0 +1,69 @@ +import { test, expect } from "vitest"; +import { RuleConfigSeverity } from "@commitlint/types"; + +import getFullStopFn from "./full-stop-fn.js"; + +test("should not apply", () => { + let rule = getFullStopFn([RuleConfigSeverity.Disabled]); + expect(rule("test.")).toBe("test."); + expect(rule("test")).toBe("test"); + expect(rule("test..")).toBe("test.."); + expect(rule("")).toBe(""); + + rule = getFullStopFn(); + expect(rule("test.")).toBe("test."); + expect(rule("test")).toBe("test"); + expect(rule("test..")).toBe("test.."); + expect(rule("")).toBe(""); + + rule = getFullStopFn([RuleConfigSeverity.Disabled, "always"]); + expect(rule("test.")).toBe("test."); + expect(rule("test")).toBe("test"); + expect(rule("test..")).toBe("test.."); + expect(rule("")).toBe(""); + + rule = getFullStopFn([RuleConfigSeverity.Disabled, "always", 1]); + expect(rule("test.")).toBe("test."); + expect(rule("test")).toBe("test"); + expect(rule("test..")).toBe("test.."); + expect(rule("")).toBe(""); + + rule = getFullStopFn([RuleConfigSeverity.Disabled, "never"]); + expect(rule("test.")).toBe("test."); + expect(rule("test")).toBe("test"); + expect(rule("test..")).toBe("test.."); + expect(rule("")).toBe(""); + + rule = getFullStopFn([RuleConfigSeverity.Disabled, "never", ["."]]); + expect(rule("test.")).toBe("test."); + expect(rule("test")).toBe("test"); + expect(rule("test..")).toBe("test.."); + expect(rule("")).toBe(""); +}); + +test("should add full stop", () => { + let rule = getFullStopFn([RuleConfigSeverity.Error, "always", "."]); + expect(rule("test")).toBe("test."); + expect(rule("test.")).toBe("test."); + expect(rule("")).toBe("."); + + rule = getFullStopFn([RuleConfigSeverity.Error, "always", "\n"]); + expect(rule("test")).toBe("test\n"); + expect(rule("test.")).toBe("test.\n"); + expect(rule("")).toBe("\n"); +}); + +test("should remove full stop", () => { + let rule = getFullStopFn([RuleConfigSeverity.Error, "never", "."]); + expect(rule("test")).toBe("test"); + expect(rule("test.")).toBe("test"); + expect(rule("")).toBe(""); + expect(rule("test..")).toBe("test"); + expect(rule("test.end")).toBe("test.end"); + + rule = getFullStopFn([RuleConfigSeverity.Error, "never", "\n"]); + expect(rule("test")).toBe("test"); + expect(rule("test.")).toBe("test."); + expect(rule("test\n\n")).toBe("test"); + expect(rule("test.\n")).toBe("test."); +}); diff --git a/@commitlint/cz-commitlint/src/utils/full-stop-fn.ts b/@commitlint/cz-commitlint/src/utils/full-stop-fn.ts index 6a593720c8..659a15e915 100644 --- a/@commitlint/cz-commitlint/src/utils/full-stop-fn.ts +++ b/@commitlint/cz-commitlint/src/utils/full-stop-fn.ts @@ -1,5 +1,5 @@ -import {Rule} from '../types'; -import {ruleIsActive, ruleIsNotApplicable} from './rules'; +import { Rule } from "../types.js"; +import { ruleIsActive, ruleIsNotApplicable } from "./rules.js"; export type FullStopFn = (input: string) => string; @@ -15,7 +15,7 @@ export default function getFullStopFn(rule?: Rule): FullStopFn { return noop; } - if (typeof rule[2] !== 'string') return noop; + if (typeof rule[2] !== "string") return noop; const symbol: string = rule[2]; diff --git a/@commitlint/cz-commitlint/src/utils/leading-blank-fn-test.ts b/@commitlint/cz-commitlint/src/utils/leading-blank-fn-test.ts deleted file mode 100644 index 25d787d88b..0000000000 --- a/@commitlint/cz-commitlint/src/utils/leading-blank-fn-test.ts +++ /dev/null @@ -1,37 +0,0 @@ -import {RuleConfigSeverity} from '@commitlint/types'; -import getLeadingBlankFn from './leading-blank-fn'; - -test('should not apply', () => { - let rule = getLeadingBlankFn([RuleConfigSeverity.Disabled]); - expect(rule('test')).toBe('test'); - expect(rule('\ntest')).toBe('\ntest'); - expect(rule('aaa\ntest')).toBe('aaa\ntest'); - expect(rule('')).toBe(''); - - rule = getLeadingBlankFn(); - expect(rule('test')).toBe('test'); - expect(rule('\ntest')).toBe('\ntest'); - expect(rule('aaa\ntest')).toBe('aaa\ntest'); - expect(rule('')).toBe(''); -}); - -test('should add leading blank', () => { - const rule = getLeadingBlankFn([RuleConfigSeverity.Error, 'always']); - expect(rule('test')).toBe('\ntest'); - expect(rule('\ntest')).toBe('\ntest'); - expect(rule('\n\ntest')).toBe('\n\ntest'); - expect(rule('aaa\ntest')).toBe('\naaa\ntest'); - expect(rule('\naaa\ntest')).toBe('\naaa\ntest'); - expect(rule('')).toBe('\n'); -}); - -test('should remove leading blank', () => { - const rule = getLeadingBlankFn([RuleConfigSeverity.Error, 'never']); - expect(rule('test')).toBe('test'); - expect(rule('\ntest')).toBe('test'); - expect(rule('\n\ntest')).toBe('test'); - expect(rule('aaa\ntest')).toBe('aaa\ntest'); - expect(rule('\naaa\ntest')).toBe('aaa\ntest'); - expect(rule('\n\n\naaa\ntest')).toBe('aaa\ntest'); - expect(rule('')).toBe(''); -}); diff --git a/@commitlint/cz-commitlint/src/utils/leading-blank-fn.test.ts b/@commitlint/cz-commitlint/src/utils/leading-blank-fn.test.ts new file mode 100644 index 0000000000..c82893859c --- /dev/null +++ b/@commitlint/cz-commitlint/src/utils/leading-blank-fn.test.ts @@ -0,0 +1,39 @@ +import { test, expect } from "vitest"; +import { RuleConfigSeverity } from "@commitlint/types"; + +import getLeadingBlankFn from "./leading-blank-fn.js"; + +test("should not apply", () => { + let rule = getLeadingBlankFn([RuleConfigSeverity.Disabled]); + expect(rule("test")).toBe("test"); + expect(rule("\ntest")).toBe("\ntest"); + expect(rule("aaa\ntest")).toBe("aaa\ntest"); + expect(rule("")).toBe(""); + + rule = getLeadingBlankFn(); + expect(rule("test")).toBe("test"); + expect(rule("\ntest")).toBe("\ntest"); + expect(rule("aaa\ntest")).toBe("aaa\ntest"); + expect(rule("")).toBe(""); +}); + +test("should add leading blank", () => { + const rule = getLeadingBlankFn([RuleConfigSeverity.Error, "always"]); + expect(rule("test")).toBe("\ntest"); + expect(rule("\ntest")).toBe("\ntest"); + expect(rule("\n\ntest")).toBe("\n\ntest"); + expect(rule("aaa\ntest")).toBe("\naaa\ntest"); + expect(rule("\naaa\ntest")).toBe("\naaa\ntest"); + expect(rule("")).toBe(""); +}); + +test("should remove leading blank", () => { + const rule = getLeadingBlankFn([RuleConfigSeverity.Error, "never"]); + expect(rule("test")).toBe("test"); + expect(rule("\ntest")).toBe("test"); + expect(rule("\n\ntest")).toBe("test"); + expect(rule("aaa\ntest")).toBe("aaa\ntest"); + expect(rule("\naaa\ntest")).toBe("aaa\ntest"); + expect(rule("\n\n\naaa\ntest")).toBe("aaa\ntest"); + expect(rule("")).toBe(""); +}); diff --git a/@commitlint/cz-commitlint/src/utils/leading-blank-fn.ts b/@commitlint/cz-commitlint/src/utils/leading-blank-fn.ts index e12c571276..9400b8c1ed 100644 --- a/@commitlint/cz-commitlint/src/utils/leading-blank-fn.ts +++ b/@commitlint/cz-commitlint/src/utils/leading-blank-fn.ts @@ -1,5 +1,5 @@ -import {Rule} from '../types'; -import {ruleIsActive, ruleIsNotApplicable} from './rules'; +import type { Rule } from "../types.js"; +import { ruleIsActive, ruleIsNotApplicable } from "./rules.js"; /** * Get forced leading for rule @@ -7,22 +7,22 @@ import {ruleIsActive, ruleIsNotApplicable} from './rules'; * @return transform function applying the leading */ export default function getLeadingBlankFn( - rule?: Rule + rule?: Rule, ): (input: string) => string { if (!rule || !ruleIsActive(rule)) { return (input: string): string => input; } const remove = (input: string): string => { - const fragments = input.split('\n'); - while (fragments.length > 0 && fragments[0] === '') { + const fragments = input.split("\n"); + while (fragments.length > 0 && fragments[0] === "") { fragments.shift(); } - return fragments.join('\n'); + return fragments.join("\n"); }; const lead = (input: string): string => { - const fragments = input.split('\n'); - return fragments[0] === '' ? input : ['', ...fragments].join('\n'); + const fragments = input.split("\n"); + return fragments[0] === "" ? input : ["", ...fragments].join("\n"); }; return !ruleIsNotApplicable(rule) ? lead : remove; diff --git a/@commitlint/cz-commitlint/src/utils/rules.test.ts b/@commitlint/cz-commitlint/src/utils/rules.test.ts index 880551a531..4c9855078c 100644 --- a/@commitlint/cz-commitlint/src/utils/rules.test.ts +++ b/@commitlint/cz-commitlint/src/utils/rules.test.ts @@ -1,4 +1,6 @@ -import {RuleConfigSeverity} from '@commitlint/types'; +import { test, expect } from "vitest"; +import { RuleConfigSeverity } from "@commitlint/types"; + import { enumRuleIsActive, getEnumList, @@ -8,118 +10,118 @@ import { ruleIsApplicable, ruleIsDisabled, ruleIsNotApplicable, -} from './rules'; +} from "./rules.js"; -test('ruleIsDisabled', () => { +test("ruleIsDisabled", () => { expect(ruleIsDisabled([RuleConfigSeverity.Disabled])).toBe(true); - expect(ruleIsDisabled([RuleConfigSeverity.Disabled, 'never'])).toBe(true); - expect(ruleIsDisabled([RuleConfigSeverity.Disabled, 'always'])).toBe(true); + expect(ruleIsDisabled([RuleConfigSeverity.Disabled, "never"])).toBe(true); + expect(ruleIsDisabled([RuleConfigSeverity.Disabled, "always"])).toBe(true); expect(ruleIsDisabled([RuleConfigSeverity.Error] as any)).toBe(false); - expect(ruleIsDisabled([RuleConfigSeverity.Error, 'always'] as any)).toBe( - false + expect(ruleIsDisabled([RuleConfigSeverity.Error, "always"] as any)).toBe( + false, ); }); -test('ruleIsActive', () => { - expect(ruleIsActive([RuleConfigSeverity.Error, 'always'])).toBe(true); - expect(ruleIsActive([RuleConfigSeverity.Warning, 'never'])).toBe(true); - expect(ruleIsActive([RuleConfigSeverity.Disabled, 'always'])).toBe(false); +test("ruleIsActive", () => { + expect(ruleIsActive([RuleConfigSeverity.Error, "always"])).toBe(true); + expect(ruleIsActive([RuleConfigSeverity.Warning, "never"])).toBe(true); + expect(ruleIsActive([RuleConfigSeverity.Disabled, "always"])).toBe(false); expect(ruleIsActive([RuleConfigSeverity.Error] as any)).toBe(true); }); -test('ruleIsApplicable', () => { - expect(ruleIsApplicable([RuleConfigSeverity.Error, 'always'])).toBe(true); - expect(ruleIsApplicable([RuleConfigSeverity.Warning, 'always'])).toBe(true); - expect(ruleIsApplicable([RuleConfigSeverity.Disabled, 'always'])).toBe(true); +test("ruleIsApplicable", () => { + expect(ruleIsApplicable([RuleConfigSeverity.Error, "always"])).toBe(true); + expect(ruleIsApplicable([RuleConfigSeverity.Warning, "always"])).toBe(true); + expect(ruleIsApplicable([RuleConfigSeverity.Disabled, "always"])).toBe(true); expect(ruleIsApplicable(undefined as any)).toBe(false); - expect(ruleIsApplicable('' as any)).toBe(false); + expect(ruleIsApplicable("" as any)).toBe(false); expect(ruleIsApplicable([RuleConfigSeverity.Disabled])).toBe(false); - expect(ruleIsApplicable([RuleConfigSeverity.Disabled, 'never'])).toBe(false); + expect(ruleIsApplicable([RuleConfigSeverity.Disabled, "never"])).toBe(false); }); -test('ruleIsNotApplicable', () => { - expect(ruleIsNotApplicable([RuleConfigSeverity.Error, 'never'])).toBe(true); - expect(ruleIsNotApplicable([RuleConfigSeverity.Warning, 'never'])).toBe(true); - expect(ruleIsNotApplicable([RuleConfigSeverity.Disabled, 'never'])).toBe( - true +test("ruleIsNotApplicable", () => { + expect(ruleIsNotApplicable([RuleConfigSeverity.Error, "never"])).toBe(true); + expect(ruleIsNotApplicable([RuleConfigSeverity.Warning, "never"])).toBe(true); + expect(ruleIsNotApplicable([RuleConfigSeverity.Disabled, "never"])).toBe( + true, ); expect(ruleIsNotApplicable(undefined as any)).toBe(false); - expect(ruleIsNotApplicable('' as any)).toBe(false); + expect(ruleIsNotApplicable("" as any)).toBe(false); expect(ruleIsNotApplicable([RuleConfigSeverity.Error] as any)).toBe(false); - expect(ruleIsNotApplicable([RuleConfigSeverity.Error, 'always'])).toBe(false); - expect(ruleIsNotApplicable([RuleConfigSeverity.Error, 'always', 100])).toBe( - false + expect(ruleIsNotApplicable([RuleConfigSeverity.Error, "always"])).toBe(false); + expect(ruleIsNotApplicable([RuleConfigSeverity.Error, "always", 100])).toBe( + false, ); }); -test('getMaxLength', () => { - expect(getMaxLength([RuleConfigSeverity.Error, 'always', 100])).toBe(100); - expect(getMaxLength([RuleConfigSeverity.Warning, 'never'])).toBe(Infinity); - expect(getMaxLength([RuleConfigSeverity.Disabled, 'always'])).toBe(Infinity); +test("getMaxLength", () => { + expect(getMaxLength([RuleConfigSeverity.Error, "always", 100])).toBe(100); + expect(getMaxLength([RuleConfigSeverity.Warning, "never"])).toBe(Infinity); + expect(getMaxLength([RuleConfigSeverity.Disabled, "always"])).toBe(Infinity); expect(getMaxLength([RuleConfigSeverity.Error] as any)).toBe(Infinity); const rules: any = { - 'body-max-line-length': [2, 'always', 100], - 'header-max-length': [2, 'always', 100], - 'test-max-length': [RuleConfigSeverity.Disabled, 'always', 100], + "body-max-line-length": [RuleConfigSeverity.Error, "always", 100], + "header-max-length": [RuleConfigSeverity.Error, "always", 100], + "test-max-length": [RuleConfigSeverity.Disabled, "always", 100], }; - let lengthRule = rules['header-max-length']; + let lengthRule = rules["header-max-length"]; expect(getMaxLength(lengthRule)).toBe(100); - lengthRule = rules['body-max-line-length']; + lengthRule = rules["body-max-line-length"]; expect(getMaxLength(lengthRule)).toBe(100); - lengthRule = rules['body-max-length']; + lengthRule = rules["body-max-length"]; expect(getMaxLength(lengthRule)).toBe(Infinity); - lengthRule = rules['test-max-length']; + lengthRule = rules["test-max-length"]; expect(getMaxLength(lengthRule)).toBe(Infinity); }); -test('getMinLength', () => { - expect(getMinLength([RuleConfigSeverity.Error, 'always', 10])).toBe(10); - expect(getMinLength([RuleConfigSeverity.Warning, 'never'])).toBe(0); - expect(getMinLength([RuleConfigSeverity.Disabled, 'always'])).toBe(0); +test("getMinLength", () => { + expect(getMinLength([RuleConfigSeverity.Error, "always", 10])).toBe(10); + expect(getMinLength([RuleConfigSeverity.Warning, "never"])).toBe(0); + expect(getMinLength([RuleConfigSeverity.Disabled, "always"])).toBe(0); expect(getMinLength([RuleConfigSeverity.Error] as any)).toBe(0); const rules: any = { - 'body-min-length': [2, 'always', 10], - 'footer-min-length': [2, 'always', 20], - 'test-min-length': [RuleConfigSeverity.Disabled, 'always', 100], + "body-min-length": [RuleConfigSeverity.Error, "always", 10], + "footer-min-length": [RuleConfigSeverity.Error, "always", 20], + "test-min-length": [RuleConfigSeverity.Disabled, "always", 100], }; - let lengthRule = rules['header-min-length']; + let lengthRule = rules["header-min-length"]; expect(getMinLength(lengthRule)).toBe(0); - lengthRule = rules['body-min-length']; + lengthRule = rules["body-min-length"]; expect(getMinLength(lengthRule)).toBe(10); - lengthRule = rules['test-min-length']; + lengthRule = rules["test-min-length"]; expect(getMinLength(lengthRule)).toBe(0); }); -test('enumRuleIsActive', () => { +test("enumRuleIsActive", () => { const rules: any = { - 'enum-string': [RuleConfigSeverity.Warning, 'always', ['1', '2', '3']], - 'type-enum': [RuleConfigSeverity.Error, 'always', ['build', 'chore', 'ci']], - 'scope-enum': [RuleConfigSeverity.Error, 'never', ['cli', 'core', 'lint']], - 'bar-enum': [RuleConfigSeverity.Disabled, 'always', ['foo', 'bar', 'baz']], + "enum-string": [RuleConfigSeverity.Warning, "always", ["1", "2", "3"]], + "type-enum": [RuleConfigSeverity.Error, "always", ["build", "chore", "ci"]], + "scope-enum": [RuleConfigSeverity.Error, "never", ["cli", "core", "lint"]], + "bar-enum": [RuleConfigSeverity.Disabled, "always", ["foo", "bar", "baz"]], }; - expect(enumRuleIsActive(rules['type-enum'])).toBe(true); - expect(enumRuleIsActive(rules['string-enum'])).toBe(false); - expect(enumRuleIsActive(rules['enum-string'])).toBe(true); - expect(enumRuleIsActive(rules['bar-enum'])).toBe(false); - expect(enumRuleIsActive(rules['scope-enum'])).toBe(false); + expect(enumRuleIsActive(rules["type-enum"])).toBe(true); + expect(enumRuleIsActive(rules["string-enum"])).toBe(false); + expect(enumRuleIsActive(rules["enum-string"])).toBe(true); + expect(enumRuleIsActive(rules["bar-enum"])).toBe(false); + expect(enumRuleIsActive(rules["scope-enum"])).toBe(false); }); -test('getEnumList', () => { +test("getEnumList", () => { const rules: any = { - 'type-enum': [RuleConfigSeverity.Error, 'always', ['build', 'chore', 'ci']], - 'scope-enum': [RuleConfigSeverity.Error, 'never', ''], - 'bar-enum': [RuleConfigSeverity.Disabled, 'always'], + "type-enum": [RuleConfigSeverity.Error, "always", ["build", "chore", "ci"]], + "scope-enum": [RuleConfigSeverity.Error, "never", ""], + "bar-enum": [RuleConfigSeverity.Disabled, "always"], }; - expect(getEnumList(rules['type-enum'])).toEqual(['build', 'chore', 'ci']); - expect(getEnumList(rules['scope-enum'])).toEqual([]); - expect(getEnumList(rules['bar-enum'])).toEqual([]); + expect(getEnumList(rules["type-enum"])).toEqual(["build", "chore", "ci"]); + expect(getEnumList(rules["scope-enum"])).toEqual([]); + expect(getEnumList(rules["bar-enum"])).toEqual([]); }); diff --git a/@commitlint/cz-commitlint/src/utils/rules.ts b/@commitlint/cz-commitlint/src/utils/rules.ts index b9758e2184..d2570cd392 100644 --- a/@commitlint/cz-commitlint/src/utils/rules.ts +++ b/@commitlint/cz-commitlint/src/utils/rules.ts @@ -1,8 +1,8 @@ -import {RuleConfigSeverity} from '@commitlint/types'; -import {Rule} from '../types'; +import { RuleConfigSeverity } from "@commitlint/types"; +import type { Rule } from "../types.js"; export function ruleIsDisabled( - rule: Rule + rule: Rule, ): rule is Readonly<[RuleConfigSeverity.Disabled]> { if (rule && Array.isArray(rule) && rule[0] === RuleConfigSeverity.Disabled) { return true; @@ -16,7 +16,7 @@ export function ruleIsDisabled( * @return if the rule definition is active */ export function ruleIsActive<T extends Rule>( - rule: T + rule: T, ): rule is Exclude<T, Readonly<[RuleConfigSeverity.Disabled]>> { if (rule && Array.isArray(rule)) { return rule[0] > RuleConfigSeverity.Disabled; @@ -30,12 +30,12 @@ export function ruleIsActive<T extends Rule>( * @return if the rule definition is applicable */ export function ruleIsApplicable( - rule: Rule + rule: Rule, ): rule is - | Readonly<[RuleConfigSeverity, 'always']> - | Readonly<[RuleConfigSeverity, 'always', unknown]> { + | Readonly<[RuleConfigSeverity, "always"]> + | Readonly<[RuleConfigSeverity, "always", unknown]> { if (rule && Array.isArray(rule)) { - return rule[1] === 'always'; + return rule[1] === "always"; } return false; } @@ -46,20 +46,20 @@ export function ruleIsApplicable( * @return if the rule definition is applicable */ export function ruleIsNotApplicable( - rule: Rule + rule: Rule, ): rule is - | Readonly<[RuleConfigSeverity, 'never']> - | Readonly<[RuleConfigSeverity, 'never', unknown]> { + | Readonly<[RuleConfigSeverity, "never"]> + | Readonly<[RuleConfigSeverity, "never", unknown]> { if (rule && Array.isArray(rule)) { - return rule[1] === 'never'; + return rule[1] === "never"; } return false; } export function enumRuleIsActive( - rule: Rule + rule: Rule, ): rule is Readonly< - [RuleConfigSeverity.Warning | RuleConfigSeverity.Error, 'always', string[]] + [RuleConfigSeverity.Warning | RuleConfigSeverity.Error, "always", string[]] > { return ( ruleIsActive(rule) && @@ -78,7 +78,7 @@ export function getMaxLength(rule?: Rule): number { rule && ruleIsActive(rule) && ruleIsApplicable(rule) && - typeof rule[2] === 'number' + typeof rule[2] === "number" ) { return rule[2]; } @@ -90,7 +90,7 @@ export function getMinLength(rule?: Rule): number { rule && ruleIsActive(rule) && ruleIsApplicable(rule) && - typeof rule[2] === 'number' + typeof rule[2] === "number" ) { return rule[2]; } diff --git a/@commitlint/cz-commitlint/tsconfig.json b/@commitlint/cz-commitlint/tsconfig.json index 2a6d93a0fa..47e6ae4531 100644 --- a/@commitlint/cz-commitlint/tsconfig.json +++ b/@commitlint/cz-commitlint/tsconfig.json @@ -6,6 +6,6 @@ "outDir": "./lib" }, "include": ["./src"], - "exclude": ["./src/**/*.test.ts", "./lib/**/*"], - "references": [{"path": "../cli"}] + "exclude": ["./src/**/*.test.ts", "./src/**/*-test.ts", "./lib/**/*"], + "references": [{ "path": "../cli" }] } diff --git a/@commitlint/ensure/CHANGELOG.md b/@commitlint/ensure/CHANGELOG.md index 88e9f162d4..611e79b829 100644 --- a/@commitlint/ensure/CHANGELOG.md +++ b/@commitlint/ensure/CHANGELOG.md @@ -3,7 +3,22 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. -# [13.1.0](https://github.com/conventional-changelog/commitlint/compare/v13.0.0...v13.1.0) (2021-07-24) +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + + +* feat(rules)!: make body-max-line-length ignore lines with URLs (#4486) ([2f37a88](https://github.com/conventional-changelog/commitlint/commit/2f37a886be4b07bcd8e1126cc6a13256e7b6cc37)), closes [#4486](https://github.com/conventional-changelog/commitlint/issues/4486) + + +### BREAKING CHANGES + +* when lines contain URLs exceeding the maximum +line length `body-max-line-length` will be ignored + + + + + +## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) **Note:** Version bump only for package @commitlint/ensure @@ -11,21 +26,97 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) +# [19.8.0](https://github.com/conventional-changelog/commitlint/compare/v19.7.1...v19.8.0) (2025-03-07) + + +### Performance Improvements + +* use `node:` prefix to bypass require.cache call for builtins ([#4302](https://github.com/conventional-changelog/commitlint/issues/4302)) ([0cd8f41](https://github.com/conventional-changelog/commitlint/commit/0cd8f410573fe11383f788b1ceb7e0946143591d)) + + + + + +# [19.5.0](https://github.com/conventional-changelog/commitlint/compare/v19.4.1...v19.5.0) (2024-09-11) + +**Note:** Version bump only for package @commitlint/ensure + -* chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) + + +## [19.0.3](https://github.com/conventional-changelog/commitlint/compare/v19.0.2...v19.0.3) (2024-02-28) + +**Note:** Version bump only for package @commitlint/ensure + + + + + +# [19.0.0](https://github.com/conventional-changelog/commitlint/compare/v18.6.2...v19.0.0) (2024-02-27) + + +* feat!: migrate to pure ESM (#3850) ([3423735](https://github.com/conventional-changelog/commitlint/commit/342373559bdf7c783c4ef37ff05dc38a5f681159)), closes [#3850](https://github.com/conventional-changelog/commitlint/issues/3850) + + +### Reverts + +* Revert "chore!: minimum node version v20" ([2816783](https://github.com/conventional-changelog/commitlint/commit/2816783d00e7eb967de3ac9347c2fc43dc8b94fa)) ### BREAKING CHANGES -* minimum node version is 12 +* migrate to pure ESM +* feat: migrate to pure ESM +* chore: update snapshot +* fix: load `parserPreset` with another `await` +* test: migrate to vitest -## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) +* test: remove no replacement `--runInBand` test-ci script + +* chore: fix code reviews + +* refactor(load): rewrite resolve logic + +* fix(config-nx-scopes): fix syntax error + +* feat(resolve-extends): add resolveFrom and loadParserPreset + +* feat(load): use resolveFrom and loadParserPreset from resolve-extends + +* test: include only @commitlint/* packages src in coverage + +* test: explicit import vitest utilities + +* test: remove @jest/globals from dependencies + +* fix(resolve-extends): `resolveFrom` output should be platform aware + +* test: restore NO_COLOR to test script + +* chore: fix linting issues + +* fix: should use fileURLToPath instead of pathname for Windows compatibility + +* Apply suggestions from code review + +* fix: should reuse `cli` instead call `yargs()` + +* feat(cli): set terminalWidth as wrap to avoid work break on help + +* Update .eslintrc.cjs + +* feat: migrate @commitlint/config-conventional to pure ESM + + + + + +## [18.6.1](https://github.com/conventional-changelog/commitlint/compare/v18.6.0...v18.6.1) (2024-02-13) **Note:** Version bump only for package @commitlint/ensure @@ -33,7 +124,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.1.2](https://github.com/conventional-changelog/commitlint/compare/v12.1.1...v12.1.2) (2021-04-29) +# [18.6.0](https://github.com/conventional-changelog/commitlint/compare/v18.5.1...v18.6.0) (2024-01-25) **Note:** Version bump only for package @commitlint/ensure @@ -41,7 +132,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) +## [18.4.4](https://github.com/conventional-changelog/commitlint/compare/v18.4.3...v18.4.4) (2024-01-04) **Note:** Version bump only for package @commitlint/ensure @@ -49,7 +140,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) +## [18.4.3](https://github.com/conventional-changelog/commitlint/compare/v18.4.2...v18.4.3) (2023-11-21) **Note:** Version bump only for package @commitlint/ensure @@ -57,7 +148,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) +# [18.4.0](https://github.com/conventional-changelog/commitlint/compare/v18.3.0...v18.4.0) (2023-11-10) **Note:** Version bump only for package @commitlint/ensure @@ -65,7 +156,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) +# [18.1.0](https://github.com/conventional-changelog/commitlint/compare/v18.0.0...v18.1.0) (2023-10-25) **Note:** Version bump only for package @commitlint/ensure @@ -73,29 +164,37 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) +# [18.0.0](https://github.com/conventional-changelog/commitlint/compare/v17.8.1...v18.0.0) (2023-10-20) -* refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) +* chore!: minimum node version v18 (#3644) ([5b4aeaf](https://github.com/conventional-changelog/commitlint/commit/5b4aeaf4f01c2726a7bc8631a23bb34c849baad2)), closes [#3644](https://github.com/conventional-changelog/commitlint/issues/3644) ### BREAKING CHANGES -* remove node 8 from circle-ci checks +* drop node v14 and v16 support -also remove node 13 because we do not support experimental versions +* chore: remove unused types -* docs: update node v10 to latest LTS 10 version +* docs: prepare node update and new release -Co-authored-by: Cedric van Putten <me@bycedric.com> +* chore!: minimum TS version v5 +* drop TS v4 support -Co-authored-by: Cedric van Putten <me@bycedric.com> +* ci: remove node v14/16 checks +* chore: adjust node types to minimal supported version +* chore!: further major versions of other deps +* upgrade conventional-changelog-conventionalcommits, conventional-commits-parser, conventional-changelog-atom, + +* docs: simplify releases and remove roadmap -## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) + + +## [17.8.1](https://github.com/conventional-changelog/commitlint/compare/v17.8.0...v17.8.1) (2023-10-20) **Note:** Version bump only for package @commitlint/ensure @@ -103,7 +202,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) +## [17.6.7](https://github.com/conventional-changelog/commitlint/compare/v17.6.6...v17.6.7) (2023-07-19) **Note:** Version bump only for package @commitlint/ensure @@ -111,7 +210,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) +## [17.4.4](https://github.com/conventional-changelog/commitlint/compare/v17.4.3...v17.4.4) (2023-02-17) **Note:** Version bump only for package @commitlint/ensure @@ -119,186 +218,233 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) +# [17.4.0](https://github.com/conventional-changelog/commitlint/compare/v17.3.0...v17.4.0) (2023-01-04) **Note:** Version bump only for package @commitlint/ensure +# [17.3.0](https://github.com/conventional-changelog/commitlint/compare/v17.2.1...v17.3.0) (2022-11-21) +**Note:** Version bump only for package @commitlint/ensure +# [17.0.0](https://github.com/conventional-changelog/commitlint/compare/v16.3.0...v17.0.0) (2022-05-16) +- chore!: minimum node version v14 (#3128) ([ac5f9b4](https://github.com/conventional-changelog/commitlint/commit/ac5f9b47a9e3cd5c9d58b14da0feb426f06b1ef9)), closes [#3128](https://github.com/conventional-changelog/commitlint/issues/3128) -# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) +### BREAKING CHANGES +- drop node v12 support -### Bug Fixes +- chore: rename circleci windows job -* [#840](https://github.com/conventional-changelog/commitlint/issues/840) add caret to lodash versions ([#843](https://github.com/conventional-changelog/commitlint/issues/843)) ([ffc0bac](https://github.com/conventional-changelog/commitlint/commit/ffc0bac26993acb2ab6a8fa51065f93c92b0d644)) +node version is not defned by the name anyways (i think) +## [16.2.1](https://github.com/conventional-changelog/commitlint/compare/v16.2.0...v16.2.1) (2022-02-13) +**Note:** Version bump only for package @commitlint/ensure +# [16.0.0](https://github.com/conventional-changelog/commitlint/compare/v15.0.0...v16.0.0) (2021-12-26) +**Note:** Version bump only for package @commitlint/ensure -## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) +# [15.0.0](https://github.com/conventional-changelog/commitlint/compare/v14.2.0...v15.0.0) (2021-11-17) **Note:** Version bump only for package @commitlint/ensure +# [14.1.0](https://github.com/conventional-changelog/commitlint/compare/v14.0.0...v14.1.0) (2021-11-01) +**Note:** Version bump only for package @commitlint/ensure +# [14.0.0](https://github.com/conventional-changelog/commitlint/compare/v13.2.1...v14.0.0) (2021-10-26) +**Note:** Version bump only for package @commitlint/ensure -# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) +# [13.2.0](https://github.com/conventional-changelog/commitlint/compare/v13.1.0...v13.2.0) (2021-09-28) **Note:** Version bump only for package @commitlint/ensure +# [13.1.0](https://github.com/conventional-changelog/commitlint/compare/v13.0.0...v13.1.0) (2021-07-24) +**Note:** Version bump only for package @commitlint/ensure +# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) +- chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) -# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) +### BREAKING CHANGES -**Note:** Version bump only for package @commitlint/ensure +- minimum node version is 12 +## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) +**Note:** Version bump only for package @commitlint/ensure +## [12.1.2](https://github.com/conventional-changelog/commitlint/compare/v12.1.1...v12.1.2) (2021-04-29) +**Note:** Version bump only for package @commitlint/ensure -# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) +## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) **Note:** Version bump only for package @commitlint/ensure +## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) +**Note:** Version bump only for package @commitlint/ensure +# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) +**Note:** Version bump only for package @commitlint/ensure -# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) +# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) **Note:** Version bump only for package @commitlint/ensure +# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) +- refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) +### BREAKING CHANGES +- remove node 8 from circle-ci checks -## [7.5.2](https://github.com/conventional-changelog/commitlint/compare/v7.5.1...v7.5.2) (2019-02-11) +also remove node 13 because we do not support experimental versions +- docs: update node v10 to latest LTS 10 version -### Bug Fixes +Co-authored-by: Cedric van Putten <me@bycedric.com> -* failing sentence-case for subjects with slashes ([#574](https://github.com/conventional-changelog/commitlint/issues/574)) ([48a8602](https://github.com/conventional-changelog/commitlint/commit/48a8602)) +Co-authored-by: Cedric van Putten <me@bycedric.com> + +## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) +**Note:** Version bump only for package @commitlint/ensure +## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) +**Note:** Version bump only for package @commitlint/ensure +# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) -<a name="7.5.0"></a> -# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) +**Note:** Version bump only for package @commitlint/ensure +## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) -### Bug Fixes +**Note:** Version bump only for package @commitlint/ensure -* `sentence-case` allow upper-case characters in first word ([#531](https://github.com/conventional-changelog/commitlint/issues/531)) ([5a6a4a8](https://github.com/conventional-changelog/commitlint/commit/5a6a4a8)), closes [#211](https://github.com/conventional-changelog/commitlint/issues/211) -* replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) -* slash in scope [#291](https://github.com/conventional-changelog/commitlint/issues/291) ([#529](https://github.com/conventional-changelog/commitlint/issues/529)) ([b2b63e5](https://github.com/conventional-changelog/commitlint/commit/b2b63e5)) +# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) +### Bug Fixes +- [#840](https://github.com/conventional-changelog/commitlint/issues/840) add caret to lodash versions ([#843](https://github.com/conventional-changelog/commitlint/issues/843)) ([ffc0bac](https://github.com/conventional-changelog/commitlint/commit/ffc0bac26993acb2ab6a8fa51065f93c92b0d644)) +## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) -<a name="7.3.1"></a> -## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) +**Note:** Version bump only for package @commitlint/ensure +# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) +**Note:** Version bump only for package @commitlint/ensure +# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) **Note:** Version bump only for package @commitlint/ensure -<a name="7.3.0"></a> -# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) +# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) +**Note:** Version bump only for package @commitlint/ensure -### Bug Fixes +# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) -* fall back to conventional commit-parser settings for missing keys ([#496](https://github.com/conventional-changelog/commitlint/issues/496)) ([831a141](https://github.com/conventional-changelog/commitlint/commit/831a141)), closes [#399](https://github.com/conventional-changelog/commitlint/issues/399) -* update to security-patched dependency versions ([97c033b](https://github.com/conventional-changelog/commitlint/commit/97c033b)) +**Note:** Version bump only for package @commitlint/ensure +## [7.5.2](https://github.com/conventional-changelog/commitlint/compare/v7.5.1...v7.5.2) (2019-02-11) +### Bug Fixes +- failing sentence-case for subjects with slashes ([#574](https://github.com/conventional-changelog/commitlint/issues/574)) ([48a8602](https://github.com/conventional-changelog/commitlint/commit/48a8602)) -<a name="7.2.0"></a> -# [7.2.0](https://github.com/conventional-changelog/commitlint/compare/v7.1.2...v7.2.0) (2018-10-05) +<a name="7.5.0"></a> +# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) ### Bug Fixes -* handle case rules for numerics correctly ([cadcfed](https://github.com/conventional-changelog/commitlint/commit/cadcfed)) +- `sentence-case` allow upper-case characters in first word ([#531](https://github.com/conventional-changelog/commitlint/issues/531)) ([5a6a4a8](https://github.com/conventional-changelog/commitlint/commit/5a6a4a8)), closes [#211](https://github.com/conventional-changelog/commitlint/issues/211) +- replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) +- slash in scope [#291](https://github.com/conventional-changelog/commitlint/issues/291) ([#529](https://github.com/conventional-changelog/commitlint/issues/529)) ([b2b63e5](https://github.com/conventional-changelog/commitlint/commit/b2b63e5)) +<a name="7.3.1"></a> +## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) +**Note:** Version bump only for package @commitlint/ensure -<a name="7.1.2"></a> -## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) +<a name="7.3.0"></a> +# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) +### Bug Fixes +- fall back to conventional commit-parser settings for missing keys ([#496](https://github.com/conventional-changelog/commitlint/issues/496)) ([831a141](https://github.com/conventional-changelog/commitlint/commit/831a141)), closes [#399](https://github.com/conventional-changelog/commitlint/issues/399) +- update to security-patched dependency versions ([97c033b](https://github.com/conventional-changelog/commitlint/commit/97c033b)) -**Note:** Version bump only for package @commitlint/ensure +<a name="7.2.0"></a> -<a name="7.1.0"></a> -# [7.1.0](https://github.com/conventional-changelog/commitlint/compare/v7.0.1...v7.1.0) (2018-08-29) +# [7.2.0](https://github.com/conventional-changelog/commitlint/compare/v7.1.2...v7.2.0) (2018-10-05) +### Bug Fixes -### Features +- handle case rules for numerics correctly ([cadcfed](https://github.com/conventional-changelog/commitlint/commit/cadcfed)) -* add max line length to body/footer ([542f50e](https://github.com/conventional-changelog/commitlint/commit/542f50e)) +<a name="7.1.2"></a> +## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) +**Note:** Version bump only for package @commitlint/ensure +<a name="7.1.0"></a> -<a name="6.1.1"></a> -## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) +# [7.1.0](https://github.com/conventional-changelog/commitlint/compare/v7.0.1...v7.1.0) (2018-08-29) +### Features -### Bug Fixes +- add max line length to body/footer ([542f50e](https://github.com/conventional-changelog/commitlint/commit/542f50e)) -* **ensure:** ignore word delimiters for case matching [#291](https://github.com/conventional-changelog/commitlint/issues/291) ([fa69299](https://github.com/conventional-changelog/commitlint/commit/fa69299)) +<a name="6.1.1"></a> +## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) +### Bug Fixes +- **ensure:** ignore word delimiters for case matching [#291](https://github.com/conventional-changelog/commitlint/issues/291) ([fa69299](https://github.com/conventional-changelog/commitlint/commit/fa69299)) <a name="6.1.0"></a> -# [6.1.0](https://github.com/conventional-changelog/commitlint/compare/v6.0.5...v6.1.0) (2018-02-03) - - +# [6.1.0](https://github.com/conventional-changelog/commitlint/compare/v6.0.5...v6.1.0) (2018-02-03) **Note:** Version bump only for package @commitlint/ensure <a name="6.0.4"></a> -## [6.0.4](https://github.com/conventional-changelog/commitlint/compare/v6.0.3...v6.0.4) (2018-01-31) - - +## [6.0.4](https://github.com/conventional-changelog/commitlint/compare/v6.0.3...v6.0.4) (2018-01-31) **Note:** Version bump only for package @commitlint/ensure <a name="6.0.3"></a> -## [6.0.3](https://github.com/conventional-changelog/commitlint/compare/v6.0.2...v6.0.3) (2018-01-31) - - +## [6.0.3](https://github.com/conventional-changelog/commitlint/compare/v6.0.2...v6.0.3) (2018-01-31) **Note:** Version bump only for package @commitlint/ensure <a name="6.0.2"></a> -## [6.0.2](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.2) (2018-01-12) - - +## [6.0.2](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.2) (2018-01-12) **Note:** Version bump only for package @commitlint/ensure <a name="6.0.0"></a> -# [6.0.0](https://github.com/conventional-changelog/commitlint/compare/v5.2.6...v6.0.0) (2018-01-09) +# [6.0.0](https://github.com/conventional-changelog/commitlint/compare/v5.2.6...v6.0.0) (2018-01-09) ### Bug Fixes -* sanitize ensure.case [#211](https://github.com/conventional-changelog/commitlint/issues/211) ([#217](https://github.com/conventional-changelog/commitlint/issues/217)) ([03aeefc](https://github.com/conventional-changelog/commitlint/commit/03aeefc)) +- sanitize ensure.case [#211](https://github.com/conventional-changelog/commitlint/issues/211) ([#217](https://github.com/conventional-changelog/commitlint/issues/217)) ([03aeefc](https://github.com/conventional-changelog/commitlint/commit/03aeefc)) diff --git a/@commitlint/ensure/package.json b/@commitlint/ensure/package.json index 98531ae7b7..5b439abef3 100644 --- a/@commitlint/ensure/package.json +++ b/@commitlint/ensure/package.json @@ -1,6 +1,7 @@ { "name": "@commitlint/ensure", - "version": "13.1.0", + "type": "module", + "version": "20.0.0", "description": "Lint your commit messages", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -12,16 +13,17 @@ "pkg": "pkg-check" }, "engines": { - "node": ">=v12" + "node": ">=v18" }, "repository": { "type": "git", - "url": "https://github.com/conventional-changelog/commitlint.git" + "url": "https://github.com/conventional-changelog/commitlint.git", + "directory": "@commitlint/ensure" }, "bugs": { "url": "https://github.com/conventional-changelog/commitlint/issues" }, - "homepage": "https://github.com/conventional-changelog/commitlint#readme", + "homepage": "https://commitlint.js.org/", "keywords": [ "conventional-changelog", "commitlint", @@ -34,13 +36,21 @@ }, "license": "MIT", "devDependencies": { - "@commitlint/utils": "^13.0.0", - "@types/lodash": "^4.14.161", - "globby": "^11.0.0" + "@commitlint/utils": "^20.0.0", + "@types/lodash.camelcase": "^4.3.8", + "@types/lodash.kebabcase": "^4.1.8", + "@types/lodash.snakecase": "^4.1.8", + "@types/lodash.startcase": "^4.4.8", + "@types/lodash.upperfirst": "^4.3.8", + "glob": "^10.3.10" }, "dependencies": { - "@commitlint/types": "^13.1.0", - "lodash": "^4.17.19" + "@commitlint/types": "^20.0.0", + "lodash.camelcase": "^4.3.0", + "lodash.kebabcase": "^4.1.1", + "lodash.snakecase": "^4.1.1", + "lodash.startcase": "^4.4.0", + "lodash.upperfirst": "^4.3.1" }, - "gitHead": "d829bf6260304ca8d6811f329fcdd1b6c50e9749" + "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" } diff --git a/@commitlint/ensure/src/case.test.ts b/@commitlint/ensure/src/case.test.ts index dcb3fc5afc..d812da8bf4 100644 --- a/@commitlint/ensure/src/case.test.ts +++ b/@commitlint/ensure/src/case.test.ts @@ -1,338 +1,340 @@ -import ensure from './case'; +import { test, expect } from "vitest"; -test('true for no params', () => { +import ensure from "./case.js"; + +test("true for no params", () => { const actual = ensure(); expect(actual).toBe(true); }); -test('true for empty', () => { - const actual = ensure(''); +test("true for empty", () => { + const actual = ensure(""); expect(actual).toBe(true); }); -test('true for lowercase', () => { - const actual = ensure('a'); +test("true for lowercase", () => { + const actual = ensure("a"); expect(actual).toBe(true); }); -test('false for uppercase', () => { - const actual = ensure('A'); +test("false for uppercase", () => { + const actual = ensure("A"); expect(actual).toBe(false); }); -test('true for lowercase on lowercase', () => { - const actual = ensure('a', 'lowercase'); +test("true for lowercase on lowercase", () => { + const actual = ensure("a", "lowercase"); expect(actual).toBe(true); }); -test('false for uppercase on lowercase', () => { - const actual = ensure('A', 'lowercase'); +test("false for uppercase on lowercase", () => { + const actual = ensure("A", "lowercase"); expect(actual).toBe(false); }); -test('true for * on lowercase', () => { - const actual = ensure('*', 'lowercase'); +test("true for * on lowercase", () => { + const actual = ensure("*", "lowercase"); expect(actual).toBe(true); }); -test('true for uppercase on uppercase', () => { - const actual = ensure('A', 'uppercase'); +test("true for uppercase on uppercase", () => { + const actual = ensure("A", "uppercase"); expect(actual).toBe(true); }); -test('false for lowercase on uppercase', () => { - const actual = ensure('a', 'uppercase'); +test("false for lowercase on uppercase", () => { + const actual = ensure("a", "uppercase"); expect(actual).toBe(false); }); -test('true for * on uppercase', () => { - const actual = ensure('*', 'uppercase'); +test("true for * on uppercase", () => { + const actual = ensure("*", "uppercase"); expect(actual).toBe(true); }); -test('true for sentencecase on sentencecase', () => { - const actual = ensure('Sentence case', 'sentence-case'); +test("true for sentencecase on sentencecase", () => { + const actual = ensure("Sentence case", "sentence-case"); expect(actual).toBe(true); }); -test('false for lowercase on sentencecase', () => { - const actual = ensure('sentence case', 'sentence-case'); +test("false for lowercase on sentencecase", () => { + const actual = ensure("sentence case", "sentence-case"); expect(actual).toBe(false); }); -test('true for UPPERCASE on sentencecase', () => { - const actual = ensure('UPPERCASE', 'sentence-case'); +test("true for UPPERCASE on sentencecase", () => { + const actual = ensure("UPPERCASE", "sentence-case"); expect(actual).toBe(true); }); -test('true for Start Case on sentencecase', () => { - const actual = ensure('Start Case', 'sentence-case'); +test("true for Start Case on sentencecase", () => { + const actual = ensure("Start Case", "sentence-case"); expect(actual).toBe(true); }); -test('true for PascalCase on sentencecase', () => { - const actual = ensure('PascalCase', 'sentence-case'); +test("true for PascalCase on sentencecase", () => { + const actual = ensure("PascalCase", "sentence-case"); expect(actual).toBe(true); }); -test('false for kebab-case on sentencecase', () => { - const actual = ensure('kebab-case', 'sentence-case'); +test("false for kebab-case on sentencecase", () => { + const actual = ensure("kebab-case", "sentence-case"); expect(actual).toBe(false); }); -test('false for snake_case on sentencecase', () => { - const actual = ensure('snake_case', 'sentence-case'); +test("false for snake_case on sentencecase", () => { + const actual = ensure("snake_case", "sentence-case"); expect(actual).toBe(false); }); -test('false for camelCase on sentencecase', () => { - const actual = ensure('camelCase', 'sentence-case'); +test("false for camelCase on sentencecase", () => { + const actual = ensure("camelCase", "sentence-case"); expect(actual).toBe(false); }); -test('true for * on sentence-case', () => { - const actual = ensure('*', 'sentence-case'); +test("true for * on sentence-case", () => { + const actual = ensure("*", "sentence-case"); expect(actual).toBe(true); }); -test('true for * on camel-case', () => { - const actual = ensure('*', 'camel-case'); +test("true for * on camel-case", () => { + const actual = ensure("*", "camel-case"); expect(actual).toBe(true); }); -test('true for * on kebab-case', () => { - const actual = ensure('*', 'kebab-case'); +test("true for * on kebab-case", () => { + const actual = ensure("*", "kebab-case"); expect(actual).toBe(true); }); -test('true for * on snake-case', () => { - const actual = ensure('*', 'snake-case'); +test("true for * on snake-case", () => { + const actual = ensure("*", "snake-case"); expect(actual).toBe(true); }); -test('true for * on pascal-case', () => { - const actual = ensure('*', 'pascal-case'); +test("true for * on pascal-case", () => { + const actual = ensure("*", "pascal-case"); expect(actual).toBe(true); }); -test('true for * on start-case', () => { - const actual = ensure('*', 'start-case'); +test("true for * on start-case", () => { + const actual = ensure("*", "start-case"); expect(actual).toBe(true); }); -test('true for `Any_CASE_iN_back-quotes` on lowercase', () => { - const actual = ensure('`Any_CASE_iN_back-quotes`', 'lowercase'); +test("true for `Any_CASE_iN_back-quotes` on lowercase", () => { + const actual = ensure("`Any_CASE_iN_back-quotes`", "lowercase"); expect(actual).toBe(true); }); -test('true for `Any_CASE_iN_back-quotes` on uppercase', () => { - const actual = ensure('`Any_CASE_iN_back-quotes`', 'uppercase'); +test("true for `Any_CASE_iN_back-quotes` on uppercase", () => { + const actual = ensure("`Any_CASE_iN_back-quotes`", "uppercase"); expect(actual).toBe(true); }); -test('true for `Any_CASE_iN_back-quotes` on sentence-case', () => { - const actual = ensure('`Any_CASE_iN_back-quotes`', 'sentence-case'); +test("true for `Any_CASE_iN_back-quotes` on sentence-case", () => { + const actual = ensure("`Any_CASE_iN_back-quotes`", "sentence-case"); expect(actual).toBe(true); }); -test('true for `Any_CASE_iN_back-quotes` on camel-case', () => { - const actual = ensure('`Any_CASE_iN_back-quotes`', 'camel-case'); +test("true for `Any_CASE_iN_back-quotes` on camel-case", () => { + const actual = ensure("`Any_CASE_iN_back-quotes`", "camel-case"); expect(actual).toBe(true); }); -test('true for `Any_CASE_iN_back-quotes` on kebab-case', () => { - const actual = ensure('`Any_CASE_iN_back-quotes`', 'kebab-case'); +test("true for `Any_CASE_iN_back-quotes` on kebab-case", () => { + const actual = ensure("`Any_CASE_iN_back-quotes`", "kebab-case"); expect(actual).toBe(true); }); -test('true for `Any_CASE_iN_back-quotes` on snake-case', () => { - const actual = ensure('`Any_CASE_iN_back-quotes`', 'snake-case'); +test("true for `Any_CASE_iN_back-quotes` on snake-case", () => { + const actual = ensure("`Any_CASE_iN_back-quotes`", "snake-case"); expect(actual).toBe(true); }); -test('true for `Any_CASE_iN_back-quotes` on pascal-case', () => { - const actual = ensure('`Any_CASE_iN_back-quotes`', 'pascal-case'); +test("true for `Any_CASE_iN_back-quotes` on pascal-case", () => { + const actual = ensure("`Any_CASE_iN_back-quotes`", "pascal-case"); expect(actual).toBe(true); }); -test('true for `Any_CASE_iN_back-quotes` on start-case', () => { - const actual = ensure('`Any_CASE_iN_back-quotes`', 'start-case'); +test("true for `Any_CASE_iN_back-quotes` on start-case", () => { + const actual = ensure("`Any_CASE_iN_back-quotes`", "start-case"); expect(actual).toBe(true); }); -test('true for lowercase `Any_CASE_iN_back-quotes` lowercase on lowercase', () => { +test("true for lowercase `Any_CASE_iN_back-quotes` lowercase on lowercase", () => { const actual = ensure( - 'lowercase `Any_CASE_iN_back-quotes` lowercase', - 'lowercase' + "lowercase `Any_CASE_iN_back-quotes` lowercase", + "lowercase", ); expect(actual).toBe(true); }); -test('false for UPPERCASE `Any_CASE_iN_back-quotes` UPPERCASE on lowercase', () => { +test("false for UPPERCASE `Any_CASE_iN_back-quotes` UPPERCASE on lowercase", () => { const actual = ensure( - 'UPPERCASE `Any_CASE_iN_back-quotes` UPPERCASE', - 'lowercase' + "UPPERCASE `Any_CASE_iN_back-quotes` UPPERCASE", + "lowercase", ); expect(actual).toBe(false); }); -test('true for UPPERCASE `Any_CASE_iN_back-quotes` UPPERCASE on uppercase', () => { +test("true for UPPERCASE `Any_CASE_iN_back-quotes` UPPERCASE on uppercase", () => { const actual = ensure( - 'UPPERCASE `Any_CASE_iN_back-quotes` UPPERCASE', - 'uppercase' + "UPPERCASE `Any_CASE_iN_back-quotes` UPPERCASE", + "uppercase", ); expect(actual).toBe(true); }); -test('false for lowercase `Any_CASE_iN_back-quotes` lowercase on uppercase', () => { +test("false for lowercase `Any_CASE_iN_back-quotes` lowercase on uppercase", () => { const actual = ensure( - 'lowercase `Any_CASE_iN_back-quotes` lowercase', - 'uppercase' + "lowercase `Any_CASE_iN_back-quotes` lowercase", + "uppercase", ); expect(actual).toBe(false); }); -test('true for fooBar`Any_CASE_iN_back-quotes`fooBar on camel-case', () => { - const actual = ensure('fooBar`Any_CASE_iN_back-quotes`fooBar', 'camel-case'); +test("true for fooBar`Any_CASE_iN_back-quotes`fooBar on camel-case", () => { + const actual = ensure("fooBar`Any_CASE_iN_back-quotes`fooBar", "camel-case"); expect(actual).toBe(true); }); -test('false for Foo Bar`Any_CASE_iN_back-quotes` Foo Bar on camel-case', () => { +test("false for Foo Bar`Any_CASE_iN_back-quotes` Foo Bar on camel-case", () => { const actual = ensure( - 'Foo Bar`Any_CASE_iN_back-quotes` Foo Bar', - 'camel-case' + "Foo Bar`Any_CASE_iN_back-quotes` Foo Bar", + "camel-case", ); expect(actual).toBe(false); }); -test('true for foo-bar`Any_CASE_iN_back-quotes`foo-bar on kebab-case', () => { +test("true for foo-bar`Any_CASE_iN_back-quotes`foo-bar on kebab-case", () => { const actual = ensure( - 'foo-bar`Any_CASE_iN_back-quotes`foo-bar', - 'kebab-case' + "foo-bar`Any_CASE_iN_back-quotes`foo-bar", + "kebab-case", ); expect(actual).toBe(true); }); -test('false for Foo Bar `Any_CASE_iN_back-quotes` Foo Bar on kebab-case', () => { +test("false for Foo Bar `Any_CASE_iN_back-quotes` Foo Bar on kebab-case", () => { const actual = ensure( - 'Foo Bar `Any_CASE_iN_back-quotes` Foo Bar', - 'kebab-case' + "Foo Bar `Any_CASE_iN_back-quotes` Foo Bar", + "kebab-case", ); expect(actual).toBe(false); }); -test('true for foo_bar`Any_CASE_iN_back-quotes`foo_bar on snake-case', () => { +test("true for foo_bar`Any_CASE_iN_back-quotes`foo_bar on snake-case", () => { const actual = ensure( - 'foo_bar`Any_CASE_iN_back-quotes`foo_bar', - 'snake-case' + "foo_bar`Any_CASE_iN_back-quotes`foo_bar", + "snake-case", ); expect(actual).toBe(true); }); -test('false for Foo Bar `Any_CASE_iN_back-quotes` Foo Bar on snake-case', () => { +test("false for Foo Bar `Any_CASE_iN_back-quotes` Foo Bar on snake-case", () => { const actual = ensure( - 'Foo Bar `Any_CASE_iN_back-quotes` Foo Bar', - 'snake-case' + "Foo Bar `Any_CASE_iN_back-quotes` Foo Bar", + "snake-case", ); expect(actual).toBe(false); }); -test('true for PascalCase`Any_CASE_iN_back-quotes`PascalCase on pascal-case', () => { +test("true for PascalCase`Any_CASE_iN_back-quotes`PascalCase on pascal-case", () => { const actual = ensure( - 'PascalCase`Any_CASE_iN_back-quotes`PascalCase', - 'pascal-case' + "PascalCase`Any_CASE_iN_back-quotes`PascalCase", + "pascal-case", ); expect(actual).toBe(true); }); -test('false for Foo Bar `Any_CASE_iN_back-quotes` Foo Bar on pascal-case', () => { +test("false for Foo Bar `Any_CASE_iN_back-quotes` Foo Bar on pascal-case", () => { const actual = ensure( - 'Foo Bar `Any_CASE_iN_back-quotes` Foo Bar', - 'pascal-case' + "Foo Bar `Any_CASE_iN_back-quotes` Foo Bar", + "pascal-case", ); expect(actual).toBe(false); }); -test('true for Foo Bar`Any_CASE_iN_back-quotes` Foo Bar on start-case', () => { +test("true for Foo Bar`Any_CASE_iN_back-quotes` Foo Bar on start-case", () => { const actual = ensure( - 'Foo Bar `Any_CASE_iN_back-quotes`Foo Bar', - 'start-case' + "Foo Bar `Any_CASE_iN_back-quotes`Foo Bar", + "start-case", ); expect(actual).toBe(true); }); -test('false for foo_bar`Any_CASE_iN_back-quotes`foo_bar on start-case', () => { +test("false for foo_bar`Any_CASE_iN_back-quotes`foo_bar on start-case", () => { const actual = ensure( - 'foo_bar`Any_CASE_iN_back-quotes`foo_bar', - 'start-case' + "foo_bar`Any_CASE_iN_back-quotes`foo_bar", + "start-case", ); expect(actual).toBe(false); }); -test('true for lowercase `Any_CASE_iN_back-quotes` `Any_CASE_iN_back-quotes` lowercase on lowercase', () => { +test("true for lowercase `Any_CASE_iN_back-quotes` `Any_CASE_iN_back-quotes` lowercase on lowercase", () => { const actual = ensure( - 'lowercase `Any_CASE_iN_back-quotes` `Any_CASE_iN_back-quotes` lowercase', - 'lowercase' + "lowercase `Any_CASE_iN_back-quotes` `Any_CASE_iN_back-quotes` lowercase", + "lowercase", ); expect(actual).toBe(true); }); test("true for 'Any_CASE_iN_single-quotes' on lowercase", () => { - const actual = ensure("'Any_CASE_iN_single-quotes'", 'lowercase'); + const actual = ensure("'Any_CASE_iN_single-quotes'", "lowercase"); expect(actual).toBe(true); }); test('true for "Any_CASE_iN_double-quotes" on lowercase', () => { - const actual = ensure('"Any_CASE_iN_double-quotes"', 'lowercase'); + const actual = ensure('"Any_CASE_iN_double-quotes"', "lowercase"); expect(actual).toBe(true); }); -test('true for `lowercasel"\'` on lowercase', () => { - const actual = ensure('`lowercasel"\'`', 'lowercase'); +test("true for `lowercasel\"'` on lowercase", () => { + const actual = ensure("`lowercasel\"'`", "lowercase"); expect(actual).toBe(true); }); -test('false for `LOWERCASE on lowercase', () => { - const actual = ensure('`LOWERCASE', 'lowercase'); +test("false for `LOWERCASE on lowercase", () => { + const actual = ensure("`LOWERCASE", "lowercase"); expect(actual).toBe(false); }); -test('true for numeric on camel-case', () => { - const actual = ensure('1.0.0', 'camel-case'); +test("true for numeric on camel-case", () => { + const actual = ensure("1.0.0", "camel-case"); expect(actual).toBe(true); }); -test('true for numeric on kebab-case', () => { - const actual = ensure('1.0.0', 'kebab-case'); +test("true for numeric on kebab-case", () => { + const actual = ensure("1.0.0", "kebab-case"); expect(actual).toBe(true); }); -test('true for numeric on snake-case', () => { - const actual = ensure('1.0.0', 'snake-case'); +test("true for numeric on snake-case", () => { + const actual = ensure("1.0.0", "snake-case"); expect(actual).toBe(true); }); -test('true for numeric on pascal-case', () => { - const actual = ensure('1.0.0', 'pascal-case'); +test("true for numeric on pascal-case", () => { + const actual = ensure("1.0.0", "pascal-case"); expect(actual).toBe(true); }); -test('true for numeric on uppercase', () => { - const actual = ensure('1.0.0', 'uppercase'); +test("true for numeric on uppercase", () => { + const actual = ensure("1.0.0", "uppercase"); expect(actual).toBe(true); }); -test('true for numeric on sentencecase', () => { - const actual = ensure('1.0.0', 'sentencecase'); +test("true for numeric on sentencecase", () => { + const actual = ensure("1.0.0", "sentencecase"); expect(actual).toBe(true); }); -test('true for numeric on lowercase', () => { - const actual = ensure('1.0.0', 'lowercase'); +test("true for numeric on lowercase", () => { + const actual = ensure("1.0.0", "lowercase"); expect(actual).toBe(true); }); -test('throw TypeError for invalid case name', () => { - const actualFn = () => ensure('anything', 'someweirdcase' as any); - expect(actualFn).toThrowError(TypeError); +test("throw TypeError for invalid case name", () => { + const actualFn = () => ensure("anything", "someweirdcase" as any); + expect(actualFn).toThrow(TypeError); }); diff --git a/@commitlint/ensure/src/case.ts b/@commitlint/ensure/src/case.ts index 13701efde5..710f7e79b8 100644 --- a/@commitlint/ensure/src/case.ts +++ b/@commitlint/ensure/src/case.ts @@ -1,54 +1,24 @@ -import camelCase from 'lodash/camelCase'; -import kebabCase from 'lodash/kebabCase'; -import snakeCase from 'lodash/snakeCase'; -import upperFirst from 'lodash/upperFirst'; -import startCase from 'lodash/startCase'; -import {TargetCaseType} from '@commitlint/types'; +import type { TargetCaseType } from "@commitlint/types"; + +import toCase from "./to-case.js"; export default ensureCase; function ensureCase( - raw: string = '', - target: TargetCaseType = 'lowercase' + raw: string = "", + target: TargetCaseType = "lowercase", ): boolean { // We delete any content together with quotes because he can contains proper names (example `refactor: `Eslint` configuration`). // We need trim string because content with quotes can be at the beginning or end of a line const input = String(raw) - .replace(/`.*?`|".*?"|'.*?'/g, '') + .replace(/`.*?`|".*?"|'.*?'/g, "") .trim(); const transformed = toCase(input, target); - if (transformed === '' || transformed.match(/^\d/)) { + if (transformed === "" || transformed.match(/^\d/)) { return true; } return transformed === input; } - -function toCase(input: string, target: TargetCaseType): string { - switch (target) { - case 'camel-case': - return camelCase(input); - case 'kebab-case': - return kebabCase(input); - case 'snake-case': - return snakeCase(input); - case 'pascal-case': - return upperFirst(camelCase(input)); - case 'start-case': - return startCase(input); - case 'upper-case': - case 'uppercase': - return input.toUpperCase(); - case 'sentence-case': - case 'sentencecase': - return input.charAt(0).toUpperCase() + input.slice(1); - case 'lower-case': - case 'lowercase': - case 'lowerCase': // Backwards compat config-angular v4 - return input.toLowerCase(); - default: - throw new TypeError(`ensure-case: Unknown target case "${target}"`); - } -} diff --git a/@commitlint/ensure/src/enum.test.ts b/@commitlint/ensure/src/enum.test.ts index ab7d5d0ff7..817f2ce072 100644 --- a/@commitlint/ensure/src/enum.test.ts +++ b/@commitlint/ensure/src/enum.test.ts @@ -1,46 +1,48 @@ -import ensure from './enum'; +import { test, expect } from "vitest"; -test('false for no params', () => { +import ensure from "./enum.js"; + +test("false for no params", () => { const actual = (ensure as () => boolean)(); expect(actual).toBe(false); }); -test('false for not array enums', () => { - const actual = ensure('a', 'a' as any); +test("false for not array enums", () => { + const actual = ensure("a", "a" as any); expect(actual).toBe(false); }); -test('true for a against a', () => { - const actual = ensure('a', ['a']); +test("true for a against a", () => { + const actual = ensure("a", ["a"]); expect(actual).toBe(true); }); -test('false for a against b', () => { - const actual = ensure('a', ['b']); +test("false for a against b", () => { + const actual = ensure("a", ["b"]); expect(actual).toBe(false); }); -test('true for a against a, b', () => { - const actual = ensure('a', ['a', 'b']); +test("true for a against a, b", () => { + const actual = ensure("a", ["a", "b"]); expect(actual).toBe(true); }); -test('false for b against a', () => { - const actual = ensure('b', ['a']); +test("false for b against a", () => { + const actual = ensure("b", ["a"]); expect(actual).toBe(false); }); -test('true for b against b', () => { - const actual = ensure('b', ['b']); +test("true for b against b", () => { + const actual = ensure("b", ["b"]); expect(actual).toBe(true); }); -test('true for b against a, b', () => { - const actual = ensure('b', ['a', 'b']); +test("true for b against a, b", () => { + const actual = ensure("b", ["a", "b"]); expect(actual).toBe(true); }); -test('false for c against a, b', () => { - const actual = ensure('c', ['a', 'b']); +test("false for c against a, b", () => { + const actual = ensure("c", ["a", "b"]); expect(actual).toBe(false); }); diff --git a/@commitlint/ensure/src/index.test.ts b/@commitlint/ensure/src/index.test.ts index 93c23c2188..b58bb64adc 100644 --- a/@commitlint/ensure/src/index.test.ts +++ b/@commitlint/ensure/src/index.test.ts @@ -1,11 +1,17 @@ -import path from 'path'; -import globby from 'globby'; -import camelCase from 'lodash/camelCase'; -import * as ensure from '.'; - -test('exports all checkers', async () => { - const ignore = ['types']; - const expected = (await glob('*.ts')) +import { test, expect } from "vitest"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +import { globSync } from "glob"; +import camelCase from "lodash.camelcase"; + +import * as ensure from "./index.js"; + +const __dirname = path.resolve(fileURLToPath(import.meta.url), ".."); + +test("exports all checkers", async () => { + const ignore = ["types"]; + const expected = _glob("*.ts") .map((f) => camelCase(f)) .sort() .filter((item) => !ignore.includes(item)); @@ -13,14 +19,14 @@ test('exports all checkers', async () => { expect(actual).toEqual(expected); }); -test('rules export functions', () => { +test("rules export functions", () => { const actual = Object.values(ensure); - expect(actual.every((rule) => typeof rule === 'function')).toBe(true); + expect(actual.every((rule) => typeof rule === "function")).toBe(true); }); -async function glob(pattern: string): Promise<string[]> { - const files = await globby(pattern, { - ignore: ['**/index.ts', '**/*.test.ts'], +function _glob(pattern: string): string[] { + const files = globSync(pattern, { + ignore: ["**/index.ts", "**/*.test.ts"], cwd: __dirname, }); return files.map(relative).map(toExport); diff --git a/@commitlint/ensure/src/index.ts b/@commitlint/ensure/src/index.ts index 982e128525..0590b145a3 100644 --- a/@commitlint/ensure/src/index.ts +++ b/@commitlint/ensure/src/index.ts @@ -1,10 +1,11 @@ -import ensureCase from './case'; -import ensureEnum from './enum'; -import maxLength from './max-length'; -import maxLineLength from './max-line-length'; -import minLength from './min-length'; -import notEmpty from './not-empty'; +import ensureCase from "./case.js"; +import ensureEnum from "./enum.js"; +import maxLength from "./max-length.js"; +import maxLineLength from "./max-line-length.js"; +import minLength from "./min-length.js"; +import notEmpty from "./not-empty.js"; +import toCase from "./to-case.js"; -export {ensureCase as case}; -export {ensureEnum as enum}; -export {maxLength, maxLineLength, minLength, notEmpty}; +export { ensureCase as case }; +export { ensureEnum as enum }; +export { maxLength, maxLineLength, minLength, notEmpty, toCase }; diff --git a/@commitlint/ensure/src/max-length.test.ts b/@commitlint/ensure/src/max-length.test.ts index bce186b3bb..c18af918e8 100644 --- a/@commitlint/ensure/src/max-length.test.ts +++ b/@commitlint/ensure/src/max-length.test.ts @@ -1,26 +1,28 @@ -import ensure from './max-length'; +import { test, expect } from "vitest"; -test('false for no params', () => { +import ensure from "./max-length.js"; + +test("false for no params", () => { const actual = (ensure as () => boolean)(); expect(actual).toBe(false); }); -test('true for a against 1', () => { - const actual = ensure('a', 1); +test("true for a against 1", () => { + const actual = ensure("a", 1); expect(actual).toBe(true); }); -test('false for ab against 0', () => { - const actual = ensure('a', 0); +test("false for ab against 0", () => { + const actual = ensure("a", 0); expect(actual).toBe(false); }); -test('true for a against 2', () => { - const actual = ensure('a', 2); +test("true for a against 2", () => { + const actual = ensure("a", 2); expect(actual).toBe(true); }); -test('true for ab against 2', () => { - const actual = ensure('ab', 2); +test("true for ab against 2", () => { + const actual = ensure("ab", 2); expect(actual).toBe(true); }); diff --git a/@commitlint/ensure/src/max-length.ts b/@commitlint/ensure/src/max-length.ts index dd7a65eb9b..2c78246b8a 100644 --- a/@commitlint/ensure/src/max-length.ts +++ b/@commitlint/ensure/src/max-length.ts @@ -1,2 +1,2 @@ -export default (value: string, max: number): boolean => - typeof value === 'string' && value.length <= max; +export default (value: string | null, max: number): boolean => + typeof value === "string" && value.length <= max; diff --git a/@commitlint/ensure/src/max-line-length.test.ts b/@commitlint/ensure/src/max-line-length.test.ts index b852599660..8755824abd 100644 --- a/@commitlint/ensure/src/max-line-length.test.ts +++ b/@commitlint/ensure/src/max-line-length.test.ts @@ -1,47 +1,49 @@ -import ensure from './max-line-length'; +import { test, expect } from "vitest"; -test('false for no params', () => { +import ensure from "./max-line-length.js"; + +test("false for no params", () => { const actual = (ensure as () => boolean)(); expect(actual).toBe(false); }); -test('true for a against 1', () => { - const actual = ensure('a', 1); +test("true for a against 1", () => { + const actual = ensure("a", 1); expect(actual).toBe(true); }); -test('false for ab against 0', () => { - const actual = ensure('a', 0); +test("false for ab against 0", () => { + const actual = ensure("a", 0); expect(actual).toBe(false); }); -test('true for a against 2', () => { - const actual = ensure('a', 2); +test("true for a against 2", () => { + const actual = ensure("a", 2); expect(actual).toBe(true); }); -test('true for ab against 2', () => { - const actual = ensure('ab', 2); +test("true for ab against 2", () => { + const actual = ensure("ab", 2); expect(actual).toBe(true); }); -test('false for ab/\nab/\nab 1', () => { +test("false for ab/\nab/\nab 1", () => { const actual = ensure( `ab ab ab`, - 2 + 2, ); expect(actual).toBe(true); }); -test('true for ab/\nab/\nab 2', () => { +test("true for ab/\nab/\nab 2", () => { const actual = ensure( `ab ab ab`, - 2 + 2, ); expect(actual).toBe(true); diff --git a/@commitlint/ensure/src/max-line-length.ts b/@commitlint/ensure/src/max-line-length.ts index 6b607e98fe..b25a2b6d1e 100644 --- a/@commitlint/ensure/src/max-line-length.ts +++ b/@commitlint/ensure/src/max-line-length.ts @@ -1,5 +1,13 @@ -import ensure from './max-length'; +import ensure from "./max-length.js"; + +// Allow an exception for long lines which contain URLs. +// +// This is overly lenient, in order to avoid costly regexps which +// have to worry about all the many edge cases of valid URLs. +const URL_REGEX = /\bhttps?:\/\/\S+/; export default (value: string, max: number): boolean => - typeof value === 'string' && - value.split(/\r?\n/).every((line) => ensure(line, max)); + typeof value === "string" && + value + .split(/\r?\n/) + .every((line) => URL_REGEX.test(line) || ensure(line, max)); diff --git a/@commitlint/ensure/src/min-length.test.ts b/@commitlint/ensure/src/min-length.test.ts index 8a8fd605d8..a62395e3d1 100644 --- a/@commitlint/ensure/src/min-length.test.ts +++ b/@commitlint/ensure/src/min-length.test.ts @@ -1,26 +1,28 @@ -import ensure from './min-length'; +import { test, expect } from "vitest"; -test('false for no params', () => { +import ensure from "./min-length.js"; + +test("false for no params", () => { const actual = (ensure as () => boolean)(); expect(actual).toBe(false); }); -test('true for a against 1', () => { - const actual = ensure('a', 1); +test("true for a against 1", () => { + const actual = ensure("a", 1); expect(actual).toBe(true); }); -test('false for ab against 0', () => { - const actual = ensure('a', 0); +test("false for ab against 0", () => { + const actual = ensure("a", 0); expect(actual).toBe(true); }); -test('true for a against 2', () => { - const actual = ensure('a', 2); +test("true for a against 2", () => { + const actual = ensure("a", 2); expect(actual).toBe(false); }); -test('true for ab against 2', () => { - const actual = ensure('ab', 2); +test("true for ab against 2", () => { + const actual = ensure("ab", 2); expect(actual).toBe(true); }); diff --git a/@commitlint/ensure/src/min-length.ts b/@commitlint/ensure/src/min-length.ts index bc22ccb5d0..e7a8186bbb 100644 --- a/@commitlint/ensure/src/min-length.ts +++ b/@commitlint/ensure/src/min-length.ts @@ -1,2 +1,2 @@ -export default (value: string, min: number): boolean => - typeof value === 'string' && value.length >= min; +export default (value: string | null, min: number): boolean => + typeof value === "string" && value.length >= min; diff --git a/@commitlint/ensure/src/not-empty.test.ts b/@commitlint/ensure/src/not-empty.test.ts index 027e66ecce..a0fa271b3d 100644 --- a/@commitlint/ensure/src/not-empty.test.ts +++ b/@commitlint/ensure/src/not-empty.test.ts @@ -1,16 +1,18 @@ -import ensure from './not-empty'; +import { test, expect } from "vitest"; -test('false for no params', () => { +import ensure from "./not-empty.js"; + +test("false for no params", () => { const actual = (ensure as () => boolean)(); expect(actual).toBe(false); }); test('false for ""', () => { - const actual = ensure(''); + const actual = ensure(""); expect(actual).toBe(false); }); -test('true for a', () => { - const actual = ensure('a'); +test("true for a", () => { + const actual = ensure("a"); expect(actual).toBe(true); }); diff --git a/@commitlint/ensure/src/not-empty.ts b/@commitlint/ensure/src/not-empty.ts index 540cf99a3f..008380de35 100644 --- a/@commitlint/ensure/src/not-empty.ts +++ b/@commitlint/ensure/src/not-empty.ts @@ -1,2 +1,2 @@ export default (value: string): boolean => - typeof value === 'string' && value.length > 0; + typeof value === "string" && value.length > 0; diff --git a/@commitlint/ensure/src/to-case.ts b/@commitlint/ensure/src/to-case.ts new file mode 100644 index 0000000000..df41e0033e --- /dev/null +++ b/@commitlint/ensure/src/to-case.ts @@ -0,0 +1,33 @@ +import { TargetCaseType } from "@commitlint/types"; +import camelCase from "lodash.camelcase"; +import kebabCase from "lodash.kebabcase"; +import snakeCase from "lodash.snakecase"; +import upperFirst from "lodash.upperfirst"; +import startCase from "lodash.startcase"; + +export default function toCase(input: string, target: TargetCaseType): string { + switch (target) { + case "camel-case": + return camelCase(input); + case "kebab-case": + return kebabCase(input); + case "snake-case": + return snakeCase(input); + case "pascal-case": + return upperFirst(camelCase(input)); + case "start-case": + return startCase(input); + case "upper-case": + case "uppercase": + return input.toUpperCase(); + case "sentence-case": + case "sentencecase": + return upperFirst(input); + case "lower-case": + case "lowercase": + case "lowerCase": // Backwards compat config-angular v4 + return input.toLowerCase(); + default: + throw new TypeError(`to-case: Unknown target case "${target}"`); + } +} diff --git a/@commitlint/ensure/tsconfig.json b/@commitlint/ensure/tsconfig.json index f3092129e3..0cc393e13d 100644 --- a/@commitlint/ensure/tsconfig.json +++ b/@commitlint/ensure/tsconfig.json @@ -7,5 +7,5 @@ }, "include": ["./src/**/*.ts"], "exclude": ["./src/**/*.test.ts", "./lib/**/*"], - "references": [{"path": "../types"}] + "references": [{ "path": "../types" }] } diff --git a/@commitlint/execute-rule/CHANGELOG.md b/@commitlint/execute-rule/CHANGELOG.md index 0064cab114..2e9d17a6c0 100644 --- a/@commitlint/execute-rule/CHANGELOG.md +++ b/@commitlint/execute-rule/CHANGELOG.md @@ -3,21 +3,23 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. -# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) +**Note:** Version bump only for package @commitlint/execute-rule -* chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) -### BREAKING CHANGES -* minimum node version is 12 +## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) +**Note:** Version bump only for package @commitlint/execute-rule -## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) + + +# [19.8.0](https://github.com/conventional-changelog/commitlint/compare/v19.7.1...v19.8.0) (2025-03-07) **Note:** Version bump only for package @commitlint/execute-rule @@ -25,7 +27,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) +# [19.5.0](https://github.com/conventional-changelog/commitlint/compare/v19.4.1...v19.5.0) (2024-09-11) **Note:** Version bump only for package @commitlint/execute-rule @@ -33,53 +35,70 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) +# [19.0.0](https://github.com/conventional-changelog/commitlint/compare/v18.6.2...v19.0.0) (2024-02-27) -**Note:** Version bump only for package @commitlint/execute-rule +* feat!: migrate to pure ESM (#3850) ([3423735](https://github.com/conventional-changelog/commitlint/commit/342373559bdf7c783c4ef37ff05dc38a5f681159)), closes [#3850](https://github.com/conventional-changelog/commitlint/issues/3850) +### Reverts +* Revert "chore!: minimum node version v20" ([2816783](https://github.com/conventional-changelog/commitlint/commit/2816783d00e7eb967de3ac9347c2fc43dc8b94fa)) -# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) -**Note:** Version bump only for package @commitlint/execute-rule +### BREAKING CHANGES +* migrate to pure ESM +* feat: migrate to pure ESM +* chore: update snapshot +* fix: load `parserPreset` with another `await` -# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) +* test: migrate to vitest -**Note:** Version bump only for package @commitlint/execute-rule +* test: remove no replacement `--runInBand` test-ci script +* chore: fix code reviews +* refactor(load): rewrite resolve logic +* fix(config-nx-scopes): fix syntax error +* feat(resolve-extends): add resolveFrom and loadParserPreset -# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) +* feat(load): use resolveFrom and loadParserPreset from resolve-extends +* test: include only @commitlint/* packages src in coverage -* refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) +* test: explicit import vitest utilities +* test: remove @jest/globals from dependencies -### BREAKING CHANGES +* fix(resolve-extends): `resolveFrom` output should be platform aware -* remove node 8 from circle-ci checks +* test: restore NO_COLOR to test script -also remove node 13 because we do not support experimental versions +* chore: fix linting issues -* docs: update node v10 to latest LTS 10 version +* fix: should use fileURLToPath instead of pathname for Windows compatibility -Co-authored-by: Cedric van Putten <me@bycedric.com> +* Apply suggestions from code review -Co-authored-by: Cedric van Putten <me@bycedric.com> +* fix: should reuse `cli` instead call `yargs()` +* feat(cli): set terminalWidth as wrap to avoid work break on help +* Update .eslintrc.cjs +* feat: migrate @commitlint/config-conventional to pure ESM -## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) + + + +## [18.6.1](https://github.com/conventional-changelog/commitlint/compare/v18.6.0...v18.6.1) (2024-02-13) **Note:** Version bump only for package @commitlint/execute-rule @@ -87,7 +106,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) +## [18.4.4](https://github.com/conventional-changelog/commitlint/compare/v18.4.3...v18.4.4) (2024-01-04) **Note:** Version bump only for package @commitlint/execute-rule @@ -95,7 +114,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) +## [18.4.3](https://github.com/conventional-changelog/commitlint/compare/v18.4.2...v18.4.3) (2023-11-21) **Note:** Version bump only for package @commitlint/execute-rule @@ -103,7 +122,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) +# [18.4.0](https://github.com/conventional-changelog/commitlint/compare/v18.3.0...v18.4.0) (2023-11-10) **Note:** Version bump only for package @commitlint/execute-rule @@ -111,7 +130,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) +# [18.1.0](https://github.com/conventional-changelog/commitlint/compare/v18.0.0...v18.1.0) (2023-10-25) **Note:** Version bump only for package @commitlint/execute-rule @@ -119,7 +138,37 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) +# [18.0.0](https://github.com/conventional-changelog/commitlint/compare/v17.8.1...v18.0.0) (2023-10-20) + + +* chore!: minimum node version v18 (#3644) ([5b4aeaf](https://github.com/conventional-changelog/commitlint/commit/5b4aeaf4f01c2726a7bc8631a23bb34c849baad2)), closes [#3644](https://github.com/conventional-changelog/commitlint/issues/3644) + + +### BREAKING CHANGES + +* drop node v14 and v16 support + +* chore: remove unused types + +* docs: prepare node update and new release + +* chore!: minimum TS version v5 +* drop TS v4 support + +* ci: remove node v14/16 checks + +* chore: adjust node types to minimal supported version + +* chore!: further major versions of other deps +* upgrade conventional-changelog-conventionalcommits, conventional-commits-parser, conventional-changelog-atom, + +* docs: simplify releases and remove roadmap + + + + + +## [17.8.1](https://github.com/conventional-changelog/commitlint/compare/v17.8.0...v17.8.1) (2023-10-20) **Note:** Version bump only for package @commitlint/execute-rule @@ -127,117 +176,184 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) +# [17.4.0](https://github.com/conventional-changelog/commitlint/compare/v17.3.0...v17.4.0) (2023-01-04) **Note:** Version bump only for package @commitlint/execute-rule +# [17.0.0](https://github.com/conventional-changelog/commitlint/compare/v16.3.0...v17.0.0) (2022-05-16) +- chore!: minimum node version v14 (#3128) ([ac5f9b4](https://github.com/conventional-changelog/commitlint/commit/ac5f9b47a9e3cd5c9d58b14da0feb426f06b1ef9)), closes [#3128](https://github.com/conventional-changelog/commitlint/issues/3128) +### BREAKING CHANGES +- drop node v12 support -# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) +- chore: rename circleci windows job + +node version is not defned by the name anyways (i think) + +## [16.2.1](https://github.com/conventional-changelog/commitlint/compare/v16.2.0...v16.2.1) (2022-02-13) **Note:** Version bump only for package @commitlint/execute-rule +# [16.0.0](https://github.com/conventional-changelog/commitlint/compare/v15.0.0...v16.0.0) (2021-12-26) +**Note:** Version bump only for package @commitlint/execute-rule +# [15.0.0](https://github.com/conventional-changelog/commitlint/compare/v14.2.0...v15.0.0) (2021-11-17) +**Note:** Version bump only for package @commitlint/execute-rule -# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) +# [14.0.0](https://github.com/conventional-changelog/commitlint/compare/v13.2.1...v14.0.0) (2021-10-26) **Note:** Version bump only for package @commitlint/execute-rule +# [13.2.0](https://github.com/conventional-changelog/commitlint/compare/v13.1.0...v13.2.0) (2021-09-28) +**Note:** Version bump only for package @commitlint/execute-rule +# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) +- chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) -# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) +### BREAKING CHANGES + +- minimum node version is 12 + +## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) **Note:** Version bump only for package @commitlint/execute-rule +## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) + +**Note:** Version bump only for package @commitlint/execute-rule +## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) +**Note:** Version bump only for package @commitlint/execute-rule +# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) -<a name="7.5.0"></a> -# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) +**Note:** Version bump only for package @commitlint/execute-rule +# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) -### Bug Fixes +**Note:** Version bump only for package @commitlint/execute-rule -* replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) +# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) +- refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) +### BREAKING CHANGES +- remove node 8 from circle-ci checks -<a name="7.3.1"></a> -## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) +also remove node 13 because we do not support experimental versions +- docs: update node v10 to latest LTS 10 version +Co-authored-by: Cedric van Putten <me@bycedric.com> +Co-authored-by: Cedric van Putten <me@bycedric.com> + +## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) **Note:** Version bump only for package @commitlint/execute-rule -<a name="7.3.0"></a> -# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) +## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) +**Note:** Version bump only for package @commitlint/execute-rule +# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) +**Note:** Version bump only for package @commitlint/execute-rule + +## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) **Note:** Version bump only for package @commitlint/execute-rule -<a name="7.1.2"></a> -## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) +# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) +**Note:** Version bump only for package @commitlint/execute-rule +## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) +**Note:** Version bump only for package @commitlint/execute-rule + +# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) **Note:** Version bump only for package @commitlint/execute-rule -<a name="6.1.1"></a> -## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) +# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) +**Note:** Version bump only for package @commitlint/execute-rule +# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) +**Note:** Version bump only for package @commitlint/execute-rule + +# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) **Note:** Version bump only for package @commitlint/execute-rule -<a name="6.1.0"></a> -# [6.1.0](https://github.com/conventional-changelog/commitlint/compare/v6.0.5...v6.1.0) (2018-02-03) +<a name="7.5.0"></a> + +# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) +### Bug Fixes +- replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) +<a name="7.3.1"></a> + +## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) **Note:** Version bump only for package @commitlint/execute-rule -<a name="6.0.4"></a> -## [6.0.4](https://github.com/conventional-changelog/commitlint/compare/v6.0.3...v6.0.4) (2018-01-31) +<a name="7.3.0"></a> +# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) +**Note:** Version bump only for package @commitlint/execute-rule +<a name="7.1.2"></a> + +## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) **Note:** Version bump only for package @commitlint/execute-rule -<a name="6.0.3"></a> -## [6.0.3](https://github.com/conventional-changelog/commitlint/compare/v6.0.2...v6.0.3) (2018-01-31) +<a name="6.1.1"></a> +## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) +**Note:** Version bump only for package @commitlint/execute-rule +<a name="6.1.0"></a> + +# [6.1.0](https://github.com/conventional-changelog/commitlint/compare/v6.0.5...v6.1.0) (2018-02-03) **Note:** Version bump only for package @commitlint/execute-rule -<a name="6.0.2"></a> -## [6.0.2](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.2) (2018-01-12) +<a name="6.0.4"></a> +## [6.0.4](https://github.com/conventional-changelog/commitlint/compare/v6.0.3...v6.0.4) (2018-01-31) + +**Note:** Version bump only for package @commitlint/execute-rule +<a name="6.0.3"></a> +## [6.0.3](https://github.com/conventional-changelog/commitlint/compare/v6.0.2...v6.0.3) (2018-01-31) **Note:** Version bump only for package @commitlint/execute-rule -<a name="6.0.0"></a> -# [6.0.0](https://github.com/conventional-changelog/commitlint/compare/v5.2.6...v6.0.0) (2018-01-09) +<a name="6.0.2"></a> +## [6.0.2](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.2) (2018-01-12) +**Note:** Version bump only for package @commitlint/execute-rule + +<a name="6.0.0"></a> +# [6.0.0](https://github.com/conventional-changelog/commitlint/compare/v5.2.6...v6.0.0) (2018-01-09) **Note:** Version bump only for package @commitlint/execute-rule diff --git a/@commitlint/execute-rule/package.json b/@commitlint/execute-rule/package.json index c000f4cdc9..507e533f1e 100644 --- a/@commitlint/execute-rule/package.json +++ b/@commitlint/execute-rule/package.json @@ -1,6 +1,7 @@ { "name": "@commitlint/execute-rule", - "version": "13.0.0", + "type": "module", + "version": "20.0.0", "description": "Lint your commit messages", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -12,16 +13,17 @@ "pkg": "pkg-check" }, "engines": { - "node": ">=v12" + "node": ">=v18" }, "repository": { "type": "git", - "url": "https://github.com/conventional-changelog/commitlint.git" + "url": "https://github.com/conventional-changelog/commitlint.git", + "directory": "@commitlint/execute-rule" }, "bugs": { "url": "https://github.com/conventional-changelog/commitlint/issues" }, - "homepage": "https://github.com/conventional-changelog/commitlint#readme", + "homepage": "https://commitlint.js.org/", "keywords": [ "conventional-changelog", "commitlint", @@ -34,7 +36,7 @@ }, "license": "MIT", "devDependencies": { - "@commitlint/utils": "^13.0.0" + "@commitlint/utils": "^20.0.0" }, - "gitHead": "d829bf6260304ca8d6811f329fcdd1b6c50e9749" + "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" } diff --git a/@commitlint/execute-rule/src/index.test.ts b/@commitlint/execute-rule/src/index.test.ts index 2c9698de18..23a3259707 100644 --- a/@commitlint/execute-rule/src/index.test.ts +++ b/@commitlint/execute-rule/src/index.test.ts @@ -1,26 +1,28 @@ -import execute from '.'; +import { test, expect } from "vitest"; -test('does nothing without params', async () => { +import execute from "./index.js"; + +test("does nothing without params", async () => { const exec = execute as any; expect(await exec()).toBeNull(); }); -test('returns plain config', async () => { - const actual = await execute(['name', 'config']); - expect(actual).toEqual(['name', 'config']); +test("returns plain config", async () => { + const actual = await execute(["name", "config"]); + expect(actual).toEqual(["name", "config"]); }); -test('unwraps promised config', async () => { - const actual = await execute(['name', Promise.resolve('config')]); - expect(actual).toEqual(['name', 'config']); +test("unwraps promised config", async () => { + const actual = await execute(["name", Promise.resolve("config")]); + expect(actual).toEqual(["name", "config"]); }); -test('executes config functions', async () => { - const actual = await execute(['name', () => 'config']); - expect(actual).toEqual(['name', 'config']); +test("executes config functions", async () => { + const actual = await execute(["name", () => "config"]); + expect(actual).toEqual(["name", "config"]); }); -test('executes async config functions', async () => { - const actual = await execute(['name', async () => 'config']); - expect(actual).toEqual(['name', 'config']); +test("executes async config functions", async () => { + const actual = await execute(["name", async () => "config"]); + expect(actual).toEqual(["name", "config"]); }); diff --git a/@commitlint/execute-rule/src/index.ts b/@commitlint/execute-rule/src/index.ts index 47029f4b89..4ef89f9275 100644 --- a/@commitlint/execute-rule/src/index.ts +++ b/@commitlint/execute-rule/src/index.ts @@ -7,7 +7,7 @@ type ExecutedRule<T> = readonly [string, T]; export default execute; export async function execute<T = unknown>( - rule?: Rule<T> + rule?: Rule<T>, ): Promise<ExecutedRule<T> | null> { if (!Array.isArray(rule)) { return null; @@ -21,5 +21,5 @@ export async function execute<T = unknown>( } function executable<T>(config: Config<T>): config is ExectableConfig<T> { - return typeof config === 'function'; + return typeof config === "function"; } diff --git a/@commitlint/format/CHANGELOG.md b/@commitlint/format/CHANGELOG.md index c54e067030..b809f3fa73 100644 --- a/@commitlint/format/CHANGELOG.md +++ b/@commitlint/format/CHANGELOG.md @@ -3,7 +3,7 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. -# [13.1.0](https://github.com/conventional-changelog/commitlint/compare/v13.0.0...v13.1.0) (2021-07-24) +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) **Note:** Version bump only for package @commitlint/format @@ -11,21 +11,23 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) +## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) +**Note:** Version bump only for package @commitlint/format -* chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) -### BREAKING CHANGES -* minimum node version is 12 +# [19.8.0](https://github.com/conventional-changelog/commitlint/compare/v19.7.1...v19.8.0) (2025-03-07) +**Note:** Version bump only for package @commitlint/format -## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) + + +# [19.5.0](https://github.com/conventional-changelog/commitlint/compare/v19.4.1...v19.5.0) (2024-09-11) **Note:** Version bump only for package @commitlint/format @@ -33,15 +35,18 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.1.2](https://github.com/conventional-changelog/commitlint/compare/v12.1.1...v12.1.2) (2021-04-29) +# [19.3.0](https://github.com/conventional-changelog/commitlint/compare/v19.2.2...v19.3.0) (2024-04-23) -**Note:** Version bump only for package @commitlint/format +### Features +* **format:** print full commit message for valid commits if -V ([#4026](https://github.com/conventional-changelog/commitlint/issues/4026)) ([a7bbc49](https://github.com/conventional-changelog/commitlint/commit/a7bbc494e34885aba3f4b0c03b37d18ef2b8fbff)) -## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) + + +## [19.0.3](https://github.com/conventional-changelog/commitlint/compare/v19.0.2...v19.0.3) (2024-02-28) **Note:** Version bump only for package @commitlint/format @@ -49,56 +54,70 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) +# [19.0.0](https://github.com/conventional-changelog/commitlint/compare/v18.6.2...v19.0.0) (2024-02-27) -### Bug Fixes +* feat!: migrate to pure ESM (#3850) ([3423735](https://github.com/conventional-changelog/commitlint/commit/342373559bdf7c783c4ef37ff05dc38a5f681159)), closes [#3850](https://github.com/conventional-changelog/commitlint/issues/3850) -* **types:** correct chalkColor type ([#2420](https://github.com/conventional-changelog/commitlint/issues/2420)) ([ef8bdad](https://github.com/conventional-changelog/commitlint/commit/ef8bdad96c9ee7c3ad67f8280818c7f49c1df1fe)) +### Reverts +* Revert "chore!: minimum node version v20" ([2816783](https://github.com/conventional-changelog/commitlint/commit/2816783d00e7eb967de3ac9347c2fc43dc8b94fa)) +### BREAKING CHANGES -# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) +* migrate to pure ESM -**Note:** Version bump only for package @commitlint/format +* feat: migrate to pure ESM +* chore: update snapshot +* fix: load `parserPreset` with another `await` +* test: migrate to vitest +* test: remove no replacement `--runInBand` test-ci script -# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) +* chore: fix code reviews -**Note:** Version bump only for package @commitlint/format +* refactor(load): rewrite resolve logic +* fix(config-nx-scopes): fix syntax error +* feat(resolve-extends): add resolveFrom and loadParserPreset +* feat(load): use resolveFrom and loadParserPreset from resolve-extends +* test: include only @commitlint/* packages src in coverage -# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) +* test: explicit import vitest utilities +* test: remove @jest/globals from dependencies -* refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) +* fix(resolve-extends): `resolveFrom` output should be platform aware +* test: restore NO_COLOR to test script -### BREAKING CHANGES +* chore: fix linting issues -* remove node 8 from circle-ci checks +* fix: should use fileURLToPath instead of pathname for Windows compatibility -also remove node 13 because we do not support experimental versions +* Apply suggestions from code review -* docs: update node v10 to latest LTS 10 version +* fix: should reuse `cli` instead call `yargs()` -Co-authored-by: Cedric van Putten <me@bycedric.com> +* feat(cli): set terminalWidth as wrap to avoid work break on help -Co-authored-by: Cedric van Putten <me@bycedric.com> +* Update .eslintrc.cjs +* feat: migrate @commitlint/config-conventional to pure ESM -## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) + +## [18.6.1](https://github.com/conventional-changelog/commitlint/compare/v18.6.0...v18.6.1) (2024-02-13) **Note:** Version bump only for package @commitlint/format @@ -106,7 +125,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) +# [18.6.0](https://github.com/conventional-changelog/commitlint/compare/v18.5.1...v18.6.0) (2024-01-25) **Note:** Version bump only for package @commitlint/format @@ -114,18 +133,23 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) +## [18.4.4](https://github.com/conventional-changelog/commitlint/compare/v18.4.3...v18.4.4) (2024-01-04) +**Note:** Version bump only for package @commitlint/format -### Bug Fixes -* update dependency chalk to v4 ([#1275](https://github.com/conventional-changelog/commitlint/issues/1275)) ([a5d8fa1](https://github.com/conventional-changelog/commitlint/commit/a5d8fa118e8221361f14f5fd2b21d7aaad008a27)) +## [18.4.3](https://github.com/conventional-changelog/commitlint/compare/v18.4.2...v18.4.3) (2023-11-21) +**Note:** Version bump only for package @commitlint/format -## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) + + + + +# [18.4.0](https://github.com/conventional-changelog/commitlint/compare/v18.3.0...v18.4.0) (2023-11-10) **Note:** Version bump only for package @commitlint/format @@ -133,7 +157,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) +# [18.1.0](https://github.com/conventional-changelog/commitlint/compare/v18.0.0...v18.1.0) (2023-10-25) **Note:** Version bump only for package @commitlint/format @@ -141,7 +165,37 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) +# [18.0.0](https://github.com/conventional-changelog/commitlint/compare/v17.8.1...v18.0.0) (2023-10-20) + + +* chore!: minimum node version v18 (#3644) ([5b4aeaf](https://github.com/conventional-changelog/commitlint/commit/5b4aeaf4f01c2726a7bc8631a23bb34c849baad2)), closes [#3644](https://github.com/conventional-changelog/commitlint/issues/3644) + + +### BREAKING CHANGES + +* drop node v14 and v16 support + +* chore: remove unused types + +* docs: prepare node update and new release + +* chore!: minimum TS version v5 +* drop TS v4 support + +* ci: remove node v14/16 checks + +* chore: adjust node types to minimal supported version + +* chore!: further major versions of other deps +* upgrade conventional-changelog-conventionalcommits, conventional-commits-parser, conventional-changelog-atom, + +* docs: simplify releases and remove roadmap + + + + + +## [17.8.1](https://github.com/conventional-changelog/commitlint/compare/v17.8.0...v17.8.1) (2023-10-20) **Note:** Version bump only for package @commitlint/format @@ -149,7 +203,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) +## [17.4.4](https://github.com/conventional-changelog/commitlint/compare/v17.4.3...v17.4.4) (2023-02-17) **Note:** Version bump only for package @commitlint/format @@ -157,117 +211,206 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) +# [17.4.0](https://github.com/conventional-changelog/commitlint/compare/v17.3.0...v17.4.0) (2023-01-04) **Note:** Version bump only for package @commitlint/format +# [17.0.0](https://github.com/conventional-changelog/commitlint/compare/v16.3.0...v17.0.0) (2022-05-16) +- chore!: minimum node version v14 (#3128) ([ac5f9b4](https://github.com/conventional-changelog/commitlint/commit/ac5f9b47a9e3cd5c9d58b14da0feb426f06b1ef9)), closes [#3128](https://github.com/conventional-changelog/commitlint/issues/3128) +### BREAKING CHANGES +- drop node v12 support -# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) +- chore: rename circleci windows job + +node version is not defned by the name anyways (i think) + +## [16.2.1](https://github.com/conventional-changelog/commitlint/compare/v16.2.0...v16.2.1) (2022-02-13) **Note:** Version bump only for package @commitlint/format +# [16.0.0](https://github.com/conventional-changelog/commitlint/compare/v15.0.0...v16.0.0) (2021-12-26) +**Note:** Version bump only for package @commitlint/format +# [15.0.0](https://github.com/conventional-changelog/commitlint/compare/v14.2.0...v15.0.0) (2021-11-17) +**Note:** Version bump only for package @commitlint/format -## [7.6.1](https://github.com/conventional-changelog/commitlint/compare/v7.6.0...v7.6.1) (2019-05-09) +# [14.1.0](https://github.com/conventional-changelog/commitlint/compare/v14.0.0...v14.1.0) (2021-11-01) +### Features -### Bug Fixes +- extend helpUrl from shareable config ([#2846](https://github.com/conventional-changelog/commitlint/issues/2846)) ([d7e2e2b](https://github.com/conventional-changelog/commitlint/commit/d7e2e2b943be383f99f4000b6b6bed0eab03bfcf)) -* ensure format() is available as commonjs default export [#645](https://github.com/conventional-changelog/commitlint/issues/645) ([ec3da92](https://github.com/conventional-changelog/commitlint/commit/ec3da92)) +# [14.0.0](https://github.com/conventional-changelog/commitlint/compare/v13.2.1...v14.0.0) (2021-10-26) +**Note:** Version bump only for package @commitlint/format +# [13.2.0](https://github.com/conventional-changelog/commitlint/compare/v13.1.0...v13.2.0) (2021-09-28) +**Note:** Version bump only for package @commitlint/format +# [13.1.0](https://github.com/conventional-changelog/commitlint/compare/v13.0.0...v13.1.0) (2021-07-24) -# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) +**Note:** Version bump only for package @commitlint/format +# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) -### Bug Fixes +- chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) -* avoid excessive help text [#606](https://github.com/conventional-changelog/commitlint/issues/606) ([#637](https://github.com/conventional-changelog/commitlint/issues/637)) ([8f3c3b1](https://github.com/conventional-changelog/commitlint/commit/8f3c3b1)) +### BREAKING CHANGES +- minimum node version is 12 +## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) +**Note:** Version bump only for package @commitlint/format +## [12.1.2](https://github.com/conventional-changelog/commitlint/compare/v12.1.1...v12.1.2) (2021-04-29) -<a name="7.5.0"></a> -# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) +**Note:** Version bump only for package @commitlint/format +## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) + +**Note:** Version bump only for package @commitlint/format + +## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) ### Bug Fixes -* all broken website references ([#564](https://github.com/conventional-changelog/commitlint/issues/564)) ([82eeb5a](https://github.com/conventional-changelog/commitlint/commit/82eeb5a)) -* cleanup message for input with no config ([#519](https://github.com/conventional-changelog/commitlint/issues/519)) ([7d9e760](https://github.com/conventional-changelog/commitlint/commit/7d9e760)) -* replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) -* replace all website references with conventional changelog ([#563](https://github.com/conventional-changelog/commitlint/issues/563)) ([6b86fb1](https://github.com/conventional-changelog/commitlint/commit/6b86fb1)) +- **types:** correct chalkColor type ([#2420](https://github.com/conventional-changelog/commitlint/issues/2420)) ([ef8bdad](https://github.com/conventional-changelog/commitlint/commit/ef8bdad96c9ee7c3ad67f8280818c7f49c1df1fe)) +# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) +**Note:** Version bump only for package @commitlint/format +# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) -<a name="7.4.0"></a> -# [7.4.0](https://github.com/conventional-changelog/commitlint/compare/v7.3.2...v7.4.0) (2019-01-27) +**Note:** Version bump only for package @commitlint/format + +# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) + +- refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) + +### BREAKING CHANGES +- remove node 8 from circle-ci checks + +also remove node 13 because we do not support experimental versions + +- docs: update node v10 to latest LTS 10 version + +Co-authored-by: Cedric van Putten <me@bycedric.com> + +Co-authored-by: Cedric van Putten <me@bycedric.com> + +## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) + +**Note:** Version bump only for package @commitlint/format + +## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) + +**Note:** Version bump only for package @commitlint/format + +# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) ### Bug Fixes -* correction to need help link ([#540](https://github.com/conventional-changelog/commitlint/issues/540)) ([fa6168a](https://github.com/conventional-changelog/commitlint/commit/fa6168a)) +- update dependency chalk to v4 ([#1275](https://github.com/conventional-changelog/commitlint/issues/1275)) ([a5d8fa1](https://github.com/conventional-changelog/commitlint/commit/a5d8fa118e8221361f14f5fd2b21d7aaad008a27)) +## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) +**Note:** Version bump only for package @commitlint/format +# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) -<a name="7.3.1"></a> -## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) +**Note:** Version bump only for package @commitlint/format +## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) +**Note:** Version bump only for package @commitlint/format +# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) **Note:** Version bump only for package @commitlint/format -<a name="7.3.0"></a> -# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) +# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) + +**Note:** Version bump only for package @commitlint/format + +# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) + +**Note:** Version bump only for package @commitlint/format +## [7.6.1](https://github.com/conventional-changelog/commitlint/compare/v7.6.0...v7.6.1) (2019-05-09) ### Bug Fixes -* **format:** add new line to result ([#518](https://github.com/conventional-changelog/commitlint/issues/518)) ([f1d443b](https://github.com/conventional-changelog/commitlint/commit/f1d443b)), closes [#504](https://github.com/conventional-changelog/commitlint/issues/504) -* update to security-patched dependency versions ([97c033b](https://github.com/conventional-changelog/commitlint/commit/97c033b)) +- ensure format() is available as commonjs default export [#645](https://github.com/conventional-changelog/commitlint/issues/645) ([ec3da92](https://github.com/conventional-changelog/commitlint/commit/ec3da92)) +# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) +### Bug Fixes +- avoid excessive help text [#606](https://github.com/conventional-changelog/commitlint/issues/606) ([#637](https://github.com/conventional-changelog/commitlint/issues/637)) ([8f3c3b1](https://github.com/conventional-changelog/commitlint/commit/8f3c3b1)) -<a name="7.2.1"></a> -## [7.2.1](https://github.com/conventional-changelog/commitlint/compare/v7.2.0...v7.2.1) (2018-10-11) +<a name="7.5.0"></a> + +# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) +### Bug Fixes +- all broken website references ([#564](https://github.com/conventional-changelog/commitlint/issues/564)) ([82eeb5a](https://github.com/conventional-changelog/commitlint/commit/82eeb5a)) +- cleanup message for input with no config ([#519](https://github.com/conventional-changelog/commitlint/issues/519)) ([7d9e760](https://github.com/conventional-changelog/commitlint/commit/7d9e760)) +- replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) +- replace all website references with conventional changelog ([#563](https://github.com/conventional-changelog/commitlint/issues/563)) ([6b86fb1](https://github.com/conventional-changelog/commitlint/commit/6b86fb1)) +<a name="7.4.0"></a> -**Note:** Version bump only for package @commitlint/format +# [7.4.0](https://github.com/conventional-changelog/commitlint/compare/v7.3.2...v7.4.0) (2019-01-27) -<a name="7.2.0"></a> -# [7.2.0](https://github.com/conventional-changelog/commitlint/compare/v7.1.2...v7.2.0) (2018-10-05) +### Bug Fixes +- correction to need help link ([#540](https://github.com/conventional-changelog/commitlint/issues/540)) ([fa6168a](https://github.com/conventional-changelog/commitlint/commit/fa6168a)) +<a name="7.3.1"></a> +## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) **Note:** Version bump only for package @commitlint/format -<a name="7.1.2"></a> -## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) +<a name="7.3.0"></a> + +# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) +### Bug Fixes +- **format:** add new line to result ([#518](https://github.com/conventional-changelog/commitlint/issues/518)) ([f1d443b](https://github.com/conventional-changelog/commitlint/commit/f1d443b)), closes [#504](https://github.com/conventional-changelog/commitlint/issues/504) +- update to security-patched dependency versions ([97c033b](https://github.com/conventional-changelog/commitlint/commit/97c033b)) +<a name="7.2.1"></a> + +## [7.2.1](https://github.com/conventional-changelog/commitlint/compare/v7.2.0...v7.2.1) (2018-10-11) **Note:** Version bump only for package @commitlint/format -<a name="6.1.1"></a> -## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) +<a name="7.2.0"></a> +# [7.2.0](https://github.com/conventional-changelog/commitlint/compare/v7.1.2...v7.2.0) (2018-10-05) +**Note:** Version bump only for package @commitlint/format + +<a name="7.1.2"></a> + +## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) +**Note:** Version bump only for package @commitlint/format + +<a name="6.1.1"></a> + +## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) **Note:** Version bump only for package @commitlint/format diff --git a/@commitlint/format/README.md b/@commitlint/format/README.md index b815fb89fd..66de357636 100644 --- a/@commitlint/format/README.md +++ b/@commitlint/format/README.md @@ -1,65 +1,15 @@ -> Format commitlint reports - # @commitlint/format +Format commitlint reports + ## Getting started ```shell npm install --save @commitlint/format ``` -## Example - -```js -const format = require('@commitlint/format').default; +## Documentation -const output = format( - { - valid: false, - errorCount: 1, - warningCount: 1, - results: [ - { - valid: false, - input: 'some: commit message', - errors: [ - { - valid: false, - level: 2, - name: 'some-error', - message: 'This will show up red as it has level 2', - }, - ], - warnings: [ - { - valid: true, - level: 0, - name: 'some-hint', - message: 'This will not show up as it has level 0', - }, - { - valid: false, - level: 1, - name: 'some-warning', - message: 'This will show up yellow as it has level 1', - }, - ], - }, - ], - }, - { - color: false, - } -); - -process.stdout.write(output); - -/* => [ - '✖ This will show up red as it has level 2 [some-error]', - ' This will not show up as it has level 0 [some-hint]', - '⚠ This will show up yellow as it has level 1 [some-warning]', - '✖ found 1 problems, 2 warnings' -] */ -``` +Consult [API docs](https://commitlint.js.org/api/format) for comprehensive documentation. -Consult [docs/api](https://conventional-changelog.github.io/commitlint/#/reference-api) for comprehensive documentation. +Documentation generated from [`docs` folder](../../docs/api/format.md). diff --git a/@commitlint/format/package.json b/@commitlint/format/package.json index 83e3d378b2..695428c758 100644 --- a/@commitlint/format/package.json +++ b/@commitlint/format/package.json @@ -1,6 +1,7 @@ { "name": "@commitlint/format", - "version": "13.1.0", + "type": "module", + "version": "20.0.0", "description": "Format commitlint reports", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -12,16 +13,17 @@ "pkg": "pkg-check --skip-import" }, "engines": { - "node": ">=v12" + "node": ">=v18" }, "repository": { "type": "git", - "url": "https://github.com/conventional-changelog/commitlint.git" + "url": "https://github.com/conventional-changelog/commitlint.git", + "directory": "@commitlint/format" }, "bugs": { "url": "https://github.com/conventional-changelog/commitlint/issues" }, - "homepage": "https://github.com/conventional-changelog/commitlint#readme", + "homepage": "https://commitlint.js.org/", "keywords": [ "conventional-changelog", "commitlint", @@ -34,11 +36,11 @@ }, "license": "MIT", "devDependencies": { - "@commitlint/utils": "^13.0.0" + "@commitlint/utils": "^20.0.0" }, "dependencies": { - "@commitlint/types": "^13.1.0", - "chalk": "^4.0.0" + "@commitlint/types": "^20.0.0", + "chalk": "^5.3.0" }, - "gitHead": "d829bf6260304ca8d6811f329fcdd1b6c50e9749" + "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" } diff --git a/@commitlint/format/src/format.test.ts b/@commitlint/format/src/format.test.ts index 745da36b21..3388e96afb 100644 --- a/@commitlint/format/src/format.test.ts +++ b/@commitlint/format/src/format.test.ts @@ -1,21 +1,23 @@ -import {format, formatResult} from '.'; +import { test, expect } from "vitest"; -test('does nothing without arguments', () => { +import { format, formatResult } from "./index.js"; + +test("does nothing without arguments", () => { const actual = format(); - expect(actual).toEqual(''); + expect(actual).toEqual(""); }); -test('does nothing without report results', () => { - const actual = format({results: []}); - expect(actual).toEqual(''); +test("does nothing without report results", () => { + const actual = format({ results: [] }); + expect(actual).toEqual(""); }); -test('does nothing without .errors and .warnings', () => { - const actual = format({results: [{}]}); - expect(actual).toEqual(''); +test("does nothing without .errors and .warnings", () => { + const actual = format({ results: [{}] }); + expect(actual).toEqual(""); }); -test('returns empty summary if verbose', () => { +test("returns empty summary if verbose", () => { const actual = format( { results: [ @@ -27,21 +29,44 @@ test('returns empty summary if verbose', () => { }, { verbose: true, - } + }, ); - expect(actual).toContain('0 problems, 0 warnings'); + expect(actual).toContain("0 problems, 0 warnings"); +}); + +test("returns empty summary with full commit message if verbose", () => { + const actual = format( + { + results: [ + { + errors: [], + warnings: [], + input: + "feat(cli): this is a valid header\n\nThis is a valid body\n\nSigned-off-by: tester", + }, + ], + }, + { + verbose: true, + color: false, + }, + ); + + expect(actual).toStrictEqual( + "⧗ input: feat(cli): this is a valid header\n\nThis is a valid body\n\nSigned-off-by: tester\n✔ found 0 problems, 0 warnings", + ); }); -test('returns a correct summary of empty .errors and .warnings', () => { +test("returns a correct summary of empty .errors and .warnings", () => { const actualError = format({ results: [ { errors: [ { level: 2, - name: 'error-name', - message: 'There was an error', + name: "error-name", + message: "There was an error", }, ], }, @@ -54,29 +79,29 @@ test('returns a correct summary of empty .errors and .warnings', () => { warnings: [ { level: 1, - name: 'warning-name', - message: 'There was a problem', + name: "warning-name", + message: "There was a problem", }, ], }, ], }); - expect(actualError).toContain('There was an error'); - expect(actualError).toContain('1 problems, 0 warnings'); - expect(actualWarning).toContain('There was a problem'); - expect(actualWarning).toContain('0 problems, 1 warnings'); + expect(actualError).toContain("There was an error"); + expect(actualError).toContain("1 problems, 0 warnings"); + expect(actualWarning).toContain("There was a problem"); + expect(actualWarning).toContain("0 problems, 1 warnings"); }); -test('uses appropriate signs by default', () => { +test("uses appropriate signs by default", () => { const actualError = format({ results: [ { errors: [ { level: 2, - name: 'error-name', - message: 'There was an error', + name: "error-name", + message: "There was an error", }, ], }, @@ -89,20 +114,20 @@ test('uses appropriate signs by default', () => { warnings: [ { level: 1, - name: 'warning-name', - message: 'There was a problem', + name: "warning-name", + message: "There was a problem", }, ], }, ], }); - expect(actualError).toContain('✖'); - expect(actualWarning).toContain('⚠'); + expect(actualError).toContain("✖"); + expect(actualWarning).toContain("⚠"); }); -test('uses signs as configured', () => { - const options = {signs: ['HNT', 'WRN', 'ERR'] as [string, string, string]}; +test("uses signs as configured", () => { + const options = { signs: ["HNT", "WRN", "ERR"] as [string, string, string] }; const actualError = format( { results: [ @@ -110,14 +135,14 @@ test('uses signs as configured', () => { errors: [ { level: 2, - name: 'error-name', - message: 'There was an error', + name: "error-name", + message: "There was an error", }, ], }, ], }, - options + options, ); const actualWarning = format( @@ -127,133 +152,154 @@ test('uses signs as configured', () => { warnings: [ { level: 1, - name: 'warning-name', - message: 'There was a problem', + name: "warning-name", + message: "There was a problem", }, ], }, ], }, - options + options, ); - expect(actualError).toContain('ERR'); - expect(actualWarning).toContain('WRN'); + expect(actualError).toContain("ERR"); + expect(actualWarning).toContain("WRN"); }); -test('format result is empty without arguments', () => { +test("format result is empty without arguments", () => { const actual = formatResult(); - const actualText = actual.join('\n'); - expect(actualText).toBe(''); + const actualText = actual.join("\n"); + expect(actualText).toBe(""); }); -test('format result transforms error to text', () => { +test("format result transforms error to text", () => { const actual = formatResult({ errors: [ { level: 2, - name: 'error-name', - message: 'There was an error', + name: "error-name", + message: "There was an error", }, ], }); - const actualText = actual.join('\n'); + const actualText = actual.join("\n"); - expect(actualText).toContain('error-name'); - expect(actualText).toContain('There was an error'); - expect(actualText).toContain('1 problems, 0 warnings'); + expect(actualText).toContain("error-name"); + expect(actualText).toContain("There was an error"); + expect(actualText).toContain("1 problems, 0 warnings"); }); -test('format result transforms warning to text', () => { +test("format result transforms warning to text", () => { const actual = formatResult({ warnings: [ { level: 1, - name: 'warning-name', - message: 'There was a warning', + name: "warning-name", + message: "There was a warning", }, ], }); - const actualText = actual.join('\n'); + const actualText = actual.join("\n"); - expect(actualText).toContain('warning-name'); - expect(actualText).toContain('There was a warning'); - expect(actualText).toContain('0 problems, 1 warnings'); + expect(actualText).toContain("warning-name"); + expect(actualText).toContain("There was a warning"); + expect(actualText).toContain("0 problems, 1 warnings"); }); -test('format result prints help for errors', () => { +test("format result prints help for errors", () => { const actual = formatResult( { errors: [ { level: 2, - name: 'error-name', - message: 'There was an error', + name: "error-name", + message: "There was an error", }, ], }, { - helpUrl: 'https://example.com', - } + helpUrl: "https://example.com", + }, ); expect(actual).toEqual( - expect.arrayContaining([expect.stringContaining('Get help:')]) + expect.arrayContaining([expect.stringContaining("Get help:")]), ); }); -test('format result prints help for warnings', () => { +test("format result prints help for warnings", () => { const actual = formatResult( { warnings: [ { level: 2, - name: 'warning-name', - message: 'There was a warning', + name: "warning-name", + message: "There was a warning", }, ], }, { - helpUrl: 'https://example.com', - } + helpUrl: "https://example.com", + }, ); expect(actual).toEqual( - expect.arrayContaining([expect.stringContaining('Get help:')]) + expect.arrayContaining([expect.stringContaining("Get help:")]), ); }); -test('format result help cotains options.helpUrl', () => { - const helpUrl = 'https://example.com'; +test("format result help cotains options.helpUrl", () => { + const helpUrl = "https://example.com"; const actual = formatResult( { warnings: [ { level: 2, - name: 'warning-name', - message: 'There was a warning', + name: "warning-name", + message: "There was a warning", }, ], }, { helpUrl, - } + }, ); expect(actual).toEqual( - expect.arrayContaining([expect.stringContaining(helpUrl)]) + expect.arrayContaining([expect.stringContaining(helpUrl)]), ); }); -test('format result omits help for empty problems', () => { +test("format result omits help for empty problems", () => { const actual = formatResult({ warnings: [], }); expect(actual).not.toEqual( - expect.arrayContaining([expect.stringContaining('Get help:')]) + expect.arrayContaining([expect.stringContaining("Get help:")]), + ); +}); + +test("format result should not contain `Get help` prefix if helpUrl is not provided", () => { + const actual = formatResult( + { + warnings: [ + { + level: 2, + name: "warning-name", + message: "There was a warning", + }, + ], + }, + { + helpUrl: "", + }, + ); + + expect(actual).not.toEqual( + expect.arrayContaining([expect.stringContaining("Get help:")]), ); }); diff --git a/@commitlint/format/src/format.ts b/@commitlint/format/src/format.ts index bd7101954c..8c43f74c64 100644 --- a/@commitlint/format/src/format.ts +++ b/@commitlint/format/src/format.ts @@ -1,20 +1,20 @@ -import chalk from 'chalk'; +import chalk from "chalk"; import { ChalkColor, FormattableReport, FormatOptions, FormattableResult, WithInput, -} from '@commitlint/types'; +} from "@commitlint/types"; -const DEFAULT_SIGNS = [' ', '⚠', '✖'] as const; -const DEFAULT_COLORS = ['white', 'yellow', 'red'] as const; +const DEFAULT_SIGNS = [" ", "⚠", "✖"] as const; +const DEFAULT_COLORS = ["white", "yellow", "red"] as const; export function format( report: FormattableReport = {}, - options: FormatOptions = {} + options: FormatOptions = {}, ): string { - const {results = []} = report; + const { results = [] } = report; const fi = (result: FormattableResult & WithInput) => formatInput(result, options); const fr = (result: FormattableResult) => formatResult(result, options); @@ -24,27 +24,26 @@ export function format( .map((result) => [...fi(result), ...fr(result)]) .reduce( (acc, item) => (Array.isArray(item) ? [...acc, ...item] : [...acc, item]), - [] + [], ) - .join('\n'); + .join("\n"); } function formatInput( result: FormattableResult & WithInput, - options: FormatOptions = {} + options: FormatOptions = {}, ): string[] { - const {color: enabled = true} = options; - const {errors = [], warnings = [], input = ''} = result; + const { color: enabled = true } = options; + const { errors = [], warnings = [], input = "" } = result; if (!input) { - return ['']; + return [""]; } - const sign = '⧗'; + const sign = "⧗"; const decoration = enabled ? chalk.gray(sign) : sign; - const commitText = errors.length > 0 ? input : input.split('\n')[0]; - const decoratedInput = enabled ? chalk.bold(commitText) : commitText; + const decoratedInput = enabled ? chalk.bold(input) : input; const hasProblems = errors.length > 0 || warnings.length > 0; return options.verbose || hasProblems @@ -54,18 +53,18 @@ function formatInput( export function formatResult( result: FormattableResult = {}, - options: FormatOptions = {} + options: FormatOptions = {}, ): string[] { const { signs = DEFAULT_SIGNS, colors = DEFAULT_COLORS, color: enabled = true, } = options; - const {errors = [], warnings = []} = result; + const { errors = [], warnings = [] } = result; const problems = [...errors, ...warnings].map((problem) => { - const sign = signs[problem.level] || ''; - const color: ChalkColor = colors[problem.level] || ('white' as const); + const sign = signs[problem.level] || ""; + const color: ChalkColor = colors[problem.level] || ("white" as const); const decoration = enabled ? chalk[color](sign) : sign; const name = enabled ? chalk.grey(`[${problem.name}]`) @@ -87,31 +86,34 @@ export function formatResult( : undefined; const fmtSummary = - enabled && typeof summary === 'string' ? chalk.bold(summary) : summary; + enabled && typeof summary === "string" ? chalk.bold(summary) : summary; - const help = hasProblems ? `ⓘ Get help: ${options.helpUrl}` : undefined; + const help = + hasProblems && options.helpUrl + ? `ⓘ Get help: ${options.helpUrl}` + : undefined; return [ ...problems, - hasProblems ? '' : undefined, + hasProblems ? "" : undefined, fmtSummary, help, - help ? '' : undefined, - ].filter((line): line is string => typeof line === 'string'); + hasProblems ? "" : undefined, + ].filter((line): line is string => typeof line === "string"); } export default format; function selectSign(result: FormattableResult): string { if ((result.errors || []).length > 0) { - return '✖'; + return "✖"; } - return (result.warnings || []).length ? '⚠' : '✔'; + return (result.warnings || []).length ? "⚠" : "✔"; } function selectColor(result: FormattableResult): ChalkColor { if ((result.errors || []).length > 0) { - return 'red'; + return "red"; } - return (result.warnings || []).length ? 'yellow' : 'green'; + return (result.warnings || []).length ? "yellow" : "green"; } diff --git a/@commitlint/format/src/index.ts b/@commitlint/format/src/index.ts index 176b844618..6f7327f1bb 100644 --- a/@commitlint/format/src/index.ts +++ b/@commitlint/format/src/index.ts @@ -1,2 +1,2 @@ -export {default} from './format'; -export * from './format'; +export { default } from "./format.js"; +export * from "./format.js"; diff --git a/@commitlint/format/tsconfig.json b/@commitlint/format/tsconfig.json index 119e645565..d691164788 100644 --- a/@commitlint/format/tsconfig.json +++ b/@commitlint/format/tsconfig.json @@ -7,5 +7,5 @@ }, "include": ["./src"], "exclude": ["./src/**/*.test.ts", "./lib/**/*"], - "references": [{"path": "../types"}] + "references": [{ "path": "../types" }] } diff --git a/@commitlint/is-ignored/CHANGELOG.md b/@commitlint/is-ignored/CHANGELOG.md index dde37ed116..70f7b36b54 100644 --- a/@commitlint/is-ignored/CHANGELOG.md +++ b/@commitlint/is-ignored/CHANGELOG.md @@ -3,7 +3,7 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. -# [13.1.0](https://github.com/conventional-changelog/commitlint/compare/v13.0.0...v13.1.0) (2021-07-24) +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) **Note:** Version bump only for package @commitlint/is-ignored @@ -11,29 +11,48 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) +## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) +**Note:** Version bump only for package @commitlint/is-ignored -* chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) -### BREAKING CHANGES -* minimum node version is 12 +# [19.8.0](https://github.com/conventional-changelog/commitlint/compare/v19.7.1...v19.8.0) (2025-03-07) +### Reverts +* Revert "fix: improve security validation regex in is-ignored function (#4258)" (#4314) ([b27024a](https://github.com/conventional-changelog/commitlint/commit/b27024a5ae509d1df9373ed712f2279d0bc39170)), closes [#4258](https://github.com/conventional-changelog/commitlint/issues/4258) [#4314](https://github.com/conventional-changelog/commitlint/issues/4314) -## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) -**Note:** Version bump only for package @commitlint/is-ignored +## [19.7.1](https://github.com/conventional-changelog/commitlint/compare/v19.7.0...v19.7.1) (2025-02-02) -## [12.1.2](https://github.com/conventional-changelog/commitlint/compare/v12.1.1...v12.1.2) (2021-04-29) +### Bug Fixes + +* improve security validation regex in is-ignored function ([#4258](https://github.com/conventional-changelog/commitlint/issues/4258)) ([7403d63](https://github.com/conventional-changelog/commitlint/commit/7403d6382cc2fb1f066a47d7229593eefe528561)) + + + + + +# [19.6.0](https://github.com/conventional-changelog/commitlint/compare/v19.5.0...v19.6.0) (2024-11-19) + + +### Features + +* **is-ignored:** ignore reapply commits ([#4186](https://github.com/conventional-changelog/commitlint/issues/4186)) ([49ba56d](https://github.com/conventional-changelog/commitlint/commit/49ba56d9dd4c72e918005e6ca62f110a393b8f07)) + + + + + +# [19.5.0](https://github.com/conventional-changelog/commitlint/compare/v19.4.1...v19.5.0) (2024-09-11) **Note:** Version bump only for package @commitlint/is-ignored @@ -41,18 +60,18 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) +## [19.2.2](https://github.com/conventional-changelog/commitlint/compare/v19.2.1...v19.2.2) (2024-04-14) ### Bug Fixes -* update dependency semver to v7.3.5 ([#2519](https://github.com/conventional-changelog/commitlint/issues/2519)) ([5113f22](https://github.com/conventional-changelog/commitlint/commit/5113f22c620e7b187fd558e5befa541b448ea18b)) +* **is-ignored:** ignore "amend!" commits ([#4024](https://github.com/conventional-changelog/commitlint/issues/4024)) ([90078f6](https://github.com/conventional-changelog/commitlint/commit/90078f6a58523e0bde386b9b6aa3c05e8b916653)) -# [12.1.0](https://github.com/conventional-changelog/commitlint/compare/v12.0.1...v12.1.0) (2021-03-06) +## [19.0.3](https://github.com/conventional-changelog/commitlint/compare/v19.0.2...v19.0.3) (2024-02-28) **Note:** Version bump only for package @commitlint/is-ignored @@ -60,27 +79,81 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) +# [19.0.0](https://github.com/conventional-changelog/commitlint/compare/v18.6.2...v19.0.0) (2024-02-27) -**Note:** Version bump only for package @commitlint/is-ignored +* feat!: migrate to pure ESM (#3850) ([3423735](https://github.com/conventional-changelog/commitlint/commit/342373559bdf7c783c4ef37ff05dc38a5f681159)), closes [#3850](https://github.com/conventional-changelog/commitlint/issues/3850) +### Reverts +* Revert "chore!: minimum node version v20" ([2816783](https://github.com/conventional-changelog/commitlint/commit/2816783d00e7eb967de3ac9347c2fc43dc8b94fa)) -# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) + +### BREAKING CHANGES + +* migrate to pure ESM + +* feat: migrate to pure ESM + +* chore: update snapshot + +* fix: load `parserPreset` with another `await` + +* test: migrate to vitest + +* test: remove no replacement `--runInBand` test-ci script + +* chore: fix code reviews + +* refactor(load): rewrite resolve logic + +* fix(config-nx-scopes): fix syntax error + +* feat(resolve-extends): add resolveFrom and loadParserPreset + +* feat(load): use resolveFrom and loadParserPreset from resolve-extends + +* test: include only @commitlint/* packages src in coverage + +* test: explicit import vitest utilities + +* test: remove @jest/globals from dependencies + +* fix(resolve-extends): `resolveFrom` output should be platform aware + +* test: restore NO_COLOR to test script + +* chore: fix linting issues + +* fix: should use fileURLToPath instead of pathname for Windows compatibility + +* Apply suggestions from code review + +* fix: should reuse `cli` instead call `yargs()` + +* feat(cli): set terminalWidth as wrap to avoid work break on help + +* Update .eslintrc.cjs + +* feat: migrate @commitlint/config-conventional to pure ESM + + + + + +## [18.6.1](https://github.com/conventional-changelog/commitlint/compare/v18.6.0...v18.6.1) (2024-02-13) ### Bug Fixes -* update dependency semver to v7.3.4 ([#2336](https://github.com/conventional-changelog/commitlint/issues/2336)) ([790b61a](https://github.com/conventional-changelog/commitlint/commit/790b61afa668d0eab80bbe49db58d3d5d29bb16e)) -* **is-ignored:** ignore azure devops messages ([#2230](https://github.com/conventional-changelog/commitlint/issues/2230)) ([fe29ce7](https://github.com/conventional-changelog/commitlint/commit/fe29ce76bd87d5b42048228fbf0f47cc8d5411ec)) +* update dependency semver to v7.6.0 ([#3900](https://github.com/conventional-changelog/commitlint/issues/3900)) ([df33003](https://github.com/conventional-changelog/commitlint/commit/df33003dce77bc5ff48678cddf9401dffedaeb57)) -# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) +# [18.6.0](https://github.com/conventional-changelog/commitlint/compare/v18.5.1...v18.6.0) (2024-01-25) **Note:** Version bump only for package @commitlint/is-ignored @@ -88,29 +161,31 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) +## [18.4.4](https://github.com/conventional-changelog/commitlint/compare/v18.4.3...v18.4.4) (2024-01-04) +**Note:** Version bump only for package @commitlint/is-ignored -* refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) -### BREAKING CHANGES -* remove node 8 from circle-ci checks -also remove node 13 because we do not support experimental versions +## [18.4.3](https://github.com/conventional-changelog/commitlint/compare/v18.4.2...v18.4.3) (2023-11-21) -* docs: update node v10 to latest LTS 10 version +**Note:** Version bump only for package @commitlint/is-ignored -Co-authored-by: Cedric van Putten <me@bycedric.com> -Co-authored-by: Cedric van Putten <me@bycedric.com> +## [18.4.2](https://github.com/conventional-changelog/commitlint/compare/v18.4.1...v18.4.2) (2023-11-16) +**Note:** Version bump only for package @commitlint/is-ignored -## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) + + + + +# [18.4.0](https://github.com/conventional-changelog/commitlint/compare/v18.3.0...v18.4.0) (2023-11-10) **Note:** Version bump only for package @commitlint/is-ignored @@ -118,7 +193,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) +# [18.1.0](https://github.com/conventional-changelog/commitlint/compare/v18.0.0...v18.1.0) (2023-10-25) **Note:** Version bump only for package @commitlint/is-ignored @@ -126,18 +201,37 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) +# [18.0.0](https://github.com/conventional-changelog/commitlint/compare/v17.8.1...v18.0.0) (2023-10-20) -### Bug Fixes +* chore!: minimum node version v18 (#3644) ([5b4aeaf](https://github.com/conventional-changelog/commitlint/commit/5b4aeaf4f01c2726a7bc8631a23bb34c849baad2)), closes [#3644](https://github.com/conventional-changelog/commitlint/issues/3644) -* update dependency semver to v7.3.2 ([#1369](https://github.com/conventional-changelog/commitlint/issues/1369)) ([3c09722](https://github.com/conventional-changelog/commitlint/commit/3c09722d2db85a94cd1f4bf25c6b4251b2c41bbb)) +### BREAKING CHANGES +* drop node v14 and v16 support + +* chore: remove unused types + +* docs: prepare node update and new release + +* chore!: minimum TS version v5 +* drop TS v4 support + +* ci: remove node v14/16 checks + +* chore: adjust node types to minimal supported version + +* chore!: further major versions of other deps +* upgrade conventional-changelog-conventionalcommits, conventional-commits-parser, conventional-changelog-atom, + +* docs: simplify releases and remove roadmap -## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) + + +## [17.8.1](https://github.com/conventional-changelog/commitlint/compare/v17.8.0...v17.8.1) (2023-10-20) **Note:** Version bump only for package @commitlint/is-ignored @@ -145,29 +239,31 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) +# [17.8.0](https://github.com/conventional-changelog/commitlint/compare/v17.7.2...v17.8.0) (2023-10-14) +**Note:** Version bump only for package @commitlint/is-ignored -### Bug Fixes -* update dependency semver to v7.1.3 ([#995](https://github.com/conventional-changelog/commitlint/issues/995)) ([4ee307a](https://github.com/conventional-changelog/commitlint/commit/4ee307a1f8c861ae5d8a038560d166c5d00ea8ba)) +# [17.7.0](https://github.com/conventional-changelog/commitlint/compare/v17.6.7...v17.7.0) (2023-08-09) +**Note:** Version bump only for package @commitlint/is-ignored -## [8.3.5](https://github.com/conventional-changelog/commitlint/compare/v8.3.4...v8.3.5) (2020-01-15) -### Bug Fixes -* **is-ignored:** move types to dev dependencies ([#897](https://github.com/conventional-changelog/commitlint/issues/897)) ([aabc549](https://github.com/conventional-changelog/commitlint/commit/aabc549)) +## [17.6.7](https://github.com/conventional-changelog/commitlint/compare/v17.6.6...v17.6.7) (2023-07-19) +**Note:** Version bump only for package @commitlint/is-ignored -## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) + + +## [17.6.6](https://github.com/conventional-changelog/commitlint/compare/v17.6.5...v17.6.6) (2023-06-24) **Note:** Version bump only for package @commitlint/is-ignored @@ -175,7 +271,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) +## [17.6.5](https://github.com/conventional-changelog/commitlint/compare/v17.6.4...v17.6.5) (2023-05-30) **Note:** Version bump only for package @commitlint/is-ignored @@ -183,7 +279,18 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) +## [17.6.3](https://github.com/conventional-changelog/commitlint/compare/v17.6.2...v17.6.3) (2023-05-04) + + +### Bug Fixes + +* update dependency semver to v7.5.0 ([#3604](https://github.com/conventional-changelog/commitlint/issues/3604)) ([01e35e0](https://github.com/conventional-changelog/commitlint/commit/01e35e06cf9123a0c367e0d0ac79988ec4334e6a)) + + + + + +## [17.4.4](https://github.com/conventional-changelog/commitlint/compare/v17.4.3...v17.4.4) (2023-02-17) **Note:** Version bump only for package @commitlint/is-ignored @@ -191,7 +298,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) +## [17.4.2](https://github.com/conventional-changelog/commitlint/compare/v17.4.1...v17.4.2) (2023-01-12) **Note:** Version bump only for package @commitlint/is-ignored @@ -199,144 +306,271 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) +# [17.4.0](https://github.com/conventional-changelog/commitlint/compare/v17.3.0...v17.4.0) (2023-01-04) +### Bug Fixes -### Features +- update dependency semver to v7.3.8 ([#3441](https://github.com/conventional-changelog/commitlint/issues/3441)) ([7599ad6](https://github.com/conventional-changelog/commitlint/commit/7599ad6ab622ecbb6efa9ddba7acc3bbf66db5b5)) -* config based is-ignored overrides ([#595](https://github.com/conventional-changelog/commitlint/issues/595)) ([2434d71](https://github.com/conventional-changelog/commitlint/commit/2434d71)) +# [17.2.0](https://github.com/conventional-changelog/commitlint/compare/v17.1.2...v17.2.0) (2022-10-31) +**Note:** Version bump only for package @commitlint/is-ignored +# [17.1.0](https://github.com/conventional-changelog/commitlint/compare/v17.0.3...v17.1.0) (2022-08-27) +**Note:** Version bump only for package @commitlint/is-ignored +## [17.0.3](https://github.com/conventional-changelog/commitlint/compare/v17.0.2...v17.0.3) (2022-06-25) -## [7.5.1](https://github.com/conventional-changelog/commitlint/compare/v7.5.0...v7.5.1) (2019-02-09) +**Note:** Version bump only for package @commitlint/is-ignored +# [17.0.0](https://github.com/conventional-changelog/commitlint/compare/v16.3.0...v17.0.0) (2022-05-16) -### Bug Fixes +- chore!: minimum node version v14 (#3128) ([ac5f9b4](https://github.com/conventional-changelog/commitlint/commit/ac5f9b47a9e3cd5c9d58b14da0feb426f06b1ef9)), closes [#3128](https://github.com/conventional-changelog/commitlint/issues/3128) -* **is-ignored:** ignore bitbuckets automatic merge ([#573](https://github.com/conventional-changelog/commitlint/issues/573)) ([e5bdc5c](https://github.com/conventional-changelog/commitlint/commit/e5bdc5c)) +### BREAKING CHANGES +- drop node v12 support +- chore: rename circleci windows job +node version is not defned by the name anyways (i think) +## [16.2.4](https://github.com/conventional-changelog/commitlint/compare/v16.2.3...v16.2.4) (2022-04-28) -<a name="7.5.0"></a> -# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) +### Bug Fixes + +- update dependency semver to v7.3.6 ([#3112](https://github.com/conventional-changelog/commitlint/issues/3112)) ([ad886fd](https://github.com/conventional-changelog/commitlint/commit/ad886fd7ea46bc2df346099f9d4f10defd51fe75)) +- update dependency semver to v7.3.7 ([#3119](https://github.com/conventional-changelog/commitlint/issues/3119)) ([c9c49b2](https://github.com/conventional-changelog/commitlint/commit/c9c49b2de935528d84a817de750cd65b8f765c48)) +## [16.2.1](https://github.com/conventional-changelog/commitlint/compare/v16.2.0...v16.2.1) (2022-02-13) + +**Note:** Version bump only for package @commitlint/is-ignored + +# [16.0.0](https://github.com/conventional-changelog/commitlint/compare/v15.0.0...v16.0.0) (2021-12-26) ### Bug Fixes -* replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) +- **is-ignored:** ignore merge tag commit messages ([#2920](https://github.com/conventional-changelog/commitlint/issues/2920)) ([914782a](https://github.com/conventional-changelog/commitlint/commit/914782aad70d353baf4d9fbbf9824c0211241484)) +# [15.0.0](https://github.com/conventional-changelog/commitlint/compare/v14.2.0...v15.0.0) (2021-11-17) +**Note:** Version bump only for package @commitlint/is-ignored +# [14.0.0](https://github.com/conventional-changelog/commitlint/compare/v13.2.1...v14.0.0) (2021-10-26) -<a name="7.3.1"></a> -## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) +**Note:** Version bump only for package @commitlint/is-ignored +# [13.2.0](https://github.com/conventional-changelog/commitlint/compare/v13.1.0...v13.2.0) (2021-09-28) +**Note:** Version bump only for package @commitlint/is-ignored +# [13.1.0](https://github.com/conventional-changelog/commitlint/compare/v13.0.0...v13.1.0) (2021-07-24) **Note:** Version bump only for package @commitlint/is-ignored -<a name="7.3.0"></a> -# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) +# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) +- chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) +### BREAKING CHANGES + +- minimum node version is 12 +## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) **Note:** Version bump only for package @commitlint/is-ignored -<a name="7.2.1"></a> -## [7.2.1](https://github.com/conventional-changelog/commitlint/compare/v7.2.0...v7.2.1) (2018-10-11) +## [12.1.2](https://github.com/conventional-changelog/commitlint/compare/v12.1.1...v12.1.2) (2021-04-29) +**Note:** Version bump only for package @commitlint/is-ignored +## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) +### Bug Fixes + +- update dependency semver to v7.3.5 ([#2519](https://github.com/conventional-changelog/commitlint/issues/2519)) ([5113f22](https://github.com/conventional-changelog/commitlint/commit/5113f22c620e7b187fd558e5befa541b448ea18b)) + +# [12.1.0](https://github.com/conventional-changelog/commitlint/compare/v12.0.1...v12.1.0) (2021-03-06) **Note:** Version bump only for package @commitlint/is-ignored -<a name="7.2.0"></a> -# [7.2.0](https://github.com/conventional-changelog/commitlint/compare/v7.1.2...v7.2.0) (2018-10-05) +## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) +**Note:** Version bump only for package @commitlint/is-ignored + +# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) ### Bug Fixes -* ignore merge messages with text after newline ([b32bc93](https://github.com/conventional-changelog/commitlint/commit/b32bc93)) -* use grouped regex to ignore merge commits ([#439](https://github.com/conventional-changelog/commitlint/issues/439)) ([905e9d5](https://github.com/conventional-changelog/commitlint/commit/905e9d5)) +- update dependency semver to v7.3.4 ([#2336](https://github.com/conventional-changelog/commitlint/issues/2336)) ([790b61a](https://github.com/conventional-changelog/commitlint/commit/790b61afa668d0eab80bbe49db58d3d5d29bb16e)) +- **is-ignored:** ignore azure devops messages ([#2230](https://github.com/conventional-changelog/commitlint/issues/2230)) ([fe29ce7](https://github.com/conventional-changelog/commitlint/commit/fe29ce76bd87d5b42048228fbf0f47cc8d5411ec)) + +# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) +**Note:** Version bump only for package @commitlint/is-ignored +# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) +- refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) -<a name="7.1.2"></a> -## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) +### BREAKING CHANGES +- remove node 8 from circle-ci checks +also remove node 13 because we do not support experimental versions + +- docs: update node v10 to latest LTS 10 version + +Co-authored-by: Cedric van Putten <me@bycedric.com> +Co-authored-by: Cedric van Putten <me@bycedric.com> + +## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) **Note:** Version bump only for package @commitlint/is-ignored -<a name="7.1.0"></a> -# [7.1.0](https://github.com/conventional-changelog/commitlint/compare/v7.0.1...v7.1.0) (2018-08-29) +## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) +**Note:** Version bump only for package @commitlint/is-ignored -### Features +# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) -* **wildcards:** add new wildcard patterns [#315](https://github.com/conventional-changelog/commitlint/issues/315) ([e9ea17f](https://github.com/conventional-changelog/commitlint/commit/e9ea17f)) +### Bug Fixes +- update dependency semver to v7.3.2 ([#1369](https://github.com/conventional-changelog/commitlint/issues/1369)) ([3c09722](https://github.com/conventional-changelog/commitlint/commit/3c09722d2db85a94cd1f4bf25c6b4251b2c41bbb)) +## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) +**Note:** Version bump only for package @commitlint/is-ignored -<a name="6.1.1"></a> -## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) +# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) + +### Bug Fixes +- update dependency semver to v7.1.3 ([#995](https://github.com/conventional-changelog/commitlint/issues/995)) ([4ee307a](https://github.com/conventional-changelog/commitlint/commit/4ee307a1f8c861ae5d8a038560d166c5d00ea8ba)) +## [8.3.5](https://github.com/conventional-changelog/commitlint/compare/v8.3.4...v8.3.5) (2020-01-15) + +### Bug Fixes +- **is-ignored:** move types to dev dependencies ([#897](https://github.com/conventional-changelog/commitlint/issues/897)) ([aabc549](https://github.com/conventional-changelog/commitlint/commit/aabc549)) + +## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) **Note:** Version bump only for package @commitlint/is-ignored -<a name="6.1.0"></a> -# [6.1.0](https://github.com/conventional-changelog/commitlint/compare/v6.0.5...v6.1.0) (2018-02-03) +# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) +**Note:** Version bump only for package @commitlint/is-ignored + +# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) +**Note:** Version bump only for package @commitlint/is-ignored +# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) **Note:** Version bump only for package @commitlint/is-ignored -<a name="6.0.4"></a> -## [6.0.4](https://github.com/conventional-changelog/commitlint/compare/v6.0.3...v6.0.4) (2018-01-31) +# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) + +### Features + +- config based is-ignored overrides ([#595](https://github.com/conventional-changelog/commitlint/issues/595)) ([2434d71](https://github.com/conventional-changelog/commitlint/commit/2434d71)) + +## [7.5.1](https://github.com/conventional-changelog/commitlint/compare/v7.5.0...v7.5.1) (2019-02-09) +### Bug Fixes +- **is-ignored:** ignore bitbuckets automatic merge ([#573](https://github.com/conventional-changelog/commitlint/issues/573)) ([e5bdc5c](https://github.com/conventional-changelog/commitlint/commit/e5bdc5c)) +<a name="7.5.0"></a> + +# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) + +### Bug Fixes + +- replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) + +<a name="7.3.1"></a> + +## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) **Note:** Version bump only for package @commitlint/is-ignored -<a name="6.0.3"></a> -## [6.0.3](https://github.com/conventional-changelog/commitlint/compare/v6.0.2...v6.0.3) (2018-01-31) +<a name="7.3.0"></a> +# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) + +**Note:** Version bump only for package @commitlint/is-ignored + +<a name="7.2.1"></a> + +## [7.2.1](https://github.com/conventional-changelog/commitlint/compare/v7.2.0...v7.2.1) (2018-10-11) + +**Note:** Version bump only for package @commitlint/is-ignored + +<a name="7.2.0"></a> + +# [7.2.0](https://github.com/conventional-changelog/commitlint/compare/v7.1.2...v7.2.0) (2018-10-05) ### Bug Fixes -* update dependency semver to v5.5.0 ([#236](https://github.com/conventional-changelog/commitlint/issues/236)) ([6c52bd9](https://github.com/conventional-changelog/commitlint/commit/6c52bd9)) +- ignore merge messages with text after newline ([b32bc93](https://github.com/conventional-changelog/commitlint/commit/b32bc93)) +- use grouped regex to ignore merge commits ([#439](https://github.com/conventional-changelog/commitlint/issues/439)) ([905e9d5](https://github.com/conventional-changelog/commitlint/commit/905e9d5)) +<a name="7.1.2"></a> +## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) +**Note:** Version bump only for package @commitlint/is-ignored -<a name="6.0.2"></a> -## [6.0.2](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.2) (2018-01-12) +<a name="7.1.0"></a> + +# [7.1.0](https://github.com/conventional-changelog/commitlint/compare/v7.0.1...v7.1.0) (2018-08-29) + +### Features +- **wildcards:** add new wildcard patterns [#315](https://github.com/conventional-changelog/commitlint/issues/315) ([e9ea17f](https://github.com/conventional-changelog/commitlint/commit/e9ea17f)) + +<a name="6.1.1"></a> + +## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) + +**Note:** Version bump only for package @commitlint/is-ignored + +<a name="6.1.0"></a> + +# [6.1.0](https://github.com/conventional-changelog/commitlint/compare/v6.0.5...v6.1.0) (2018-02-03) + +**Note:** Version bump only for package @commitlint/is-ignored + +<a name="6.0.4"></a> + +## [6.0.4](https://github.com/conventional-changelog/commitlint/compare/v6.0.3...v6.0.4) (2018-01-31) + +**Note:** Version bump only for package @commitlint/is-ignored + +<a name="6.0.3"></a> + +## [6.0.3](https://github.com/conventional-changelog/commitlint/compare/v6.0.2...v6.0.3) (2018-01-31) ### Bug Fixes -* ignore branch merges with multiple newlines ([#227](https://github.com/conventional-changelog/commitlint/issues/227)) ([1f0c5ca](https://github.com/conventional-changelog/commitlint/commit/1f0c5ca)) +- update dependency semver to v5.5.0 ([#236](https://github.com/conventional-changelog/commitlint/issues/236)) ([6c52bd9](https://github.com/conventional-changelog/commitlint/commit/6c52bd9)) + +<a name="6.0.2"></a> +## [6.0.2](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.2) (2018-01-12) +### Bug Fixes +- ignore branch merges with multiple newlines ([#227](https://github.com/conventional-changelog/commitlint/issues/227)) ([1f0c5ca](https://github.com/conventional-changelog/commitlint/commit/1f0c5ca)) <a name="6.0.0"></a> -# [6.0.0](https://github.com/conventional-changelog/commitlint/compare/v5.2.6...v6.0.0) (2018-01-09) +# [6.0.0](https://github.com/conventional-changelog/commitlint/compare/v5.2.6...v6.0.0) (2018-01-09) ### Bug Fixes -* ignore branch merges with newlines ([#214](https://github.com/conventional-changelog/commitlint/issues/214)) ([c94c4dc](https://github.com/conventional-changelog/commitlint/commit/c94c4dc)) +- ignore branch merges with newlines ([#214](https://github.com/conventional-changelog/commitlint/issues/214)) ([c94c4dc](https://github.com/conventional-changelog/commitlint/commit/c94c4dc)) diff --git a/@commitlint/is-ignored/package.json b/@commitlint/is-ignored/package.json index aa33ccaaef..baccfbcc7f 100644 --- a/@commitlint/is-ignored/package.json +++ b/@commitlint/is-ignored/package.json @@ -1,6 +1,7 @@ { "name": "@commitlint/is-ignored", - "version": "13.1.0", + "type": "module", + "version": "20.0.0", "description": "Lint your commit messages", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -12,16 +13,17 @@ "pkg": "pkg-check" }, "engines": { - "node": ">=v12" + "node": ">=v18" }, "repository": { "type": "git", - "url": "https://github.com/conventional-changelog/commitlint.git" + "url": "https://github.com/conventional-changelog/commitlint.git", + "directory": "@commitlint/is-ignored" }, "bugs": { "url": "https://github.com/conventional-changelog/commitlint/issues" }, - "homepage": "https://github.com/conventional-changelog/commitlint#readme", + "homepage": "https://commitlint.js.org/", "keywords": [ "conventional-changelog", "commitlint", @@ -34,14 +36,14 @@ }, "license": "MIT", "devDependencies": { - "@commitlint/parse": "^13.1.0", - "@commitlint/test": "^13.0.0", - "@commitlint/utils": "^13.0.0", - "@types/semver": "7.3.8" + "@commitlint/parse": "^20.0.0", + "@commitlint/test": "^20.0.0", + "@commitlint/utils": "^20.0.0", + "@types/semver": "^7.5.7" }, "dependencies": { - "@commitlint/types": "^13.1.0", - "semver": "7.3.5" + "@commitlint/types": "^20.0.0", + "semver": "^7.6.0" }, - "gitHead": "70f7f4688b51774e7ac5e40e896cdaa3f132b2bc" + "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" } diff --git a/@commitlint/is-ignored/src/defaults.ts b/@commitlint/is-ignored/src/defaults.ts index e8acc4448e..02fbcd6b46 100644 --- a/@commitlint/is-ignored/src/defaults.ts +++ b/@commitlint/is-ignored/src/defaults.ts @@ -1,14 +1,14 @@ -import * as semver from 'semver'; -import {Matcher} from '@commitlint/types'; +import semver from "semver"; +import { Matcher } from "@commitlint/types"; const isSemver = (c: string): boolean => { - const firstLine = c.split('\n').shift(); + const firstLine = c.split("\n").shift(); - if (typeof firstLine !== 'string') { + if (typeof firstLine !== "string") { return false; } - const stripped = firstLine.replace(/^chore(\([^)]+\))?:/, '').trim(); + const stripped = firstLine.replace(/^chore(\([^)]+\))?:/, "").trim(); return semver.valid(stripped) !== null; }; @@ -16,10 +16,12 @@ const test = (r: RegExp): ((c: string) => boolean) => r.test.bind(r); export const wildcards: Matcher[] = [ test( - /^((Merge pull request)|(Merge (.*?) into (.*?)|(Merge branch (.*?)))(?:\r?\n)*$)/m + /^((Merge pull request)|(Merge (.*?) into (.*?)|(Merge branch (.*?)))(?:\r?\n)*$)/m, ), + test(/^(Merge tag (.*?))(?:\r?\n)*$/m), test(/^(R|r)evert (.*)/), - test(/^(fixup|squash)!/), + test(/^(R|r)eapply (.*)/), + test(/^(amend|fixup|squash)!/), isSemver, test(/^(Merged (.*?)(in|into) (.*)|Merged PR (.*): (.*))/), test(/^Merge remote-tracking branch(\s*)(.*)/), diff --git a/@commitlint/is-ignored/src/index.ts b/@commitlint/is-ignored/src/index.ts index 9d279861bd..1e53818df3 100644 --- a/@commitlint/is-ignored/src/index.ts +++ b/@commitlint/is-ignored/src/index.ts @@ -1,2 +1,2 @@ -export * from './is-ignored'; -export {default} from './is-ignored'; +export * from "./is-ignored.js"; +export { default } from "./is-ignored.js"; diff --git a/@commitlint/is-ignored/src/is-ignored.test.ts b/@commitlint/is-ignored/src/is-ignored.test.ts index 08911a615b..07e25d1267 100644 --- a/@commitlint/is-ignored/src/is-ignored.test.ts +++ b/@commitlint/is-ignored/src/is-ignored.test.ts @@ -1,26 +1,28 @@ -import isIgnored from './is-ignored'; +import { test, expect } from "vitest"; + +import isIgnored from "./is-ignored.js"; const VERSION_MESSAGES = [ - '0.0.1', - '0.1.0', - '1.0.0', - '0.0.1-alpha', - '0.0.1-some-crazy-tag', - '0.0.1-0', - '0.0.1-999', - '0.0.1-alpha.0', - '0.0.1-alpha.999', - '0.0.1-some-crazy-tag.0', - '0.0.1-some-crazy-tag.999', - '0.0.1-1e69d54', - 'v0.0.1', - ' v3.0.0', + "0.0.1", + "0.1.0", + "1.0.0", + "0.0.1-alpha", + "0.0.1-some-crazy-tag", + "0.0.1-0", + "0.0.1-999", + "0.0.1-alpha.0", + "0.0.1-alpha.999", + "0.0.1-some-crazy-tag.0", + "0.0.1-some-crazy-tag.999", + "0.0.1-1e69d54", + "v0.0.1", + " v3.0.0", ]; const AMENDMENTS = [ - 'Signed-off-by: Developer <example@example.com>', - 'Change-Id: I895114872a515a269487a683124b63303818e19c', - 'Signed-off-by: Developer <example@example.com>\nChange-Id: I895114872a515a269487a683124b63303818e19c', + "Signed-off-by: Developer <example@example.com>", + "Change-Id: I895114872a515a269487a683124b63303818e19c", + "Signed-off-by: Developer <example@example.com>\nChange-Id: I895114872a515a269487a683124b63303818e19c", ]; const AMENDED_VERSION_MESSAGES = VERSION_MESSAGES.reduce<string[]>( @@ -30,148 +32,176 @@ const AMENDED_VERSION_MESSAGES = VERSION_MESSAGES.reduce<string[]>( ...AMENDMENTS.map((amendment) => `${message}\n\n${amendment}`), ]; }, - [] + [], ); -test('should return false when called without arguments', () => { +test("should return false when called without arguments", () => { expect(isIgnored()).toBe(false); }); -test('should return false when called with empty string', () => { - expect(isIgnored('')).toBe(false); +test("should return false when called with empty string", () => { + expect(isIgnored("")).toBe(false); }); -test('should return false for normal commit', () => { - expect(isIgnored('initial commit')).toBe(false); +test("should return false for normal commit", () => { + expect(isIgnored("initial commit")).toBe(false); }); -test('should return true for branch merges', () => { +test("should return true for branch merges", () => { expect(isIgnored("Merge branch 'iss53'")).toBe(true); }); -test('should return true for branch merges with newline characters', () => { +test("should return true for branch merges with newline characters", () => { expect(isIgnored("Merge branch 'ctrom-YarnBuild'\n")).toBe(true); expect(isIgnored("Merge branch 'ctrom-YarnBuild'\r\n")).toBe(true); }); -test('should return true for branch merges with multiple newline characters', () => { +test("should return true for branch merges with multiple newline characters", () => { expect(isIgnored("Merge branch 'ctrom-YarnBuild'\n\n\n")).toBe(true); expect(isIgnored("Merge branch 'ctrom-YarnBuild'\r\n\r\n\r\n")).toBe(true); }); -test('should return true for merged PRs', () => { - expect(isIgnored('Merge pull request #369')).toBe(true); +test("should return true for merged PRs", () => { + expect(isIgnored("Merge pull request #369")).toBe(true); }); -test('should return true for branch merges with newline characters and more characters after it', () => { +test("should return true for branch merges with newline characters and more characters after it", () => { expect(isIgnored("Merge branch 'ctrom-YarnBuild'\n ")).toBe(true); expect(isIgnored("Merge branch 'ctrom-YarnBuild'\r\n # some comment")).toBe( - true + true, ); }); -test('should return true for revert commits', () => { +test("should return true for tag merges", () => { + expect(isIgnored("Merge tag '1.1.1'")).toBe(true); + expect(isIgnored("Merge tag 'a tag'")).toBe(true); +}); + +test("should return true for tag merges with newline characters", () => { + expect(isIgnored("Merge tag '1.1.1'\n")).toBe(true); + expect(isIgnored("Merge tag '1.1.1'\r\n")).toBe(true); +}); + +test("should return true for tag merges with multiple newline characters", () => { + expect(isIgnored("Merge tag '1.1.1'\n\n\n")).toBe(true); + expect(isIgnored("Merge tag '1.1.1'\r\n\r\n\r\n")).toBe(true); +}); + +test("should return true for tag merges with newline characters and more characters after it", () => { + expect(isIgnored("Merge tag '1.1.1'\n ")).toBe(true); + expect(isIgnored("Merge tag '1.1.1'\r\n # some comment")).toBe(true); +}); + +test("should return true for revert commits", () => { expect( isIgnored( - `Revert "docs: add recipe for linting of all commits in a PR (#36)"\n\nThis reverts commit 1e69d542c16c2a32acfd139e32efa07a45f19111.` - ) + `Revert "docs: add recipe for linting of all commits in a PR (#36)"\n\nThis reverts commit 1e69d542c16c2a32acfd139e32efa07a45f19111.`, + ), ).toBe(true); expect( isIgnored( - `revert "docs: add recipe for linting of all commits in a PR (#36)"\n\nThis reverts commit 1e69d542c16c2a32acfd139e32efa07a45f19111.` - ) + `revert "docs: add recipe for linting of all commits in a PR (#36)"\n\nThis reverts commit 1e69d542c16c2a32acfd139e32efa07a45f19111.`, + ), ).toBe(true); }); -test('should ignore npm semver commits', () => { +test("should ignore npm semver commits", () => { VERSION_MESSAGES.forEach((message) => expect(isIgnored(message)).toBe(true)); }); -test('should ignore npm semver commits with chore', () => { +test("should ignore npm semver commits with chore", () => { VERSION_MESSAGES.forEach((message) => - expect(isIgnored(`chore: ${message}`)).toBe(true) + expect(isIgnored(`chore: ${message}`)).toBe(true), ); VERSION_MESSAGES.forEach((message) => - expect(isIgnored(`chore(release): ${message}`)).toBe(true) + expect(isIgnored(`chore(release): ${message}`)).toBe(true), ); }); -test('should ignore npm semver commits with footers', () => { +test("should ignore npm semver commits with footers", () => { AMENDED_VERSION_MESSAGES.forEach((message) => - expect(isIgnored(message)).toBe(true) + expect(isIgnored(message)).toBe(true), ); }); -test('should return true fixup commits', () => { - expect(isIgnored('fixup! initial commit')).toBe(true); +test("should return true amend commits", () => { + expect(isIgnored("amend! initial commit")).toBe(true); +}); + +test("should return true fixup commits", () => { + expect(isIgnored("fixup! initial commit")).toBe(true); }); -test('should return true squash commits', () => { - expect(isIgnored('squash! initial commit')).toBe(true); +test("should return true squash commits", () => { + expect(isIgnored("squash! initial commit")).toBe(true); }); -test('should return true for bitbucket merge commits', () => { +test("should return true for bitbucket merge commits", () => { expect( - isIgnored('Merged in feature/facebook-friends-sync (pull request #8)') + isIgnored("Merged in feature/facebook-friends-sync (pull request #8)"), ).toBe(true); expect( - isIgnored('Merged develop into feature/component-form-select-card') + isIgnored("Merged develop into feature/component-form-select-card"), ).toBe(true); - expect(isIgnored('Automatic merge')).toBe(true); + expect(isIgnored("Automatic merge")).toBe(true); +}); + +test("should return true for automatic merge commits", () => { + expect(isIgnored("Auto-merged develop into master")).toBe(true); + expect(isIgnored("Merge remote-tracking branch")).toBe(true); }); -test('should return true for automatic merge commits', () => { - expect(isIgnored('Auto-merged develop into master')).toBe(true); - expect(isIgnored('Merge remote-tracking branch')).toBe(true); +test("should return true for azure devops merge commits", () => { + expect(isIgnored("Merged PR 123: Description here")).toBe(true); }); -test('should return true for azure devops merge commits', () => { - expect(isIgnored('Merged PR 123: Description here')).toBe(true); +test("should return false for commits containing, but not starting, with merge branch", () => { + expect(isIgnored("foo bar Merge branch xxx")).toBe(false); }); -test('should return false for commits containing, but not starting, with merge branch', () => { - expect(isIgnored('foo bar Merge branch xxx')).toBe(false); +test("should return false for commits containing, but not starting, with merge tag", () => { + expect(isIgnored("foo bar Merge tag '1.1.1'")).toBe(false); }); -test('should return false for ignored message if defaults is false', () => { +test("should return false for ignored message if defaults is false", () => { expect( - isIgnored('Auto-merged develop into master', { + isIgnored("Auto-merged develop into master", { defaults: false, - }) + }), ).toBe(false); }); -test('should return false for ignored message if custom ignores and defaults is false', () => { +test("should return false for ignored message if custom ignores and defaults is false", () => { expect( - isIgnored('Auto-merged develop into master', { + isIgnored("Auto-merged develop into master", { defaults: false, - }) + }), ).toBe(false); }); -test('should throw error if ignores is not an array', () => { - const ignoredString = 'this should be ignored'; +test("should throw error if ignores is not an array", () => { + const ignoredString = "this should be ignored"; expect(() => { isIgnored(ignoredString, { - ignores: 'throws error', + ignores: "throws error", } as any); - }).toThrow('ignores must be of type array, received '); + }).toThrow("ignores must be of type array, received "); }); -test('should return true for custom ignores as function', () => { - const ignoredString = 'this should be ignored'; +test("should return true for custom ignores as function", () => { + const ignoredString = "this should be ignored"; expect( isIgnored(ignoredString, { ignores: [(c) => c === ignoredString], - }) + }), ).toBe(true); }); -test('should throw error if any element of ignores is not a function', () => { - const ignoredString = 'this should be ignored'; +test("should throw error if any element of ignores is not a function", () => { + const ignoredString = "this should be ignored"; expect(() => { isIgnored(ignoredString, { - ignores: ['throws error'], + ignores: ["throws error"], } as any); - }).toThrow('ignores must be array of type function, received items of type:'); + }).toThrow("ignores must be array of type function, received items of type:"); }); diff --git a/@commitlint/is-ignored/src/is-ignored.ts b/@commitlint/is-ignored/src/is-ignored.ts index 716b45b9d0..98faa4c38f 100644 --- a/@commitlint/is-ignored/src/is-ignored.ts +++ b/@commitlint/is-ignored/src/is-ignored.ts @@ -1,25 +1,25 @@ -import {wildcards} from './defaults'; -import {IsIgnoredOptions} from '@commitlint/types'; +import { wildcards } from "./defaults.js"; +import { IsIgnoredOptions } from "@commitlint/types"; export default function isIgnored( - commit: string = '', - opts: IsIgnoredOptions = {} + commit: string = "", + opts: IsIgnoredOptions = {}, ): boolean { - const ignores = typeof opts.ignores === 'undefined' ? [] : opts.ignores; + const ignores = typeof opts.ignores === "undefined" ? [] : opts.ignores; if (!Array.isArray(ignores)) { throw new Error( - `ignores must be of type array, received ${ignores} of type ${typeof ignores}` + `ignores must be of type array, received ${ignores} of type ${typeof ignores}`, ); } - const invalids = ignores.filter((c) => typeof c !== 'function'); + const invalids = ignores.filter((c) => typeof c !== "function"); if (invalids.length > 0) { throw new Error( `ignores must be array of type function, received items of type: ${invalids .map((i) => typeof i) - .join(', ')}` + .join(", ")}`, ); } diff --git a/@commitlint/is-ignored/tsconfig.json b/@commitlint/is-ignored/tsconfig.json index f3092129e3..0cc393e13d 100644 --- a/@commitlint/is-ignored/tsconfig.json +++ b/@commitlint/is-ignored/tsconfig.json @@ -7,5 +7,5 @@ }, "include": ["./src/**/*.ts"], "exclude": ["./src/**/*.test.ts", "./lib/**/*"], - "references": [{"path": "../types"}] + "references": [{ "path": "../types" }] } diff --git a/@commitlint/lint/CHANGELOG.md b/@commitlint/lint/CHANGELOG.md index dc455abef5..4b349f746a 100644 --- a/@commitlint/lint/CHANGELOG.md +++ b/@commitlint/lint/CHANGELOG.md @@ -3,7 +3,7 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. -# [13.1.0](https://github.com/conventional-changelog/commitlint/compare/v13.0.0...v13.1.0) (2021-07-24) +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) **Note:** Version bump only for package @commitlint/lint @@ -11,21 +11,145 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) +## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) + +**Note:** Version bump only for package @commitlint/lint + + + + + +# [19.8.0](https://github.com/conventional-changelog/commitlint/compare/v19.7.1...v19.8.0) (2025-03-07) + + +### Performance Improvements + +* use `node:` prefix to bypass require.cache call for builtins ([#4302](https://github.com/conventional-changelog/commitlint/issues/4302)) ([0cd8f41](https://github.com/conventional-changelog/commitlint/commit/0cd8f410573fe11383f788b1ceb7e0946143591d)) + + + + + +## [19.7.1](https://github.com/conventional-changelog/commitlint/compare/v19.7.0...v19.7.1) (2025-02-02) + +**Note:** Version bump only for package @commitlint/lint -* chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) + + + +# [19.6.0](https://github.com/conventional-changelog/commitlint/compare/v19.5.0...v19.6.0) (2024-11-19) + +**Note:** Version bump only for package @commitlint/lint + + + + + +# [19.5.0](https://github.com/conventional-changelog/commitlint/compare/v19.4.1...v19.5.0) (2024-09-11) + +**Note:** Version bump only for package @commitlint/lint + + + + + +## [19.4.1](https://github.com/conventional-changelog/commitlint/compare/v19.4.0...v19.4.1) (2024-08-28) + +**Note:** Version bump only for package @commitlint/lint + + + + + +## [19.2.2](https://github.com/conventional-changelog/commitlint/compare/v19.2.1...v19.2.2) (2024-04-14) + +**Note:** Version bump only for package @commitlint/lint + + + + + +# [19.1.0](https://github.com/conventional-changelog/commitlint/compare/v19.0.3...v19.1.0) (2024-03-12) + +**Note:** Version bump only for package @commitlint/lint + + + + + +## [19.0.3](https://github.com/conventional-changelog/commitlint/compare/v19.0.2...v19.0.3) (2024-02-28) + +**Note:** Version bump only for package @commitlint/lint + + + + + +# [19.0.0](https://github.com/conventional-changelog/commitlint/compare/v18.6.2...v19.0.0) (2024-02-27) + + +* feat!: migrate to pure ESM (#3850) ([3423735](https://github.com/conventional-changelog/commitlint/commit/342373559bdf7c783c4ef37ff05dc38a5f681159)), closes [#3850](https://github.com/conventional-changelog/commitlint/issues/3850) + + +### Reverts + +* Revert "chore!: minimum node version v20" ([2816783](https://github.com/conventional-changelog/commitlint/commit/2816783d00e7eb967de3ac9347c2fc43dc8b94fa)) ### BREAKING CHANGES -* minimum node version is 12 +* migrate to pure ESM +* feat: migrate to pure ESM +* chore: update snapshot +* fix: load `parserPreset` with another `await` +* test: migrate to vitest -## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) +* test: remove no replacement `--runInBand` test-ci script + +* chore: fix code reviews + +* refactor(load): rewrite resolve logic + +* fix(config-nx-scopes): fix syntax error + +* feat(resolve-extends): add resolveFrom and loadParserPreset + +* feat(load): use resolveFrom and loadParserPreset from resolve-extends + +* test: include only @commitlint/* packages src in coverage + +* test: explicit import vitest utilities + +* test: remove @jest/globals from dependencies + +* fix(resolve-extends): `resolveFrom` output should be platform aware + +* test: restore NO_COLOR to test script + +* chore: fix linting issues + +* fix: should use fileURLToPath instead of pathname for Windows compatibility + +* Apply suggestions from code review + +* fix: should reuse `cli` instead call `yargs()` + +* feat(cli): set terminalWidth as wrap to avoid work break on help + +* Update .eslintrc.cjs + +* feat: migrate @commitlint/config-conventional to pure ESM + + + + + +## [18.6.1](https://github.com/conventional-changelog/commitlint/compare/v18.6.0...v18.6.1) (2024-02-13) **Note:** Version bump only for package @commitlint/lint @@ -33,7 +157,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.1.2](https://github.com/conventional-changelog/commitlint/compare/v12.1.1...v12.1.2) (2021-04-29) +# [18.6.0](https://github.com/conventional-changelog/commitlint/compare/v18.5.1...v18.6.0) (2024-01-25) **Note:** Version bump only for package @commitlint/lint @@ -41,7 +165,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) +# [18.5.0](https://github.com/conventional-changelog/commitlint/compare/v18.4.4...v18.5.0) (2024-01-22) **Note:** Version bump only for package @commitlint/lint @@ -49,7 +173,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [12.1.0](https://github.com/conventional-changelog/commitlint/compare/v12.0.1...v12.1.0) (2021-03-06) +## [18.4.4](https://github.com/conventional-changelog/commitlint/compare/v18.4.3...v18.4.4) (2024-01-04) **Note:** Version bump only for package @commitlint/lint @@ -57,7 +181,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) +## [18.4.3](https://github.com/conventional-changelog/commitlint/compare/v18.4.2...v18.4.3) (2023-11-21) **Note:** Version bump only for package @commitlint/lint @@ -65,7 +189,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) +## [18.4.2](https://github.com/conventional-changelog/commitlint/compare/v18.4.1...v18.4.2) (2023-11-16) **Note:** Version bump only for package @commitlint/lint @@ -73,7 +197,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) +# [18.4.0](https://github.com/conventional-changelog/commitlint/compare/v18.3.0...v18.4.0) (2023-11-10) **Note:** Version bump only for package @commitlint/lint @@ -81,29 +205,45 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) +# [18.1.0](https://github.com/conventional-changelog/commitlint/compare/v18.0.0...v18.1.0) (2023-10-25) + +**Note:** Version bump only for package @commitlint/lint -* refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) + + + +# [18.0.0](https://github.com/conventional-changelog/commitlint/compare/v17.8.1...v18.0.0) (2023-10-20) + + +* chore!: minimum node version v18 (#3644) ([5b4aeaf](https://github.com/conventional-changelog/commitlint/commit/5b4aeaf4f01c2726a7bc8631a23bb34c849baad2)), closes [#3644](https://github.com/conventional-changelog/commitlint/issues/3644) ### BREAKING CHANGES -* remove node 8 from circle-ci checks +* drop node v14 and v16 support -also remove node 13 because we do not support experimental versions +* chore: remove unused types -* docs: update node v10 to latest LTS 10 version +* docs: prepare node update and new release -Co-authored-by: Cedric van Putten <me@bycedric.com> +* chore!: minimum TS version v5 +* drop TS v4 support -Co-authored-by: Cedric van Putten <me@bycedric.com> +* ci: remove node v14/16 checks +* chore: adjust node types to minimal supported version +* chore!: further major versions of other deps +* upgrade conventional-changelog-conventionalcommits, conventional-commits-parser, conventional-changelog-atom, +* docs: simplify releases and remove roadmap -## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) + + + +## [17.8.1](https://github.com/conventional-changelog/commitlint/compare/v17.8.0...v17.8.1) (2023-10-20) **Note:** Version bump only for package @commitlint/lint @@ -111,7 +251,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) +# [17.8.0](https://github.com/conventional-changelog/commitlint/compare/v17.7.2...v17.8.0) (2023-10-14) **Note:** Version bump only for package @commitlint/lint @@ -119,7 +259,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) +# [17.7.0](https://github.com/conventional-changelog/commitlint/compare/v17.6.7...v17.7.0) (2023-08-09) **Note:** Version bump only for package @commitlint/lint @@ -127,7 +267,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) +## [17.6.7](https://github.com/conventional-changelog/commitlint/compare/v17.6.6...v17.6.7) (2023-07-19) **Note:** Version bump only for package @commitlint/lint @@ -135,24 +275,23 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) +## [17.6.6](https://github.com/conventional-changelog/commitlint/compare/v17.6.5...v17.6.6) (2023-06-24) +**Note:** Version bump only for package @commitlint/lint -### Bug Fixes -* [#840](https://github.com/conventional-changelog/commitlint/issues/840) add caret to lodash versions ([#843](https://github.com/conventional-changelog/commitlint/issues/843)) ([ffc0bac](https://github.com/conventional-changelog/commitlint/commit/ffc0bac26993acb2ab6a8fa51065f93c92b0d644)) -* ignore empty commit messages [#615](https://github.com/conventional-changelog/commitlint/issues/615) ([#676](https://github.com/conventional-changelog/commitlint/issues/676)) ([c3eb1a7](https://github.com/conventional-changelog/commitlint/commit/c3eb1a76e08213d7ce1f200e35f8d5d6de18982a)) -### Features -* add async promise based rules methods into lint ([#976](https://github.com/conventional-changelog/commitlint/issues/976)) ([4443062](https://github.com/conventional-changelog/commitlint/commit/444306249b8a3d04524538f61edca8f6cc10d75f)) +## [17.6.5](https://github.com/conventional-changelog/commitlint/compare/v17.6.4...v17.6.5) (2023-05-30) +**Note:** Version bump only for package @commitlint/lint -## [8.3.5](https://github.com/conventional-changelog/commitlint/compare/v8.3.4...v8.3.5) (2020-01-15) + +## [17.6.3](https://github.com/conventional-changelog/commitlint/compare/v17.6.2...v17.6.3) (2023-05-04) **Note:** Version bump only for package @commitlint/lint @@ -160,7 +299,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) +## [17.6.1](https://github.com/conventional-changelog/commitlint/compare/v17.6.0...v17.6.1) (2023-04-14) **Note:** Version bump only for package @commitlint/lint @@ -168,7 +307,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) +# [17.6.0](https://github.com/conventional-changelog/commitlint/compare/v17.5.1...v17.6.0) (2023-04-13) **Note:** Version bump only for package @commitlint/lint @@ -176,7 +315,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) +## [17.4.4](https://github.com/conventional-changelog/commitlint/compare/v17.4.3...v17.4.4) (2023-02-17) **Note:** Version bump only for package @commitlint/lint @@ -184,7 +323,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) +## [17.4.3](https://github.com/conventional-changelog/commitlint/compare/v17.4.2...v17.4.3) (2023-02-13) **Note:** Version bump only for package @commitlint/lint @@ -192,132 +331,264 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) +## [17.4.2](https://github.com/conventional-changelog/commitlint/compare/v17.4.1...v17.4.2) (2023-01-12) +**Note:** Version bump only for package @commitlint/lint -### Features -* adds support for plugins ([#228](https://github.com/conventional-changelog/commitlint/issues/228)) ([#588](https://github.com/conventional-changelog/commitlint/issues/588)) ([cea4564](https://github.com/conventional-changelog/commitlint/commit/cea4564)) -* config based is-ignored overrides ([#595](https://github.com/conventional-changelog/commitlint/issues/595)) ([2434d71](https://github.com/conventional-changelog/commitlint/commit/2434d71)) +# [17.4.0](https://github.com/conventional-changelog/commitlint/compare/v17.3.0...v17.4.0) (2023-01-04) +**Note:** Version bump only for package @commitlint/lint -## [7.5.2](https://github.com/conventional-changelog/commitlint/compare/v7.5.1...v7.5.2) (2019-02-11) +# [17.3.0](https://github.com/conventional-changelog/commitlint/compare/v17.2.1...v17.3.0) (2022-11-21) **Note:** Version bump only for package @commitlint/lint +# [17.2.0](https://github.com/conventional-changelog/commitlint/compare/v17.1.2...v17.2.0) (2022-10-31) +**Note:** Version bump only for package @commitlint/lint +# [17.1.0](https://github.com/conventional-changelog/commitlint/compare/v17.0.3...v17.1.0) (2022-08-27) +**Note:** Version bump only for package @commitlint/lint -## [7.5.1](https://github.com/conventional-changelog/commitlint/compare/v7.5.0...v7.5.1) (2019-02-09) +## [17.0.3](https://github.com/conventional-changelog/commitlint/compare/v17.0.2...v17.0.3) (2022-06-25) **Note:** Version bump only for package @commitlint/lint +# [17.0.0](https://github.com/conventional-changelog/commitlint/compare/v16.3.0...v17.0.0) (2022-05-16) +- chore!: minimum node version v14 (#3128) ([ac5f9b4](https://github.com/conventional-changelog/commitlint/commit/ac5f9b47a9e3cd5c9d58b14da0feb426f06b1ef9)), closes [#3128](https://github.com/conventional-changelog/commitlint/issues/3128) +### BREAKING CHANGES +- drop node v12 support -<a name="7.5.0"></a> -# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) +- chore: rename circleci windows job +node version is not defned by the name anyways (i think) -### Bug Fixes +## [16.2.4](https://github.com/conventional-changelog/commitlint/compare/v16.2.3...v16.2.4) (2022-04-28) -* all broken website references ([#564](https://github.com/conventional-changelog/commitlint/issues/564)) ([82eeb5a](https://github.com/conventional-changelog/commitlint/commit/82eeb5a)) -* replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) -* replace all website references with conventional changelog ([#563](https://github.com/conventional-changelog/commitlint/issues/563)) ([6b86fb1](https://github.com/conventional-changelog/commitlint/commit/6b86fb1)) +**Note:** Version bump only for package @commitlint/lint +## [16.2.1](https://github.com/conventional-changelog/commitlint/compare/v16.2.0...v16.2.1) (2022-02-13) +**Note:** Version bump only for package @commitlint/lint +# [16.0.0](https://github.com/conventional-changelog/commitlint/compare/v15.0.0...v16.0.0) (2021-12-26) -<a name="7.4.0"></a> -# [7.4.0](https://github.com/conventional-changelog/commitlint/compare/v7.3.2...v7.4.0) (2019-01-27) +**Note:** Version bump only for package @commitlint/lint +# [15.0.0](https://github.com/conventional-changelog/commitlint/compare/v14.2.0...v15.0.0) (2021-11-17) +**Note:** Version bump only for package @commitlint/lint +# [14.1.0](https://github.com/conventional-changelog/commitlint/compare/v14.0.0...v14.1.0) (2021-11-01) **Note:** Version bump only for package @commitlint/lint -<a name="7.3.2"></a> -## [7.3.2](https://github.com/conventional-changelog/commitlint/compare/v7.3.1...v7.3.2) (2019-01-15) +# [14.0.0](https://github.com/conventional-changelog/commitlint/compare/v13.2.1...v14.0.0) (2021-10-26) +**Note:** Version bump only for package @commitlint/lint -### Bug Fixes +# [13.2.0](https://github.com/conventional-changelog/commitlint/compare/v13.1.0...v13.2.0) (2021-09-28) -* move loadsh to dependencies ([1bb66a4](https://github.com/conventional-changelog/commitlint/commit/1bb66a4)) +**Note:** Version bump only for package @commitlint/lint +# [13.1.0](https://github.com/conventional-changelog/commitlint/compare/v13.0.0...v13.1.0) (2021-07-24) +**Note:** Version bump only for package @commitlint/lint +# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) -<a name="7.3.1"></a> -## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) +- chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) +### BREAKING CHANGES +- minimum node version is 12 +## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) **Note:** Version bump only for package @commitlint/lint -<a name="7.3.0"></a> -# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) +## [12.1.2](https://github.com/conventional-changelog/commitlint/compare/v12.1.1...v12.1.2) (2021-04-29) +**Note:** Version bump only for package @commitlint/lint -### Bug Fixes +## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) -* update to security-patched dependency versions ([97c033b](https://github.com/conventional-changelog/commitlint/commit/97c033b)) +**Note:** Version bump only for package @commitlint/lint +# [12.1.0](https://github.com/conventional-changelog/commitlint/compare/v12.0.1...v12.1.0) (2021-03-06) +**Note:** Version bump only for package @commitlint/lint +## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) -<a name="7.2.1"></a> -## [7.2.1](https://github.com/conventional-changelog/commitlint/compare/v7.2.0...v7.2.1) (2018-10-11) +**Note:** Version bump only for package @commitlint/lint +# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) +**Note:** Version bump only for package @commitlint/lint +# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) **Note:** Version bump only for package @commitlint/lint -<a name="7.2.0"></a> -# [7.2.0](https://github.com/conventional-changelog/commitlint/compare/v7.1.2...v7.2.0) (2018-10-05) +# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) +- refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) +### BREAKING CHANGES +- remove node 8 from circle-ci checks + +also remove node 13 because we do not support experimental versions + +- docs: update node v10 to latest LTS 10 version + +Co-authored-by: Cedric van Putten <me@bycedric.com> + +Co-authored-by: Cedric van Putten <me@bycedric.com> + +## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) **Note:** Version bump only for package @commitlint/lint -<a name="7.1.2"></a> -## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) +## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) + +**Note:** Version bump only for package @commitlint/lint +# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) +**Note:** Version bump only for package @commitlint/lint +## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) **Note:** Version bump only for package @commitlint/lint -<a name="7.1.0"></a> -# [7.1.0](https://github.com/conventional-changelog/commitlint/compare/v7.0.1...v7.1.0) (2018-08-29) +# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) + +### Bug Fixes + +- [#840](https://github.com/conventional-changelog/commitlint/issues/840) add caret to lodash versions ([#843](https://github.com/conventional-changelog/commitlint/issues/843)) ([ffc0bac](https://github.com/conventional-changelog/commitlint/commit/ffc0bac26993acb2ab6a8fa51065f93c92b0d644)) +- ignore empty commit messages [#615](https://github.com/conventional-changelog/commitlint/issues/615) ([#676](https://github.com/conventional-changelog/commitlint/issues/676)) ([c3eb1a7](https://github.com/conventional-changelog/commitlint/commit/c3eb1a76e08213d7ce1f200e35f8d5d6de18982a)) + +### Features +- add async promise based rules methods into lint ([#976](https://github.com/conventional-changelog/commitlint/issues/976)) ([4443062](https://github.com/conventional-changelog/commitlint/commit/444306249b8a3d04524538f61edca8f6cc10d75f)) +## [8.3.5](https://github.com/conventional-changelog/commitlint/compare/v8.3.4...v8.3.5) (2020-01-15) +**Note:** Version bump only for package @commitlint/lint + +## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) **Note:** Version bump only for package @commitlint/lint -<a name="6.2.0"></a> -# [6.2.0](https://github.com/conventional-changelog/commitlint/compare/v6.1.3...v6.2.0) (2018-05-01) +# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) + +**Note:** Version bump only for package @commitlint/lint +# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) + +**Note:** Version bump only for package @commitlint/lint + +# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) + +**Note:** Version bump only for package @commitlint/lint + +# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) ### Features -* print commit message when the message is invalid ([86c34f1](https://github.com/conventional-changelog/commitlint/commit/86c34f1)), closes [#222](https://github.com/conventional-changelog/commitlint/issues/222) +- adds support for plugins ([#228](https://github.com/conventional-changelog/commitlint/issues/228)) ([#588](https://github.com/conventional-changelog/commitlint/issues/588)) ([cea4564](https://github.com/conventional-changelog/commitlint/commit/cea4564)) +- config based is-ignored overrides ([#595](https://github.com/conventional-changelog/commitlint/issues/595)) ([2434d71](https://github.com/conventional-changelog/commitlint/commit/2434d71)) +## [7.5.2](https://github.com/conventional-changelog/commitlint/compare/v7.5.1...v7.5.2) (2019-02-11) +**Note:** Version bump only for package @commitlint/lint +## [7.5.1](https://github.com/conventional-changelog/commitlint/compare/v7.5.0...v7.5.1) (2019-02-09) -<a name="6.1.1"></a> -## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) +**Note:** Version bump only for package @commitlint/lint + +<a name="7.5.0"></a> + +# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) + +### Bug Fixes + +- all broken website references ([#564](https://github.com/conventional-changelog/commitlint/issues/564)) ([82eeb5a](https://github.com/conventional-changelog/commitlint/commit/82eeb5a)) +- replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) +- replace all website references with conventional changelog ([#563](https://github.com/conventional-changelog/commitlint/issues/563)) ([6b86fb1](https://github.com/conventional-changelog/commitlint/commit/6b86fb1)) + +<a name="7.4.0"></a> + +# [7.4.0](https://github.com/conventional-changelog/commitlint/compare/v7.3.2...v7.4.0) (2019-01-27) + +**Note:** Version bump only for package @commitlint/lint + +<a name="7.3.2"></a> + +## [7.3.2](https://github.com/conventional-changelog/commitlint/compare/v7.3.1...v7.3.2) (2019-01-15) + +### Bug Fixes + +- move loadsh to dependencies ([1bb66a4](https://github.com/conventional-changelog/commitlint/commit/1bb66a4)) + +<a name="7.3.1"></a> + +## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) + +**Note:** Version bump only for package @commitlint/lint + +<a name="7.3.0"></a> + +# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) + +### Bug Fixes + +- update to security-patched dependency versions ([97c033b](https://github.com/conventional-changelog/commitlint/commit/97c033b)) + +<a name="7.2.1"></a> + +## [7.2.1](https://github.com/conventional-changelog/commitlint/compare/v7.2.0...v7.2.1) (2018-10-11) + +**Note:** Version bump only for package @commitlint/lint + +<a name="7.2.0"></a> + +# [7.2.0](https://github.com/conventional-changelog/commitlint/compare/v7.1.2...v7.2.0) (2018-10-05) + +**Note:** Version bump only for package @commitlint/lint + +<a name="7.1.2"></a> +## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) + +**Note:** Version bump only for package @commitlint/lint + +<a name="7.1.0"></a> + +# [7.1.0](https://github.com/conventional-changelog/commitlint/compare/v7.0.1...v7.1.0) (2018-08-29) + +**Note:** Version bump only for package @commitlint/lint +<a name="6.2.0"></a> + +# [6.2.0](https://github.com/conventional-changelog/commitlint/compare/v6.1.3...v6.2.0) (2018-05-01) + +### Features +- print commit message when the message is invalid ([86c34f1](https://github.com/conventional-changelog/commitlint/commit/86c34f1)), closes [#222](https://github.com/conventional-changelog/commitlint/issues/222) + +<a name="6.1.1"></a> + +## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) **Note:** Version bump only for package @commitlint/lint diff --git a/@commitlint/lint/README.md b/@commitlint/lint/README.md index a863241afd..7849251ff7 100644 --- a/@commitlint/lint/README.md +++ b/@commitlint/lint/README.md @@ -1,35 +1,15 @@ -> Lint a string against commitlint rules - # @commitlint/lint +Lint a string against commitlint rules + ## Getting started ```shell npm install --save @commitlint/lint ``` -## Example - -```js -const lint = require('@commitlint/lint').default; +## Documentation -lint('foo: bar', {'type-enum': [1, 'always', ['foo']]}).then((report) => - console.log(report) -); -// => { valid: true, errors: [], warnings: [] } - -lint('foo: bar', {'type-enum': [1, 'always', ['bar']]}).then((report) => - console.log(report) -); -/* => - { valid: true, - errors: [], - warnings: - [ { level: 1, - valid: false, - name: 'type-enum', - message: 'type must be one of [bar]' } ] } - */ -``` +Consult [API docs](https://commitlint.js.org/api/lint) for comprehensive documentation. -Consult [docs/api](https://conventional-changelog.github.io/commitlint/#/reference-api) for comprehensive documentation. +Documentation generated from [`docs` folder](../../docs/api/format.md). diff --git a/@commitlint/lint/package.json b/@commitlint/lint/package.json index 7b32f81330..5927c0d139 100644 --- a/@commitlint/lint/package.json +++ b/@commitlint/lint/package.json @@ -1,6 +1,7 @@ { "name": "@commitlint/lint", - "version": "13.1.0", + "type": "module", + "version": "20.0.0", "description": "Lint a string against commitlint rules", "main": "lib/lint.js", "types": "lib/lint.d.ts", @@ -12,16 +13,17 @@ "pkg": "pkg-check --skip-import" }, "engines": { - "node": ">=v12" + "node": ">=v18" }, "repository": { "type": "git", - "url": "https://github.com/conventional-changelog/commitlint.git" + "url": "https://github.com/conventional-changelog/commitlint.git", + "directory": "@commitlint/lint" }, "bugs": { "url": "https://github.com/conventional-changelog/commitlint/issues" }, - "homepage": "https://github.com/conventional-changelog/commitlint#readme", + "homepage": "https://commitlint.js.org/", "keywords": [ "conventional-changelog", "commitlint", @@ -34,14 +36,14 @@ }, "license": "MIT", "devDependencies": { - "@commitlint/test": "^13.0.0", - "@commitlint/utils": "^13.0.0" + "@commitlint/test": "^20.0.0", + "@commitlint/utils": "^20.0.0" }, "dependencies": { - "@commitlint/is-ignored": "^13.1.0", - "@commitlint/parse": "^13.1.0", - "@commitlint/rules": "^13.1.0", - "@commitlint/types": "^13.1.0" + "@commitlint/is-ignored": "^20.0.0", + "@commitlint/parse": "^20.0.0", + "@commitlint/rules": "^20.0.0", + "@commitlint/types": "^20.0.0" }, - "gitHead": "70f7f4688b51774e7ac5e40e896cdaa3f132b2bc" + "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" } diff --git a/@commitlint/lint/src/commit-message.ts b/@commitlint/lint/src/commit-message.ts index 2b1b2f011e..fb9d8363ee 100644 --- a/@commitlint/lint/src/commit-message.ts +++ b/@commitlint/lint/src/commit-message.ts @@ -1,10 +1,10 @@ export interface CommitMessageData { - header: string; + header: string | null; body?: string | null; footer?: string | null; } -export const buildCommitMesage = ({ +export const buildCommitMessage = ({ header, body, footer, @@ -14,5 +14,5 @@ export const buildCommitMesage = ({ message = body ? `${message}\n\n${body}` : message; message = footer ? `${message}\n\n${footer}` : message; - return message; + return message || ""; }; diff --git a/@commitlint/lint/src/lint.test.ts b/@commitlint/lint/src/lint.test.ts index ea94b0b9c4..0d37aca402 100644 --- a/@commitlint/lint/src/lint.test.ts +++ b/@commitlint/lint/src/lint.test.ts @@ -1,307 +1,315 @@ -import lint from './lint'; +import { test, expect } from "vitest"; +import { RuleConfigSeverity } from "@commitlint/types"; -test('throws without params', async () => { +import lint from "./lint.js"; + +test("throws without params", async () => { const error = (lint as any)(); - await expect(error).rejects.toThrow('Expected a raw commit'); + await expect(error).rejects.toThrow("Expected a raw commit"); }); -test('positive on empty message', async () => { - expect(await lint('')).toMatchObject({ +test("positive on empty message", async () => { + expect(await lint("")).toMatchObject({ valid: true, errors: [], warnings: [], }); }); -test('positive on stub message and no rule', async () => { - const actual = await lint('foo: bar'); +test("positive on stub message and no rule", async () => { + const actual = await lint("foo: bar"); expect(actual.valid).toBe(true); }); -test('positive on stub message and adhered rule', async () => { - const actual = await lint('foo: bar', { - 'type-enum': [2, 'always', ['foo']], +test("positive on stub message and adhered rule", async () => { + const actual = await lint("foo: bar", { + "type-enum": [RuleConfigSeverity.Error, "always", ["foo"]], }); expect(actual.valid).toBe(true); }); -test('negative on stub message and broken rule', async () => { - const actual = await lint('foo: bar', { - 'type-enum': [2, 'never', ['foo']], +test("negative on stub message and broken rule", async () => { + const actual = await lint("foo: bar", { + "type-enum": [RuleConfigSeverity.Error, "never", ["foo"]], }); expect(actual.valid).toBe(false); }); -test('positive on ignored message and broken rule', async () => { +test("positive on ignored message and broken rule", async () => { const actual = await lint('Revert "some bogus commit"', { - 'type-empty': [2, 'never'], + "type-empty": [RuleConfigSeverity.Error, "never"], }); expect(actual.valid).toBe(true); expect(actual.input).toBe('Revert "some bogus commit"'); }); -test('negative on ignored message, disabled ignored messages and broken rule', async () => { +test("negative on ignored message, disabled ignored messages and broken rule", async () => { const actual = await lint( 'Revert "some bogus commit"', { - 'type-empty': [2, 'never'], + "type-empty": [RuleConfigSeverity.Error, "never"], }, { defaultIgnores: false, - } + }, ); expect(actual.valid).toBe(false); }); -test('positive on custom ignored message and broken rule', async () => { - const ignoredMessage = 'some ignored custom message'; +test("positive on custom ignored message and broken rule", async () => { + const ignoredMessage = "some ignored custom message"; const actual = await lint( ignoredMessage, { - 'type-empty': [2, 'never'], + "type-empty": [RuleConfigSeverity.Error, "never"], }, { ignores: [(c) => c === ignoredMessage], - } + }, ); expect(actual.valid).toBe(true); expect(actual.input).toBe(ignoredMessage); }); -test('positive on stub message and opts', async () => { +test("positive on stub message and opts", async () => { const actual = await lint( - 'foo-bar', + "foo-bar", { - 'type-enum': [2, 'always', ['foo']], - 'type-empty': [2, 'never'], + "type-enum": [RuleConfigSeverity.Error, "always", ["foo"]], + "type-empty": [RuleConfigSeverity.Error, "never"], }, { parserOpts: { headerPattern: /^(\w*)(?:\((.*)\))?-(.*)$/, }, - } + }, ); expect(actual.valid).toBe(true); }); -test('throws for invalid rule names', async () => { - const error = lint('foo', {foo: [2, 'always'], bar: [1, 'never']}); +test("throws for invalid rule names", async () => { + const error = lint("foo", { + foo: [RuleConfigSeverity.Error, "always"], + bar: [RuleConfigSeverity.Warning, "never"], + }); - await expect(error).rejects.toThrow(/^Found invalid rule names: foo, bar/); + await expect(error).rejects.toThrow( + /^Found rules without implementation: foo, bar/, + ); }); -test('throws for invalid rule config', async () => { - const error = lint('type(scope): foo', { - 'type-enum': 1, - 'scope-enum': {0: 2, 1: 'never', 2: ['foo'], length: 3}, +test("throws for invalid rule config", async () => { + const error = lint("type(scope): foo", { + "type-enum": 1, + "scope-enum": { 0: 2, 1: "never", 2: ["foo"], length: 3 }, } as any); - await expect(error).rejects.toThrow('type-enum must be array'); - await expect(error).rejects.toThrow('scope-enum must be array'); + await expect(error).rejects.toThrow("type-enum must be array"); + await expect(error).rejects.toThrow("scope-enum must be array"); }); -test('allows disable shorthand', async () => { - const result = lint('foo', {'type-enum': [0], 'scope-enum': [0]}); +test("allows disable shorthand", async () => { + const result = lint("foo", { "type-enum": [0], "scope-enum": [0] }); await expect(result).resolves.toEqual({ errors: [], - input: 'foo', + input: "foo", valid: true, warnings: [], }); }); -test('throws for rule with invalid length', async () => { - const error = lint('type(scope): foo', {'scope-enum': [1, 2, 3, 4]} as any); +test("throws for rule with invalid length", async () => { + const error = lint("type(scope): foo", { "scope-enum": [1, 2, 3, 4] } as any); - await expect(error).rejects.toThrow('scope-enum must be 2 or 3 items long'); + await expect(error).rejects.toThrow("scope-enum must be 2 or 3 items long"); }); -test('throws for rule with invalid level', async () => { - const error = lint('type(scope): foo', { - 'type-enum': ['2', 'always'] as any, - 'header-max-length': [{}, 'always'] as any, +test("throws for rule with invalid level", async () => { + const error = lint("type(scope): foo", { + "type-enum": ["2", "always"] as any, + "header-max-length": [{}, "always"] as any, }); - await expect(error).rejects.toThrow('rule type-enum must be number'); - await expect(error).rejects.toThrow('rule header-max-length must be number'); + await expect(error).rejects.toThrow("rule type-enum must be number"); + await expect(error).rejects.toThrow("rule header-max-length must be number"); }); -test('throws for rule with out of range level', async () => { - const error = lint('type(scope): foo', { - 'type-enum': [-1, 'always'] as any, - 'header-max-length': [3, 'always'] as any, +test("throws for rule with out of range level", async () => { + const error = lint("type(scope): foo", { + "type-enum": [-1, "always"] as any, + "header-max-length": [3, "always"] as any, }); - await expect(error).rejects.toThrow('rule type-enum must be between 0 and 2'); + await expect(error).rejects.toThrow("rule type-enum must be between 0 and 2"); await expect(error).rejects.toThrow( - 'rule header-max-length must be between 0 and 2' + "rule header-max-length must be between 0 and 2", ); }); -test('throws for rule with invalid condition', async () => { - const error = lint('type(scope): foo', { - 'type-enum': [1, 2] as any, - 'header-max-length': [1, {}] as any, +test("throws for rule with invalid condition", async () => { + const error = lint("type(scope): foo", { + "type-enum": [1, 2] as any, + "header-max-length": [1, {}] as any, }); - await expect(error).rejects.toThrow('type-enum must be string'); - await expect(error).rejects.toThrow('header-max-length must be string'); + await expect(error).rejects.toThrow("type-enum must be string"); + await expect(error).rejects.toThrow("header-max-length must be string"); }); -test('throws for rule with out of range condition', async () => { - const error = lint('type(scope): foo', { - 'type-enum': [1, 'foo'] as any, - 'header-max-length': [1, 'bar'] as any, +test("throws for rule with out of range condition", async () => { + const error = lint("type(scope): foo", { + "type-enum": [RuleConfigSeverity.Warning, "foo"] as any, + "header-max-length": [RuleConfigSeverity.Warning, "bar"] as any, }); await expect(error).rejects.toThrow('type-enum must be "always" or "never"'); await expect(error).rejects.toThrow( - 'header-max-length must be "always" or "never"' + 'header-max-length must be "always" or "never"', ); }); -test('succeds for issue', async () => { - const report = await lint('somehting #1', { - 'references-empty': [2, 'never'], +test("succeds for issue", async () => { + const report = await lint("somehting #1", { + "references-empty": [RuleConfigSeverity.Error, "never"], }); expect(report.valid).toBe(true); }); -test('fails for issue', async () => { - const report = await lint('somehting #1', { - 'references-empty': [2, 'always'], +test("fails for issue", async () => { + const report = await lint("somehting #1", { + "references-empty": [RuleConfigSeverity.Error, "always"], }); expect(report.valid).toBe(false); }); -test('succeds for custom issue prefix', async () => { +test("succeds for custom issue prefix", async () => { const report = await lint( - 'somehting REF-1', + "somehting REF-1", { - 'references-empty': [2, 'never'], + "references-empty": [RuleConfigSeverity.Error, "never"], }, { parserOpts: { - issuePrefixes: ['REF-'], + issuePrefixes: ["REF-"], }, - } + }, ); expect(report.valid).toBe(true); }); -test('fails for custom issue prefix', async () => { +test("fails for custom issue prefix", async () => { const report = await lint( - 'somehting #1', + "somehting #1", { - 'references-empty': [2, 'never'], + "references-empty": [RuleConfigSeverity.Error, "never"], }, { parserOpts: { - issuePrefixes: ['REF-'], + issuePrefixes: ["REF-"], }, - } + }, ); expect(report.valid).toBe(false); }); -test('fails for custom plugin rule', async () => { +test("fails for custom plugin rule", async () => { const report = await lint( - 'somehting #1', + "somehting #1", { - 'plugin-rule': [2, 'never'], + "plugin-rule": [RuleConfigSeverity.Error, "never"], }, { plugins: { - 'plugin-example': { + "plugin-example": { rules: { - 'plugin-rule': () => [false], + "plugin-rule": () => [false], }, }, }, - } + }, ); expect(report.valid).toBe(false); }); -test('passes for custom plugin rule', async () => { +test("passes for custom plugin rule", async () => { const report = await lint( - 'somehting #1', + "somehting #1", { - 'plugin-rule': [2, 'never'], + "plugin-rule": [RuleConfigSeverity.Error, "never"], }, { plugins: { - 'plugin-example': { + "plugin-example": { rules: { - 'plugin-rule': () => [true], + "plugin-rule": () => [true], }, }, }, - } + }, ); expect(report.valid).toBe(true); }); -test('returns original message only with commit header', async () => { - const message = 'foo: bar'; +test("returns original message only with commit header", async () => { + const message = "foo: bar"; const report = await lint(message); expect(report.input).toBe(message); }); -test('returns original message with commit header and body', async () => { - const message = 'foo: bar/n/nFoo bar bizz buzz.'; +test("returns original message with commit header and body", async () => { + const message = "foo: bar/n/nFoo bar bizz buzz."; const report = await lint(message); expect(report.input).toBe(message); }); -test('returns original message with commit header, body and footer', async () => { - const message = 'foo: bar/n/nFoo bar bizz buzz./n/nCloses #1'; +test("returns original message with commit header, body and footer", async () => { + const message = "foo: bar/n/nFoo bar bizz buzz./n/nCloses #1"; const report = await lint(message); expect(report.input).toBe(message); }); -test('returns original message with commit header, body and footer, parsing comments', async () => { - const expected = 'foo: bar/n/nFoo bar bizz buzz./n/nCloses #1'; +test("returns original message with commit header, body and footer, parsing comments", async () => { + const expected = "foo: bar/n/nFoo bar bizz buzz./n/nCloses #1"; const message = `${expected}\n\n# Some comment to ignore`; const report = await lint( message, { - 'references-empty': [2, 'never'], + "references-empty": [RuleConfigSeverity.Error, "never"], }, { parserOpts: { - commentChar: '#', + commentChar: "#", }, - } + }, ); expect(report.input).toBe(expected); }); -test('passes for async rule', async () => { +test("passes for async rule", async () => { const report = await lint( - 'somehting #1', + "somehting #1", { - 'async-rule': [2, 'never'], + "async-rule": [RuleConfigSeverity.Error, "never"], }, { plugins: { - 'example-plugin': { + "example-plugin": { rules: { - 'async-rule': async () => [true, 'all good'] as const, + "async-rule": async () => [true, "all good"] as const, }, }, }, - } + }, ); expect(report.valid).toBe(true); diff --git a/@commitlint/lint/src/lint.ts b/@commitlint/lint/src/lint.ts index 83c7a567f2..c64bb829e0 100644 --- a/@commitlint/lint/src/lint.ts +++ b/@commitlint/lint/src/lint.ts @@ -1,32 +1,33 @@ -import util from 'util'; -import isIgnored from '@commitlint/is-ignored'; -import parse from '@commitlint/parse'; -import defaultRules from '@commitlint/rules'; -import {buildCommitMesage} from './commit-message'; -import { +import util from "node:util"; +import isIgnored from "@commitlint/is-ignored"; +import parse from "@commitlint/parse"; +import defaultRules from "@commitlint/rules"; +import type { LintOptions, LintOutcome, LintRuleOutcome, Rule, - RuleConfigSeverity, BaseRule, RuleType, QualifiedRules, -} from '@commitlint/types'; +} from "@commitlint/types"; +import { RuleConfigSeverity } from "@commitlint/types"; + +import { buildCommitMessage } from "./commit-message.js"; export default async function lint( message: string, rawRulesConfig?: QualifiedRules, - rawOpts?: LintOptions + rawOpts?: LintOptions, ): Promise<LintOutcome> { const opts = rawOpts ? rawOpts - : {defaultIgnores: undefined, ignores: undefined}; + : { defaultIgnores: undefined, ignores: undefined }; const rulesConfig = rawRulesConfig || {}; // Found a wildcard match, skip if ( - isIgnored(message, {defaults: opts.defaultIgnores, ignores: opts.ignores}) + isIgnored(message, { defaults: opts.defaultIgnores, ignores: opts.ignores }) ) { return { valid: true, @@ -38,8 +39,8 @@ export default async function lint( // Parse the commit message const parsed = - message === '' - ? {header: null, body: null, footer: null} + message === "" + ? { header: null, body: null, footer: null } : await parse(message, undefined, opts.parserOpts); if ( @@ -57,14 +58,14 @@ export default async function lint( } const allRules: Map<string, BaseRule<never, RuleType>> = new Map( - Object.entries(defaultRules) + Object.entries(defaultRules), ); if (opts.plugins) { Object.values(opts.plugins).forEach((plugin) => { if (plugin.rules) { Object.keys(plugin.rules).forEach((ruleKey) => - allRules.set(ruleKey, plugin.rules[ruleKey]) + allRules.set(ruleKey, plugin.rules[ruleKey]), ); } }); @@ -72,15 +73,16 @@ export default async function lint( // Find invalid rules configs const missing = Object.keys(rulesConfig).filter( - (name) => typeof allRules.get(name) !== 'function' + (name) => typeof allRules.get(name) !== "function", ); if (missing.length > 0) { const names = [...allRules.keys()]; throw new RangeError( - `Found invalid rule names: ${missing.join( - ', ' - )}. Supported rule names are: ${names.join(', ')}` + [ + `Found rules without implementation: ${missing.join(", ")}.`, + `Supported rules are: ${names.join(", ")}.`, + ].join("\n"), ); } @@ -89,8 +91,8 @@ export default async function lint( if (!Array.isArray(config)) { return new Error( `config for rule ${name} must be array, received ${util.inspect( - config - )} of type ${typeof config}` + config, + )} of type ${typeof config}`, ); } @@ -102,43 +104,43 @@ export default async function lint( const [, when] = config; - if (typeof level !== 'number' || isNaN(level)) { + if (typeof level !== "number" || isNaN(level)) { return new Error( `level for rule ${name} must be number, received ${util.inspect( - level - )} of type ${typeof level}` + level, + )} of type ${typeof level}`, ); } - if (config.length !== 2 && config.length !== 3) { + if (config.length < 2 || config.length > 3) { return new Error( `config for rule ${name} must be 2 or 3 items long, received ${util.inspect( - config - )} of length ${config.length}` + config, + )} of length ${config.length}`, ); } if (level < 0 || level > 2) { return new RangeError( `level for rule ${name} must be between 0 and 2, received ${util.inspect( - level - )}` + level, + )}`, ); } - if (typeof when !== 'string') { + if (typeof when !== "string") { return new Error( `condition for rule ${name} must be string, received ${util.inspect( - when - )} of type ${typeof when}` + when, + )} of type ${typeof when}`, ); } - if (when !== 'never' && when !== 'always') { + if (when !== "never" && when !== "always") { return new Error( `condition for rule ${name} must be "always" or "never", received ${util.inspect( - when - )}` + when, + )}`, ); } @@ -147,7 +149,7 @@ export default async function lint( .filter((item): item is Error => item instanceof Error); if (invalid.length > 0) { - throw new Error(invalid.map((i) => i.message).join('\n')); + throw new Error(invalid.map((i) => i.message).join("\n")); } // Validate against all rules @@ -176,14 +178,14 @@ export default async function lint( }); const results = (await Promise.all(pendingResults)).filter( - (result): result is LintRuleOutcome => result !== null + (result): result is LintRuleOutcome => result !== null, ); const errors = results.filter( - (result) => result.level === 2 && !result.valid + (result) => result.level === RuleConfigSeverity.Error && !result.valid, ); const warnings = results.filter( - (result) => result.level === 1 && !result.valid + (result) => result.level === RuleConfigSeverity.Warning && !result.valid, ); const valid = errors.length === 0; @@ -192,6 +194,6 @@ export default async function lint( valid, errors, warnings, - input: buildCommitMesage(parsed), + input: buildCommitMessage(parsed), }; } diff --git a/@commitlint/lint/tsconfig.json b/@commitlint/lint/tsconfig.json index d30e6bdbf0..bcd59cb2a3 100644 --- a/@commitlint/lint/tsconfig.json +++ b/@commitlint/lint/tsconfig.json @@ -8,9 +8,9 @@ "include": ["./src"], "exclude": ["./src/**/*.test.ts", "./lib/**/*"], "references": [ - {"path": "../is-ignored"}, - {"path": "../parse"}, - {"path": "../rules"}, - {"path": "../types"} + { "path": "../is-ignored" }, + { "path": "../parse" }, + { "path": "../rules" }, + { "path": "../types" } ] } diff --git a/@commitlint/load/CHANGELOG.md b/@commitlint/load/CHANGELOG.md index 043810230b..0e17e68544 100644 --- a/@commitlint/load/CHANGELOG.md +++ b/@commitlint/load/CHANGELOG.md @@ -3,7 +3,7 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. -# [13.1.0](https://github.com/conventional-changelog/commitlint/compare/v13.0.0...v13.1.0) (2021-07-24) +# [20.1.0](https://github.com/conventional-changelog/commitlint/compare/v20.0.0...v20.1.0) (2025-09-30) **Note:** Version bump only for package @commitlint/load @@ -11,21 +11,34 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) +**Note:** Version bump only for package @commitlint/load -* chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) -### BREAKING CHANGES -* minimum node version is 12 +## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) +**Note:** Version bump only for package @commitlint/load -## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) + + +# [19.8.0](https://github.com/conventional-changelog/commitlint/compare/v19.7.1...v19.8.0) (2025-03-07) + + +### Performance Improvements + +* use `node:` prefix to bypass require.cache call for builtins ([#4302](https://github.com/conventional-changelog/commitlint/issues/4302)) ([0cd8f41](https://github.com/conventional-changelog/commitlint/commit/0cd8f410573fe11383f788b1ceb7e0946143591d)) + + + + + +## [19.6.1](https://github.com/conventional-changelog/commitlint/compare/v19.6.0...v19.6.1) (2024-12-15) **Note:** Version bump only for package @commitlint/load @@ -33,7 +46,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.1.2](https://github.com/conventional-changelog/commitlint/compare/v12.1.1...v12.1.2) (2021-04-29) +# [19.5.0](https://github.com/conventional-changelog/commitlint/compare/v19.4.1...v19.5.0) (2024-09-11) **Note:** Version bump only for package @commitlint/load @@ -41,7 +54,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) +# [19.4.0](https://github.com/conventional-changelog/commitlint/compare/v19.3.1...v19.4.0) (2024-08-07) **Note:** Version bump only for package @commitlint/load @@ -49,7 +62,18 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [12.1.0](https://github.com/conventional-changelog/commitlint/compare/v12.0.1...v12.1.0) (2021-03-06) +# [19.2.0](https://github.com/conventional-changelog/commitlint/compare/v19.1.0...v19.2.0) (2024-03-15) + + +### Features + +* **load:** update cosmiconfig to v9 to add support for `package.yaml` config ([#3976](https://github.com/conventional-changelog/commitlint/issues/3976)) ([94eab40](https://github.com/conventional-changelog/commitlint/commit/94eab40798e0c8d3945aa2b1e629669b231d8468)) + + + + + +# [19.1.0](https://github.com/conventional-changelog/commitlint/compare/v19.0.3...v19.1.0) (2024-03-12) **Note:** Version bump only for package @commitlint/load @@ -57,35 +81,140 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) +## [19.0.3](https://github.com/conventional-changelog/commitlint/compare/v19.0.2...v19.0.3) (2024-02-28) + +**Note:** Version bump only for package @commitlint/load + + + + + +## [19.0.2](https://github.com/conventional-changelog/commitlint/compare/v19.0.1...v19.0.2) (2024-02-28) + +**Note:** Version bump only for package @commitlint/load + + + + + +## [19.0.1](https://github.com/conventional-changelog/commitlint/compare/v19.0.0...v19.0.1) (2024-02-27) ### Bug Fixes -* **load:** use `Rule | AsyncRule | SyncRule` as rule value type in `Plugin` ([#2146](https://github.com/conventional-changelog/commitlint/issues/2146)) ([75b67b8](https://github.com/conventional-changelog/commitlint/commit/75b67b8fb7fc4df21267b98f0c9daeeb1130b824)) +* drop `resolve-from`, `resolve-global` and `import-fresh`, resolve global packages correctly ([#3939](https://github.com/conventional-changelog/commitlint/issues/3939)) ([8793c63](https://github.com/conventional-changelog/commitlint/commit/8793c639c083c33714da0a29429b338776813d0c)), closes [#3938](https://github.com/conventional-changelog/commitlint/issues/3938) -# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) +# [19.0.0](https://github.com/conventional-changelog/commitlint/compare/v18.6.2...v19.0.0) (2024-02-27) + + +* feat!: migrate to pure ESM (#3850) ([3423735](https://github.com/conventional-changelog/commitlint/commit/342373559bdf7c783c4ef37ff05dc38a5f681159)), closes [#3850](https://github.com/conventional-changelog/commitlint/issues/3850) + + +### Reverts + +* Revert "chore!: minimum node version v20" ([2816783](https://github.com/conventional-changelog/commitlint/commit/2816783d00e7eb967de3ac9347c2fc43dc8b94fa)) + + +### BREAKING CHANGES + +* migrate to pure ESM + +* feat: migrate to pure ESM + +* chore: update snapshot + +* fix: load `parserPreset` with another `await` + +* test: migrate to vitest + +* test: remove no replacement `--runInBand` test-ci script + +* chore: fix code reviews + +* refactor(load): rewrite resolve logic + +* fix(config-nx-scopes): fix syntax error + +* feat(resolve-extends): add resolveFrom and loadParserPreset + +* feat(load): use resolveFrom and loadParserPreset from resolve-extends + +* test: include only @commitlint/* packages src in coverage + +* test: explicit import vitest utilities + +* test: remove @jest/globals from dependencies + +* fix(resolve-extends): `resolveFrom` output should be platform aware + +* test: restore NO_COLOR to test script + +* chore: fix linting issues + +* fix: should use fileURLToPath instead of pathname for Windows compatibility + +* Apply suggestions from code review + +* fix: should reuse `cli` instead call `yargs()` + +* feat(cli): set terminalWidth as wrap to avoid work break on help + +* Update .eslintrc.cjs + +* feat: migrate @commitlint/config-conventional to pure ESM + + + + + +## [18.6.1](https://github.com/conventional-changelog/commitlint/compare/v18.6.0...v18.6.1) (2024-02-13) + +**Note:** Version bump only for package @commitlint/load + + + + + +# [18.6.0](https://github.com/conventional-changelog/commitlint/compare/v18.5.1...v18.6.0) (2024-01-25) + +**Note:** Version bump only for package @commitlint/load + + + + + +# [18.5.0](https://github.com/conventional-changelog/commitlint/compare/v18.4.4...v18.5.0) (2024-01-22) + +**Note:** Version bump only for package @commitlint/load + + + + + +## [18.4.4](https://github.com/conventional-changelog/commitlint/compare/v18.4.3...v18.4.4) (2024-01-04) ### Bug Fixes -* update dependency execa to v4.1.0 ([#2251](https://github.com/conventional-changelog/commitlint/issues/2251)) ([b5743dd](https://github.com/conventional-changelog/commitlint/commit/b5743dd1e49bbe7eac03f34bc38c59df5fbaf2a0)) -* update dependency execa to v5 ([#2341](https://github.com/conventional-changelog/commitlint/issues/2341)) ([f349df9](https://github.com/conventional-changelog/commitlint/commit/f349df90f08096a9bcad46b5e55b411aac327a24)) +* **@commitlint/load:** Remove unused `@types/node` dependency ([#3801](https://github.com/conventional-changelog/commitlint/issues/3801)) ([7b3f8b3](https://github.com/conventional-changelog/commitlint/commit/7b3f8b3fe106311682a2e8ad281dd9a4e42443c6)) -### Features -* **load:** allow specifying helpUrl via config ([#2180](https://github.com/conventional-changelog/commitlint/issues/2180)) ([d6795a3](https://github.com/conventional-changelog/commitlint/commit/d6795a3c4633ba6efd7a0fcff48339dc291cd832)) +## [18.4.3](https://github.com/conventional-changelog/commitlint/compare/v18.4.2...v18.4.3) (2023-11-21) +**Note:** Version bump only for package @commitlint/load -# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) + + + +## [18.4.2](https://github.com/conventional-changelog/commitlint/compare/v18.4.1...v18.4.2) (2023-11-16) **Note:** Version bump only for package @commitlint/load @@ -93,35 +222,78 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) +## [18.4.1](https://github.com/conventional-changelog/commitlint/compare/v18.4.0...v18.4.1) (2023-11-12) ### Bug Fixes -* update dependency cosmiconfig to v7 ([#2044](https://github.com/conventional-changelog/commitlint/issues/2044)) ([f4db933](https://github.com/conventional-changelog/commitlint/commit/f4db93324698ea39528be0d2692151546c2b5517)) -* update dependency execa to v4 ([#1936](https://github.com/conventional-changelog/commitlint/issues/1936)) ([8efb441](https://github.com/conventional-changelog/commitlint/commit/8efb44193058d286f7325327a6d33936b273ec91)) +* update cosmiconfig to specific version ([#3755](https://github.com/conventional-changelog/commitlint/issues/3755)) ([636b8b1](https://github.com/conventional-changelog/commitlint/commit/636b8b1338835b239ab0585e062bfe305fca4424)) + + + + + +# [18.4.0](https://github.com/conventional-changelog/commitlint/compare/v18.3.0...v18.4.0) (2023-11-10) + + +### Features + +* bump cosmiconfig version and conditionally support mjs config ([#3747](https://github.com/conventional-changelog/commitlint/issues/3747)) ([a2b65fc](https://github.com/conventional-changelog/commitlint/commit/a2b65fc0cfee2259e197c291ea40ef2d076ab837)) + + + + + +# [18.2.0](https://github.com/conventional-changelog/commitlint/compare/v18.1.0...v18.2.0) (2023-10-26) + + +### Features + +* **load:** use cosmiconfig-typescript-loader v5 to remove ts-node dependency for @commitlint/load ([#3722](https://github.com/conventional-changelog/commitlint/issues/3722)) ([1ff49ea](https://github.com/conventional-changelog/commitlint/commit/1ff49ea14adb180eb54ec3d7479990b66ba26720)) + + + + +# [18.1.0](https://github.com/conventional-changelog/commitlint/compare/v18.0.0...v18.1.0) (2023-10-25) -* refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) +**Note:** Version bump only for package @commitlint/load + + + + + +# [18.0.0](https://github.com/conventional-changelog/commitlint/compare/v17.8.1...v18.0.0) (2023-10-20) + + +* chore!: minimum node version v18 (#3644) ([5b4aeaf](https://github.com/conventional-changelog/commitlint/commit/5b4aeaf4f01c2726a7bc8631a23bb34c849baad2)), closes [#3644](https://github.com/conventional-changelog/commitlint/issues/3644) ### BREAKING CHANGES -* remove node 8 from circle-ci checks +* drop node v14 and v16 support -also remove node 13 because we do not support experimental versions +* chore: remove unused types -* docs: update node v10 to latest LTS 10 version +* docs: prepare node update and new release -Co-authored-by: Cedric van Putten <me@bycedric.com> +* chore!: minimum TS version v5 +* drop TS v4 support -Co-authored-by: Cedric van Putten <me@bycedric.com> +* ci: remove node v14/16 checks +* chore: adjust node types to minimal supported version + +* chore!: further major versions of other deps +* upgrade conventional-changelog-conventionalcommits, conventional-commits-parser, conventional-changelog-atom, + +* docs: simplify releases and remove roadmap -## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) + +## [17.8.1](https://github.com/conventional-changelog/commitlint/compare/v17.8.0...v17.8.1) (2023-10-20) **Note:** Version bump only for package @commitlint/load @@ -129,34 +301,51 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) +# [17.8.0](https://github.com/conventional-changelog/commitlint/compare/v17.7.2...v17.8.0) (2023-10-14) -### Bug Fixes +### Features -* **load:** resolve plugins from extended configs ([#1976](https://github.com/conventional-changelog/commitlint/issues/1976)) ([d0f0eb9](https://github.com/conventional-changelog/commitlint/commit/d0f0eb9fde7efc2dff7a3aad190ded14303d3079)) +* lazy load cosmiconfig-typescript-loader ([#3694](https://github.com/conventional-changelog/commitlint/issues/3694)) ([b058c7c](https://github.com/conventional-changelog/commitlint/commit/b058c7cc49333e7898402fa55467ec097801ce25)) -# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) +## [17.7.2](https://github.com/conventional-changelog/commitlint/compare/v17.7.1...v17.7.2) (2023-09-28) ### Bug Fixes -* update dependency chalk to v4 ([#1275](https://github.com/conventional-changelog/commitlint/issues/1275)) ([a5d8fa1](https://github.com/conventional-changelog/commitlint/commit/a5d8fa118e8221361f14f5fd2b21d7aaad008a27)) +* update dependency @types/node to v20.5.1 ([#3653](https://github.com/conventional-changelog/commitlint/issues/3653)) ([cd8b775](https://github.com/conventional-changelog/commitlint/commit/cd8b7750d3a15fbfd96e20196d53df064df6e138)) + + + + + +## [17.7.1](https://github.com/conventional-changelog/commitlint/compare/v17.7.0...v17.7.1) (2023-08-10) + + +### Reverts + +* Revert "feat(load): use cosmiconfig-typescript-loader v5 to remove ts-node dependency for @commitlint/load (#3633)" ([8e41897](https://github.com/conventional-changelog/commitlint/commit/8e41897a42c45988ff8c25576c4f13bb11d84c4e)), closes [#3633](https://github.com/conventional-changelog/commitlint/issues/3633) + + + + + +# [17.7.0](https://github.com/conventional-changelog/commitlint/compare/v17.6.7...v17.7.0) (2023-08-09) ### Features -* add local plugins support ([#1692](https://github.com/conventional-changelog/commitlint/issues/1692)) ([7b29c48](https://github.com/conventional-changelog/commitlint/commit/7b29c48321b513e091849fbb2cc2bf0e6ebb94a6)) +* **load:** use cosmiconfig-typescript-loader v5 to remove ts-node dependency for @commitlint/load ([#3633](https://github.com/conventional-changelog/commitlint/issues/3633)) ([4aa46d7](https://github.com/conventional-changelog/commitlint/commit/4aa46d796ad74958f5569d3346b60a1f92c33892)) -## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) +## [17.6.7](https://github.com/conventional-changelog/commitlint/compare/v17.6.6...v17.6.7) (2023-07-19) **Note:** Version bump only for package @commitlint/load @@ -164,18 +353,37 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) +# [17.5.0](https://github.com/conventional-changelog/commitlint/compare/v17.4.4...v17.5.0) (2023-03-22) + + +### Features + +* support typescript 5.0 ([#3566](https://github.com/conventional-changelog/commitlint/issues/3566)) ([c0a27ff](https://github.com/conventional-changelog/commitlint/commit/c0a27ffa3dcaef296ef58ce37bd8ca0a9d315d6e)) + + + + + +## [17.4.4](https://github.com/conventional-changelog/commitlint/compare/v17.4.3...v17.4.4) (2023-02-17) + +**Note:** Version bump only for package @commitlint/load + + + + + +## [17.4.2](https://github.com/conventional-changelog/commitlint/compare/v17.4.1...v17.4.2) (2023-01-12) ### Bug Fixes -* [#840](https://github.com/conventional-changelog/commitlint/issues/840) add caret to lodash versions ([#843](https://github.com/conventional-changelog/commitlint/issues/843)) ([ffc0bac](https://github.com/conventional-changelog/commitlint/commit/ffc0bac26993acb2ab6a8fa51065f93c92b0d644)) +* **load:** fixes a bug when a ts commitlint config is compiled twice ([#3499](https://github.com/conventional-changelog/commitlint/issues/3499)) ([dc2c899](https://github.com/conventional-changelog/commitlint/commit/dc2c899b5d7e4e7a7be79901b28e46da9f519211)) -## [8.3.5](https://github.com/conventional-changelog/commitlint/compare/v8.3.4...v8.3.5) (2020-01-15) +## [17.4.1](https://github.com/conventional-changelog/commitlint/compare/v17.4.0...v17.4.1) (2023-01-09) **Note:** Version bump only for package @commitlint/load @@ -183,155 +391,328 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) +# [17.4.0](https://github.com/conventional-changelog/commitlint/compare/v17.3.0...v17.4.0) (2023-01-04) + +### Bug Fixes + +- update dependency cosmiconfig to v8 ([#3459](https://github.com/conventional-changelog/commitlint/issues/3459)) ([ee732fe](https://github.com/conventional-changelog/commitlint/commit/ee732fe0ef2057bdae93b7c368392934ac0de3af)) + +### Features + +- support config .cts extension ([#3461](https://github.com/conventional-changelog/commitlint/issues/3461)) ([85ad18b](https://github.com/conventional-changelog/commitlint/commit/85ad18b8990567df516effcacbf04edbcbb6b6d7)) + +# [17.3.0](https://github.com/conventional-changelog/commitlint/compare/v17.2.1...v17.3.0) (2022-11-21) **Note:** Version bump only for package @commitlint/load +# [17.2.0](https://github.com/conventional-changelog/commitlint/compare/v17.1.2...v17.2.0) (2022-10-31) +**Note:** Version bump only for package @commitlint/load +## [17.1.2](https://github.com/conventional-changelog/commitlint/compare/v17.1.1...v17.1.2) (2022-08-29) +### Bug Fixes -## [8.3.1](https://github.com/conventional-changelog/commitlint/compare/v8.3.0...v8.3.1) (2019-10-16) +- **load:** add ts-node as direct dependency ([#3351](https://github.com/conventional-changelog/commitlint/issues/3351)) ([3b66891](https://github.com/conventional-changelog/commitlint/commit/3b668911d8f9fd93e0f613842d5c0b7c3f24360a)) +- update dependency cosmiconfig-typescript-loader to v4 ([#3346](https://github.com/conventional-changelog/commitlint/issues/3346)) ([5a9d80f](https://github.com/conventional-changelog/commitlint/commit/5a9d80fba352deae1c2855792be4f8458a973431)) +## [17.1.1](https://github.com/conventional-changelog/commitlint/compare/v17.1.0...v17.1.1) (2022-08-27) ### Bug Fixes -* **load:** resolve nested parser preset factories ([#831](https://github.com/conventional-changelog/commitlint/issues/831)) ([73a7df7](https://github.com/conventional-changelog/commitlint/commit/73a7df7)) +- **load:** peer-dep version [#3345](https://github.com/conventional-changelog/commitlint/issues/3345) ([2dd7b50](https://github.com/conventional-changelog/commitlint/commit/2dd7b50c983e2720ad25c368e5a0f13b80ab7927)) +# [17.1.0](https://github.com/conventional-changelog/commitlint/compare/v17.0.3...v17.1.0) (2022-08-27) +### Bug Fixes +- update dependency cosmiconfig-typescript-loader to v3 ([#3253](https://github.com/conventional-changelog/commitlint/issues/3253)) ([4e87d14](https://github.com/conventional-changelog/commitlint/commit/4e87d1431df6d39990e5f56a579604b1b3268ce6)) +## [17.0.3](https://github.com/conventional-changelog/commitlint/compare/v17.0.2...v17.0.3) (2022-06-25) -# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) +**Note:** Version bump only for package @commitlint/load +# [17.0.0](https://github.com/conventional-changelog/commitlint/compare/v16.3.0...v17.0.0) (2022-05-16) -### Features +- chore!: minimum node version v14 (#3128) ([ac5f9b4](https://github.com/conventional-changelog/commitlint/commit/ac5f9b47a9e3cd5c9d58b14da0feb426f06b1ef9)), closes [#3128](https://github.com/conventional-changelog/commitlint/issues/3128) -* **config-conventional:** use parser with short breaking change support ([#821](https://github.com/conventional-changelog/commitlint/issues/821)) ([4b5300a](https://github.com/conventional-changelog/commitlint/commit/4b5300a)) +### BREAKING CHANGES +- drop node v12 support +- chore: rename circleci windows job +node version is not defned by the name anyways (i think) +# [16.3.0](https://github.com/conventional-changelog/commitlint/compare/v16.2.4...v16.3.0) (2022-05-14) -# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) +### Bug Fixes + +- update dependency cosmiconfig-typescript-loader to v2 ([#3154](https://github.com/conventional-changelog/commitlint/issues/3154)) ([20122e8](https://github.com/conventional-changelog/commitlint/commit/20122e8d6e999b74eab3bab08a6d52cda3f13e37)) + +## [16.2.4](https://github.com/conventional-changelog/commitlint/compare/v16.2.3...v16.2.4) (2022-04-28) **Note:** Version bump only for package @commitlint/load +## [16.2.3](https://github.com/conventional-changelog/commitlint/compare/v16.2.2...v16.2.3) (2022-03-16) +**Note:** Version bump only for package @commitlint/load +## [16.2.1](https://github.com/conventional-changelog/commitlint/compare/v16.2.0...v16.2.1) (2022-02-13) +### Bug Fixes -# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) +- **load:** satisfy @types/node peer dependency for cosmiconfig-loader-typescript ([#3008](https://github.com/conventional-changelog/commitlint/issues/3008)) ([338180c](https://github.com/conventional-changelog/commitlint/commit/338180c7174625cddd7a0ea2b9d2786fee375756)), closes [#3007](https://github.com/conventional-changelog/commitlint/issues/3007) +# [16.1.0](https://github.com/conventional-changelog/commitlint/compare/v16.0.3...v16.1.0) (2022-01-20) + +### Features + +- **load:** accept functions as parser presets ([#2982](https://github.com/conventional-changelog/commitlint/issues/2982)) ([420e8d6](https://github.com/conventional-changelog/commitlint/commit/420e8d6a4d5663ade953272275a9e0fa7c5ddff0)), closes [#2964](https://github.com/conventional-changelog/commitlint/issues/2964) [#2964](https://github.com/conventional-changelog/commitlint/issues/2964) + +# [16.0.0](https://github.com/conventional-changelog/commitlint/compare/v15.0.0...v16.0.0) (2021-12-26) + +### Features + +- config validation ([#2412](https://github.com/conventional-changelog/commitlint/issues/2412)) ([c717202](https://github.com/conventional-changelog/commitlint/commit/c7172022097b11f46b33617e4a94d751243c1049)), closes [#327](https://github.com/conventional-changelog/commitlint/issues/327) + +# [15.0.0](https://github.com/conventional-changelog/commitlint/compare/v14.2.0...v15.0.0) (2021-11-17) ### Bug Fixes -* add explicit dependency on chalk ([#687](https://github.com/conventional-changelog/commitlint/issues/687)) ([9075844](https://github.com/conventional-changelog/commitlint/commit/9075844)) +- **types:** fix signature of QualifiedRuleConfig for async configurations ([#2868](https://github.com/conventional-changelog/commitlint/issues/2868)) ([#2869](https://github.com/conventional-changelog/commitlint/issues/2869)) ([c7f355b](https://github.com/conventional-changelog/commitlint/commit/c7f355b25e5baddab0b9559892f5ce4112e4f93a)) +### Features +- simplify config resolution ([#2398](https://github.com/conventional-changelog/commitlint/issues/2398)) ([8a8384f](https://github.com/conventional-changelog/commitlint/commit/8a8384f3c18954447cb633e76a573e1db71a1440)), closes [#327](https://github.com/conventional-changelog/commitlint/issues/327) +# [14.1.0](https://github.com/conventional-changelog/commitlint/compare/v14.0.0...v14.1.0) (2021-11-01) +### Features -## [7.6.1](https://github.com/conventional-changelog/commitlint/compare/v7.6.0...v7.6.1) (2019-05-09) +- extend helpUrl from shareable config ([#2846](https://github.com/conventional-changelog/commitlint/issues/2846)) ([d7e2e2b](https://github.com/conventional-changelog/commitlint/commit/d7e2e2b943be383f99f4000b6b6bed0eab03bfcf)) +- **load:** add support for `.commitlintrc.cjs` and `commitlint.config.cjs` files ([#2797](https://github.com/conventional-changelog/commitlint/issues/2797)) ([fabb495](https://github.com/conventional-changelog/commitlint/commit/fabb49509730609276ff9ef6357536c95a1f6bb1)) + +# [14.0.0](https://github.com/conventional-changelog/commitlint/compare/v13.2.1...v14.0.0) (2021-10-26) +**Note:** Version bump only for package @commitlint/load + +## [13.2.1](https://github.com/conventional-changelog/commitlint/compare/v13.2.0...v13.2.1) (2021-10-09) ### Bug Fixes -* handle absolute config paths correctly [#647](https://github.com/conventional-changelog/commitlint/issues/647) ([49b3a77](https://github.com/conventional-changelog/commitlint/commit/49b3a77)) +- **load:** added a direct dependency on typescript ([#2785](https://github.com/conventional-changelog/commitlint/issues/2785)) ([9c17f8d](https://github.com/conventional-changelog/commitlint/commit/9c17f8d423404b484f72df41358a18bd90014ecd)), closes [EndemolShineGroup/cosmiconfig-typescript-loader#147](https://github.com/EndemolShineGroup/cosmiconfig-typescript-loader/issues/147) [#2779](https://github.com/conventional-changelog/commitlint/issues/2779) + +# [13.2.0](https://github.com/conventional-changelog/commitlint/compare/v13.1.0...v13.2.0) (2021-09-28) +### Bug Fixes +- **types:** user config prompt ([6d7a1c4](https://github.com/conventional-changelog/commitlint/commit/6d7a1c40e2f8a8ff22595e0e17f71f3702b0699c)) +### Features +- **load:** add cosmiconfig typescript loader ([b65aced](https://github.com/conventional-changelog/commitlint/commit/b65acedc3334a859811762539ec8716de3e73f85)) -# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) +# [13.1.0](https://github.com/conventional-changelog/commitlint/compare/v13.0.0...v13.1.0) (2021-07-24) + +**Note:** Version bump only for package @commitlint/load + +# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) +- chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) + +### BREAKING CHANGES + +- minimum node version is 12 + +## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) + +**Note:** Version bump only for package @commitlint/load + +## [12.1.2](https://github.com/conventional-changelog/commitlint/compare/v12.1.1...v12.1.2) (2021-04-29) + +**Note:** Version bump only for package @commitlint/load + +## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) + +**Note:** Version bump only for package @commitlint/load + +# [12.1.0](https://github.com/conventional-changelog/commitlint/compare/v12.0.1...v12.1.0) (2021-03-06) + +**Note:** Version bump only for package @commitlint/load + +## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) ### Bug Fixes -* remove unneeded dev dependency ([6ccaf79](https://github.com/conventional-changelog/commitlint/commit/6ccaf79)) -* update cosmiconfig to safe >=5 [#599](https://github.com/conventional-changelog/commitlint/issues/599) ([f186fcb](https://github.com/conventional-changelog/commitlint/commit/f186fcb)) +- **load:** use `Rule | AsyncRule | SyncRule` as rule value type in `Plugin` ([#2146](https://github.com/conventional-changelog/commitlint/issues/2146)) ([75b67b8](https://github.com/conventional-changelog/commitlint/commit/75b67b8fb7fc4df21267b98f0c9daeeb1130b824)) +# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) + +### Bug Fixes + +- update dependency execa to v4.1.0 ([#2251](https://github.com/conventional-changelog/commitlint/issues/2251)) ([b5743dd](https://github.com/conventional-changelog/commitlint/commit/b5743dd1e49bbe7eac03f34bc38c59df5fbaf2a0)) +- update dependency execa to v5 ([#2341](https://github.com/conventional-changelog/commitlint/issues/2341)) ([f349df9](https://github.com/conventional-changelog/commitlint/commit/f349df90f08096a9bcad46b5e55b411aac327a24)) ### Features -* adds support for plugins ([#228](https://github.com/conventional-changelog/commitlint/issues/228)) ([#588](https://github.com/conventional-changelog/commitlint/issues/588)) ([cea4564](https://github.com/conventional-changelog/commitlint/commit/cea4564)) -* config based is-ignored overrides ([#595](https://github.com/conventional-changelog/commitlint/issues/595)) ([2434d71](https://github.com/conventional-changelog/commitlint/commit/2434d71)) +- **load:** allow specifying helpUrl via config ([#2180](https://github.com/conventional-changelog/commitlint/issues/2180)) ([d6795a3](https://github.com/conventional-changelog/commitlint/commit/d6795a3c4633ba6efd7a0fcff48339dc291cd832)) + +# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) +**Note:** Version bump only for package @commitlint/load +# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) +### Bug Fixes +- update dependency cosmiconfig to v7 ([#2044](https://github.com/conventional-changelog/commitlint/issues/2044)) ([f4db933](https://github.com/conventional-changelog/commitlint/commit/f4db93324698ea39528be0d2692151546c2b5517)) +- update dependency execa to v4 ([#1936](https://github.com/conventional-changelog/commitlint/issues/1936)) ([8efb441](https://github.com/conventional-changelog/commitlint/commit/8efb44193058d286f7325327a6d33936b273ec91)) -<a name="7.5.0"></a> -# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) +- refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) +### BREAKING CHANGES + +- remove node 8 from circle-ci checks + +also remove node 13 because we do not support experimental versions + +- docs: update node v10 to latest LTS 10 version + +Co-authored-by: Cedric van Putten <me@bycedric.com> + +Co-authored-by: Cedric van Putten <me@bycedric.com> + +## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) + +**Note:** Version bump only for package @commitlint/load + +## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) ### Bug Fixes -* all broken website references ([#564](https://github.com/conventional-changelog/commitlint/issues/564)) ([82eeb5a](https://github.com/conventional-changelog/commitlint/commit/82eeb5a)) -* replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) -* replace all website references with conventional changelog ([#563](https://github.com/conventional-changelog/commitlint/issues/563)) ([6b86fb1](https://github.com/conventional-changelog/commitlint/commit/6b86fb1)) +- **load:** resolve plugins from extended configs ([#1976](https://github.com/conventional-changelog/commitlint/issues/1976)) ([d0f0eb9](https://github.com/conventional-changelog/commitlint/commit/d0f0eb9fde7efc2dff7a3aad190ded14303d3079)) +# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) +### Bug Fixes +- update dependency chalk to v4 ([#1275](https://github.com/conventional-changelog/commitlint/issues/1275)) ([a5d8fa1](https://github.com/conventional-changelog/commitlint/commit/a5d8fa118e8221361f14f5fd2b21d7aaad008a27)) -<a name="7.3.1"></a> -## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) +### Features +- add local plugins support ([#1692](https://github.com/conventional-changelog/commitlint/issues/1692)) ([7b29c48](https://github.com/conventional-changelog/commitlint/commit/7b29c48321b513e091849fbb2cc2bf0e6ebb94a6)) +## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) +**Note:** Version bump only for package @commitlint/load + +# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) + +### Bug Fixes + +- [#840](https://github.com/conventional-changelog/commitlint/issues/840) add caret to lodash versions ([#843](https://github.com/conventional-changelog/commitlint/issues/843)) ([ffc0bac](https://github.com/conventional-changelog/commitlint/commit/ffc0bac26993acb2ab6a8fa51065f93c92b0d644)) + +## [8.3.5](https://github.com/conventional-changelog/commitlint/compare/v8.3.4...v8.3.5) (2020-01-15) **Note:** Version bump only for package @commitlint/load -<a name="7.3.0"></a> -# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) +## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) +**Note:** Version bump only for package @commitlint/load + +## [8.3.1](https://github.com/conventional-changelog/commitlint/compare/v8.3.0...v8.3.1) (2019-10-16) ### Bug Fixes -* update to security-patched dependency versions ([97c033b](https://github.com/conventional-changelog/commitlint/commit/97c033b)) +- **load:** resolve nested parser preset factories ([#831](https://github.com/conventional-changelog/commitlint/issues/831)) ([73a7df7](https://github.com/conventional-changelog/commitlint/commit/73a7df7)) +# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) ### Features -* check stage before entering prompt ([#495](https://github.com/conventional-changelog/commitlint/issues/495)) ([3b3667a](https://github.com/conventional-changelog/commitlint/commit/3b3667a)), closes [#51](https://github.com/conventional-changelog/commitlint/issues/51) [#51](https://github.com/conventional-changelog/commitlint/issues/51) +- **config-conventional:** use parser with short breaking change support ([#821](https://github.com/conventional-changelog/commitlint/issues/821)) ([4b5300a](https://github.com/conventional-changelog/commitlint/commit/4b5300a)) + +# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) +**Note:** Version bump only for package @commitlint/load +# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) +### Bug Fixes -<a name="7.2.1"></a> -## [7.2.1](https://github.com/conventional-changelog/commitlint/compare/v7.2.0...v7.2.1) (2018-10-11) +- add explicit dependency on chalk ([#687](https://github.com/conventional-changelog/commitlint/issues/687)) ([9075844](https://github.com/conventional-changelog/commitlint/commit/9075844)) +## [7.6.1](https://github.com/conventional-changelog/commitlint/compare/v7.6.0...v7.6.1) (2019-05-09) ### Bug Fixes -* improve format module resolving ([#464](https://github.com/conventional-changelog/commitlint/issues/464)) ([baed8b1](https://github.com/conventional-changelog/commitlint/commit/baed8b1)) +- handle absolute config paths correctly [#647](https://github.com/conventional-changelog/commitlint/issues/647) ([49b3a77](https://github.com/conventional-changelog/commitlint/commit/49b3a77)) +# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) +### Bug Fixes +- remove unneeded dev dependency ([6ccaf79](https://github.com/conventional-changelog/commitlint/commit/6ccaf79)) +- update cosmiconfig to safe >=5 [#599](https://github.com/conventional-changelog/commitlint/issues/599) ([f186fcb](https://github.com/conventional-changelog/commitlint/commit/f186fcb)) -<a name="7.2.0"></a> -# [7.2.0](https://github.com/conventional-changelog/commitlint/compare/v7.1.2...v7.2.0) (2018-10-05) +### Features + +- adds support for plugins ([#228](https://github.com/conventional-changelog/commitlint/issues/228)) ([#588](https://github.com/conventional-changelog/commitlint/issues/588)) ([cea4564](https://github.com/conventional-changelog/commitlint/commit/cea4564)) +- config based is-ignored overrides ([#595](https://github.com/conventional-changelog/commitlint/issues/595)) ([2434d71](https://github.com/conventional-changelog/commitlint/commit/2434d71)) + +<a name="7.5.0"></a> + +# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) +### Bug Fixes + +- all broken website references ([#564](https://github.com/conventional-changelog/commitlint/issues/564)) ([82eeb5a](https://github.com/conventional-changelog/commitlint/commit/82eeb5a)) +- replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) +- replace all website references with conventional changelog ([#563](https://github.com/conventional-changelog/commitlint/issues/563)) ([6b86fb1](https://github.com/conventional-changelog/commitlint/commit/6b86fb1)) + +<a name="7.3.1"></a> + +## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) + +**Note:** Version bump only for package @commitlint/load + +<a name="7.3.0"></a> + +# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) + +### Bug Fixes + +- update to security-patched dependency versions ([97c033b](https://github.com/conventional-changelog/commitlint/commit/97c033b)) ### Features -* **load:** add formatter option with default value ([b0e63d9](https://github.com/conventional-changelog/commitlint/commit/b0e63d9)) +- check stage before entering prompt ([#495](https://github.com/conventional-changelog/commitlint/issues/495)) ([3b3667a](https://github.com/conventional-changelog/commitlint/commit/3b3667a)), closes [#51](https://github.com/conventional-changelog/commitlint/issues/51) [#51](https://github.com/conventional-changelog/commitlint/issues/51) +<a name="7.2.1"></a> +## [7.2.1](https://github.com/conventional-changelog/commitlint/compare/v7.2.0...v7.2.1) (2018-10-11) +### Bug Fixes -<a name="7.1.2"></a> -## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) +- improve format module resolving ([#464](https://github.com/conventional-changelog/commitlint/issues/464)) ([baed8b1](https://github.com/conventional-changelog/commitlint/commit/baed8b1)) +<a name="7.2.0"></a> +# [7.2.0](https://github.com/conventional-changelog/commitlint/compare/v7.1.2...v7.2.0) (2018-10-05) +### Features -**Note:** Version bump only for package @commitlint/load +- **load:** add formatter option with default value ([b0e63d9](https://github.com/conventional-changelog/commitlint/commit/b0e63d9)) -<a name="6.1.1"></a> -## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) +<a name="7.1.2"></a> +## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) +**Note:** Version bump only for package @commitlint/load +<a name="6.1.1"></a> + +## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) **Note:** Version bump only for package @commitlint/load diff --git a/@commitlint/load/README.md b/@commitlint/load/README.md index 9488693304..a65da640c0 100644 --- a/@commitlint/load/README.md +++ b/@commitlint/load/README.md @@ -1,20 +1,15 @@ -> Load shared commitlint configuration - # @commitlint/load +Load shared commitlint configuration + ## Getting started ```shell npm install --save-dev @commitlint/load ``` -## Example +## Documentation -```js -const load = require('@commitlint/load').default; - -load({extends: ['./package']}).then((config) => console.log(config)); -// => { extends: ['./package', './package-b'], rules: {} } -``` +Consult [API docs](https://commitlint.js.org/api/load) for comprehensive documentation. -Consult [docs/api](https://conventional-changelog.github.io/commitlint/#/reference-api) for comprehensive documentation. +Documentation generated from [`docs` folder](../../docs/api/format.md). diff --git a/@commitlint/load/fixtures/basic-config/.commitlintrc b/@commitlint/load/fixtures/basic-config/.commitlintrc new file mode 100644 index 0000000000..c0c57253b1 --- /dev/null +++ b/@commitlint/load/fixtures/basic-config/.commitlintrc @@ -0,0 +1,5 @@ +formatter: '@commitlint/format' +rules: + zero: [0, 'never'] + one: [1, 'always'] + two: [2, 'never'] \ No newline at end of file diff --git a/@commitlint/load/fixtures/basic-config/.commitlintrc.cjs b/@commitlint/load/fixtures/basic-config/.commitlintrc.cjs new file mode 100644 index 0000000000..3c3d034f67 --- /dev/null +++ b/@commitlint/load/fixtures/basic-config/.commitlintrc.cjs @@ -0,0 +1,10 @@ +'use strict'; + +module.exports = { + formatter: '@commitlint/format', + rules: { + zero: [0, 'never'], + one: [1, 'always'], + two: [2, 'never'], + }, +}; \ No newline at end of file diff --git a/@commitlint/load/fixtures/basic-config/.commitlintrc.js b/@commitlint/load/fixtures/basic-config/.commitlintrc.js new file mode 100644 index 0000000000..2f37065f43 --- /dev/null +++ b/@commitlint/load/fixtures/basic-config/.commitlintrc.js @@ -0,0 +1,8 @@ +module.exports = { + formatter: '@commitlint/format', + rules: { + zero: [0, 'never'], + one: [1, 'always'], + two: [2, 'never'], + }, +}; \ No newline at end of file diff --git a/@commitlint/load/fixtures/basic-config/.commitlintrc.json b/@commitlint/load/fixtures/basic-config/.commitlintrc.json new file mode 100644 index 0000000000..df7c0e9b36 --- /dev/null +++ b/@commitlint/load/fixtures/basic-config/.commitlintrc.json @@ -0,0 +1,8 @@ +{ + "formatter": "@commitlint/format", + "rules": { + "zero": [0, "never"], + "one": [1, "always"], + "two": [2, "never"] + } +} \ No newline at end of file diff --git a/@commitlint/load/fixtures/basic-config/.commitlintrc.yaml b/@commitlint/load/fixtures/basic-config/.commitlintrc.yaml new file mode 100644 index 0000000000..c0c57253b1 --- /dev/null +++ b/@commitlint/load/fixtures/basic-config/.commitlintrc.yaml @@ -0,0 +1,5 @@ +formatter: '@commitlint/format' +rules: + zero: [0, 'never'] + one: [1, 'always'] + two: [2, 'never'] \ No newline at end of file diff --git a/@commitlint/load/fixtures/basic-config/.commitlintrc.yml b/@commitlint/load/fixtures/basic-config/.commitlintrc.yml new file mode 100644 index 0000000000..c0c57253b1 --- /dev/null +++ b/@commitlint/load/fixtures/basic-config/.commitlintrc.yml @@ -0,0 +1,5 @@ +formatter: '@commitlint/format' +rules: + zero: [0, 'never'] + one: [1, 'always'] + two: [2, 'never'] \ No newline at end of file diff --git a/@commitlint/load/fixtures/basic-config/commitlint.config.cjs b/@commitlint/load/fixtures/basic-config/commitlint.config.cjs new file mode 100644 index 0000000000..3c3d034f67 --- /dev/null +++ b/@commitlint/load/fixtures/basic-config/commitlint.config.cjs @@ -0,0 +1,10 @@ +'use strict'; + +module.exports = { + formatter: '@commitlint/format', + rules: { + zero: [0, 'never'], + one: [1, 'always'], + two: [2, 'never'], + }, +}; \ No newline at end of file diff --git a/@commitlint/load/fixtures/basic-config/commitlint.config.js b/@commitlint/load/fixtures/basic-config/commitlint.config.js new file mode 100644 index 0000000000..2f37065f43 --- /dev/null +++ b/@commitlint/load/fixtures/basic-config/commitlint.config.js @@ -0,0 +1,8 @@ +module.exports = { + formatter: '@commitlint/format', + rules: { + zero: [0, 'never'], + one: [1, 'always'], + two: [2, 'never'], + }, +}; \ No newline at end of file diff --git a/@commitlint/load/fixtures/basic-config/esm/.commitlintrc.js b/@commitlint/load/fixtures/basic-config/esm/.commitlintrc.js new file mode 100644 index 0000000000..fea4afc3ae --- /dev/null +++ b/@commitlint/load/fixtures/basic-config/esm/.commitlintrc.js @@ -0,0 +1,8 @@ +export default { + formatter: '@commitlint/format', + rules: { + zero: [0, 'never'], + one: [1, 'always'], + two: [2, 'never'], + }, +}; \ No newline at end of file diff --git a/@commitlint/load/fixtures/basic-config/esm/.commitlintrc.mjs b/@commitlint/load/fixtures/basic-config/esm/.commitlintrc.mjs new file mode 100644 index 0000000000..fea4afc3ae --- /dev/null +++ b/@commitlint/load/fixtures/basic-config/esm/.commitlintrc.mjs @@ -0,0 +1,8 @@ +export default { + formatter: '@commitlint/format', + rules: { + zero: [0, 'never'], + one: [1, 'always'], + two: [2, 'never'], + }, +}; \ No newline at end of file diff --git a/@commitlint/load/fixtures/basic-config/esm/commitlint.config.js b/@commitlint/load/fixtures/basic-config/esm/commitlint.config.js new file mode 100644 index 0000000000..fea4afc3ae --- /dev/null +++ b/@commitlint/load/fixtures/basic-config/esm/commitlint.config.js @@ -0,0 +1,8 @@ +export default { + formatter: '@commitlint/format', + rules: { + zero: [0, 'never'], + one: [1, 'always'], + two: [2, 'never'], + }, +}; \ No newline at end of file diff --git a/@commitlint/load/fixtures/basic-config/esm/commitlint.config.mjs b/@commitlint/load/fixtures/basic-config/esm/commitlint.config.mjs new file mode 100644 index 0000000000..fea4afc3ae --- /dev/null +++ b/@commitlint/load/fixtures/basic-config/esm/commitlint.config.mjs @@ -0,0 +1,8 @@ +export default { + formatter: '@commitlint/format', + rules: { + zero: [0, 'never'], + one: [1, 'always'], + two: [2, 'never'], + }, +}; \ No newline at end of file diff --git a/@commitlint/load/fixtures/basic-template/package.json b/@commitlint/load/fixtures/basic-template/package.json new file mode 100644 index 0000000000..0cef8e445f --- /dev/null +++ b/@commitlint/load/fixtures/basic-template/package.json @@ -0,0 +1,3 @@ +{ + "name": "load-test-js" +} \ No newline at end of file diff --git a/@commitlint/load/fixtures/extends-config/.commitlintrc b/@commitlint/load/fixtures/extends-config/.commitlintrc new file mode 100644 index 0000000000..c612d4f34f --- /dev/null +++ b/@commitlint/load/fixtures/extends-config/.commitlintrc @@ -0,0 +1,4 @@ +extends: + - './first-extended' +rules: + zero: [0, 'never'] \ No newline at end of file diff --git a/@commitlint/load/fixtures/extends-config/.commitlintrc.cjs b/@commitlint/load/fixtures/extends-config/.commitlintrc.cjs new file mode 100644 index 0000000000..a864f31563 --- /dev/null +++ b/@commitlint/load/fixtures/extends-config/.commitlintrc.cjs @@ -0,0 +1,8 @@ +'use strict'; + +module.exports = { + extends: ['./first-extended'], + rules: { + zero: [0, 'never'], + }, +}; \ No newline at end of file diff --git a/@commitlint/load/fixtures/recursive-extends-js/.commitlintrc.js b/@commitlint/load/fixtures/extends-config/.commitlintrc.js similarity index 68% rename from @commitlint/load/fixtures/recursive-extends-js/.commitlintrc.js rename to @commitlint/load/fixtures/extends-config/.commitlintrc.js index 7564fdc432..c58cb47afc 100644 --- a/@commitlint/load/fixtures/recursive-extends-js/.commitlintrc.js +++ b/@commitlint/load/fixtures/extends-config/.commitlintrc.js @@ -1,6 +1,6 @@ module.exports = { extends: ['./first-extended'], rules: { - zero: 0 - } -}; + zero: [0, 'never'], + }, +}; \ No newline at end of file diff --git a/@commitlint/load/fixtures/recursive-extends-json/.commitlintrc.json b/@commitlint/load/fixtures/extends-config/.commitlintrc.json similarity index 67% rename from @commitlint/load/fixtures/recursive-extends-json/.commitlintrc.json rename to @commitlint/load/fixtures/extends-config/.commitlintrc.json index 9a5e8e1d9f..a95915c9f6 100644 --- a/@commitlint/load/fixtures/recursive-extends-json/.commitlintrc.json +++ b/@commitlint/load/fixtures/extends-config/.commitlintrc.json @@ -1,6 +1,6 @@ { "extends": ["./first-extended"], "rules": { - "zero": 0 + "zero": [0, "never"] } -} +} \ No newline at end of file diff --git a/@commitlint/load/fixtures/extends-config/.commitlintrc.yaml b/@commitlint/load/fixtures/extends-config/.commitlintrc.yaml new file mode 100644 index 0000000000..c612d4f34f --- /dev/null +++ b/@commitlint/load/fixtures/extends-config/.commitlintrc.yaml @@ -0,0 +1,4 @@ +extends: + - './first-extended' +rules: + zero: [0, 'never'] \ No newline at end of file diff --git a/@commitlint/load/fixtures/recursive-extends-yaml/.commitlintrc.yml b/@commitlint/load/fixtures/extends-config/.commitlintrc.yml similarity index 66% rename from @commitlint/load/fixtures/recursive-extends-yaml/.commitlintrc.yml rename to @commitlint/load/fixtures/extends-config/.commitlintrc.yml index a5ef7fdffd..c612d4f34f 100644 --- a/@commitlint/load/fixtures/recursive-extends-yaml/.commitlintrc.yml +++ b/@commitlint/load/fixtures/extends-config/.commitlintrc.yml @@ -1,4 +1,4 @@ extends: - './first-extended' rules: - zero: 0 + zero: [0, 'never'] \ No newline at end of file diff --git a/@commitlint/load/fixtures/extends-config/commitlint.config.cjs b/@commitlint/load/fixtures/extends-config/commitlint.config.cjs new file mode 100644 index 0000000000..a864f31563 --- /dev/null +++ b/@commitlint/load/fixtures/extends-config/commitlint.config.cjs @@ -0,0 +1,8 @@ +'use strict'; + +module.exports = { + extends: ['./first-extended'], + rules: { + zero: [0, 'never'], + }, +}; \ No newline at end of file diff --git a/@commitlint/load/fixtures/extends-config/commitlint.config.js b/@commitlint/load/fixtures/extends-config/commitlint.config.js new file mode 100644 index 0000000000..c58cb47afc --- /dev/null +++ b/@commitlint/load/fixtures/extends-config/commitlint.config.js @@ -0,0 +1,6 @@ +module.exports = { + extends: ['./first-extended'], + rules: { + zero: [0, 'never'], + }, +}; \ No newline at end of file diff --git a/@commitlint/load/fixtures/extends-config/esm/.commitlintrc.js b/@commitlint/load/fixtures/extends-config/esm/.commitlintrc.js new file mode 100644 index 0000000000..bd3061cabb --- /dev/null +++ b/@commitlint/load/fixtures/extends-config/esm/.commitlintrc.js @@ -0,0 +1,6 @@ +export default { + extends: ['./first-extended'], + rules: { + zero: [0, 'never'], + }, +}; \ No newline at end of file diff --git a/@commitlint/load/fixtures/extends-config/esm/.commitlintrc.mjs b/@commitlint/load/fixtures/extends-config/esm/.commitlintrc.mjs new file mode 100644 index 0000000000..bd3061cabb --- /dev/null +++ b/@commitlint/load/fixtures/extends-config/esm/.commitlintrc.mjs @@ -0,0 +1,6 @@ +export default { + extends: ['./first-extended'], + rules: { + zero: [0, 'never'], + }, +}; \ No newline at end of file diff --git a/@commitlint/load/fixtures/extends-config/esm/commitlint.config.js b/@commitlint/load/fixtures/extends-config/esm/commitlint.config.js new file mode 100644 index 0000000000..bd3061cabb --- /dev/null +++ b/@commitlint/load/fixtures/extends-config/esm/commitlint.config.js @@ -0,0 +1,6 @@ +export default { + extends: ['./first-extended'], + rules: { + zero: [0, 'never'], + }, +}; \ No newline at end of file diff --git a/@commitlint/load/fixtures/extends-config/esm/commitlint.config.mjs b/@commitlint/load/fixtures/extends-config/esm/commitlint.config.mjs new file mode 100644 index 0000000000..bd3061cabb --- /dev/null +++ b/@commitlint/load/fixtures/extends-config/esm/commitlint.config.mjs @@ -0,0 +1,6 @@ +export default { + extends: ['./first-extended'], + rules: { + zero: [0, 'never'], + }, +}; \ No newline at end of file diff --git a/@commitlint/load/fixtures/recursive-extends-json/first-extended/index.js b/@commitlint/load/fixtures/extends-js-template/first-extended/index.js similarity index 71% rename from @commitlint/load/fixtures/recursive-extends-json/first-extended/index.js rename to @commitlint/load/fixtures/extends-js-template/first-extended/index.js index 4317428ad1..8bc1854ccc 100644 --- a/@commitlint/load/fixtures/recursive-extends-json/first-extended/index.js +++ b/@commitlint/load/fixtures/extends-js-template/first-extended/index.js @@ -1,6 +1,6 @@ module.exports = { extends: ['./second-extended'], rules: { - one: 1 - } + one: [1, 'always'], + }, }; diff --git a/@commitlint/load/fixtures/recursive-extends-js/first-extended/second-extended/index.js b/@commitlint/load/fixtures/extends-js-template/first-extended/second-extended/index.js similarity index 56% rename from @commitlint/load/fixtures/recursive-extends-js/first-extended/second-extended/index.js rename to @commitlint/load/fixtures/extends-js-template/first-extended/second-extended/index.js index d199d354da..b0902ace44 100644 --- a/@commitlint/load/fixtures/recursive-extends-js/first-extended/second-extended/index.js +++ b/@commitlint/load/fixtures/extends-js-template/first-extended/second-extended/index.js @@ -1,5 +1,5 @@ module.exports = { rules: { - two: 2 - } + two: [2, 'never'], + }, }; diff --git a/@commitlint/load/fixtures/extends-js-template/package.json b/@commitlint/load/fixtures/extends-js-template/package.json new file mode 100644 index 0000000000..0cef8e445f --- /dev/null +++ b/@commitlint/load/fixtures/extends-js-template/package.json @@ -0,0 +1,3 @@ +{ + "name": "load-test-js" +} \ No newline at end of file diff --git a/@commitlint/load/fixtures/help-url/commitlint.config.js b/@commitlint/load/fixtures/help-url/commitlint.config.js new file mode 100644 index 0000000000..823bde5e9a --- /dev/null +++ b/@commitlint/load/fixtures/help-url/commitlint.config.js @@ -0,0 +1,3 @@ +module.exports = { + helpUrl: 'https://github.com/conventional-changelog/commitlint' +}; diff --git a/@commitlint/load/fixtures/outer-scope/commitlint.config.js b/@commitlint/load/fixtures/outer-scope/commitlint.config.js index 23554f588f..9b27c320a7 100644 --- a/@commitlint/load/fixtures/outer-scope/commitlint.config.js +++ b/@commitlint/load/fixtures/outer-scope/commitlint.config.js @@ -1,7 +1,7 @@ module.exports = { rules: { - outer: true, - inner: false, - child: false - } + outer: [1, 'never', true], + inner: [1, 'never', false], + child: [1, 'never', false], + }, }; diff --git a/@commitlint/load/fixtures/outer-scope/inner-scope/child-scope/commitlint.config.js b/@commitlint/load/fixtures/outer-scope/inner-scope/child-scope/commitlint.config.js index 925d251382..d2c04c8054 100644 --- a/@commitlint/load/fixtures/outer-scope/inner-scope/child-scope/commitlint.config.js +++ b/@commitlint/load/fixtures/outer-scope/inner-scope/child-scope/commitlint.config.js @@ -1,7 +1,7 @@ module.exports = { rules: { - outer: false, - inner: false, - child: true - } + outer: [2, 'always', false], + inner: [2, 'always', false], + child: [2, 'always', true], + }, }; diff --git a/@commitlint/load/fixtures/package.json b/@commitlint/load/fixtures/package.json new file mode 100644 index 0000000000..5bbefffbab --- /dev/null +++ b/@commitlint/load/fixtures/package.json @@ -0,0 +1,3 @@ +{ + "type": "commonjs" +} diff --git a/@commitlint/load/fixtures/parser-preset-angular/package.json b/@commitlint/load/fixtures/parser-preset-angular/package.json index 1016e705f9..5bc9d3e3a7 100644 --- a/@commitlint/load/fixtures/parser-preset-angular/package.json +++ b/@commitlint/load/fixtures/parser-preset-angular/package.json @@ -2,6 +2,6 @@ "name": "parser-preset-angular", "version": "1.0.0", "devDependencies": { - "conventional-changelog-angular": "^5.0.0" + "conventional-changelog-angular": "^7.0.0" } } diff --git a/@commitlint/load/fixtures/parser-preset-conventional-without-factory/package.json b/@commitlint/load/fixtures/parser-preset-conventional-without-factory/package.json index 0b3db72ca4..2c11da9498 100644 --- a/@commitlint/load/fixtures/parser-preset-conventional-without-factory/package.json +++ b/@commitlint/load/fixtures/parser-preset-conventional-without-factory/package.json @@ -2,6 +2,6 @@ "name": "parser-preset-conventional-without-factory", "version": "1.0.0", "devDependencies": { - "conventional-changelog-conventionalcommits": "^4.3.1" + "conventional-changelog-conventionalcommits": "^7.0.2" } } diff --git a/@commitlint/load/fixtures/parser-preset-conventionalcommits/package.json b/@commitlint/load/fixtures/parser-preset-conventionalcommits/package.json index 2fe7e8cbba..5812d97c34 100644 --- a/@commitlint/load/fixtures/parser-preset-conventionalcommits/package.json +++ b/@commitlint/load/fixtures/parser-preset-conventionalcommits/package.json @@ -2,6 +2,6 @@ "name": "parser-preset-conventionalcommits", "version": "1.0.0", "devDependencies": { - "conventional-changelog-conventionalcommits": "^4.3.1" + "conventional-changelog-conventionalcommits": "^7.0.2" } } diff --git a/@commitlint/load/fixtures/recursive-extends-js/first-extended/index.js b/@commitlint/load/fixtures/recursive-extends-js/first-extended/index.js deleted file mode 100644 index 4317428ad1..0000000000 --- a/@commitlint/load/fixtures/recursive-extends-js/first-extended/index.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - extends: ['./second-extended'], - rules: { - one: 1 - } -}; diff --git a/@commitlint/load/fixtures/recursive-extends-json/first-extended/second-extended/index.js b/@commitlint/load/fixtures/recursive-extends-json/first-extended/second-extended/index.js deleted file mode 100644 index d199d354da..0000000000 --- a/@commitlint/load/fixtures/recursive-extends-json/first-extended/second-extended/index.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - rules: { - two: 2 - } -}; diff --git a/@commitlint/load/fixtures/recursive-extends-package/first-extended/index.js b/@commitlint/load/fixtures/recursive-extends-package/first-extended/index.js deleted file mode 100644 index 4317428ad1..0000000000 --- a/@commitlint/load/fixtures/recursive-extends-package/first-extended/index.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - extends: ['./second-extended'], - rules: { - one: 1 - } -}; diff --git a/@commitlint/load/fixtures/recursive-extends-package/first-extended/second-extended/index.js b/@commitlint/load/fixtures/recursive-extends-package/first-extended/second-extended/index.js deleted file mode 100644 index d199d354da..0000000000 --- a/@commitlint/load/fixtures/recursive-extends-package/first-extended/second-extended/index.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - rules: { - two: 2 - } -}; diff --git a/@commitlint/load/fixtures/recursive-extends-package/package.json b/@commitlint/load/fixtures/recursive-extends-package/package.json deleted file mode 100644 index 1818049244..0000000000 --- a/@commitlint/load/fixtures/recursive-extends-package/package.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "commitlint": { - "extends": [ - "./first-extended" - ], - "rules": { - "zero": 0 - } - } -} diff --git a/@commitlint/load/fixtures/recursive-extends-ts/commitlint.config.ts b/@commitlint/load/fixtures/recursive-extends-ts/commitlint.config.ts new file mode 100644 index 0000000000..fff038733a --- /dev/null +++ b/@commitlint/load/fixtures/recursive-extends-ts/commitlint.config.ts @@ -0,0 +1,9 @@ +import type {UserConfig} from './types'; + +const Configuration: UserConfig = { + extends: ['./first-extended/index.ts'], + rules: { + zero: [0, 'never', 'zero'] + } +}; +module.exports = Configuration; \ No newline at end of file diff --git a/@commitlint/load/fixtures/recursive-extends-ts/first-extended/index.ts b/@commitlint/load/fixtures/recursive-extends-ts/first-extended/index.ts new file mode 100644 index 0000000000..d6f3551f95 --- /dev/null +++ b/@commitlint/load/fixtures/recursive-extends-ts/first-extended/index.ts @@ -0,0 +1,7 @@ +import type {UserConfig} from '../types'; +module.exports = { + extends: ['./second-extended/index.ts'], + rules: { + one: [1, 'never', 'one'] + } +} as UserConfig; diff --git a/@commitlint/load/fixtures/recursive-extends-ts/first-extended/second-extended/index.ts b/@commitlint/load/fixtures/recursive-extends-ts/first-extended/second-extended/index.ts new file mode 100644 index 0000000000..fb8d23b4cd --- /dev/null +++ b/@commitlint/load/fixtures/recursive-extends-ts/first-extended/second-extended/index.ts @@ -0,0 +1,6 @@ +import type {UserConfig} from '../../types'; +module.exports = { + rules: { + two: [2, 'never', 'two'] + } +} as UserConfig; diff --git a/@commitlint/load/fixtures/recursive-extends-ts/types.ts b/@commitlint/load/fixtures/recursive-extends-ts/types.ts new file mode 100644 index 0000000000..5a4f43fbee --- /dev/null +++ b/@commitlint/load/fixtures/recursive-extends-ts/types.ts @@ -0,0 +1,11 @@ +export interface UserConfig { + extends?: string[]; + formatter?: string; + rules?: any; + parserPreset?: any; + ignores?: ((commit: string) => boolean)[]; + defaultIgnores?: boolean; + plugins?: (string | Plugin)[]; + helpUrl?: string; + prompt?: any; +} \ No newline at end of file diff --git a/@commitlint/load/fixtures/recursive-extends-yaml/first-extended/index.js b/@commitlint/load/fixtures/recursive-extends-yaml/first-extended/index.js deleted file mode 100644 index 4317428ad1..0000000000 --- a/@commitlint/load/fixtures/recursive-extends-yaml/first-extended/index.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - extends: ['./second-extended'], - rules: { - one: 1 - } -}; diff --git a/@commitlint/load/fixtures/recursive-extends-yaml/first-extended/second-extended/index.js b/@commitlint/load/fixtures/recursive-extends-yaml/first-extended/second-extended/index.js deleted file mode 100644 index d199d354da..0000000000 --- a/@commitlint/load/fixtures/recursive-extends-yaml/first-extended/second-extended/index.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - rules: { - two: 2 - } -}; diff --git a/@commitlint/load/fixtures/recursive-extends/commitlint.config.js b/@commitlint/load/fixtures/recursive-extends/commitlint.config.js index 7564fdc432..f90e771292 100644 --- a/@commitlint/load/fixtures/recursive-extends/commitlint.config.js +++ b/@commitlint/load/fixtures/recursive-extends/commitlint.config.js @@ -1,6 +1,6 @@ module.exports = { extends: ['./first-extended'], rules: { - zero: 0 - } + zero: [0, 'never'], + }, }; diff --git a/@commitlint/load/fixtures/recursive-extends/first-extended/commitlint.config.js b/@commitlint/load/fixtures/recursive-extends/first-extended/commitlint.config.js index 4317428ad1..8bc1854ccc 100644 --- a/@commitlint/load/fixtures/recursive-extends/first-extended/commitlint.config.js +++ b/@commitlint/load/fixtures/recursive-extends/first-extended/commitlint.config.js @@ -1,6 +1,6 @@ module.exports = { extends: ['./second-extended'], rules: { - one: 1 - } + one: [1, 'always'], + }, }; diff --git a/@commitlint/load/fixtures/recursive-extends/first-extended/second-extended/index.js b/@commitlint/load/fixtures/recursive-extends/first-extended/second-extended/index.js index d199d354da..b0902ace44 100644 --- a/@commitlint/load/fixtures/recursive-extends/first-extended/second-extended/index.js +++ b/@commitlint/load/fixtures/recursive-extends/first-extended/second-extended/index.js @@ -1,5 +1,5 @@ module.exports = { rules: { - two: 2 - } + two: [2, 'never'], + }, }; diff --git a/@commitlint/load/fixtures/recursive-parser-preset-conventional-atom/first-extended/second-extended/package.json b/@commitlint/load/fixtures/recursive-parser-preset-conventional-atom/first-extended/second-extended/package.json index 4d37766e0b..c764557468 100644 --- a/@commitlint/load/fixtures/recursive-parser-preset-conventional-atom/first-extended/second-extended/package.json +++ b/@commitlint/load/fixtures/recursive-parser-preset-conventional-atom/first-extended/second-extended/package.json @@ -2,6 +2,6 @@ "name": "@second-extend/recursive-parser-preset-conventional-atom", "version": "1.0.0", "devDependencies": { - "conventional-changelog-atom": "2.0.3" + "conventional-changelog-atom": "^2.0.3" } } diff --git a/@commitlint/load/fixtures/specify-config-file/commitlint.config.js b/@commitlint/load/fixtures/specify-config-file/commitlint.config.js index 1fd91e7bb1..31855af125 100644 --- a/@commitlint/load/fixtures/specify-config-file/commitlint.config.js +++ b/@commitlint/load/fixtures/specify-config-file/commitlint.config.js @@ -1,6 +1,6 @@ module.exports = { rules: { - foo: 'hello', - bar: 'world' - } + foo: [1, 'never', 'hello'], + bar: [1, 'never', 'world'], + }, }; diff --git a/@commitlint/load/fixtures/specify-config-file/config/commitlint.config.js b/@commitlint/load/fixtures/specify-config-file/config/commitlint.config.js index be422cfda5..fbf4c8adc9 100644 --- a/@commitlint/load/fixtures/specify-config-file/config/commitlint.config.js +++ b/@commitlint/load/fixtures/specify-config-file/config/commitlint.config.js @@ -1,5 +1,5 @@ module.exports = { rules: { - foo: 'bar' - } + foo: [1, 'always', 'bar'], + }, }; diff --git a/@commitlint/load/fixtures/trash-extend/commitlint.config.js b/@commitlint/load/fixtures/trash-extend/commitlint.config.js index 3b41dace2b..7986e40f48 100644 --- a/@commitlint/load/fixtures/trash-extend/commitlint.config.js +++ b/@commitlint/load/fixtures/trash-extend/commitlint.config.js @@ -2,6 +2,6 @@ module.exports = { extends: ['./one'], zero: '0', rules: { - zero: 0 - } + zero: [0, 'always', 'zero'], + }, }; diff --git a/@commitlint/load/fixtures/trash-extend/one.js b/@commitlint/load/fixtures/trash-extend/one.js index 60f3a3530d..ae7db74d52 100644 --- a/@commitlint/load/fixtures/trash-extend/one.js +++ b/@commitlint/load/fixtures/trash-extend/one.js @@ -1,6 +1,6 @@ module.exports = { one: 1, rules: { - one: 1 - } + one: [1, 'always', 'one'], + }, }; diff --git a/@commitlint/load/fixtures/trash-file/commitlint.config.js b/@commitlint/load/fixtures/trash-file/commitlint.config.js index a7a8e43bd8..477faba44e 100644 --- a/@commitlint/load/fixtures/trash-file/commitlint.config.js +++ b/@commitlint/load/fixtures/trash-file/commitlint.config.js @@ -2,7 +2,7 @@ module.exports = { foo: 'bar', baz: 'bar', rules: { - foo: 'bar', - baz: 'bar' - } + foo: [1, 'always', 'bar'], + baz: [1, 'always', 'bar'], + }, }; diff --git a/@commitlint/load/package.json b/@commitlint/load/package.json index 239d75d1ff..583a00ee61 100644 --- a/@commitlint/load/package.json +++ b/@commitlint/load/package.json @@ -1,6 +1,7 @@ { "name": "@commitlint/load", - "version": "13.1.0", + "type": "module", + "version": "20.1.0", "description": "Load shared commitlint configuration", "main": "lib/load.js", "types": "lib/load.d.ts", @@ -12,16 +13,17 @@ "pkg": "pkg-check --skip-import" }, "engines": { - "node": ">=v12" + "node": ">=v18" }, "repository": { "type": "git", - "url": "https://github.com/conventional-changelog/commitlint.git" + "url": "https://github.com/conventional-changelog/commitlint.git", + "directory": "@commitlint/load" }, "bugs": { "url": "https://github.com/conventional-changelog/commitlint/issues" }, - "homepage": "https://github.com/conventional-changelog/commitlint#readme", + "homepage": "https://commitlint.js.org/", "keywords": [ "conventional-changelog", "commitlint", @@ -34,20 +36,25 @@ }, "license": "MIT", "devDependencies": { - "@commitlint/test": "^13.0.0", - "@commitlint/utils": "^13.0.0", - "@types/lodash": "4.14.171", - "conventional-changelog-atom": "^2.0.8", - "execa": "^5.0.0" + "@commitlint/test": "^20.0.0", + "@types/lodash.isplainobject": "^4.0.8", + "@types/lodash.merge": "^4.6.8", + "@types/lodash.uniq": "^4.5.8", + "@types/node": "^18.19.17", + "conventional-changelog-atom": "^4.0.0", + "typescript": "^5.2.2" }, "dependencies": { - "@commitlint/execute-rule": "^13.0.0", - "@commitlint/resolve-extends": "^13.0.0", - "@commitlint/types": "^13.1.0", - "chalk": "^4.0.0", - "cosmiconfig": "^7.0.0", - "lodash": "^4.17.19", - "resolve-from": "^5.0.0" + "@commitlint/config-validator": "^20.0.0", + "@commitlint/execute-rule": "^20.0.0", + "@commitlint/resolve-extends": "^20.1.0", + "@commitlint/types": "^20.0.0", + "chalk": "^5.3.0", + "cosmiconfig": "^9.0.0", + "cosmiconfig-typescript-loader": "^6.1.0", + "lodash.isplainobject": "^4.0.6", + "lodash.merge": "^4.6.2", + "lodash.uniq": "^4.5.0" }, - "gitHead": "70f7f4688b51774e7ac5e40e896cdaa3f132b2bc" + "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" } diff --git a/@commitlint/load/src/load.test.ts b/@commitlint/load/src/load.test.ts index d192ff3548..43a02d4bf5 100644 --- a/@commitlint/load/src/load.test.ts +++ b/@commitlint/load/src/load.test.ts @@ -1,73 +1,137 @@ -const plugin = jest.fn(); -const scopedPlugin = jest.fn(); +import { describe, test, expect, vi } from "vitest"; +import { readFileSync, writeFileSync } from "node:fs"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; -jest.mock('commitlint-plugin-example', () => plugin, {virtual: true}); -jest.mock('@scope/commitlint-plugin-example', () => scopedPlugin, { - virtual: true, -}); +import { RuleConfigSeverity } from "@commitlint/types"; +import { fix, git, npm } from "@commitlint/test"; + +import load, { resolveFrom } from "./load.js"; +import { isDynamicAwaitSupported } from "./utils/load-config.js"; -import path from 'path'; -import resolveFrom from 'resolve-from'; -import {fix, git, npm} from '@commitlint/test'; +const __dirname = path.resolve(fileURLToPath(import.meta.url), ".."); -import load from './load'; +const plugin = vi.fn(); +const scopedPlugin = vi.fn(); + +vi.mock("commitlint-plugin-example", () => ({ + default: plugin, +})); +vi.mock("@scope/commitlint-plugin-example", () => ({ + default: scopedPlugin, +})); const fixBootstrap = (name: string) => fix.bootstrap(name, __dirname); const gitBootstrap = (name: string) => git.bootstrap(name, __dirname); const npmBootstrap = (name: string) => npm.bootstrap(name, __dirname); -test('extends-empty should have no rules', async () => { - const cwd = await gitBootstrap('fixtures/extends-empty'); - const actual = await load({}, {cwd}); +test("extends-empty should have no rules", async () => { + const cwd = await gitBootstrap("fixtures/extends-empty"); + const actual = await load({}, { cwd }); expect(actual.rules).toMatchObject({}); + expect(actual.parserPreset).not.toBeDefined(); }); -test('uses seed as configured', async () => { - const cwd = await gitBootstrap('fixtures/extends-empty'); - const rules = {'body-case': [1, 'never', 'camel-case'] as any}; - - const actual = await load({rules}, {cwd}); - - expect(actual.rules['body-case']).toStrictEqual([1, 'never', 'camel-case']); -}); - -test('rules should be loaded from relative config file', async () => { - const file = 'config/commitlint.config.js'; - const cwd = await gitBootstrap('fixtures/specify-config-file'); - const rules = {'body-case': [1, 'never', 'camel-case'] as any}; +test("uses seed as configured", async () => { + const cwd = await gitBootstrap("fixtures/extends-empty"); + const rules = { + "body-case": [RuleConfigSeverity.Warning, "never", "camel-case"] as any, + }; - const actual = await load({rules}, {cwd, file}); + const actual = await load({ rules }, { cwd }); - expect(actual.rules['body-case']).toStrictEqual([1, 'never', 'camel-case']); + expect(actual.rules["body-case"]).toStrictEqual([ + RuleConfigSeverity.Warning, + "never", + "camel-case", + ]); }); -test('rules should be loaded from absolute config file', async () => { - const cwd = await gitBootstrap('fixtures/specify-config-file'); - const file = path.resolve(cwd, 'config/commitlint.config.js'); - const rules = {'body-case': [1, 'never', 'camel-case'] as any}; - - const actual = await load({rules}, {cwd: process.cwd(), file}); - - expect(actual.rules['body-case']).toStrictEqual([1, 'never', 'camel-case']); -}); +test("rules should be loaded from local", async () => { + const actual = await load({ + rules: { + direct: [RuleConfigSeverity.Warning, "never", "foo"], + func: () => [RuleConfigSeverity.Warning, "never", "foo"], + async: async () => [RuleConfigSeverity.Warning, "never", "foo"], + promise: () => + Promise.resolve([RuleConfigSeverity.Warning, "never", "foo"]), + }, + }); -test('plugins should be loaded from seed', async () => { - const cwd = await gitBootstrap('fixtures/extends-empty'); - const actual = await load({plugins: ['example', '@scope/example']}, {cwd}); + expect(actual.rules["direct"]).toStrictEqual([ + RuleConfigSeverity.Warning, + "never", + "foo", + ]); + expect(actual.rules["func"]).toStrictEqual([ + RuleConfigSeverity.Warning, + "never", + "foo", + ]); + expect(actual.rules["async"]).toStrictEqual([ + RuleConfigSeverity.Warning, + "never", + "foo", + ]); + expect(actual.rules["promise"]).toStrictEqual([ + RuleConfigSeverity.Warning, + "never", + "foo", + ]); +}); + +test("rules should be loaded from relative config file", async () => { + const file = "config/commitlint.config.js"; + const cwd = await gitBootstrap("fixtures/specify-config-file"); + const rules = { + "body-case": [RuleConfigSeverity.Warning, "never", "camel-case"] as any, + }; + + const actual = await load({ rules }, { cwd, file }); + + expect(actual.rules["body-case"]).toStrictEqual([ + RuleConfigSeverity.Warning, + "never", + "camel-case", + ]); +}); + +test("rules should be loaded from absolute config file", async () => { + const cwd = await gitBootstrap("fixtures/specify-config-file"); + const file = path.resolve(cwd, "config/commitlint.config.js"); + const rules = { + "body-case": [RuleConfigSeverity.Warning, "never", "camel-case"] as any, + }; + + const actual = await load({ rules }, { cwd: process.cwd(), file }); + + expect(actual.rules["body-case"]).toStrictEqual([ + RuleConfigSeverity.Warning, + "never", + "camel-case", + ]); +}); + +test("plugins should be loaded from seed", async () => { + const cwd = await gitBootstrap("fixtures/extends-empty"); + const actual = await load( + { plugins: ["example", "@scope/example"] }, + { cwd }, + ); expect(actual.plugins).toMatchObject({ example: plugin, - '@scope/example': scopedPlugin, + "@scope/example": scopedPlugin, }); }); -test('plugins should be loaded from local', async () => { +test("plugins should be loaded from local", async () => { const actual = await load({ plugins: [ { rules: { - test: () => [true, 'asd'], + test: () => [true, "asd"], }, }, ], @@ -80,360 +144,440 @@ test('plugins should be loaded from local', async () => { test: expect.any(Function), }, }, - }) + }), ); }); -test('plugins should be loaded from config', async () => { - const cwd = await gitBootstrap('fixtures/extends-plugins'); - const actual = await load({}, {cwd}); +test("plugins should be loaded from config", async () => { + const cwd = await gitBootstrap("fixtures/extends-plugins"); + const actual = await load({}, { cwd }); expect(actual.plugins).toMatchObject({ example: plugin, - '@scope/example': scopedPlugin, + "@scope/example": scopedPlugin, }); }); -test('plugins should be loaded from shareable config', async () => { - const cwd = await gitBootstrap('fixtures/extends-with-plugins'); - const actual = await load({}, {cwd}); +test("plugins should be loaded from shareable config", async () => { + const cwd = await gitBootstrap("fixtures/extends-with-plugins"); + const actual = await load({}, { cwd }); expect(actual.plugins).toMatchObject({ example: plugin, - '@scope/example': scopedPlugin, + "@scope/example": scopedPlugin, }); }); -test('local plugins should be loaded from shareable configs', async () => { - const cwd = await gitBootstrap('fixtures/extends-with-local-plugins'); - const actual = await load({}, {cwd}); +test("local plugins should be loaded from shareable configs", async () => { + const cwd = await gitBootstrap("fixtures/extends-with-local-plugins"); + const actual = await load({}, { cwd }); expect(actual.plugins).toEqual( expect.objectContaining({ local: { rules: { - 'hello-world-rule': expect.any(Function), - 'is-positive': expect.any(Function), + "hello-world-rule": expect.any(Function), + "is-positive": expect.any(Function), }, }, - }) + }), ); }); -test('uses seed with parserPreset', async () => { - const cwd = await gitBootstrap('fixtures/parser-preset'); - const {parserPreset: actual} = await load( - {parserPreset: './conventional-changelog-custom'}, - {cwd} +test("uses seed with parserPreset", async () => { + const cwd = await gitBootstrap("fixtures/parser-preset"); + const { parserPreset: actual } = await load( + { parserPreset: "./conventional-changelog-custom" }, + { cwd }, ); - expect(actual.name).toBe('./conventional-changelog-custom'); - expect(actual.parserOpts).toMatchObject({ + expect(actual).toBeDefined(); + expect(actual!.name).toBe("./conventional-changelog-custom"); + expect(actual!.parserOpts).toMatchObject({ headerPattern: /^(\w*)(?:\((.*)\))?-(.*)$/, }); }); -test('invalid extend should throw', async () => { - const cwd = await gitBootstrap('fixtures/extends-invalid'); +test("invalid extend should throw", async () => { + const cwd = await gitBootstrap("fixtures/extends-invalid"); - await expect(load({}, {cwd})).rejects.toThrow(); + await expect(load({}, { cwd })).rejects.toThrow(); }); -test('empty file should have no rules', async () => { - const cwd = await gitBootstrap('fixtures/empty-object-file'); - const actual = await load({}, {cwd}); +test("empty file should have no rules", async () => { + const cwd = await gitBootstrap("fixtures/empty-object-file"); + const actual = await load({}, { cwd }); expect(actual.rules).toMatchObject({}); }); -test('empty file should extend nothing', async () => { - const cwd = await gitBootstrap('fixtures/empty-file'); - const actual = await load({}, {cwd}); +test("empty file should extend nothing", async () => { + const cwd = await gitBootstrap("fixtures/empty-file"); + const actual = await load({}, { cwd }); expect(actual.extends).toHaveLength(0); }); -test('respects cwd option', async () => { - const cwd = await gitBootstrap('fixtures/recursive-extends/first-extended'); - const actual = await load({}, {cwd}); - - expect(actual).toMatchObject({ - formatter: '@commitlint/format', - extends: ['./second-extended'], - plugins: {}, - rules: { - one: 1, - two: 2, - }, - }); -}); - -test('recursive extends', async () => { - const cwd = await gitBootstrap('fixtures/recursive-extends'); - const actual = await load({}, {cwd}); - - expect(actual).toMatchObject({ - formatter: '@commitlint/format', - extends: ['./first-extended'], - plugins: {}, - rules: { - zero: 0, - one: 1, - two: 2, - }, - }); -}); - -test('recursive extends with json file', async () => { - const cwd = await gitBootstrap('fixtures/recursive-extends-json'); - const actual = await load({}, {cwd}); - - expect(actual).toMatchObject({ - formatter: '@commitlint/format', - extends: ['./first-extended'], - plugins: {}, - rules: { - zero: 0, - one: 1, - two: 2, - }, - }); -}); - -test('recursive extends with yaml file', async () => { - const cwd = await gitBootstrap('fixtures/recursive-extends-yaml'); - const actual = await load({}, {cwd}); +test("respects cwd option", async () => { + const cwd = await gitBootstrap("fixtures/recursive-extends/first-extended"); + const actual = await load({}, { cwd }); expect(actual).toMatchObject({ - formatter: '@commitlint/format', - extends: ['./first-extended'], + formatter: "@commitlint/format", + extends: ["./second-extended"], plugins: {}, rules: { - zero: 0, - one: 1, - two: 2, + one: [RuleConfigSeverity.Warning, "always"], + two: [RuleConfigSeverity.Error, "never"], }, }); }); -test('recursive extends with js file', async () => { - const cwd = await gitBootstrap('fixtures/recursive-extends-js'); - const actual = await load({}, {cwd}); - - expect(actual).toMatchObject({ - formatter: '@commitlint/format', - extends: ['./first-extended'], - plugins: {}, - rules: { - zero: 0, - one: 1, - two: 2, - }, +describe.each([["basic"], ["extends"]])("%s config", (template) => { + const isExtendsTemplate = template === "extends"; + + const configFiles = [ + "commitlint.config.cjs", + "commitlint.config.js", + "commitlint.config.mjs", + "package.json", + "package.yaml", + ".commitlintrc", + ".commitlintrc.cjs", + ".commitlintrc.js", + ".commitlintrc.json", + ".commitlintrc.mjs", + ".commitlintrc.yml", + ".commitlintrc.yaml", + ]; + + const configTestCases = [ + ...configFiles + .filter((filename) => !filename.endsWith(".mjs")) + .map((filename) => ({ filename, isEsm: false })), + ...configFiles + .filter((filename) => + [".mjs", ".js"].some((ext) => filename.endsWith(ext)), + ) + .map((filename) => ({ filename, isEsm: true })), + ]; + + const getConfigContents = ({ + filename, + isEsm, + }: { + filename: string; + isEsm: boolean; + }): string | NodeJS.ArrayBufferView => { + if (filename === "package.json") { + const configPath = path.join( + __dirname, + `../fixtures/${template}-config/.commitlintrc.json`, + ); + const commitlint = JSON.parse( + readFileSync(configPath, { encoding: "utf-8" }), + ); + return JSON.stringify({ commitlint }); + } else if (filename === "package.yaml") { + const configPath = path.join( + __dirname, + `../fixtures/${template}-config/.commitlintrc.yaml`, + ); + const yaml = readFileSync(configPath, { encoding: "utf-8" }); + return `commitlint:\n${yaml.replace(/^/gm, " ")}`; + } else { + const filePath = ["..", "fixtures", `${template}-config`, filename]; + + if (isEsm) { + filePath.splice(3, 0, "esm"); + } + + const configPath = path.join(__dirname, filePath.join("/")); + return readFileSync(configPath); + } + }; + + const esmBootstrap = (cwd: string) => { + const packageJsonPath = path.join(cwd, "package.json"); + const packageJSON = JSON.parse( + readFileSync(packageJsonPath, { encoding: "utf-8" }), + ); + + writeFileSync( + packageJsonPath, + JSON.stringify({ + ...packageJSON, + type: "module", + }), + ); + }; + + const templateFolder = [template, isExtendsTemplate ? "js" : "", "template"] + .filter((elem) => elem) + .join("-"); + + test.each( + configTestCases + // Skip ESM tests for the extends suite until resolve-extends supports ESM + .filter(({ isEsm }) => template !== "extends" || !isEsm) + // Skip ESM tests if dynamic await is not supported; Jest will crash with a seg fault error + .filter(({ isEsm }) => isDynamicAwaitSupported() || !isEsm), + )("$filename, ESM: $isEsm", async ({ filename, isEsm }) => { + const cwd = await gitBootstrap(`fixtures/${templateFolder}`); + + if (isEsm) { + esmBootstrap(cwd); + } + + writeFileSync( + path.join(cwd, filename), + getConfigContents({ filename, isEsm }), + ); + + const actual = await load({}, { cwd }); + + expect(actual).toMatchObject({ + formatter: "@commitlint/format", + extends: isExtendsTemplate ? ["./first-extended"] : [], + plugins: {}, + rules: { + zero: [RuleConfigSeverity.Disabled, "never"], + one: [RuleConfigSeverity.Warning, "always"], + two: [RuleConfigSeverity.Error, "never"], + }, + }); }); }); -test('recursive extends with package.json file', async () => { - const cwd = await gitBootstrap('fixtures/recursive-extends-package'); - const actual = await load({}, {cwd}); +test("recursive extends with ts file", async () => { + const cwd = await gitBootstrap("fixtures/recursive-extends-ts"); + const actual = await load({}, { cwd }); expect(actual).toMatchObject({ - formatter: '@commitlint/format', - extends: ['./first-extended'], + formatter: "@commitlint/format", + extends: ["./first-extended/index.ts"], plugins: {}, rules: { - zero: 0, - one: 1, - two: 2, + zero: [RuleConfigSeverity.Disabled, "never", "zero"], + one: [RuleConfigSeverity.Warning, "never", "one"], + two: [RuleConfigSeverity.Error, "never", "two"], }, }); }); -test('parser preset overwrites completely instead of merging', async () => { - const cwd = await gitBootstrap('fixtures/parser-preset-override'); - const actual = await load({}, {cwd}); +test("parser preset overwrites completely instead of merging", async () => { + const cwd = await gitBootstrap("fixtures/parser-preset-override"); + const actual = await load({}, { cwd }); - expect(actual.parserPreset.name).toBe('./custom'); - expect(actual.parserPreset.parserOpts).toMatchObject({ + expect(actual.parserPreset).toBeDefined(); + expect(actual.parserPreset!.name).toBe("./custom"); + expect(actual.parserPreset!.parserOpts).toMatchObject({ headerPattern: /.*/, }); }); -test('recursive extends with parserPreset', async () => { - const cwd = await gitBootstrap('fixtures/recursive-parser-preset'); - const actual = await load({}, {cwd}); +test("recursive extends with parserPreset", async () => { + const cwd = await gitBootstrap("fixtures/recursive-parser-preset"); + const actual = await load({}, { cwd }); - expect(actual.parserPreset.name).toBe('./conventional-changelog-custom'); - expect(actual.parserPreset.parserOpts).toMatchObject({ + expect(actual.parserPreset).toBeDefined(); + expect(actual.parserPreset!.name).toBe("./conventional-changelog-custom"); + expect(actual.parserPreset!.parserOpts).toMatchObject({ headerPattern: /^(\w*)(?:\((.*)\))?-(.*)$/, }); }); -test('ignores unknow keys', async () => { - const cwd = await gitBootstrap('fixtures/trash-file'); - const actual = await load({}, {cwd}); +test("ignores unknown keys", async () => { + const cwd = await gitBootstrap("fixtures/trash-file"); + const actual = await load({}, { cwd }); expect(actual).toMatchObject({ - formatter: '@commitlint/format', + formatter: "@commitlint/format", extends: [], plugins: {}, rules: { - foo: 'bar', - baz: 'bar', + foo: [RuleConfigSeverity.Warning, "always", "bar"], + baz: [RuleConfigSeverity.Warning, "always", "bar"], }, }); }); -test('ignores unknow keys recursively', async () => { - const cwd = await gitBootstrap('fixtures/trash-extend'); - const actual = await load({}, {cwd}); +test("ignores unknown keys recursively", async () => { + const cwd = await gitBootstrap("fixtures/trash-extend"); + const actual = await load({}, { cwd }); expect(actual).toMatchObject({ - formatter: '@commitlint/format', - extends: ['./one'], + formatter: "@commitlint/format", + extends: ["./one"], plugins: {}, rules: { - zero: 0, - one: 1, + zero: [RuleConfigSeverity.Disabled, "always", "zero"], + one: [RuleConfigSeverity.Warning, "always", "one"], }, }); }); -test('find up from given cwd', async () => { - const outer = await fixBootstrap('fixtures/outer-scope'); - await git.init(path.join(outer, 'inner-scope')); - const cwd = path.join(outer, 'inner-scope', 'child-scope'); - const actual = await load({}, {cwd}); +test("find up from given cwd", async () => { + const outer = await fixBootstrap("fixtures/outer-scope"); + await git.init(path.join(outer, "inner-scope")); + const cwd = path.join(outer, "inner-scope", "child-scope"); + const actual = await load({}, { cwd }); expect(actual).toMatchObject({ - formatter: '@commitlint/format', + formatter: "@commitlint/format", extends: [], plugins: {}, rules: { - child: true, - inner: false, - outer: false, + child: [RuleConfigSeverity.Error, "always", true], + inner: [RuleConfigSeverity.Error, "always", false], + outer: [RuleConfigSeverity.Error, "always", false], }, }); }); -test('find up config from outside current git repo', async () => { - const outer = await fixBootstrap('fixtures/outer-scope'); - const cwd = await git.init(path.join(outer, 'inner-scope')); - const actual = await load({}, {cwd}); +test("find up config from outside current git repo", async () => { + const outer = await fixBootstrap("fixtures/outer-scope"); + const cwd = await git.init(path.join(outer, "inner-scope")); + const actual = await load({}, { cwd }); expect(actual).toMatchObject({ - formatter: '@commitlint/format', + formatter: "@commitlint/format", extends: [], plugins: {}, rules: { - child: false, - inner: false, - outer: true, + child: [RuleConfigSeverity.Warning, "never", false], + inner: [RuleConfigSeverity.Warning, "never", false], + outer: [RuleConfigSeverity.Warning, "never", true], }, }); }); -test('respects formatter option', async () => { - const cwd = await gitBootstrap('fixtures/formatter'); - const actual = await load({}, {cwd}); +test("respects formatter option", async () => { + const cwd = await gitBootstrap("fixtures/formatter"); + const actual = await load({}, { cwd }); expect(actual).toMatchObject({ - formatter: 'commitlint-junit', + formatter: "commitlint-junit", extends: [], plugins: {}, rules: {}, }); }); -test('resolves formatter relative from config directory', async () => { - const cwd = await gitBootstrap('fixtures/formatter-local-module'); - const actual = await load({}, {cwd}); +test("resolves formatter relative from config directory", async () => { + const cwd = await gitBootstrap("fixtures/formatter-local-module"); + const actual = await load({}, { cwd }); expect(actual).toMatchObject({ - formatter: resolveFrom(cwd, './formatters/custom.js'), + formatter: resolveFrom("./formatters/custom.js", cwd), extends: [], plugins: {}, rules: {}, }); }); -test('returns formatter name when unable to resolve from config directory', async () => { - const cwd = await gitBootstrap('fixtures/formatter-local-module'); - const actual = await load({formatter: './doesnt/exists.js'}, {cwd}); +test("returns formatter name when unable to resolve from config directory", async () => { + const cwd = await gitBootstrap("fixtures/formatter-local-module"); + const actual = await load({ formatter: "./doesnt/exists.js" }, { cwd }); expect(actual).toMatchObject({ - formatter: './doesnt/exists.js', + formatter: "./doesnt/exists.js", extends: [], plugins: {}, rules: {}, }); }); -test('does not mutate config module reference', async () => { - const file = 'config/commitlint.config.js'; - const cwd = await gitBootstrap('fixtures/specify-config-file'); - const rules = {'body-case': [1, 'never', 'camel-case'] as any}; +test("does not mutate config module reference", async () => { + const file = "config/commitlint.config.js"; + const cwd = await gitBootstrap("fixtures/specify-config-file"); + const rules = { + "body-case": [RuleConfigSeverity.Warning, "never", "camel-case"] as any, + }; const configPath = path.join(cwd, file); - const before = JSON.stringify(require(configPath)); - await load({rules}, {cwd, file}); - const after = JSON.stringify(require(configPath)); + + const before = readFileSync(configPath, { encoding: "utf-8" }); + await load({ rules }, { cwd, file }); + const after = readFileSync(configPath, { encoding: "utf-8" }); expect(after).toBe(before); }); -test('resolves parser preset from conventional commits', async () => { - const cwd = await npmBootstrap('fixtures/parser-preset-conventionalcommits'); - const actual = await load({}, {cwd}); +test("resolves parser preset from conventional commits", async () => { + const cwd = await npmBootstrap("fixtures/parser-preset-conventionalcommits"); + const actual = await load({}, { cwd }); - expect(actual.parserPreset.name).toBe( - 'conventional-changelog-conventionalcommits' + expect(actual.parserPreset).toBeDefined(); + expect(actual.parserPreset!.name).toBe( + "conventional-changelog-conventionalcommits", ); - expect(typeof actual.parserPreset.parserOpts).toBe('object'); - expect((actual.parserPreset.parserOpts as any).headerPattern).toEqual( - /^(\w*)(?:\((.*)\))?!?: (.*)$/ + expect(typeof actual.parserPreset!.parserOpts).toBe("object"); + expect((actual.parserPreset!.parserOpts as any).headerPattern).toEqual( + /^(\w*)(?:\((.*)\))?!?: (.*)$/, ); }); -test('resolves parser preset from conventional angular', async () => { - const cwd = await npmBootstrap('fixtures/parser-preset-angular'); - const actual = await load({}, {cwd}); +test("resolves parser preset from conventional angular", async () => { + const cwd = await npmBootstrap("fixtures/parser-preset-angular"); + const actual = await load({}, { cwd }); - expect(actual.parserPreset.name).toBe('conventional-changelog-angular'); - expect(typeof actual.parserPreset.parserOpts).toBe('object'); - expect((actual.parserPreset.parserOpts as any).headerPattern).toEqual( - /^(\w*)(?:\((.*)\))?: (.*)$/ + expect(actual.parserPreset).toBeDefined(); + expect(actual.parserPreset!.name).toBe("conventional-changelog-angular"); + expect(typeof actual.parserPreset!.parserOpts).toBe("object"); + expect((actual.parserPreset!.parserOpts as any).headerPattern).toEqual( + /^(\w*)(?:\((.*)\))?: (.*)$/, ); }); -test('recursive resolves parser preset from conventional atom', async () => { +test("recursive resolves parser preset from conventional atom", async () => { const cwd = await gitBootstrap( - 'fixtures/recursive-parser-preset-conventional-atom' + "fixtures/recursive-parser-preset-conventional-atom", ); await npm.installModules( - path.resolve(cwd, 'first-extended', 'second-extended') + path.resolve(cwd, "first-extended", "second-extended"), ); - const actual = await load({}, {cwd}); + const actual = await load({}, { cwd }); - expect(actual.parserPreset.name).toBe('conventional-changelog-atom'); - expect(typeof actual.parserPreset.parserOpts).toBe('object'); - expect((actual.parserPreset.parserOpts as any).headerPattern).toEqual( - /^(:.*?:) (.*)$/ + expect(actual.parserPreset).toBeDefined(); + expect(actual.parserPreset!.name).toBe("conventional-changelog-atom"); + expect(typeof actual.parserPreset!.parserOpts).toBe("object"); + expect((actual.parserPreset!.parserOpts as any).headerPattern).toEqual( + /^(:.*?:) (.*)$/, ); }); -test('resolves parser preset from conventional commits without factory support', async () => { +test("resolves parser preset from conventional commits without factory support", async () => { const cwd = await npmBootstrap( - 'fixtures/parser-preset-conventional-without-factory' + "fixtures/parser-preset-conventional-without-factory", ); - const actual = await load({}, {cwd}); + const actual = await load({}, { cwd }); - expect(actual.parserPreset.name).toBe( - 'conventional-changelog-conventionalcommits' + expect(actual.parserPreset).toBeDefined(); + expect(actual.parserPreset!.name).toBe( + "conventional-changelog-conventionalcommits", + ); + expect(typeof actual.parserPreset!.parserOpts).toBe("object"); + expect((actual.parserPreset!.parserOpts as any).headerPattern).toEqual( + /^(\w*)(?:\((.*)\))?!?: (.*)$/, ); - expect(typeof actual.parserPreset.parserOpts).toBe('object'); - expect((actual.parserPreset.parserOpts as any).headerPattern).toEqual( - /^(\w*)(?:\((.*)\))?!?: (.*)$/ +}); + +test("helpUrl should be loaded from the shareable config", async () => { + const cwd = await gitBootstrap("fixtures/help-url"); + const actual = await load({}, { cwd }); + + expect(actual.helpUrl).toStrictEqual( + "https://github.com/conventional-changelog/commitlint", + ); +}); + +test("default helpUrl should be loaded if not provided in shareable configs", async () => { + const cwd = await gitBootstrap("fixtures/basic"); + const actual = await load({}, { cwd }); + + expect(actual.helpUrl).toStrictEqual( + "https://github.com/conventional-changelog/commitlint/#what-is-commitlint", ); }); diff --git a/@commitlint/load/src/load.ts b/@commitlint/load/src/load.ts index 4b835a546f..c20f39f245 100644 --- a/@commitlint/load/src/load.ts +++ b/@commitlint/load/src/load.ts @@ -1,132 +1,141 @@ -import executeRule from '@commitlint/execute-rule'; -import resolveExtends from '@commitlint/resolve-extends'; +import path from "node:path"; + +import { validateConfig } from "@commitlint/config-validator"; +import executeRule from "@commitlint/execute-rule"; +import resolveExtends, { + resolveFrom, + resolveFromSilent, + resolveGlobalSilent, + loadParserPreset, +} from "@commitlint/resolve-extends"; import { LoadOptions, - ParserPreset, + PluginRecords, QualifiedConfig, QualifiedRules, UserConfig, - UserPreset, -} from '@commitlint/types'; -import isPlainObject from 'lodash/isPlainObject'; -import merge from 'lodash/merge'; -import mergeWith from 'lodash/mergeWith'; -import pick from 'lodash/pick'; -import union from 'lodash/union'; -import Path from 'path'; -import resolveFrom from 'resolve-from'; -import {loadConfig} from './utils/load-config'; -import {loadParserOpts} from './utils/load-parser-opts'; -import loadPlugin from './utils/load-plugin'; -import {pickConfig} from './utils/pick-config'; - -const w = <T>(_: unknown, b: ArrayLike<T> | null | undefined | false) => - Array.isArray(b) ? b : undefined; +} from "@commitlint/types"; +import isPlainObject from "lodash.isplainobject"; +import merge from "lodash.merge"; +import uniq from "lodash.uniq"; + +import { loadConfig } from "./utils/load-config.js"; +import { loadParserOpts } from "./utils/load-parser-opts.js"; +import loadPlugin from "./utils/load-plugin.js"; + +/** + * formatter should be kept as is when unable to resolve it from config directory + */ +const resolveFormatter = (formatter: string, parent?: string): string => { + try { + return resolveFrom(formatter, parent); + } catch (error) { + return formatter; + } +}; export default async function load( seed: UserConfig = {}, - options: LoadOptions = {} + options: LoadOptions = {}, ): Promise<QualifiedConfig> { - const cwd = typeof options.cwd === 'undefined' ? process.cwd() : options.cwd; + const cwd = typeof options.cwd === "undefined" ? process.cwd() : options.cwd; const loaded = await loadConfig(cwd, options.file); - const base = loaded && loaded.filepath ? Path.dirname(loaded.filepath) : cwd; - - // TODO: validate loaded.config against UserConfig type - // Might amount to breaking changes, defer until 9.0.0 + const baseDirectory = loaded?.filepath ? path.dirname(loaded.filepath) : cwd; + const configFilePath = loaded?.filepath; + let config: UserConfig = {}; + if (loaded) { + validateConfig(loaded.filepath || "", loaded.config); + config = loaded.config; + } // Merge passed config with file based options - const config = pickConfig(merge({}, loaded ? loaded.config : null, seed)); - - const opts = merge( - {extends: [], rules: {}, formatter: '@commitlint/format'}, - pick(config, 'extends', 'plugins', 'ignores', 'defaultIgnores') + config = merge( + { + extends: [], + plugins: [], + rules: {}, + }, + config, + seed, ); // Resolve parserPreset key - if (typeof config.parserPreset === 'string') { - const resolvedParserPreset = resolveFrom(base, config.parserPreset); + if (typeof config.parserPreset === "string") { + const resolvedParserPreset = resolveFrom( + config.parserPreset, + configFilePath, + ); config.parserPreset = { name: config.parserPreset, - path: resolvedParserPreset, - parserOpts: require(resolvedParserPreset), + ...(await loadParserPreset(resolvedParserPreset)), }; } // Resolve extends key - const extended = resolveExtends(opts, { - prefix: 'commitlint-config', - cwd: base, - parserPreset: config.parserPreset, + const extended = await resolveExtends(config, { + prefix: "commitlint-config", + cwd: baseDirectory, + parserPreset: await config.parserPreset, }); - const preset = pickConfig( - mergeWith(extended, config, w) - ) as unknown as UserPreset; - preset.plugins = {}; - - // TODO: check if this is still necessary with the new factory based conventional changelog parsers - // config.extends = Array.isArray(config.extends) ? config.extends : []; - - // Resolve parser-opts from preset - if (typeof preset.parserPreset === 'object') { - preset.parserPreset.parserOpts = await loadParserOpts( - preset.parserPreset.name, - // TODO: fix the types for factory based conventional changelog parsers - preset.parserPreset as any - ); - } - - // Resolve config-relative formatter module - if (typeof config.formatter === 'string') { - preset.formatter = - resolveFrom.silent(base, config.formatter) || config.formatter; + if (!extended.formatter || typeof extended.formatter !== "string") { + extended.formatter = "@commitlint/format"; } - // Read plugins from extends + let plugins: PluginRecords = {}; if (Array.isArray(extended.plugins)) { - config.plugins = union(config.plugins, extended.plugins || []); - } - - // resolve plugins - if (Array.isArray(config.plugins)) { - config.plugins.forEach((plugin) => { - if (typeof plugin === 'string') { - loadPlugin(preset.plugins, plugin, process.env.DEBUG === 'true'); + for (const plugin of uniq(extended.plugins)) { + if (typeof plugin === "string") { + plugins = await loadPlugin( + plugins, + plugin, + process.env.DEBUG === "true", + ); } else { - preset.plugins.local = plugin; + plugins.local = plugin; } - }); + } } - const rules = preset.rules ? preset.rules : {}; - const qualifiedRules = ( + const rules = ( await Promise.all( - Object.entries(rules || {}).map((entry) => executeRule<any>(entry)) + Object.entries(extended.rules || {}).map((entry) => executeRule(entry)), ) ).reduce<QualifiedRules>((registry, item) => { - const [key, value] = item as any; - (registry as any)[key] = value; + // type of `item` can be null, but Object.entries always returns key pair + const [key, value] = item!; + registry[key] = value; return registry; }, {}); const helpUrl = - typeof config.helpUrl === 'string' - ? config.helpUrl - : 'https://github.com/conventional-changelog/commitlint/#what-is-commitlint'; + typeof extended.helpUrl === "string" + ? extended.helpUrl + : typeof config.helpUrl === "string" + ? config.helpUrl + : "https://github.com/conventional-changelog/commitlint/#what-is-commitlint"; const prompt = - preset.prompt && isPlainObject(preset.prompt) ? preset.prompt : {}; + extended.prompt && isPlainObject(extended.prompt) ? extended.prompt : {}; return { - extends: preset.extends!, - formatter: preset.formatter!, - parserPreset: preset.parserPreset! as ParserPreset, - ignores: preset.ignores!, - defaultIgnores: preset.defaultIgnores!, - plugins: preset.plugins!, - rules: qualifiedRules, - helpUrl, + extends: Array.isArray(extended.extends) + ? extended.extends + : typeof extended.extends === "string" + ? [extended.extends] + : [], + // Resolve config-relative formatter module + formatter: resolveFormatter(extended.formatter, configFilePath), + // Resolve parser-opts from preset + parserPreset: await loadParserOpts(extended.parserPreset), + ignores: extended.ignores, + defaultIgnores: extended.defaultIgnores, + plugins: plugins, + rules: rules, + helpUrl: helpUrl, prompt, }; } + +export { resolveFrom, resolveFromSilent, resolveGlobalSilent }; diff --git a/@commitlint/load/src/utils/load-config.ts b/@commitlint/load/src/utils/load-config.ts index 63613a5e4e..0db5148ae6 100644 --- a/@commitlint/load/src/utils/load-config.ts +++ b/@commitlint/load/src/utils/load-config.ts @@ -1,5 +1,13 @@ -import path from 'path'; -import {cosmiconfig} from 'cosmiconfig'; +import { existsSync, readFileSync } from "node:fs"; +import path from "node:path"; + +import { + cosmiconfig, + defaultLoadersSync, + type Loader, + defaultLoaders, +} from "cosmiconfig"; +import { TypeScriptLoader } from "cosmiconfig-typescript-loader"; export interface LoadConfigResult { config: unknown; @@ -7,11 +15,59 @@ export interface LoadConfigResult { isEmpty?: boolean; } +const moduleName = "commitlint"; +const searchStrategy = "global"; + export async function loadConfig( cwd: string, - configPath?: string + configPath?: string, ): Promise<LoadConfigResult | null> { - const explorer = cosmiconfig('commitlint'); + let tsLoaderInstance: Loader | undefined; + const tsLoader: Loader = (...args) => { + if (!tsLoaderInstance) { + tsLoaderInstance = TypeScriptLoader(); + } + return tsLoaderInstance(...args); + }; + + // If dynamic await is supported (Node >= v20.8.0) or directory uses ESM, support + // async js/cjs loaders (dynamic import). Otherwise, use synchronous js/cjs loaders. + const loaders = + isDynamicAwaitSupported() || isEsmModule(cwd) + ? defaultLoaders + : defaultLoadersSync; + + const explorer = cosmiconfig(moduleName, { + searchStrategy, + searchPlaces: [ + // cosmiconfig overrides default searchPlaces if any new search place is added (For e.g. `*.ts` files), + // we need to manually merge default searchPlaces from https://github.com/davidtheclark/cosmiconfig#searchplaces + "package.json", + "package.yaml", + `.${moduleName}rc`, + `.${moduleName}rc.json`, + `.${moduleName}rc.yaml`, + `.${moduleName}rc.yml`, + `.${moduleName}rc.js`, + `.${moduleName}rc.cjs`, + `.${moduleName}rc.mjs`, + `${moduleName}.config.js`, + `${moduleName}.config.cjs`, + `${moduleName}.config.mjs`, + + // files supported by TypescriptLoader + `.${moduleName}rc.ts`, + `.${moduleName}rc.cts`, + `${moduleName}.config.ts`, + `${moduleName}.config.cts`, + ], + loaders: { + ".ts": tsLoader, + ".cts": tsLoader, + ".cjs": loaders[".cjs"], + ".js": loaders[".js"], + }, + }); const explicitPath = configPath ? path.resolve(cwd, configPath) : undefined; const explore = explicitPath ? explorer.load : explorer.search; @@ -24,3 +80,27 @@ export async function loadConfig( return null; } + +// See the following issues for more context, contributing to failing Jest tests: +// - Issue: https://github.com/nodejs/node/issues/40058 +// - Resolution: https://github.com/nodejs/node/pull/48510 (Node v20.8.0) +export const isDynamicAwaitSupported = () => { + const [major, minor] = process.version + .replace("v", "") + .split(".") + .map((val) => parseInt(val)); + + return major >= 20 && minor >= 8; +}; + +// Is the given directory set up to use ESM (ECMAScript Modules)? +export const isEsmModule = (cwd: string) => { + const packagePath = path.join(cwd, "package.json"); + + if (!existsSync(packagePath)) { + return false; + } + + const packageJSON = readFileSync(packagePath, { encoding: "utf-8" }); + return JSON.parse(packageJSON)?.type === "module"; +}; diff --git a/@commitlint/load/src/utils/load-parser-opts.test.ts b/@commitlint/load/src/utils/load-parser-opts.test.ts new file mode 100644 index 0000000000..2575aa7a14 --- /dev/null +++ b/@commitlint/load/src/utils/load-parser-opts.test.ts @@ -0,0 +1,56 @@ +import { test, expect } from "vitest"; +import { loadParserOpts } from "./load-parser-opts.js"; + +test("handles a plain preset", async () => { + const preset = { + parserOpts: {}, + }; + + expect(await loadParserOpts(preset)).toEqual(preset); +}); + +test("handles primitive values", async () => { + expect(await loadParserOpts("")).toEqual(undefined); + expect(await loadParserOpts(undefined)).toEqual(undefined); +}); + +test("handles an object without any parserOpts", async () => { + const preset = {}; + expect(await loadParserOpts(preset)).toEqual(preset); +}); + +test("handles nested parserOpts", async () => { + const opts = { a: 4 }; + + // plain nested parserOpts + let loaded = await loadParserOpts({ + parserOpts: { + parserOpts: opts, + }, + }); + expect(loaded).toHaveProperty("parserOpts", opts); + + // async nested parserOpts + loaded = await loadParserOpts({ + parserOpts: Promise.resolve({ + parserOpts: opts, + }), + }); + expect(loaded).toHaveProperty("parserOpts", opts); +}); + +test("runs a sync function which returns the preset", async () => { + const preset = {}; + const fn = () => preset; + const opts = await loadParserOpts(fn); + + expect(opts).toEqual(preset); +}); + +test("runs an async function which returns the preset", async () => { + const preset = {}; + const fn = async () => preset; + const opts = await loadParserOpts(fn); + + expect(opts).toEqual(preset); +}); diff --git a/@commitlint/load/src/utils/load-parser-opts.ts b/@commitlint/load/src/utils/load-parser-opts.ts index 86d5b5b700..34957e10d4 100644 --- a/@commitlint/load/src/utils/load-parser-opts.ts +++ b/@commitlint/load/src/utils/load-parser-opts.ts @@ -1,48 +1,83 @@ +import { ParserPreset } from "@commitlint/types"; + +type Awaitable<T> = T | PromiseLike<T>; + +function isObjectLike(obj: unknown): obj is Record<string, unknown> { + return Boolean(obj) && typeof obj === "object"; // typeof null === 'object' +} + +function isParserOptsFunction<T extends ParserPreset>( + obj: T, +): obj is T & { + parserOpts: ( + cb: (_: never, parserOpts: Record<string, unknown>) => unknown, + ) => Record<string, unknown> | undefined; +} { + return typeof obj.parserOpts === "function"; +} + export async function loadParserOpts( - parserName: string, - pendingParser: Promise<any> -) { + pendingParser: + | string + | Awaitable<ParserPreset> + | (() => Awaitable<ParserPreset>) + | undefined, +): Promise<ParserPreset | undefined> { + if (typeof pendingParser === "function") { + return loadParserOpts(pendingParser()); + } + + if (!pendingParser || typeof pendingParser !== "object") { + return undefined; + } // Await for the module, loaded with require const parser = await pendingParser; - // Await parser opts if applicable - if ( - typeof parser === 'object' && - typeof parser.parserOpts === 'object' && - typeof parser.parserOpts.then === 'function' - ) { - return (await parser.parserOpts).parserOpts; + // exit early, no opts to resolve + if (!parser.parserOpts) { + return parser; + } + + // Pull nested parserOpts, might happen if overwritten with a module in main config + if (typeof parser.parserOpts === "object") { + // Await parser opts if applicable + parser.parserOpts = await parser.parserOpts; + if ( + isObjectLike(parser.parserOpts) && + isObjectLike(parser.parserOpts.parserOpts) + ) { + parser.parserOpts = parser.parserOpts.parserOpts; + } + return parser; } // Create parser opts from factory if ( - typeof parser === 'object' && - typeof parser.parserOpts === 'function' && - parserName.startsWith('conventional-changelog-') + isParserOptsFunction(parser) && + typeof parser.name === "string" && + parser.name.startsWith("conventional-changelog-") ) { - return await new Promise((resolve) => { - const result = parser.parserOpts((_: never, opts: {parserOpts: any}) => { - resolve(opts.parserOpts); + return new Promise((resolve) => { + const result = parser.parserOpts((_: never, opts) => { + resolve({ + ...parser, + parserOpts: opts?.parserOpts, + }); }); // If result has data or a promise, the parser doesn't support factory-init // due to https://github.com/nodejs/promises-debugging/issues/16 it just quits, so let's use this fallback if (result) { Promise.resolve(result).then((opts) => { - resolve(opts.parserOpts); + resolve({ + ...parser, + parserOpts: opts?.parserOpts, + }); }); } + return; }); } - // Pull nested paserOpts, might happen if overwritten with a module in main config - if ( - typeof parser === 'object' && - typeof parser.parserOpts === 'object' && - typeof parser.parserOpts.parserOpts === 'object' - ) { - return parser.parserOpts.parserOpts; - } - - return parser.parserOpts; + return parser; } diff --git a/@commitlint/load/src/utils/load-plugin.test.ts b/@commitlint/load/src/utils/load-plugin.test.ts index 7c78d87f2f..cfb0193b85 100644 --- a/@commitlint/load/src/utils/load-plugin.test.ts +++ b/@commitlint/load/src/utils/load-plugin.test.ts @@ -1,114 +1,116 @@ -import loadPlugin from './load-plugin'; -import {AsyncRule, Plugin, Rule, SyncRule} from '@commitlint/types'; +import { test, expect, vi } from "vitest"; +import { AsyncRule, Plugin, Rule, SyncRule } from "@commitlint/types"; -jest.mock('commitlint-plugin-example', () => ({example: true}), { - virtual: true, +import loadPlugin from "./load-plugin.js"; + +vi.mock("commitlint-plugin-example", () => ({ example: true })); + +vi.mock("@scope/commitlint-plugin-example", () => ({ scope: true })); + +vi.mock("commitlint-plugin-rule", (): Plugin => { + const rule: Rule<number> = (_parsed, when, _value) => { + return [when === "never"]; + }; + return { rules: { rule } }; }); -jest.mock('@scope/commitlint-plugin-example', () => ({scope: true}), { - virtual: true, +vi.mock("commitlint-plugin-sync-rule", (): Plugin => { + const syncRule: SyncRule<number> = (_parsed, when, _value) => { + return [when === "never"]; + }; + return { rules: { syncRule } }; }); -jest.mock( - 'commitlint-plugin-rule', - (): Plugin => { - const rule: Rule<number> = (_parsed, when, _value) => { - return [when === 'never']; - }; - return {rules: {rule}}; - }, - {virtual: true} -); - -jest.mock( - 'commitlint-plugin-sync-rule', - (): Plugin => { - const syncRule: SyncRule<number> = (_parsed, when, _value) => { - return [when === 'never']; - }; - return {rules: {syncRule}}; - }, - {virtual: true} -); - -jest.mock( - 'commitlint-plugin-async-rule', - (): Plugin => { - const asyncRule: AsyncRule<number> = (_parsed, when, _value) => { - return new Promise(() => [when === 'never']); - }; - return {rules: {asyncRule}}; - }, - {virtual: true} -); - -test('should load a plugin when referenced by short name', () => { - const plugins = loadPlugin({}, 'example'); - expect(plugins['example']).toBe(require('commitlint-plugin-example')); +vi.mock("commitlint-plugin-async-rule", (): Plugin => { + const asyncRule: AsyncRule<number> = (_parsed, when, _value) => { + return new Promise(() => [when === "never"]); + }; + return { rules: { asyncRule } }; +}); + +test("should load a plugin when referenced by short name", async () => { + const plugins = await loadPlugin({}, "example"); + expect(plugins["example"]).toBe( + // @ts-expect-error -- mocked module + await import("commitlint-plugin-example"), + ); }); -test('should load a plugin when referenced by long name', () => { - const plugins = loadPlugin({}, 'commitlint-plugin-example'); - expect(plugins['example']).toBe(require('commitlint-plugin-example')); +test("should load a plugin when referenced by long name", async () => { + const plugins = await loadPlugin({}, "commitlint-plugin-example"); + expect(plugins["example"]).toBe( + // @ts-expect-error -- mocked module + await import("commitlint-plugin-example"), + ); }); -test('should load a plugin with a rule', () => { - const plugins = loadPlugin({}, 'commitlint-plugin-rule'); - expect(plugins['rule']).toBe(require('commitlint-plugin-rule')); +test("should load a plugin with a rule", async () => { + const plugins = await loadPlugin({}, "commitlint-plugin-rule"); + expect(plugins["rule"]).toBe( + // @ts-expect-error -- mocked module + await import("commitlint-plugin-rule"), + ); }); -test('should load a plugin with a sync rule', () => { - const plugins = loadPlugin({}, 'commitlint-plugin-sync-rule'); - expect(plugins['sync-rule']).toBe(require('commitlint-plugin-sync-rule')); +test("should load a plugin with a sync rule", async () => { + const plugins = await loadPlugin({}, "commitlint-plugin-sync-rule"); + expect(plugins["sync-rule"]).toBe( + // @ts-expect-error -- mocked module + await import("commitlint-plugin-sync-rule"), + ); }); -test('should load a plugin with an async rule', () => { - const plugins = loadPlugin({}, 'commitlint-plugin-async-rule'); - expect(plugins['async-rule']).toBe(require('commitlint-plugin-async-rule')); +test("should load a plugin with an async rule", async () => { + const plugins = await loadPlugin({}, "commitlint-plugin-async-rule"); + expect(plugins["async-rule"]).toBe( + // @ts-expect-error -- mocked module + await import("commitlint-plugin-async-rule"), + ); }); -test('should throw an error when a plugin has whitespace', () => { - expect(() => loadPlugin({}, 'whitespace ')).toThrow( - "Whitespace found in plugin name 'whitespace '" +test("should throw an error when a plugin has whitespace", async () => { + await expect(() => loadPlugin({}, "whitespace ")).rejects.toThrow( + "Whitespace found in plugin name 'whitespace '", ); - expect(() => loadPlugin({}, 'whitespace\t')).toThrow( - 'Whitespace found in plugin name' + await expect(() => loadPlugin({}, "whitespace\t")).rejects.toThrow( + "Whitespace found in plugin name", ); - expect(() => loadPlugin({}, 'whitespace\n')).toThrow( - 'Whitespace found in plugin name' + await expect(() => loadPlugin({}, "whitespace\n")).rejects.toThrow( + "Whitespace found in plugin name", ); - expect(() => loadPlugin({}, 'whitespace\r')).toThrow( - 'Whitespace found in plugin name' + await expect(() => loadPlugin({}, "whitespace\r")).rejects.toThrow( + "Whitespace found in plugin name", ); }); -test("should throw an error when a plugin doesn't exist", () => { - expect(() => loadPlugin({}, 'nonexistentplugin')).toThrow( - 'Failed to load plugin' - ); -}); +test("should throw an error when a plugin doesn't exist", () => + expect(() => loadPlugin({}, "nonexistentplugin")).rejects.toThrow( + "Failed to load plugin", + )); -test('should load a scoped plugin when referenced by short name', () => { - const plugins = loadPlugin({}, '@scope/example'); - expect(plugins['@scope/example']).toBe( - require('@scope/commitlint-plugin-example') +test("should load a scoped plugin when referenced by short name", async () => { + const plugins = await loadPlugin({}, "@scope/example"); + expect(plugins["@scope/example"]).toBe( + // @ts-expect-error -- mocked module + await import("@scope/commitlint-plugin-example"), ); }); -test('should load a scoped plugin when referenced by long name', () => { - const plugins = loadPlugin({}, '@scope/commitlint-plugin-example'); - expect(plugins['@scope/example']).toBe( - require('@scope/commitlint-plugin-example') +test("should load a scoped plugin when referenced by long name", async () => { + const plugins = await loadPlugin({}, "@scope/commitlint-plugin-example"); + expect(plugins["@scope/example"]).toBe( + // @ts-expect-error -- mocked module + await import("@scope/commitlint-plugin-example"), ); }); /* when referencing a scope plugin and omitting @scope/ */ -test("should load a scoped plugin when referenced by short name, but should not get the plugin if '@scope/' is omitted", () => { - const plugins = loadPlugin({}, '@scope/example'); - expect(plugins['example']).toBe(undefined); +test("should load a scoped plugin when referenced by short name, but should not get the plugin if '@scope/' is omitted", async () => { + const plugins = await loadPlugin({}, "@scope/example"); + expect(plugins["example"]).toBeUndefined(); }); -test("should load a scoped plugin when referenced by long name, but should not get the plugin if '@scope/' is omitted", () => { - const plugins = loadPlugin({}, '@scope/commitlint-plugin-example'); - expect(plugins['example']).toBe(undefined); +test("should load a scoped plugin when referenced by long name, but should not get the plugin if '@scope/' is omitted", async () => { + const plugins = await loadPlugin({}, "@scope/commitlint-plugin-example"); + expect(plugins["example"]).toBeUndefined(); }); diff --git a/@commitlint/load/src/utils/load-plugin.ts b/@commitlint/load/src/utils/load-plugin.ts index 30003816ba..03e2e68e96 100644 --- a/@commitlint/load/src/utils/load-plugin.ts +++ b/@commitlint/load/src/utils/load-plugin.ts @@ -1,17 +1,32 @@ -import path from 'path'; -import chalk from 'chalk'; -import {normalizePackageName, getShorthandName} from './plugin-naming'; -import {WhitespacePluginError, MissingPluginError} from './plugin-errors'; -import {PluginRecords} from '@commitlint/types'; +import { createRequire } from "node:module"; +import path from "node:path"; +import { fileURLToPath, pathToFileURL } from "node:url"; -export default function loadPlugin( +import { Plugin, PluginRecords } from "@commitlint/types"; +import chalk from "chalk"; + +import { normalizePackageName, getShorthandName } from "./plugin-naming.js"; +import { WhitespacePluginError, MissingPluginError } from "./plugin-errors.js"; + +const require = createRequire(import.meta.url); + +const __dirname = path.resolve(fileURLToPath(import.meta.url), ".."); + +const dynamicImport = async <T>(id: string): Promise<T> => { + const imported = await import( + path.isAbsolute(id) ? pathToFileURL(id).toString() : id + ); + return ("default" in imported && imported.default) || imported; +}; + +export default async function loadPlugin( plugins: PluginRecords, pluginName: string, - debug: boolean = false -): PluginRecords { + debug: boolean = false, +): Promise<PluginRecords> { const longName = normalizePackageName(pluginName); const shortName = getShorthandName(longName); - let plugin = null; + let plugin: Plugin; if (pluginName.match(/\s+/u)) { throw new WhitespacePluginError(pluginName, { @@ -23,18 +38,19 @@ export default function loadPlugin( if (!plugins[pluginKey]) { try { - plugin = require(longName); + plugin = await dynamicImport<Plugin>(longName); } catch (pluginLoadErr) { try { // Check whether the plugin exists require.resolve(longName); - } catch (error) { + } catch (error: any) { // If the plugin can't be resolved, display the missing plugin error (usually a config or install error) console.error(chalk.red(`Failed to load plugin ${longName}.`)); - throw new MissingPluginError(pluginName, error.message, { + const message = error?.message || "Unknown error occurred"; + throw new MissingPluginError(pluginName, message, { pluginName: longName, - commitlintPath: path.resolve(__dirname, '../..'), + commitlintPath: path.resolve(__dirname, "../.."), }); } @@ -60,8 +76,8 @@ export default function loadPlugin( console.log( chalk.blue( - `Loaded plugin ${pluginName} (${loadedPluginAndVersion}) (from ${resolvedPath})` - ) + `Loaded plugin ${pluginName} (${loadedPluginAndVersion}) (from ${resolvedPath})`, + ), ); } diff --git a/@commitlint/load/src/utils/pick-config.ts b/@commitlint/load/src/utils/pick-config.ts deleted file mode 100644 index b4dd6fd6ce..0000000000 --- a/@commitlint/load/src/utils/pick-config.ts +++ /dev/null @@ -1,16 +0,0 @@ -import {UserConfig} from '@commitlint/types'; -import pick from 'lodash/pick'; - -export const pickConfig = (input: unknown): UserConfig => - pick( - input, - 'extends', - 'rules', - 'plugins', - 'parserPreset', - 'formatter', - 'ignores', - 'defaultIgnores', - 'helpUrl', - 'prompt' - ); diff --git a/@commitlint/load/src/utils/plugin-errors.ts b/@commitlint/load/src/utils/plugin-errors.ts index 4c7b1f0e29..2f1036ec80 100644 --- a/@commitlint/load/src/utils/plugin-errors.ts +++ b/@commitlint/load/src/utils/plugin-errors.ts @@ -1,7 +1,7 @@ export class WhitespacePluginError extends Error { __proto__ = Error; - public messageTemplate: string = 'whitespace-found'; + public messageTemplate: string = "whitespace-found"; public messageData: any = {}; constructor(pluginName?: string, data: any = {}) { @@ -16,10 +16,10 @@ export class WhitespacePluginError extends Error { export class MissingPluginError extends Error { __proto__ = Error; - public messageTemplate: string = 'plugin-missing'; + public messageTemplate: string = "plugin-missing"; public messageData: any; - constructor(pluginName?: string, errorMessage: string = '', data: any = {}) { + constructor(pluginName?: string, errorMessage: string = "", data: any = {}) { super(`Failed to load plugin ${pluginName}: ${errorMessage}`); this.messageData = data; diff --git a/@commitlint/load/src/utils/plugin-naming.ts b/@commitlint/load/src/utils/plugin-naming.ts index ecf42784b4..9ec5254eff 100644 --- a/@commitlint/load/src/utils/plugin-naming.ts +++ b/@commitlint/load/src/utils/plugin-naming.ts @@ -1,14 +1,14 @@ -import path from 'path'; +import path from "node:path"; // largely adapted from eslint's plugin system -const NAMESPACE_REGEX = /^@.*\//iu; +const NAMESPACE_REGEX = /^@.*\//u; // In eslint this is a parameter - we don't need to support the extra options -const prefix = 'commitlint-plugin'; +const prefix = "commitlint-plugin"; // Replace Windows with posix style paths function convertPathToPosix(filepath: string) { const normalizedFilepath = path.normalize(filepath); - const posixFilepath = normalizedFilepath.replace(/\\/gu, '/'); + const posixFilepath = normalizedFilepath.replace(/\\/gu, "/"); return posixFilepath; } @@ -27,34 +27,34 @@ export function normalizePackageName(name: string) { * Normalize to Unix first to avoid errors later on. * https://github.com/eslint/eslint/issues/5644 */ - if (normalizedName.indexOf('\\') > -1) { + if (normalizedName.indexOf("\\") > -1) { normalizedName = convertPathToPosix(normalizedName); } - if (normalizedName.charAt(0) === '@') { + if (normalizedName.charAt(0) === "@") { /** * it's a scoped package * package name is the prefix, or just a username */ const scopedPackageShortcutRegex = new RegExp( `^(@[^/]+)(?:/(?:${prefix})?)?$`, - 'u' + "u", ), - scopedPackageNameRegex = new RegExp(`^${prefix}(-|$)`, 'u'); + scopedPackageNameRegex = new RegExp(`^${prefix}(?:-|$)`, "u"); if (scopedPackageShortcutRegex.test(normalizedName)) { normalizedName = normalizedName.replace( scopedPackageShortcutRegex, - `$1/${prefix}` + `$1/${prefix}`, ); - } else if (!scopedPackageNameRegex.test(normalizedName.split('/')[1])) { + } else if (!scopedPackageNameRegex.test(normalizedName.split("/")[1])) { /** * for scoped packages, insert the prefix after the first / unless * the path is already @scope/eslint or @scope/eslint-xxx-yyy */ normalizedName = normalizedName.replace( /^@([^/]+)\/(.*)$/u, - `@$1/${prefix}-$2` + `@$1/${prefix}-$2`, ); } } else if (normalizedName.indexOf(`${prefix}-`) !== 0) { @@ -70,14 +70,14 @@ export function normalizePackageName(name: string) { * @returns {string} The term without prefix. */ export function getShorthandName(fullname: string) { - if (fullname[0] === '@') { - let matchResult = new RegExp(`^(@[^/]+)/${prefix}$`, 'u').exec(fullname); + if (fullname[0] === "@") { + let matchResult = new RegExp(`^(@[^/]+)/${prefix}$`, "u").exec(fullname); if (matchResult) { return matchResult[1]; } - matchResult = new RegExp(`^(@[^/]+)/${prefix}-(.+)$`, 'u').exec(fullname); + matchResult = new RegExp(`^(@[^/]+)/${prefix}-(.+)$`, "u").exec(fullname); if (matchResult) { return `${matchResult[1]}/${matchResult[2]}`; } @@ -94,7 +94,7 @@ export function getShorthandName(fullname: string) { * @returns {string} The namepace of the term if it has one. */ export function getNamespaceFromTerm(term: string) { - const match = term.match(NAMESPACE_REGEX); + const match = NAMESPACE_REGEX.exec(term); - return match ? match[0] : ''; + return match ? match[0] : ""; } diff --git a/@commitlint/load/tsconfig.json b/@commitlint/load/tsconfig.json index 51cdcedab0..7ce5e84e02 100644 --- a/@commitlint/load/tsconfig.json +++ b/@commitlint/load/tsconfig.json @@ -8,8 +8,9 @@ "include": ["./src"], "exclude": ["./src/**/*.test.ts", "./lib/**/*"], "references": [ - {"path": "../execute-rule"}, - {"path": "../resolve-extends"}, - {"path": "../types"} + { "path": "../execute-rule" }, + { "path": "../resolve-extends" }, + { "path": "../config-validator" }, + { "path": "../types" } ] } diff --git a/@commitlint/message/CHANGELOG.md b/@commitlint/message/CHANGELOG.md index 4b7a129f02..4616d71675 100644 --- a/@commitlint/message/CHANGELOG.md +++ b/@commitlint/message/CHANGELOG.md @@ -3,21 +3,23 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. -# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) +**Note:** Version bump only for package @commitlint/message -* chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) -### BREAKING CHANGES -* minimum node version is 12 +## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) +**Note:** Version bump only for package @commitlint/message -## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) + + +# [19.8.0](https://github.com/conventional-changelog/commitlint/compare/v19.7.1...v19.8.0) (2025-03-07) **Note:** Version bump only for package @commitlint/message @@ -25,7 +27,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) +# [19.5.0](https://github.com/conventional-changelog/commitlint/compare/v19.4.1...v19.5.0) (2024-09-11) **Note:** Version bump only for package @commitlint/message @@ -33,61 +35,78 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [12.1.0](https://github.com/conventional-changelog/commitlint/compare/v12.0.1...v12.1.0) (2021-03-06) +# [19.0.0](https://github.com/conventional-changelog/commitlint/compare/v18.6.2...v19.0.0) (2024-02-27) -**Note:** Version bump only for package @commitlint/message +* feat!: migrate to pure ESM (#3850) ([3423735](https://github.com/conventional-changelog/commitlint/commit/342373559bdf7c783c4ef37ff05dc38a5f681159)), closes [#3850](https://github.com/conventional-changelog/commitlint/issues/3850) +### Reverts +* Revert "chore!: minimum node version v20" ([2816783](https://github.com/conventional-changelog/commitlint/commit/2816783d00e7eb967de3ac9347c2fc43dc8b94fa)) -## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) -**Note:** Version bump only for package @commitlint/message +### BREAKING CHANGES +* migrate to pure ESM +* feat: migrate to pure ESM +* chore: update snapshot +* fix: load `parserPreset` with another `await` -# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) +* test: migrate to vitest -**Note:** Version bump only for package @commitlint/message +* test: remove no replacement `--runInBand` test-ci script +* chore: fix code reviews +* refactor(load): rewrite resolve logic +* fix(config-nx-scopes): fix syntax error +* feat(resolve-extends): add resolveFrom and loadParserPreset -# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) +* feat(load): use resolveFrom and loadParserPreset from resolve-extends -**Note:** Version bump only for package @commitlint/message +* test: include only @commitlint/* packages src in coverage +* test: explicit import vitest utilities +* test: remove @jest/globals from dependencies +* fix(resolve-extends): `resolveFrom` output should be platform aware +* test: restore NO_COLOR to test script -# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) +* chore: fix linting issues +* fix: should use fileURLToPath instead of pathname for Windows compatibility -* refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) +* Apply suggestions from code review +* fix: should reuse `cli` instead call `yargs()` -### BREAKING CHANGES +* feat(cli): set terminalWidth as wrap to avoid work break on help -* remove node 8 from circle-ci checks +* Update .eslintrc.cjs -also remove node 13 because we do not support experimental versions +* feat: migrate @commitlint/config-conventional to pure ESM -* docs: update node v10 to latest LTS 10 version -Co-authored-by: Cedric van Putten <me@bycedric.com> -Co-authored-by: Cedric van Putten <me@bycedric.com> +## [18.6.1](https://github.com/conventional-changelog/commitlint/compare/v18.6.0...v18.6.1) (2024-02-13) + +**Note:** Version bump only for package @commitlint/message -## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) + + +## [18.4.4](https://github.com/conventional-changelog/commitlint/compare/v18.4.3...v18.4.4) (2024-01-04) **Note:** Version bump only for package @commitlint/message @@ -95,7 +114,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) +## [18.4.3](https://github.com/conventional-changelog/commitlint/compare/v18.4.2...v18.4.3) (2023-11-21) **Note:** Version bump only for package @commitlint/message @@ -103,7 +122,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) +# [18.4.0](https://github.com/conventional-changelog/commitlint/compare/v18.3.0...v18.4.0) (2023-11-10) **Note:** Version bump only for package @commitlint/message @@ -111,7 +130,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) +# [18.1.0](https://github.com/conventional-changelog/commitlint/compare/v18.0.0...v18.1.0) (2023-10-25) **Note:** Version bump only for package @commitlint/message @@ -119,7 +138,37 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) +# [18.0.0](https://github.com/conventional-changelog/commitlint/compare/v17.8.1...v18.0.0) (2023-10-20) + + +* chore!: minimum node version v18 (#3644) ([5b4aeaf](https://github.com/conventional-changelog/commitlint/commit/5b4aeaf4f01c2726a7bc8631a23bb34c849baad2)), closes [#3644](https://github.com/conventional-changelog/commitlint/issues/3644) + + +### BREAKING CHANGES + +* drop node v14 and v16 support + +* chore: remove unused types + +* docs: prepare node update and new release + +* chore!: minimum TS version v5 +* drop TS v4 support + +* ci: remove node v14/16 checks + +* chore: adjust node types to minimal supported version + +* chore!: further major versions of other deps +* upgrade conventional-changelog-conventionalcommits, conventional-commits-parser, conventional-changelog-atom, + +* docs: simplify releases and remove roadmap + + + + + +## [17.8.1](https://github.com/conventional-changelog/commitlint/compare/v17.8.0...v17.8.1) (2023-10-20) **Note:** Version bump only for package @commitlint/message @@ -127,7 +176,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) +## [17.4.2](https://github.com/conventional-changelog/commitlint/compare/v17.4.1...v17.4.2) (2023-01-12) **Note:** Version bump only for package @commitlint/message @@ -135,117 +184,192 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) +# [17.4.0](https://github.com/conventional-changelog/commitlint/compare/v17.3.0...v17.4.0) (2023-01-04) **Note:** Version bump only for package @commitlint/message +# [17.2.0](https://github.com/conventional-changelog/commitlint/compare/v17.1.2...v17.2.0) (2022-10-31) +**Note:** Version bump only for package @commitlint/message +# [17.0.0](https://github.com/conventional-changelog/commitlint/compare/v16.3.0...v17.0.0) (2022-05-16) +- chore!: minimum node version v14 (#3128) ([ac5f9b4](https://github.com/conventional-changelog/commitlint/commit/ac5f9b47a9e3cd5c9d58b14da0feb426f06b1ef9)), closes [#3128](https://github.com/conventional-changelog/commitlint/issues/3128) -# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) +### BREAKING CHANGES + +- drop node v12 support + +- chore: rename circleci windows job + +node version is not defned by the name anyways (i think) + +## [16.2.1](https://github.com/conventional-changelog/commitlint/compare/v16.2.0...v16.2.1) (2022-02-13) **Note:** Version bump only for package @commitlint/message +# [16.0.0](https://github.com/conventional-changelog/commitlint/compare/v15.0.0...v16.0.0) (2021-12-26) +**Note:** Version bump only for package @commitlint/message +# [15.0.0](https://github.com/conventional-changelog/commitlint/compare/v14.2.0...v15.0.0) (2021-11-17) +**Note:** Version bump only for package @commitlint/message -# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) +# [14.0.0](https://github.com/conventional-changelog/commitlint/compare/v13.2.1...v14.0.0) (2021-10-26) **Note:** Version bump only for package @commitlint/message +# [13.2.0](https://github.com/conventional-changelog/commitlint/compare/v13.1.0...v13.2.0) (2021-09-28) +**Note:** Version bump only for package @commitlint/message +# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) +- chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) -# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) +### BREAKING CHANGES + +- minimum node version is 12 + +## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) **Note:** Version bump only for package @commitlint/message +## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) +**Note:** Version bump only for package @commitlint/message +# [12.1.0](https://github.com/conventional-changelog/commitlint/compare/v12.0.1...v12.1.0) (2021-03-06) +**Note:** Version bump only for package @commitlint/message -<a name="7.5.0"></a> -# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) +## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) +**Note:** Version bump only for package @commitlint/message -### Bug Fixes +# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) + +**Note:** Version bump only for package @commitlint/message -* replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) +# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) +**Note:** Version bump only for package @commitlint/message +# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) +- refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) -<a name="7.3.1"></a> -## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) +### BREAKING CHANGES + +- remove node 8 from circle-ci checks + +also remove node 13 because we do not support experimental versions +- docs: update node v10 to latest LTS 10 version +Co-authored-by: Cedric van Putten <me@bycedric.com> +Co-authored-by: Cedric van Putten <me@bycedric.com> + +## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) **Note:** Version bump only for package @commitlint/message -<a name="7.3.0"></a> -# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) +## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) +**Note:** Version bump only for package @commitlint/message + +# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) +**Note:** Version bump only for package @commitlint/message +## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) **Note:** Version bump only for package @commitlint/message -<a name="7.1.2"></a> -## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) +# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) +**Note:** Version bump only for package @commitlint/message +## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) +**Note:** Version bump only for package @commitlint/message + +# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) **Note:** Version bump only for package @commitlint/message -<a name="6.1.1"></a> -## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) +# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) + +**Note:** Version bump only for package @commitlint/message +# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) +**Note:** Version bump only for package @commitlint/message +# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) **Note:** Version bump only for package @commitlint/message -<a name="6.1.0"></a> -# [6.1.0](https://github.com/conventional-changelog/commitlint/compare/v6.0.5...v6.1.0) (2018-02-03) +<a name="7.5.0"></a> + +# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) + +### Bug Fixes +- replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) +<a name="7.3.1"></a> +## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) **Note:** Version bump only for package @commitlint/message -<a name="6.0.4"></a> -## [6.0.4](https://github.com/conventional-changelog/commitlint/compare/v6.0.3...v6.0.4) (2018-01-31) +<a name="7.3.0"></a> +# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) +**Note:** Version bump only for package @commitlint/message +<a name="7.1.2"></a> + +## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) **Note:** Version bump only for package @commitlint/message -<a name="6.0.3"></a> -## [6.0.3](https://github.com/conventional-changelog/commitlint/compare/v6.0.2...v6.0.3) (2018-01-31) +<a name="6.1.1"></a> +## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) +**Note:** Version bump only for package @commitlint/message +<a name="6.1.0"></a> + +# [6.1.0](https://github.com/conventional-changelog/commitlint/compare/v6.0.5...v6.1.0) (2018-02-03) **Note:** Version bump only for package @commitlint/message -<a name="6.0.2"></a> -## [6.0.2](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.2) (2018-01-12) +<a name="6.0.4"></a> +## [6.0.4](https://github.com/conventional-changelog/commitlint/compare/v6.0.3...v6.0.4) (2018-01-31) +**Note:** Version bump only for package @commitlint/message +<a name="6.0.3"></a> + +## [6.0.3](https://github.com/conventional-changelog/commitlint/compare/v6.0.2...v6.0.3) (2018-01-31) **Note:** Version bump only for package @commitlint/message -<a name="6.0.0"></a> -# [6.0.0](https://github.com/conventional-changelog/commitlint/compare/v5.2.6...v6.0.0) (2018-01-09) +<a name="6.0.2"></a> +## [6.0.2](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.2) (2018-01-12) +**Note:** Version bump only for package @commitlint/message + +<a name="6.0.0"></a> +# [6.0.0](https://github.com/conventional-changelog/commitlint/compare/v5.2.6...v6.0.0) (2018-01-09) **Note:** Version bump only for package @commitlint/message diff --git a/@commitlint/message/package.json b/@commitlint/message/package.json index f29995c8b3..3b3309c979 100644 --- a/@commitlint/message/package.json +++ b/@commitlint/message/package.json @@ -1,6 +1,7 @@ { "name": "@commitlint/message", - "version": "13.0.0", + "type": "module", + "version": "20.0.0", "description": "Lint your commit messages", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -12,16 +13,17 @@ "pkg": "pkg-check" }, "engines": { - "node": ">=v12" + "node": ">=v18" }, "repository": { "type": "git", - "url": "https://github.com/conventional-changelog/commitlint.git" + "url": "https://github.com/conventional-changelog/commitlint.git", + "directory": "@commitlint/message" }, "bugs": { "url": "https://github.com/conventional-changelog/commitlint/issues" }, - "homepage": "https://github.com/conventional-changelog/commitlint#readme", + "homepage": "https://commitlint.js.org/", "keywords": [ "conventional-changelog", "commitlint", @@ -34,8 +36,8 @@ }, "license": "MIT", "devDependencies": { - "@commitlint/test": "^13.0.0", - "@commitlint/utils": "^13.0.0" + "@commitlint/test": "^20.0.0", + "@commitlint/utils": "^20.0.0" }, - "gitHead": "70f7f4688b51774e7ac5e40e896cdaa3f132b2bc" + "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" } diff --git a/@commitlint/message/src/index.test.ts b/@commitlint/message/src/index.test.ts index 04c74201fa..acfcb49273 100644 --- a/@commitlint/message/src/index.test.ts +++ b/@commitlint/message/src/index.test.ts @@ -1,15 +1,17 @@ -import message from '.'; +import { test, expect } from "vitest"; -test('should return an empty string for empty input', () => { - expect(message()).toBe(''); +import message from "./index.js"; + +test("should return an empty string for empty input", () => { + expect(message()).toBe(""); }); -test('should return an empty string for empty input array', () => { - expect(message([])).toBe(''); +test("should return an empty string for empty input array", () => { + expect(message([])).toBe(""); }); -test('should filter falsy values', () => { - expect(message([null, 'some', undefined, 'message', null])).toBe( - 'some message' +test("should filter falsy values", () => { + expect(message([null, "some", undefined, "message", null])).toBe( + "some message", ); }); diff --git a/@commitlint/message/src/index.ts b/@commitlint/message/src/index.ts index 6eabef8197..c329f09917 100644 --- a/@commitlint/message/src/index.ts +++ b/@commitlint/message/src/index.ts @@ -1,5 +1,3 @@ -export default message; - -function message(input: (string | null | undefined)[] = []) { - return input.filter(Boolean).join(' '); +export default function message(input: (string | null | undefined)[] = []) { + return input.filter(Boolean).join(" "); } diff --git a/@commitlint/parse/CHANGELOG.md b/@commitlint/parse/CHANGELOG.md index 929aea5b67..f8c257b73a 100644 --- a/@commitlint/parse/CHANGELOG.md +++ b/@commitlint/parse/CHANGELOG.md @@ -3,7 +3,7 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. -# [13.1.0](https://github.com/conventional-changelog/commitlint/compare/v13.0.0...v13.1.0) (2021-07-24) +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) **Note:** Version bump only for package @commitlint/parse @@ -11,21 +11,23 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) +## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) +**Note:** Version bump only for package @commitlint/parse -* chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) -### BREAKING CHANGES -* minimum node version is 12 +# [19.8.0](https://github.com/conventional-changelog/commitlint/compare/v19.7.1...v19.8.0) (2025-03-07) + +**Note:** Version bump only for package @commitlint/parse -## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) + +# [19.5.0](https://github.com/conventional-changelog/commitlint/compare/v19.4.1...v19.5.0) (2024-09-11) **Note:** Version bump only for package @commitlint/parse @@ -33,7 +35,81 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.1.2](https://github.com/conventional-changelog/commitlint/compare/v12.1.1...v12.1.2) (2021-04-29) +## [19.0.3](https://github.com/conventional-changelog/commitlint/compare/v19.0.2...v19.0.3) (2024-02-28) + + +### Bug Fixes + +* mark `@types/conventional-commits-parser` as dep for `@commitlint/types` ([#3944](https://github.com/conventional-changelog/commitlint/issues/3944)) ([5a01f59](https://github.com/conventional-changelog/commitlint/commit/5a01f59661f0b908802728389631965eb8b49d47)), closes [#3929](https://github.com/conventional-changelog/commitlint/issues/3929) [#3942](https://github.com/conventional-changelog/commitlint/issues/3942) + + + + + +# [19.0.0](https://github.com/conventional-changelog/commitlint/compare/v18.6.2...v19.0.0) (2024-02-27) + + +* feat!: migrate to pure ESM (#3850) ([3423735](https://github.com/conventional-changelog/commitlint/commit/342373559bdf7c783c4ef37ff05dc38a5f681159)), closes [#3850](https://github.com/conventional-changelog/commitlint/issues/3850) + + +### Reverts + +* Revert "chore!: minimum node version v20" ([2816783](https://github.com/conventional-changelog/commitlint/commit/2816783d00e7eb967de3ac9347c2fc43dc8b94fa)) + + +### BREAKING CHANGES + +* migrate to pure ESM + +* feat: migrate to pure ESM + +* chore: update snapshot + +* fix: load `parserPreset` with another `await` + +* test: migrate to vitest + +* test: remove no replacement `--runInBand` test-ci script + +* chore: fix code reviews + +* refactor(load): rewrite resolve logic + +* fix(config-nx-scopes): fix syntax error + +* feat(resolve-extends): add resolveFrom and loadParserPreset + +* feat(load): use resolveFrom and loadParserPreset from resolve-extends + +* test: include only @commitlint/* packages src in coverage + +* test: explicit import vitest utilities + +* test: remove @jest/globals from dependencies + +* fix(resolve-extends): `resolveFrom` output should be platform aware + +* test: restore NO_COLOR to test script + +* chore: fix linting issues + +* fix: should use fileURLToPath instead of pathname for Windows compatibility + +* Apply suggestions from code review + +* fix: should reuse `cli` instead call `yargs()` + +* feat(cli): set terminalWidth as wrap to avoid work break on help + +* Update .eslintrc.cjs + +* feat: migrate @commitlint/config-conventional to pure ESM + + + + + +## [18.6.1](https://github.com/conventional-changelog/commitlint/compare/v18.6.0...v18.6.1) (2024-02-13) **Note:** Version bump only for package @commitlint/parse @@ -41,7 +117,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) +# [18.6.0](https://github.com/conventional-changelog/commitlint/compare/v18.5.1...v18.6.0) (2024-01-25) **Note:** Version bump only for package @commitlint/parse @@ -49,7 +125,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [12.1.0](https://github.com/conventional-changelog/commitlint/compare/v12.0.1...v12.1.0) (2021-03-06) +## [18.4.4](https://github.com/conventional-changelog/commitlint/compare/v18.4.3...v18.4.4) (2024-01-04) **Note:** Version bump only for package @commitlint/parse @@ -57,7 +133,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) +## [18.4.3](https://github.com/conventional-changelog/commitlint/compare/v18.4.2...v18.4.3) (2023-11-21) **Note:** Version bump only for package @commitlint/parse @@ -65,7 +141,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) +# [18.4.0](https://github.com/conventional-changelog/commitlint/compare/v18.3.0...v18.4.0) (2023-11-10) **Note:** Version bump only for package @commitlint/parse @@ -73,7 +149,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) +# [18.1.0](https://github.com/conventional-changelog/commitlint/compare/v18.0.0...v18.1.0) (2023-10-25) **Note:** Version bump only for package @commitlint/parse @@ -81,29 +157,37 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) +# [18.0.0](https://github.com/conventional-changelog/commitlint/compare/v17.8.1...v18.0.0) (2023-10-20) -* refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) +* chore!: minimum node version v18 (#3644) ([5b4aeaf](https://github.com/conventional-changelog/commitlint/commit/5b4aeaf4f01c2726a7bc8631a23bb34c849baad2)), closes [#3644](https://github.com/conventional-changelog/commitlint/issues/3644) ### BREAKING CHANGES -* remove node 8 from circle-ci checks +* drop node v14 and v16 support -also remove node 13 because we do not support experimental versions +* chore: remove unused types -* docs: update node v10 to latest LTS 10 version +* docs: prepare node update and new release -Co-authored-by: Cedric van Putten <me@bycedric.com> +* chore!: minimum TS version v5 +* drop TS v4 support -Co-authored-by: Cedric van Putten <me@bycedric.com> +* ci: remove node v14/16 checks +* chore: adjust node types to minimal supported version + +* chore!: further major versions of other deps +* upgrade conventional-changelog-conventionalcommits, conventional-commits-parser, conventional-changelog-atom, + +* docs: simplify releases and remove roadmap -## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) + +## [17.8.1](https://github.com/conventional-changelog/commitlint/compare/v17.8.0...v17.8.1) (2023-10-20) **Note:** Version bump only for package @commitlint/parse @@ -111,7 +195,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) +# [17.7.0](https://github.com/conventional-changelog/commitlint/compare/v17.6.7...v17.7.0) (2023-08-09) **Note:** Version bump only for package @commitlint/parse @@ -119,7 +203,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) +## [17.6.7](https://github.com/conventional-changelog/commitlint/compare/v17.6.6...v17.6.7) (2023-07-19) **Note:** Version bump only for package @commitlint/parse @@ -127,26 +211,29 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) +## [17.6.5](https://github.com/conventional-changelog/commitlint/compare/v17.6.4...v17.6.5) (2023-05-30) -**Note:** Version bump only for package @commitlint/parse +### Bug Fixes + +* add named export to @commitlint/parse ([#3614](https://github.com/conventional-changelog/commitlint/issues/3614)) ([2cd236b](https://github.com/conventional-changelog/commitlint/commit/2cd236b3065c69303c56833d120eb04c6fefc2c3)) -# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) + +## [17.4.4](https://github.com/conventional-changelog/commitlint/compare/v17.4.3...v17.4.4) (2023-02-17) ### Bug Fixes -* [#840](https://github.com/conventional-changelog/commitlint/issues/840) add caret to lodash versions ([#843](https://github.com/conventional-changelog/commitlint/issues/843)) ([ffc0bac](https://github.com/conventional-changelog/commitlint/commit/ffc0bac26993acb2ab6a8fa51065f93c92b0d644)) +* **parse:** allow setting fieldPattern in parserOpts ([#3538](https://github.com/conventional-changelog/commitlint/issues/3538)) ([ea23c65](https://github.com/conventional-changelog/commitlint/commit/ea23c65702d619b92e338e9f589a147d62e48ffc)) -## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) +## [17.4.2](https://github.com/conventional-changelog/commitlint/compare/v17.4.1...v17.4.2) (2023-01-12) **Note:** Version bump only for package @commitlint/parse @@ -154,127 +241,213 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) +# [17.4.0](https://github.com/conventional-changelog/commitlint/compare/v17.3.0...v17.4.0) (2023-01-04) + +### Bug Fixes + +- stop truncating the body in presence of dashes ([#3476](https://github.com/conventional-changelog/commitlint/issues/3476)) ([02a61be](https://github.com/conventional-changelog/commitlint/commit/02a61befad13a348866fce30b15caa67a8360d9c)) + +# [17.2.0](https://github.com/conventional-changelog/commitlint/compare/v17.1.2...v17.2.0) (2022-10-31) **Note:** Version bump only for package @commitlint/parse +# [17.0.0](https://github.com/conventional-changelog/commitlint/compare/v16.3.0...v17.0.0) (2022-05-16) +- chore!: minimum node version v14 (#3128) ([ac5f9b4](https://github.com/conventional-changelog/commitlint/commit/ac5f9b47a9e3cd5c9d58b14da0feb426f06b1ef9)), closes [#3128](https://github.com/conventional-changelog/commitlint/issues/3128) +### BREAKING CHANGES +- drop node v12 support -# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) +- chore: rename circleci windows job + +node version is not defned by the name anyways (i think) + +## [16.2.1](https://github.com/conventional-changelog/commitlint/compare/v16.2.0...v16.2.1) (2022-02-13) **Note:** Version bump only for package @commitlint/parse +# [16.0.0](https://github.com/conventional-changelog/commitlint/compare/v15.0.0...v16.0.0) (2021-12-26) +**Note:** Version bump only for package @commitlint/parse +# [15.0.0](https://github.com/conventional-changelog/commitlint/compare/v14.2.0...v15.0.0) (2021-11-17) +**Note:** Version bump only for package @commitlint/parse -# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) +# [14.0.0](https://github.com/conventional-changelog/commitlint/compare/v13.2.1...v14.0.0) (2021-10-26) **Note:** Version bump only for package @commitlint/parse +# [13.2.0](https://github.com/conventional-changelog/commitlint/compare/v13.1.0...v13.2.0) (2021-09-28) +### Bug Fixes +- **parse:** enforce secure version of `conventional-commits-parser` ([#2776](https://github.com/conventional-changelog/commitlint/issues/2776)) ([a351801](https://github.com/conventional-changelog/commitlint/commit/a3518012ae11bc00a43a12b8ce935f3ffd2d04ef)) +# [13.1.0](https://github.com/conventional-changelog/commitlint/compare/v13.0.0...v13.1.0) (2021-07-24) -# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) +**Note:** Version bump only for package @commitlint/parse +# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) -### Bug Fixes +- chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) -* don't merge array properties with custom opts ([#616](https://github.com/conventional-changelog/commitlint/issues/616)) ([f321647](https://github.com/conventional-changelog/commitlint/commit/f321647)), closes [#594](https://github.com/conventional-changelog/commitlint/issues/594) +### BREAKING CHANGES +- minimum node version is 12 +## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) +**Note:** Version bump only for package @commitlint/parse +## [12.1.2](https://github.com/conventional-changelog/commitlint/compare/v12.1.1...v12.1.2) (2021-04-29) -<a name="7.5.0"></a> -# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) +**Note:** Version bump only for package @commitlint/parse +## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) -### Bug Fixes +**Note:** Version bump only for package @commitlint/parse -* mark optional parameter with undefined ([#553](https://github.com/conventional-changelog/commitlint/issues/553)) ([6720284](https://github.com/conventional-changelog/commitlint/commit/6720284)) -* replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) +# [12.1.0](https://github.com/conventional-changelog/commitlint/compare/v12.0.1...v12.1.0) (2021-03-06) +**Note:** Version bump only for package @commitlint/parse +## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) +**Note:** Version bump only for package @commitlint/parse -<a name="7.3.1"></a> -## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) +# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) + +**Note:** Version bump only for package @commitlint/parse + +# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) + +**Note:** Version bump only for package @commitlint/parse + +# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) + +- refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) + +### BREAKING CHANGES + +- remove node 8 from circle-ci checks + +also remove node 13 because we do not support experimental versions +- docs: update node v10 to latest LTS 10 version +Co-authored-by: Cedric van Putten <me@bycedric.com> +Co-authored-by: Cedric van Putten <me@bycedric.com> + +## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) **Note:** Version bump only for package @commitlint/parse -<a name="7.3.0"></a> -# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) +## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) + +**Note:** Version bump only for package @commitlint/parse +# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) + +**Note:** Version bump only for package @commitlint/parse + +## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) + +**Note:** Version bump only for package @commitlint/parse + +# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) ### Bug Fixes -* fall back to conventional commit-parser settings for missing keys ([#496](https://github.com/conventional-changelog/commitlint/issues/496)) ([831a141](https://github.com/conventional-changelog/commitlint/commit/831a141)), closes [#399](https://github.com/conventional-changelog/commitlint/issues/399) +- [#840](https://github.com/conventional-changelog/commitlint/issues/840) add caret to lodash versions ([#843](https://github.com/conventional-changelog/commitlint/issues/843)) ([ffc0bac](https://github.com/conventional-changelog/commitlint/commit/ffc0bac26993acb2ab6a8fa51065f93c92b0d644)) +## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) +**Note:** Version bump only for package @commitlint/parse +# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) -<a name="7.1.2"></a> -## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) +**Note:** Version bump only for package @commitlint/parse +# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) +**Note:** Version bump only for package @commitlint/parse +# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) **Note:** Version bump only for package @commitlint/parse -<a name="6.1.1"></a> -## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) +# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) +### Bug Fixes +- don't merge array properties with custom opts ([#616](https://github.com/conventional-changelog/commitlint/issues/616)) ([f321647](https://github.com/conventional-changelog/commitlint/commit/f321647)), closes [#594](https://github.com/conventional-changelog/commitlint/issues/594) + +<a name="7.5.0"></a> + +# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) + +### Bug Fixes +- mark optional parameter with undefined ([#553](https://github.com/conventional-changelog/commitlint/issues/553)) ([6720284](https://github.com/conventional-changelog/commitlint/commit/6720284)) +- replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) + +<a name="7.3.1"></a> + +## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) **Note:** Version bump only for package @commitlint/parse -<a name="6.1.0"></a> -# [6.1.0](https://github.com/conventional-changelog/commitlint/compare/v6.0.5...v6.1.0) (2018-02-03) +<a name="7.3.0"></a> +# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) ### Bug Fixes -* **parse:** default to angular preset for empty parserOpts ([#265](https://github.com/conventional-changelog/commitlint/issues/265)) ([ccb03b4](https://github.com/conventional-changelog/commitlint/commit/ccb03b4)), closes [#262](https://github.com/conventional-changelog/commitlint/issues/262) +- fall back to conventional commit-parser settings for missing keys ([#496](https://github.com/conventional-changelog/commitlint/issues/496)) ([831a141](https://github.com/conventional-changelog/commitlint/commit/831a141)), closes [#399](https://github.com/conventional-changelog/commitlint/issues/399) +<a name="7.1.2"></a> +## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) +**Note:** Version bump only for package @commitlint/parse -<a name="6.0.4"></a> -## [6.0.4](https://github.com/conventional-changelog/commitlint/compare/v6.0.3...v6.0.4) (2018-01-31) +<a name="6.1.1"></a> +## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) +**Note:** Version bump only for package @commitlint/parse +<a name="6.1.0"></a> -**Note:** Version bump only for package @commitlint/parse +# [6.1.0](https://github.com/conventional-changelog/commitlint/compare/v6.0.5...v6.1.0) (2018-02-03) -<a name="6.0.3"></a> -## [6.0.3](https://github.com/conventional-changelog/commitlint/compare/v6.0.2...v6.0.3) (2018-01-31) +### Bug Fixes +- **parse:** default to angular preset for empty parserOpts ([#265](https://github.com/conventional-changelog/commitlint/issues/265)) ([ccb03b4](https://github.com/conventional-changelog/commitlint/commit/ccb03b4)), closes [#262](https://github.com/conventional-changelog/commitlint/issues/262) +<a name="6.0.4"></a> +## [6.0.4](https://github.com/conventional-changelog/commitlint/compare/v6.0.3...v6.0.4) (2018-01-31) **Note:** Version bump only for package @commitlint/parse -<a name="6.0.2"></a> -## [6.0.2](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.2) (2018-01-12) +<a name="6.0.3"></a> +## [6.0.3](https://github.com/conventional-changelog/commitlint/compare/v6.0.2...v6.0.3) (2018-01-31) + +**Note:** Version bump only for package @commitlint/parse +<a name="6.0.2"></a> +## [6.0.2](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.2) (2018-01-12) **Note:** Version bump only for package @commitlint/parse <a name="6.0.0"></a> -# [6.0.0](https://github.com/conventional-changelog/commitlint/compare/v5.2.6...v6.0.0) (2018-01-09) - - +# [6.0.0](https://github.com/conventional-changelog/commitlint/compare/v5.2.6...v6.0.0) (2018-01-09) **Note:** Version bump only for package @commitlint/parse diff --git a/@commitlint/parse/README.md b/@commitlint/parse/README.md index be40697885..8021452469 100644 --- a/@commitlint/parse/README.md +++ b/@commitlint/parse/README.md @@ -11,7 +11,7 @@ npm install --save @commitlint/parse ## Use ```js -const parse = require('@commitlint/parse'); +const parse = require("@commitlint/parse"); ``` ## API diff --git a/@commitlint/parse/package.json b/@commitlint/parse/package.json index 50b9368aa2..ff1639e042 100644 --- a/@commitlint/parse/package.json +++ b/@commitlint/parse/package.json @@ -1,6 +1,7 @@ { "name": "@commitlint/parse", - "version": "13.1.0", + "type": "module", + "version": "20.0.0", "description": "Lint your commit messages", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -12,16 +13,17 @@ "pkg": "pkg-check" }, "engines": { - "node": ">=v12" + "node": ">=v18" }, "repository": { "type": "git", - "url": "https://github.com/conventional-changelog/commitlint.git" + "url": "https://github.com/conventional-changelog/commitlint.git", + "directory": "@commitlint/parse" }, "bugs": { "url": "https://github.com/conventional-changelog/commitlint/issues" }, - "homepage": "https://github.com/conventional-changelog/commitlint#readme", + "homepage": "https://commitlint.js.org/", "keywords": [ "conventional-changelog", "commitlint", @@ -34,13 +36,14 @@ }, "license": "MIT", "devDependencies": { - "@commitlint/test": "^13.0.0", - "@commitlint/utils": "^13.0.0" + "@commitlint/test": "^20.0.0", + "@commitlint/utils": "^20.0.0", + "@types/conventional-commits-parser": "^5.0.0" }, "dependencies": { - "@commitlint/types": "^13.1.0", - "conventional-changelog-angular": "^5.0.11", - "conventional-commits-parser": "^3.0.0" + "@commitlint/types": "^20.0.0", + "conventional-changelog-angular": "^7.0.0", + "conventional-commits-parser": "^5.0.0" }, - "gitHead": "70f7f4688b51774e7ac5e40e896cdaa3f132b2bc" + "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" } diff --git a/@commitlint/parse/src/index.test.ts b/@commitlint/parse/src/index.test.ts index 157113c930..8fb892f37c 100644 --- a/@commitlint/parse/src/index.test.ts +++ b/@commitlint/parse/src/index.test.ts @@ -1,22 +1,23 @@ -import parse from '.'; +import { test, expect } from "vitest"; +import parse from "./index.js"; -test('throws when called without params', async () => { - await expect((parse as any)()).rejects.toThrowError('Expected a raw commit'); +test("throws when called without params", async () => { + await expect((parse as any)()).rejects.toThrow("Expected a raw commit"); }); -test('throws when called with empty message', async () => { - await expect(parse('')).rejects.toThrowError('Expected a raw commit'); +test("throws when called with empty message", async () => { + await expect(parse("")).rejects.toThrow("Expected a raw commit"); }); -test('returns object with raw message', async () => { - const message = 'type(scope): subject'; +test("returns object with raw message", async () => { + const message = "type(scope): subject"; const actual = await parse(message); - expect(actual).toHaveProperty('raw', message); + expect(actual).toHaveProperty("raw", message); }); -test('calls parser with message and passed options', async () => { - const message = 'message'; +test("calls parser with message and passed options", async () => { + const message = "message"; expect.assertions(1); await parse(message, (m: string): any => { @@ -25,25 +26,25 @@ test('calls parser with message and passed options', async () => { }); }); -test('passes object up from parser function', async () => { - const message = 'message'; +test("passes object up from parser function", async () => { + const message = "message"; const result: any = {}; const actual = await parse(message, () => result); expect(actual).toBe(result); }); -test('returns object with expected keys', async () => { - const message = 'message'; +test("returns object with expected keys", async () => { + const message = "message"; const actual = await parse(message); const expected = { body: null, footer: null, - header: 'message', + header: "message", mentions: [], merge: null, notes: [], - raw: 'message', + raw: "message", references: [], revert: null, scope: null, @@ -54,29 +55,29 @@ test('returns object with expected keys', async () => { expect(actual).toMatchObject(expected); }); -test('uses angular grammar', async () => { - const message = 'type(scope): subject'; +test("uses angular grammar", async () => { + const message = "type(scope): subject"; const actual = await parse(message); const expected = { body: null, footer: null, - header: 'type(scope): subject', + header: "type(scope): subject", mentions: [], merge: null, notes: [], - raw: 'type(scope): subject', + raw: "type(scope): subject", references: [], revert: null, - scope: 'scope', - subject: 'subject', - type: 'type', + scope: "scope", + subject: "subject", + type: "type", }; expect(actual).toMatchObject(expected); }); -test('uses custom opts parser', async () => { - const message = 'type(scope)-subject'; +test("uses custom opts parser", async () => { + const message = "type(scope)-subject"; const changelogOpts = { parserOpts: { headerPattern: /^(\w*)(?:\((.*)\))?-(.*)$/, @@ -86,131 +87,167 @@ test('uses custom opts parser', async () => { const expected = { body: null, footer: null, - header: 'type(scope)-subject', + header: "type(scope)-subject", mentions: [], merge: null, notes: [], - raw: 'type(scope)-subject', + raw: "type(scope)-subject", references: [], revert: null, - scope: 'scope', - subject: 'subject', - type: 'type', + scope: "scope", + subject: "subject", + type: "type", }; expect(actual).toMatchObject(expected); }); -test('does not merge array properties with custom opts', async () => { - const message = 'type: subject'; +test("does not merge array properties with custom opts", async () => { + const message = "type: subject"; const actual = await parse(message, undefined, { headerPattern: /^(.*):\s(.*)$/, - headerCorrespondence: ['type', 'subject'], + headerCorrespondence: ["type", "subject"], }); const expected = { body: null, footer: null, - header: 'type: subject', + header: "type: subject", mentions: [], merge: null, notes: [], - raw: 'type: subject', + raw: "type: subject", references: [], revert: null, - subject: 'subject', - type: 'type', + subject: "subject", + type: "type", }; expect(actual).toMatchObject(expected); }); -test('supports scopes with /', async () => { - const message = 'type(some/scope): subject'; +test("supports scopes with /", async () => { + const message = "type(some/scope): subject"; const actual = await parse(message); - expect(actual.scope).toBe('some/scope'); - expect(actual.subject).toBe('subject'); + expect(actual.scope).toBe("some/scope"); + expect(actual.subject).toBe("subject"); }); -test('supports scopes with / and empty parserOpts', async () => { - const message = 'type(some/scope): subject'; +test("supports scopes with / and empty parserOpts", async () => { + const message = "type(some/scope): subject"; const actual = await parse(message, undefined, {}); - expect(actual.scope).toBe('some/scope'); - expect(actual.subject).toBe('subject'); + expect(actual.scope).toBe("some/scope"); + expect(actual.subject).toBe("subject"); }); -test('ignores comments', async () => { - const message = 'type(some/scope): subject\n# some comment'; - const changelogOpts = await require('conventional-changelog-angular'); +test("ignores comments", async () => { + const message = "type(some/scope): subject\n# some comment"; + // @ts-expect-error -- no typings + const changelogOpts = await import("conventional-changelog-angular"); const opts = { ...changelogOpts.parserOpts, - commentChar: '#', + commentChar: "#", }; const actual = await parse(message, undefined, opts); expect(actual.body).toBe(null); expect(actual.footer).toBe(null); - expect(actual.subject).toBe('subject'); + expect(actual.subject).toBe("subject"); }); -test('registers inline #', async () => { +test("registers inline #", async () => { const message = - 'type(some/scope): subject #reference\n# some comment\nthings #reference'; - const changelogOpts = await require('conventional-changelog-angular'); + "type(some/scope): subject #reference\n# some comment\nthings #reference"; + // @ts-expect-error -- no typings + const changelogOpts = await import("conventional-changelog-angular"); const opts = { ...changelogOpts.parserOpts, - commentChar: '#', + commentChar: "#", }; const actual = await parse(message, undefined, opts); - expect(actual.subject).toBe('subject #reference'); - expect(actual.body).toBe('things #reference'); + expect(actual.subject).toBe("subject #reference"); + expect(actual.body).toBe("things #reference"); }); -test('parses references leading subject', async () => { - const message = '#1 some subject'; - const opts = await require('conventional-changelog-angular'); +test("keep -side notes- in the body section", async () => { + const header = "type(some/scope): subject"; + const body = + "CI on master branch caught this:\n\n" + + "```\n" + + "Unhandled Exception:\n" + + "System.AggregateException: One or more errors occurred. (Some problem when connecting to 'api.mycryptoapi.com/eth')\n\n" + + "--- End of stack trace from previous location where exception was thrown ---\n\n" + + "at GWallet.Backend.FSharpUtil.ReRaise (System.Exception ex) [0x00000] in /Users/runner/work/geewallet/geewallet/src/GWallet.Backend/FSharpUtil.fs:206\n" + + "...\n" + + "```"; + + const message = header + "\n\n" + body; + + const actual = await parse(message); + + expect(actual.body).toBe(body); +}); + +test("allows separating -side nodes- by setting parserOpts.fieldPattern", async () => { + const message = + "type(scope): subject\n\nbody text\n-authorName-\nrenovate[bot]"; + const changelogOpts = { + parserOpts: { + fieldPattern: /^-(.*)-$/, + }, + }; + const actual = await parse(message, undefined, changelogOpts.parserOpts); + + expect(actual.body).toBe("body text"); + expect(actual).toHaveProperty("authorName", "renovate[bot]"); +}); + +test("parses references leading subject", async () => { + const message = "#1 some subject"; + // @ts-expect-error -- no typings + const opts = await import("conventional-changelog-angular"); const { references: [actual], } = await parse(message, undefined, opts); - expect(actual.issue).toBe('1'); + expect(actual.issue).toBe("1"); }); -test('parses custom references', async () => { - const message = '#1 some subject PREFIX-2'; - const {references} = await parse(message, undefined, { - issuePrefixes: ['PREFIX-'], +test("parses custom references", async () => { + const message = "#1 some subject PREFIX-2"; + const { references } = await parse(message, undefined, { + issuePrefixes: ["PREFIX-"], }); - expect(references.find((ref) => ref.issue === '1')).toBeFalsy(); - expect(references.find((ref) => ref.issue === '2')).toMatchObject({ + expect(references.find((ref) => ref.issue === "1")).toBeFalsy(); + expect(references.find((ref) => ref.issue === "2")).toMatchObject({ action: null, - issue: '2', + issue: "2", owner: null, - prefix: 'PREFIX-', - raw: '#1 some subject PREFIX-2', + prefix: "PREFIX-", + raw: "#1 some subject PREFIX-2", repository: null, }); }); -test('uses permissive default regex without parser opts', async () => { - const message = 'chore(component,demo): bump'; +test("uses permissive default regex without parser opts", async () => { + const message = "chore(component,demo): bump"; const actual = await parse(message); - expect(actual.scope).toBe('component,demo'); + expect(actual.scope).toBe("component,demo"); }); -test('uses permissive default regex with other parser opts', async () => { - const message = 'chore(component,demo): bump'; - const actual = await parse(message, undefined, {commentChar: '#'}); +test("uses permissive default regex with other parser opts", async () => { + const message = "chore(component,demo): bump"; + const actual = await parse(message, undefined, { commentChar: "#" }); - expect(actual.scope).toBe('component,demo'); + expect(actual.scope).toBe("component,demo"); }); -test('uses restrictive default regex in passed parser opts', async () => { - const message = 'chore(component,demo): bump'; +test("uses restrictive default regex in passed parser opts", async () => { + const message = "chore(component,demo): bump"; const actual = await parse(message, undefined, { headerPattern: /^(\w*)(?:\(([a-z]*)\))?: (.*)$/, }); @@ -219,16 +256,16 @@ test('uses restrictive default regex in passed parser opts', async () => { expect(actual.scope).toBe(null); }); -test('works with chinese scope by default', async () => { - const message = 'fix(面试评价): 测试'; - const actual = await parse(message, undefined, {commentChar: '#'}); +test("works with chinese scope by default", async () => { + const message = "fix(面试评价): 测试"; + const actual = await parse(message, undefined, { commentChar: "#" }); expect(actual.subject).not.toBe(null); expect(actual.scope).not.toBe(null); }); -test('does not work with chinese scopes with incompatible pattern', async () => { - const message = 'fix(面试评价): 测试'; +test("does not work with chinese scopes with incompatible pattern", async () => { + const message = "fix(面试评价): 测试"; const actual = await parse(message, undefined, { headerPattern: /^(\w*)(?:\(([a-z]*)\))?: (.*)$/, }); diff --git a/@commitlint/parse/src/index.ts b/@commitlint/parse/src/index.ts index 3f90e8a4f6..86173827a7 100644 --- a/@commitlint/parse/src/index.ts +++ b/@commitlint/parse/src/index.ts @@ -1,19 +1,24 @@ -import {Commit, Parser, ParserOptions} from '@commitlint/types'; +import type { Parser } from "@commitlint/types"; -const {sync} = require('conventional-commits-parser'); -const defaultChangelogOpts = require('conventional-changelog-angular'); +import { type Commit, type Options, sync } from "conventional-commits-parser"; +// @ts-expect-error -- no typings +import defaultChangelogOpts from "conventional-changelog-angular"; -export default async function parse( +export async function parse( message: string, parser: Parser = sync, - parserOpts?: ParserOptions + parserOpts?: Options, ): Promise<Commit> { - const defaultOpts = (await defaultChangelogOpts).parserOpts; + const preset = await defaultChangelogOpts(); + const defaultOpts = preset.parserOpts; const opts = { ...defaultOpts, + fieldPattern: null, ...(parserOpts || {}), }; const parsed = parser(message, opts) as Commit; parsed.raw = message; return parsed; } + +export default parse; diff --git a/@commitlint/parse/tsconfig.json b/@commitlint/parse/tsconfig.json index 119e645565..d691164788 100644 --- a/@commitlint/parse/tsconfig.json +++ b/@commitlint/parse/tsconfig.json @@ -7,5 +7,5 @@ }, "include": ["./src"], "exclude": ["./src/**/*.test.ts", "./lib/**/*"], - "references": [{"path": "../types"}] + "references": [{ "path": "../types" }] } diff --git a/@commitlint/prompt-cli/CHANGELOG.md b/@commitlint/prompt-cli/CHANGELOG.md index 608c6d058d..dd443bf1b9 100644 --- a/@commitlint/prompt-cli/CHANGELOG.md +++ b/@commitlint/prompt-cli/CHANGELOG.md @@ -3,7 +3,7 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. -# [13.1.0](https://github.com/conventional-changelog/commitlint/compare/v13.0.0...v13.1.0) (2021-07-24) +# [20.1.0](https://github.com/conventional-changelog/commitlint/compare/v20.0.0...v20.1.0) (2025-09-30) **Note:** Version bump only for package @commitlint/prompt-cli @@ -11,37 +11,37 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) +**Note:** Version bump only for package @commitlint/prompt-cli -* chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) -### BREAKING CHANGES -* minimum node version is 12 +## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) +### Bug Fixes +* update dependency tinyexec to v1 ([#4332](https://github.com/conventional-changelog/commitlint/issues/4332)) ([e49449f](https://github.com/conventional-changelog/commitlint/commit/e49449fa9452069cdbf194f94d536194d362a299)) -## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) -**Note:** Version bump only for package @commitlint/prompt-cli +# [19.8.0](https://github.com/conventional-changelog/commitlint/compare/v19.7.1...v19.8.0) (2025-03-07) -## [12.1.2](https://github.com/conventional-changelog/commitlint/compare/v12.1.1...v12.1.2) (2021-04-29) +### Performance Improvements -**Note:** Version bump only for package @commitlint/prompt-cli +* use `node:` prefix to bypass require.cache call for builtins ([#4302](https://github.com/conventional-changelog/commitlint/issues/4302)) ([0cd8f41](https://github.com/conventional-changelog/commitlint/commit/0cd8f410573fe11383f788b1ceb7e0946143591d)) -## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) +## [19.7.1](https://github.com/conventional-changelog/commitlint/compare/v19.7.0...v19.7.1) (2025-02-02) **Note:** Version bump only for package @commitlint/prompt-cli @@ -49,7 +49,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [12.1.0](https://github.com/conventional-changelog/commitlint/compare/v12.0.1...v12.1.0) (2021-03-06) +# [19.7.0](https://github.com/conventional-changelog/commitlint/compare/v19.6.1...v19.7.0) (2025-01-04) **Note:** Version bump only for package @commitlint/prompt-cli @@ -57,7 +57,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) +## [19.6.1](https://github.com/conventional-changelog/commitlint/compare/v19.6.0...v19.6.1) (2024-12-15) **Note:** Version bump only for package @commitlint/prompt-cli @@ -65,18 +65,15 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) - - -### Bug Fixes +# [19.6.0](https://github.com/conventional-changelog/commitlint/compare/v19.5.0...v19.6.0) (2024-11-19) -* update dependency execa to v5 ([#2341](https://github.com/conventional-changelog/commitlint/issues/2341)) ([f349df9](https://github.com/conventional-changelog/commitlint/commit/f349df90f08096a9bcad46b5e55b411aac327a24)) +**Note:** Version bump only for package @commitlint/prompt-cli -# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) +# [19.5.0](https://github.com/conventional-changelog/commitlint/compare/v19.4.1...v19.5.0) (2024-09-11) **Note:** Version bump only for package @commitlint/prompt-cli @@ -84,34 +81,31 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) +## [19.4.1](https://github.com/conventional-changelog/commitlint/compare/v19.4.0...v19.4.1) (2024-08-28) +**Note:** Version bump only for package @commitlint/prompt-cli -### Bug Fixes -* update dependency execa to v4 ([#1936](https://github.com/conventional-changelog/commitlint/issues/1936)) ([8efb441](https://github.com/conventional-changelog/commitlint/commit/8efb44193058d286f7325327a6d33936b273ec91)) -* refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) +# [19.4.0](https://github.com/conventional-changelog/commitlint/compare/v19.3.1...v19.4.0) (2024-08-07) -### BREAKING CHANGES +**Note:** Version bump only for package @commitlint/prompt-cli -* remove node 8 from circle-ci checks -also remove node 13 because we do not support experimental versions -* docs: update node v10 to latest LTS 10 version -Co-authored-by: Cedric van Putten <me@bycedric.com> -Co-authored-by: Cedric van Putten <me@bycedric.com> +## [19.3.1](https://github.com/conventional-changelog/commitlint/compare/v19.3.0...v19.3.1) (2024-05-13) +**Note:** Version bump only for package @commitlint/prompt-cli -## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) + +# [19.3.0](https://github.com/conventional-changelog/commitlint/compare/v19.2.2...v19.3.0) (2024-04-23) **Note:** Version bump only for package @commitlint/prompt-cli @@ -119,7 +113,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) +## [19.2.2](https://github.com/conventional-changelog/commitlint/compare/v19.2.1...v19.2.2) (2024-04-14) **Note:** Version bump only for package @commitlint/prompt-cli @@ -127,7 +121,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) +# [19.2.0](https://github.com/conventional-changelog/commitlint/compare/v19.1.0...v19.2.0) (2024-03-15) **Note:** Version bump only for package @commitlint/prompt-cli @@ -135,15 +129,18 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) +# [19.1.0](https://github.com/conventional-changelog/commitlint/compare/v19.0.3...v19.1.0) (2024-03-12) -**Note:** Version bump only for package @commitlint/prompt-cli +### Bug Fixes + +* add `main` and `types` keys in package.json ([#3953](https://github.com/conventional-changelog/commitlint/issues/3953)) ([7ddaad4](https://github.com/conventional-changelog/commitlint/commit/7ddaad4bc4e71afe89f25cc02d3e19beba1ce6cd)) -# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) + +## [19.0.3](https://github.com/conventional-changelog/commitlint/compare/v19.0.2...v19.0.3) (2024-02-28) **Note:** Version bump only for package @commitlint/prompt-cli @@ -151,7 +148,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [8.3.5](https://github.com/conventional-changelog/commitlint/compare/v8.3.4...v8.3.5) (2020-01-15) +## [19.0.2](https://github.com/conventional-changelog/commitlint/compare/v19.0.1...v19.0.2) (2024-02-28) **Note:** Version bump only for package @commitlint/prompt-cli @@ -159,7 +156,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) +## [19.0.1](https://github.com/conventional-changelog/commitlint/compare/v19.0.0...v19.0.1) (2024-02-27) **Note:** Version bump only for package @commitlint/prompt-cli @@ -167,484 +164,837 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [8.3.1](https://github.com/conventional-changelog/commitlint/compare/v8.3.0...v8.3.1) (2019-10-16) +# [19.0.0](https://github.com/conventional-changelog/commitlint/compare/v18.6.2...v19.0.0) (2024-02-27) -**Note:** Version bump only for package @commitlint/prompt-cli +* feat!: migrate to pure ESM (#3850) ([3423735](https://github.com/conventional-changelog/commitlint/commit/342373559bdf7c783c4ef37ff05dc38a5f681159)), closes [#3850](https://github.com/conventional-changelog/commitlint/issues/3850) +### Reverts +* Revert "chore!: minimum node version v20" ([2816783](https://github.com/conventional-changelog/commitlint/commit/2816783d00e7eb967de3ac9347c2fc43dc8b94fa)) -# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) -**Note:** Version bump only for package @commitlint/prompt-cli +### BREAKING CHANGES +* migrate to pure ESM +* feat: migrate to pure ESM +* chore: update snapshot +* fix: load `parserPreset` with another `await` -# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) +* test: migrate to vitest -**Note:** Version bump only for package @commitlint/prompt-cli +* test: remove no replacement `--runInBand` test-ci script +* chore: fix code reviews +* refactor(load): rewrite resolve logic +* fix(config-nx-scopes): fix syntax error +* feat(resolve-extends): add resolveFrom and loadParserPreset -# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) +* feat(load): use resolveFrom and loadParserPreset from resolve-extends -**Note:** Version bump only for package @commitlint/prompt-cli +* test: include only @commitlint/* packages src in coverage +* test: explicit import vitest utilities +* test: remove @jest/globals from dependencies +* fix(resolve-extends): `resolveFrom` output should be platform aware +* test: restore NO_COLOR to test script -## [7.6.1](https://github.com/conventional-changelog/commitlint/compare/v7.6.0...v7.6.1) (2019-05-09) +* chore: fix linting issues -**Note:** Version bump only for package @commitlint/prompt-cli +* fix: should use fileURLToPath instead of pathname for Windows compatibility +* Apply suggestions from code review +* fix: should reuse `cli` instead call `yargs()` +* feat(cli): set terminalWidth as wrap to avoid work break on help +* Update .eslintrc.cjs -# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) +* feat: migrate @commitlint/config-conventional to pure ESM -**Note:** Version bump only for package @commitlint/prompt-cli +## [18.6.1](https://github.com/conventional-changelog/commitlint/compare/v18.6.0...v18.6.1) (2024-02-13) -<a name="7.5.0"></a> -# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) +**Note:** Version bump only for package @commitlint/prompt-cli -### Bug Fixes -* all broken website references ([#564](https://github.com/conventional-changelog/commitlint/issues/564)) ([82eeb5a](https://github.com/conventional-changelog/commitlint/commit/82eeb5a)) -* replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) -* replace all website references with conventional changelog ([#563](https://github.com/conventional-changelog/commitlint/issues/563)) ([6b86fb1](https://github.com/conventional-changelog/commitlint/commit/6b86fb1)) +# [18.6.0](https://github.com/conventional-changelog/commitlint/compare/v18.5.1...v18.6.0) (2024-01-25) + +**Note:** Version bump only for package @commitlint/prompt-cli -<a name="7.3.1"></a> -## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) +# [18.5.0](https://github.com/conventional-changelog/commitlint/compare/v18.4.4...v18.5.0) (2024-01-22) **Note:** Version bump only for package @commitlint/prompt-cli -<a name="7.3.0"></a> -# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) -### Features -* check stage before entering prompt ([#495](https://github.com/conventional-changelog/commitlint/issues/495)) ([3b3667a](https://github.com/conventional-changelog/commitlint/commit/3b3667a)), closes [#51](https://github.com/conventional-changelog/commitlint/issues/51) [#51](https://github.com/conventional-changelog/commitlint/issues/51) +## [18.4.4](https://github.com/conventional-changelog/commitlint/compare/v18.4.3...v18.4.4) (2024-01-04) +**Note:** Version bump only for package @commitlint/prompt-cli -<a name="7.2.1"></a> -## [7.2.1](https://github.com/conventional-changelog/commitlint/compare/v7.2.0...v7.2.1) (2018-10-11) +## [18.4.3](https://github.com/conventional-changelog/commitlint/compare/v18.4.2...v18.4.3) (2023-11-21) **Note:** Version bump only for package @commitlint/prompt-cli -<a name="7.2.0"></a> -# [7.2.0](https://github.com/conventional-changelog/commitlint/compare/v7.1.2...v7.2.0) (2018-10-05) +## [18.4.2](https://github.com/conventional-changelog/commitlint/compare/v18.4.1...v18.4.2) (2023-11-16) + **Note:** Version bump only for package @commitlint/prompt-cli -<a name="7.1.2"></a> -## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) +## [18.4.1](https://github.com/conventional-changelog/commitlint/compare/v18.4.0...v18.4.1) (2023-11-12) + **Note:** Version bump only for package @commitlint/prompt-cli -<a name="6.1.1"></a> -## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) +# [18.4.0](https://github.com/conventional-changelog/commitlint/compare/v18.3.0...v18.4.0) (2023-11-10) + **Note:** Version bump only for package @commitlint/prompt-cli -<a name="6.1.0"></a> -# [6.1.0](https://github.com/conventional-changelog/commitlint/compare/v6.0.5...v6.1.0) (2018-02-03) -**Note:** Version bump only for package @commitlint/prompt-cli +# [18.2.0](https://github.com/conventional-changelog/commitlint/compare/v18.1.0...v18.2.0) (2023-10-26) -<a name="6.0.5"></a> -## [6.0.5](https://github.com/conventional-changelog/commitlint/compare/v6.0.4...v6.0.5) (2018-01-31) +**Note:** Version bump only for package @commitlint/prompt-cli -**Note:** Version bump only for package @commitlint/prompt-cli -<a name="6.0.4"></a> -## [6.0.4](https://github.com/conventional-changelog/commitlint/compare/v6.0.3...v6.0.4) (2018-01-31) +# [18.1.0](https://github.com/conventional-changelog/commitlint/compare/v18.0.0...v18.1.0) (2023-10-25) +**Note:** Version bump only for package @commitlint/prompt-cli -**Note:** Version bump only for package @commitlint/prompt-cli -<a name="6.0.3"></a> -## [6.0.3](https://github.com/conventional-changelog/commitlint/compare/v6.0.2...v6.0.3) (2018-01-31) +# [18.0.0](https://github.com/conventional-changelog/commitlint/compare/v17.8.1...v18.0.0) (2023-10-20) +* chore!: minimum node version v18 (#3644) ([5b4aeaf](https://github.com/conventional-changelog/commitlint/commit/5b4aeaf4f01c2726a7bc8631a23bb34c849baad2)), closes [#3644](https://github.com/conventional-changelog/commitlint/issues/3644) -**Note:** Version bump only for package @commitlint/prompt-cli -<a name="6.0.2"></a> -## [6.0.2](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.2) (2018-01-12) +### BREAKING CHANGES +* drop node v14 and v16 support +* chore: remove unused types +* docs: prepare node update and new release -**Note:** Version bump only for package @commitlint/prompt-cli +* chore!: minimum TS version v5 +* drop TS v4 support -<a name="6.0.1"></a> -## [6.0.1](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.1) (2018-01-09) +* ci: remove node v14/16 checks +* chore: adjust node types to minimal supported version +* chore!: further major versions of other deps +* upgrade conventional-changelog-conventionalcommits, conventional-commits-parser, conventional-changelog-atom, +* docs: simplify releases and remove roadmap -**Note:** Version bump only for package @commitlint/prompt-cli -<a name="6.0.0"></a> -# [6.0.0](https://github.com/conventional-changelog/commitlint/compare/v5.2.6...v6.0.0) (2018-01-09) +## [17.8.1](https://github.com/conventional-changelog/commitlint/compare/v17.8.0...v17.8.1) (2023-10-20) **Note:** Version bump only for package @commitlint/prompt-cli -<a name="5.2.6"></a> -## [5.2.6](https://github.com/conventional-changelog/commitlint/compare/v5.2.5...v5.2.6) (2017-12-21) +# [17.8.0](https://github.com/conventional-changelog/commitlint/compare/v17.7.2...v17.8.0) (2023-10-14) + **Note:** Version bump only for package @commitlint/prompt-cli -<a name="5.2.5"></a> -## [5.2.5](https://github.com/conventional-changelog/commitlint/compare/v5.2.4...v5.2.5) (2017-12-08) +## [17.7.2](https://github.com/conventional-changelog/commitlint/compare/v17.7.1...v17.7.2) (2023-09-28) + **Note:** Version bump only for package @commitlint/prompt-cli -<a name="5.2.4"></a> -## [5.2.4](https://github.com/conventional-changelog/commitlint/compare/v5.2.3...v5.2.4) (2017-12-08) +## [17.7.1](https://github.com/conventional-changelog/commitlint/compare/v17.7.0...v17.7.1) (2023-08-10) + **Note:** Version bump only for package @commitlint/prompt-cli -<a name="5.2.0"></a> -# [5.2.0](https://github.com/conventional-changelog/commitlint/compare/v5.1.3...v5.2.0) (2017-11-30) +# [17.7.0](https://github.com/conventional-changelog/commitlint/compare/v17.6.7...v17.7.0) (2023-08-09) + **Note:** Version bump only for package @commitlint/prompt-cli -<a name="5.1.2"></a> -## [5.1.2](https://github.com/conventional-changelog/commitlint/compare/v5.1.1...v5.1.2) (2017-11-24) +## [17.6.7](https://github.com/conventional-changelog/commitlint/compare/v17.6.6...v17.6.7) (2023-07-19) + **Note:** Version bump only for package @commitlint/prompt-cli -<a name="5.1.1"></a> -## [5.1.1](https://github.com/conventional-changelog/commitlint/compare/v5.1.0...v5.1.1) (2017-11-24) +## [17.6.6](https://github.com/conventional-changelog/commitlint/compare/v17.6.5...v17.6.6) (2023-06-24) + **Note:** Version bump only for package @commitlint/prompt-cli -<a name="5.1.0"></a> -# [5.1.0](https://github.com/conventional-changelog/commitlint/compare/v5.0.2...v5.1.0) (2017-11-24) -### Features -* **travis-cli:** add reusable travis command line interface ([3e6e6a8](https://github.com/conventional-changelog/commitlint/commit/3e6e6a8)) +## [17.6.5](https://github.com/conventional-changelog/commitlint/compare/v17.6.4...v17.6.5) (2023-05-30) +**Note:** Version bump only for package @commitlint/prompt-cli -<a name="5.0.1"></a> -## [5.0.1](https://github.com/conventional-changelog/commitlint/compare/v5.0.0...v5.0.1) (2017-11-19) +## [17.6.3](https://github.com/conventional-changelog/commitlint/compare/v17.6.2...v17.6.3) (2023-05-04) **Note:** Version bump only for package @commitlint/prompt-cli -<a name="4.3.0"></a> -# [4.3.0](https://github.com/conventional-changelog/commitlint/compare/v4.2.2...v4.3.0) (2017-11-08) +## [17.6.1](https://github.com/conventional-changelog/commitlint/compare/v17.6.0...v17.6.1) (2023-04-14) + **Note:** Version bump only for package @commitlint/prompt-cli -<a name="4.2.2"></a> -## [4.2.2](https://github.com/conventional-changelog/commitlint/compare/v4.2.1...v4.2.2) (2017-10-26) +# [17.6.0](https://github.com/conventional-changelog/commitlint/compare/v17.5.1...v17.6.0) (2023-04-13) + **Note:** Version bump only for package @commitlint/prompt-cli -<a name="4.2.1"></a> -## [4.2.1](https://github.com/conventional-changelog/commitlint/compare/v4.2.0...v4.2.1) (2017-10-18) +# [17.5.0](https://github.com/conventional-changelog/commitlint/compare/v17.4.4...v17.5.0) (2023-03-22) + **Note:** Version bump only for package @commitlint/prompt-cli -<a name="4.2.0"></a> -# [4.2.0](https://github.com/conventional-changelog/commitlint/compare/v4.1.1...v4.2.0) (2017-10-14) +## [17.4.4](https://github.com/conventional-changelog/commitlint/compare/v17.4.3...v17.4.4) (2023-02-17) + **Note:** Version bump only for package @commitlint/prompt-cli -<a name="4.1.1"></a> -## [4.1.1](https://github.com/conventional-changelog/commitlint/compare/v4.1.0...v4.1.1) (2017-10-09) +## [17.4.3](https://github.com/conventional-changelog/commitlint/compare/v17.4.2...v17.4.3) (2023-02-13) + **Note:** Version bump only for package @commitlint/prompt-cli -<a name="4.1.0"></a> -# [4.1.0](https://github.com/conventional-changelog/commitlint/compare/v4.0.0...v4.1.0) (2017-10-05) +## [17.4.2](https://github.com/conventional-changelog/commitlint/compare/v17.4.1...v17.4.2) (2023-01-12) + **Note:** Version bump only for package @commitlint/prompt-cli -<a name="4.0.0"></a> -# [4.0.0](https://github.com/conventional-changelog/commitlint/compare/v3.2.0...v4.0.0) (2017-10-04) +## [17.4.1](https://github.com/conventional-changelog/commitlint/compare/v17.4.0...v17.4.1) (2023-01-09) + **Note:** Version bump only for package @commitlint/prompt-cli -<a name="3.2.0"></a> -# 3.2.0 (2017-09-05) -<a name="3.1.3"></a> -## 3.1.3 (2017-08-21) +# [17.4.0](https://github.com/conventional-changelog/commitlint/compare/v17.3.0...v17.4.0) (2023-01-04) +**Note:** Version bump only for package @commitlint/prompt-cli -<a name="3.1.2"></a> -## 3.1.2 (2017-08-07) +# [17.3.0](https://github.com/conventional-changelog/commitlint/compare/v17.2.1...v17.3.0) (2022-11-21) +**Note:** Version bump only for package @commitlint/prompt-cli +# [17.2.0](https://github.com/conventional-changelog/commitlint/compare/v17.1.2...v17.2.0) (2022-10-31) -<a name="3.1.1"></a> -## 3.1.1 (2017-08-07) +**Note:** Version bump only for package @commitlint/prompt-cli +## [17.1.2](https://github.com/conventional-changelog/commitlint/compare/v17.1.1...v17.1.2) (2022-08-29) +**Note:** Version bump only for package @commitlint/prompt-cli -<a name="3.0.4"></a> -## 3.0.4 (2017-08-04) +## [17.1.1](https://github.com/conventional-changelog/commitlint/compare/v17.1.0...v17.1.1) (2022-08-27) +**Note:** Version bump only for package @commitlint/prompt-cli +# [17.1.0](https://github.com/conventional-changelog/commitlint/compare/v17.0.3...v17.1.0) (2022-08-27) -<a name="3.0.3"></a> -## 3.0.3 (2017-07-16) +**Note:** Version bump only for package @commitlint/prompt-cli +## [17.0.3](https://github.com/conventional-changelog/commitlint/compare/v17.0.2...v17.0.3) (2022-06-25) +**Note:** Version bump only for package @commitlint/prompt-cli -<a name="3.0.2"></a> -## 3.0.2 (2017-07-11) +# [17.0.0](https://github.com/conventional-changelog/commitlint/compare/v16.3.0...v17.0.0) (2022-05-16) +- chore!: minimum node version v14 (#3128) ([ac5f9b4](https://github.com/conventional-changelog/commitlint/commit/ac5f9b47a9e3cd5c9d58b14da0feb426f06b1ef9)), closes [#3128](https://github.com/conventional-changelog/commitlint/issues/3128) -### Features +### BREAKING CHANGES -* **prompt-cli:** add standalone prompt interface ([7911040](https://github.com/conventional-changelog/commitlint/commit/7911040)) +- drop node v12 support +- chore: rename circleci windows job +node version is not defned by the name anyways (i think) +# [16.3.0](https://github.com/conventional-changelog/commitlint/compare/v16.2.4...v16.3.0) (2022-05-14) -<a name="3.1.3"></a> -## 3.1.3 (2017-08-21) +**Note:** Version bump only for package @commitlint/prompt-cli +## [16.2.4](https://github.com/conventional-changelog/commitlint/compare/v16.2.3...v16.2.4) (2022-04-28) +**Note:** Version bump only for package @commitlint/prompt-cli -<a name="3.1.2"></a> -## 3.1.2 (2017-08-07) +## [16.2.3](https://github.com/conventional-changelog/commitlint/compare/v16.2.2...v16.2.3) (2022-03-16) +**Note:** Version bump only for package @commitlint/prompt-cli +## [16.2.1](https://github.com/conventional-changelog/commitlint/compare/v16.2.0...v16.2.1) (2022-02-13) -<a name="3.1.1"></a> -## 3.1.1 (2017-08-07) +**Note:** Version bump only for package @commitlint/prompt-cli +# [16.1.0](https://github.com/conventional-changelog/commitlint/compare/v16.0.3...v16.1.0) (2022-01-20) +**Note:** Version bump only for package @commitlint/prompt-cli -<a name="3.0.4"></a> -## 3.0.4 (2017-08-04) +# [16.0.0](https://github.com/conventional-changelog/commitlint/compare/v15.0.0...v16.0.0) (2021-12-26) +**Note:** Version bump only for package @commitlint/prompt-cli +# [15.0.0](https://github.com/conventional-changelog/commitlint/compare/v14.2.0...v15.0.0) (2021-11-17) -<a name="3.0.3"></a> -## 3.0.3 (2017-07-16) +**Note:** Version bump only for package @commitlint/prompt-cli +# [14.2.0](https://github.com/conventional-changelog/commitlint/compare/v14.1.0...v14.2.0) (2021-11-06) +### Features -<a name="3.0.2"></a> -## 3.0.2 (2017-07-11) +- **prompt:** rewrite codebase to use inquirer - UPDATED with current master ([#2697](https://github.com/conventional-changelog/commitlint/issues/2697)) ([5105f43](https://github.com/conventional-changelog/commitlint/commit/5105f43ea8093bce82fe4703c4c14a8210721924)) +# [14.1.0](https://github.com/conventional-changelog/commitlint/compare/v14.0.0...v14.1.0) (2021-11-01) -### Features +**Note:** Version bump only for package @commitlint/prompt-cli -* **prompt-cli:** add standalone prompt interface ([7911040](https://github.com/conventional-changelog/commitlint/commit/7911040)) +# [14.0.0](https://github.com/conventional-changelog/commitlint/compare/v13.2.1...v14.0.0) (2021-10-26) +**Note:** Version bump only for package @commitlint/prompt-cli +## [13.2.1](https://github.com/conventional-changelog/commitlint/compare/v13.2.0...v13.2.1) (2021-10-09) +**Note:** Version bump only for package @commitlint/prompt-cli -<a name="3.1.2"></a> -## 3.1.2 (2017-08-07) +# [13.2.0](https://github.com/conventional-changelog/commitlint/compare/v13.1.0...v13.2.0) (2021-09-28) +**Note:** Version bump only for package @commitlint/prompt-cli +# [13.1.0](https://github.com/conventional-changelog/commitlint/compare/v13.0.0...v13.1.0) (2021-07-24) -<a name="3.1.1"></a> -## 3.1.1 (2017-08-07) +**Note:** Version bump only for package @commitlint/prompt-cli +# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) +- chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) -<a name="3.0.4"></a> -## 3.0.4 (2017-08-04) +### BREAKING CHANGES +- minimum node version is 12 +## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) -<a name="3.0.3"></a> -## 3.0.3 (2017-07-16) +**Note:** Version bump only for package @commitlint/prompt-cli +## [12.1.2](https://github.com/conventional-changelog/commitlint/compare/v12.1.1...v12.1.2) (2021-04-29) +**Note:** Version bump only for package @commitlint/prompt-cli -<a name="3.0.2"></a> -## 3.0.2 (2017-07-11) +## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) +**Note:** Version bump only for package @commitlint/prompt-cli -### Features +# [12.1.0](https://github.com/conventional-changelog/commitlint/compare/v12.0.1...v12.1.0) (2021-03-06) -* **prompt-cli:** add standalone prompt interface ([7911040](https://github.com/conventional-changelog/commitlint/commit/7911040)) +**Note:** Version bump only for package @commitlint/prompt-cli +## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) +**Note:** Version bump only for package @commitlint/prompt-cli +# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) -<a name="3.0.4"></a> -## 3.0.4 (2017-08-04) +### Bug Fixes +- update dependency execa to v5 ([#2341](https://github.com/conventional-changelog/commitlint/issues/2341)) ([f349df9](https://github.com/conventional-changelog/commitlint/commit/f349df90f08096a9bcad46b5e55b411aac327a24)) +# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) -<a name="3.0.3"></a> -## 3.0.3 (2017-07-16) +**Note:** Version bump only for package @commitlint/prompt-cli +# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) +### Bug Fixes -<a name="3.0.2"></a> -## 3.0.2 (2017-07-11) +- update dependency execa to v4 ([#1936](https://github.com/conventional-changelog/commitlint/issues/1936)) ([8efb441](https://github.com/conventional-changelog/commitlint/commit/8efb44193058d286f7325327a6d33936b273ec91)) +- refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) -### Features +### BREAKING CHANGES -* **prompt-cli:** add standalone prompt interface ([7911040](https://github.com/conventional-changelog/commitlint/commit/7911040)) +- remove node 8 from circle-ci checks +also remove node 13 because we do not support experimental versions +- docs: update node v10 to latest LTS 10 version +Co-authored-by: Cedric van Putten <me@bycedric.com> -<a name="3.0.3"></a> -## 3.0.3 (2017-07-16) +Co-authored-by: Cedric van Putten <me@bycedric.com> +## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) +**Note:** Version bump only for package @commitlint/prompt-cli -<a name="3.0.2"></a> -## 3.0.2 (2017-07-11) +## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) +**Note:** Version bump only for package @commitlint/prompt-cli -### Features +# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) -* **prompt-cli:** add standalone prompt interface ([7911040](https://github.com/conventional-changelog/commitlint/commit/7911040)) +**Note:** Version bump only for package @commitlint/prompt-cli +## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) +**Note:** Version bump only for package @commitlint/prompt-cli +# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) -<a name="3.0.2"></a> -## 3.0.2 (2017-07-11) +**Note:** Version bump only for package @commitlint/prompt-cli +## [8.3.5](https://github.com/conventional-changelog/commitlint/compare/v8.3.4...v8.3.5) (2020-01-15) -### Features +**Note:** Version bump only for package @commitlint/prompt-cli -* **prompt-cli:** add standalone prompt interface ([7911040](https://github.com/conventional-changelog/commitlint/commit/7911040)) +## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) +**Note:** Version bump only for package @commitlint/prompt-cli +## [8.3.1](https://github.com/conventional-changelog/commitlint/compare/v8.3.0...v8.3.1) (2019-10-16) +**Note:** Version bump only for package @commitlint/prompt-cli -<a name="3.0.1"></a> -## 3.0.1 (2017-07-11) +# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) + +**Note:** Version bump only for package @commitlint/prompt-cli + +# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) + +**Note:** Version bump only for package @commitlint/prompt-cli + +# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) + +**Note:** Version bump only for package @commitlint/prompt-cli + +## [7.6.1](https://github.com/conventional-changelog/commitlint/compare/v7.6.0...v7.6.1) (2019-05-09) + +**Note:** Version bump only for package @commitlint/prompt-cli + +# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) +**Note:** Version bump only for package @commitlint/prompt-cli + +<a name="7.5.0"></a> + +# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) + +### Bug Fixes + +- all broken website references ([#564](https://github.com/conventional-changelog/commitlint/issues/564)) ([82eeb5a](https://github.com/conventional-changelog/commitlint/commit/82eeb5a)) +- replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) +- replace all website references with conventional changelog ([#563](https://github.com/conventional-changelog/commitlint/issues/563)) ([6b86fb1](https://github.com/conventional-changelog/commitlint/commit/6b86fb1)) + +<a name="7.3.1"></a> + +## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) + +**Note:** Version bump only for package @commitlint/prompt-cli + +<a name="7.3.0"></a> + +# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) ### Features -* **prompt-cli:** add standalone prompt interface ([7911040](https://github.com/conventional-changelog/commitlint/commit/7911040)) +- check stage before entering prompt ([#495](https://github.com/conventional-changelog/commitlint/issues/495)) ([3b3667a](https://github.com/conventional-changelog/commitlint/commit/3b3667a)), closes [#51](https://github.com/conventional-changelog/commitlint/issues/51) [#51](https://github.com/conventional-changelog/commitlint/issues/51) + +<a name="7.2.1"></a> + +## [7.2.1](https://github.com/conventional-changelog/commitlint/compare/v7.2.0...v7.2.1) (2018-10-11) +**Note:** Version bump only for package @commitlint/prompt-cli + +<a name="7.2.0"></a> +# [7.2.0](https://github.com/conventional-changelog/commitlint/compare/v7.1.2...v7.2.0) (2018-10-05) +**Note:** Version bump only for package @commitlint/prompt-cli -<a name="3.0.1"></a> -## 3.0.1 (2017-07-11) +<a name="7.1.2"></a> +## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) +**Note:** Version bump only for package @commitlint/prompt-cli -<a name="3.0.0"></a> -# 3.0.0 (2017-07-10) +<a name="6.1.1"></a> + +## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) + +**Note:** Version bump only for package @commitlint/prompt-cli + +<a name="6.1.0"></a> + +# [6.1.0](https://github.com/conventional-changelog/commitlint/compare/v6.0.5...v6.1.0) (2018-02-03) + +**Note:** Version bump only for package @commitlint/prompt-cli + +<a name="6.0.5"></a> + +## [6.0.5](https://github.com/conventional-changelog/commitlint/compare/v6.0.4...v6.0.5) (2018-01-31) + +**Note:** Version bump only for package @commitlint/prompt-cli + +<a name="6.0.4"></a> + +## [6.0.4](https://github.com/conventional-changelog/commitlint/compare/v6.0.3...v6.0.4) (2018-01-31) +**Note:** Version bump only for package @commitlint/prompt-cli + +<a name="6.0.3"></a> + +## [6.0.3](https://github.com/conventional-changelog/commitlint/compare/v6.0.2...v6.0.3) (2018-01-31) + +**Note:** Version bump only for package @commitlint/prompt-cli + +<a name="6.0.2"></a> + +## [6.0.2](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.2) (2018-01-12) + +**Note:** Version bump only for package @commitlint/prompt-cli + +<a name="6.0.1"></a> + +## [6.0.1](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.1) (2018-01-09) + +**Note:** Version bump only for package @commitlint/prompt-cli + +<a name="6.0.0"></a> + +# [6.0.0](https://github.com/conventional-changelog/commitlint/compare/v5.2.6...v6.0.0) (2018-01-09) + +**Note:** Version bump only for package @commitlint/prompt-cli + +<a name="5.2.6"></a> + +## [5.2.6](https://github.com/conventional-changelog/commitlint/compare/v5.2.5...v5.2.6) (2017-12-21) + +**Note:** Version bump only for package @commitlint/prompt-cli + +<a name="5.2.5"></a> + +## [5.2.5](https://github.com/conventional-changelog/commitlint/compare/v5.2.4...v5.2.5) (2017-12-08) + +**Note:** Version bump only for package @commitlint/prompt-cli + +<a name="5.2.4"></a> + +## [5.2.4](https://github.com/conventional-changelog/commitlint/compare/v5.2.3...v5.2.4) (2017-12-08) + +**Note:** Version bump only for package @commitlint/prompt-cli + +<a name="5.2.0"></a> + +# [5.2.0](https://github.com/conventional-changelog/commitlint/compare/v5.1.3...v5.2.0) (2017-11-30) + +**Note:** Version bump only for package @commitlint/prompt-cli + +<a name="5.1.2"></a> + +## [5.1.2](https://github.com/conventional-changelog/commitlint/compare/v5.1.1...v5.1.2) (2017-11-24) + +**Note:** Version bump only for package @commitlint/prompt-cli + +<a name="5.1.1"></a> + +## [5.1.1](https://github.com/conventional-changelog/commitlint/compare/v5.1.0...v5.1.1) (2017-11-24) + +**Note:** Version bump only for package @commitlint/prompt-cli + +<a name="5.1.0"></a> + +# [5.1.0](https://github.com/conventional-changelog/commitlint/compare/v5.0.2...v5.1.0) (2017-11-24) ### Features -* **prompt-cli:** add standalone prompt interface ([b0239d2](https://github.com/conventional-changelog/commitlint/commit/b0239d2)) +- **travis-cli:** add reusable travis command line interface ([3e6e6a8](https://github.com/conventional-changelog/commitlint/commit/3e6e6a8)) +<a name="5.0.1"></a> + +## [5.0.1](https://github.com/conventional-changelog/commitlint/compare/v5.0.0...v5.0.1) (2017-11-19) + +**Note:** Version bump only for package @commitlint/prompt-cli +<a name="4.3.0"></a> + +# [4.3.0](https://github.com/conventional-changelog/commitlint/compare/v4.2.2...v4.3.0) (2017-11-08) + +**Note:** Version bump only for package @commitlint/prompt-cli +<a name="4.2.2"></a> + +## [4.2.2](https://github.com/conventional-changelog/commitlint/compare/v4.2.1...v4.2.2) (2017-10-26) + +**Note:** Version bump only for package @commitlint/prompt-cli + +<a name="4.2.1"></a> + +## [4.2.1](https://github.com/conventional-changelog/commitlint/compare/v4.2.0...v4.2.1) (2017-10-18) + +**Note:** Version bump only for package @commitlint/prompt-cli + +<a name="4.2.0"></a> + +# [4.2.0](https://github.com/conventional-changelog/commitlint/compare/v4.1.1...v4.2.0) (2017-10-14) + +**Note:** Version bump only for package @commitlint/prompt-cli + +<a name="4.1.1"></a> + +## [4.1.1](https://github.com/conventional-changelog/commitlint/compare/v4.1.0...v4.1.1) (2017-10-09) + +**Note:** Version bump only for package @commitlint/prompt-cli + +<a name="4.1.0"></a> + +# [4.1.0](https://github.com/conventional-changelog/commitlint/compare/v4.0.0...v4.1.0) (2017-10-05) + +**Note:** Version bump only for package @commitlint/prompt-cli + +<a name="4.0.0"></a> + +# [4.0.0](https://github.com/conventional-changelog/commitlint/compare/v3.2.0...v4.0.0) (2017-10-04) + +**Note:** Version bump only for package @commitlint/prompt-cli + +<a name="3.2.0"></a> + +# 3.2.0 (2017-09-05) + +<a name="3.1.3"></a> + +## 3.1.3 (2017-08-21) + +<a name="3.1.2"></a> + +## 3.1.2 (2017-08-07) + +<a name="3.1.1"></a> + +## 3.1.1 (2017-08-07) + +<a name="3.0.4"></a> + +## 3.0.4 (2017-08-04) + +<a name="3.0.3"></a> + +## 3.0.3 (2017-07-16) + +<a name="3.0.2"></a> + +## 3.0.2 (2017-07-11) + +### Features + +- **prompt-cli:** add standalone prompt interface ([7911040](https://github.com/conventional-changelog/commitlint/commit/7911040)) + +<a name="3.1.3"></a> + +## 3.1.3 (2017-08-21) + +<a name="3.1.2"></a> + +## 3.1.2 (2017-08-07) + +<a name="3.1.1"></a> + +## 3.1.1 (2017-08-07) + +<a name="3.0.4"></a> + +## 3.0.4 (2017-08-04) + +<a name="3.0.3"></a> + +## 3.0.3 (2017-07-16) + +<a name="3.0.2"></a> + +## 3.0.2 (2017-07-11) + +### Features + +- **prompt-cli:** add standalone prompt interface ([7911040](https://github.com/conventional-changelog/commitlint/commit/7911040)) + +<a name="3.1.2"></a> + +## 3.1.2 (2017-08-07) + +<a name="3.1.1"></a> + +## 3.1.1 (2017-08-07) + +<a name="3.0.4"></a> + +## 3.0.4 (2017-08-04) + +<a name="3.0.3"></a> + +## 3.0.3 (2017-07-16) + +<a name="3.0.2"></a> + +## 3.0.2 (2017-07-11) + +### Features + +- **prompt-cli:** add standalone prompt interface ([7911040](https://github.com/conventional-changelog/commitlint/commit/7911040)) + +<a name="3.0.4"></a> + +## 3.0.4 (2017-08-04) + +<a name="3.0.3"></a> + +## 3.0.3 (2017-07-16) + +<a name="3.0.2"></a> + +## 3.0.2 (2017-07-11) + +### Features + +- **prompt-cli:** add standalone prompt interface ([7911040](https://github.com/conventional-changelog/commitlint/commit/7911040)) + +<a name="3.0.3"></a> + +## 3.0.3 (2017-07-16) + +<a name="3.0.2"></a> + +## 3.0.2 (2017-07-11) + +### Features + +- **prompt-cli:** add standalone prompt interface ([7911040](https://github.com/conventional-changelog/commitlint/commit/7911040)) + +<a name="3.0.2"></a> + +## 3.0.2 (2017-07-11) + +### Features + +- **prompt-cli:** add standalone prompt interface ([7911040](https://github.com/conventional-changelog/commitlint/commit/7911040)) + +<a name="3.0.1"></a> + +## 3.0.1 (2017-07-11) + +### Features + +- **prompt-cli:** add standalone prompt interface ([7911040](https://github.com/conventional-changelog/commitlint/commit/7911040)) + +<a name="3.0.1"></a> + +## 3.0.1 (2017-07-11) <a name="3.0.0"></a> + # 3.0.0 (2017-07-10) +### Features + +- **prompt-cli:** add standalone prompt interface ([b0239d2](https://github.com/conventional-changelog/commitlint/commit/b0239d2)) + +<a name="3.0.0"></a> + +# 3.0.0 (2017-07-10) ### Features -* **prompt-cli:** add standalone prompt interface ([b0239d2](https://github.com/conventional-changelog/commitlint/commit/b0239d2)) +- **prompt-cli:** add standalone prompt interface ([b0239d2](https://github.com/conventional-changelog/commitlint/commit/b0239d2)) diff --git a/@commitlint/prompt-cli/README.md b/@commitlint/prompt-cli/README.md index 82273bc612..49457f8196 100644 --- a/@commitlint/prompt-cli/README.md +++ b/@commitlint/prompt-cli/README.md @@ -1,17 +1,17 @@ -> commit prompt using commitlint.config.js - # @commitlint/prompt-cli +commit prompt using commitlint.config.js + ## Getting started -```bash -npm install --g @commitlint/prompt-cli @commitlint/config-angular -echo "module.exports = {extends: ['@commitlint/config-angular']};" > commitlint.config.js +```sh +npm install -g @commitlint/prompt-cli @commitlint/config-angular +echo "export default {extends: ['@commitlint/config-angular']};" > commitlint.config.js ``` -```bash +```sh git add . commit ``` -A full usage guide is available at [docs/prompt](https://conventional-changelog.github.io/commitlint/#/guides-use-prompt). +A full usage guide is available at [docs/prompt](https://commitlint.js.org/guides/use-prompt). diff --git a/@commitlint/prompt-cli/cli.js b/@commitlint/prompt-cli/cli.js index 16f957e07a..7ab4aa8181 100755 --- a/@commitlint/prompt-cli/cli.js +++ b/@commitlint/prompt-cli/cli.js @@ -1,9 +1,7 @@ #!/usr/bin/env node -const execa = require('execa'); -const {prompter} = require('@commitlint/prompt'); - -const _ = undefined; -const prompt = () => prompter(_, commit); +import { prompter } from "@commitlint/prompt"; +import inquirer from "inquirer"; +import { x } from "tinyexec"; main().catch((err) => { setTimeout(() => { @@ -16,20 +14,20 @@ function main() { .then((empty) => { if (empty) { console.log( - `Nothing to commit. Stage your changes via "git add" execute "commit" again` + `Nothing to commit. Stage your changes via "git add" execute "commit" again`, ); process.exit(1); } }) - .then(() => prompt()); + .then(() => prompter(inquirer, commit)); } function isStageEmpty() { - return execa('git', ['diff', '--cached']).then((r) => r.stdout === ''); + return x("git", ["diff", "--cached"]).then((r) => r.stdout === ""); } function commit(message) { - const c = execa('git', ['commit', '-m', message]); - c.stdout.pipe(process.stdout); - c.stderr.pipe(process.stderr); + const result = x("git", ["commit", "-m", message]); + result.process.stdout.pipe(process.stdout); + result.process.stderr.pipe(process.stderr); } diff --git a/@commitlint/prompt-cli/cli.test.js b/@commitlint/prompt-cli/cli.test.js index 1ee3443a02..d1bfc50283 100644 --- a/@commitlint/prompt-cli/cli.test.js +++ b/@commitlint/prompt-cli/cli.test.js @@ -1,22 +1,31 @@ -import {git} from '@commitlint/test'; -import execa from 'execa'; +import { test, expect } from "vitest"; +import { createRequire } from "node:module"; +import { git } from "@commitlint/test"; +import { x } from "tinyexec"; -const bin = require.resolve('./cli.js'); +const require = createRequire(import.meta.url); + +const bin = require.resolve("./cli.js"); const cli = (args, options) => { - return (input = '') => { - return execa(bin, args, { - cwd: options.cwd, - env: options.env, - input: input, - reject: false, + return (input = "") => { + const result = x(bin, args, { + nodeOptions: { + cwd: options.cwd, + env: options.env, + }, }); + + result.process.stdin.write(input); + result.process.stdin.end(); + + return result; }; }; -test('should print warning if stage is empty', async () => { +test("should print warning if stage is empty", async () => { const cwd = await git.bootstrap(); - const actual = await cli([], {cwd})('foo: bar'); - expect(actual.stdout).toContain('Nothing to commit.'); - expect(actual.stderr).toBe(''); -}); + const actual = await cli([], { cwd })("foo: bar"); + expect(actual.stdout).toContain("Nothing to commit."); + expect(actual.stderr).toBe(""); +}, 10000); diff --git a/@commitlint/prompt-cli/package.json b/@commitlint/prompt-cli/package.json index 23979cda30..830198ec30 100644 --- a/@commitlint/prompt-cli/package.json +++ b/@commitlint/prompt-cli/package.json @@ -1,7 +1,9 @@ { "name": "@commitlint/prompt-cli", - "version": "13.1.0", + "type": "module", + "version": "20.1.0", "description": "commit prompt using commitlint.config.js", + "main": "cli.js", "files": [ "cli.js" ], @@ -15,7 +17,8 @@ }, "repository": { "type": "git", - "url": "https://github.com/conventional-changelog/commitlint.git" + "url": "https://github.com/conventional-changelog/commitlint.git", + "directory": "@commitlint/prompt-cli" }, "keywords": [ "commitlint", @@ -26,17 +29,18 @@ "bugs": { "url": "https://github.com/conventional-changelog/commitlint/issues" }, - "homepage": "https://github.com/conventional-changelog/commitlint#readme", + "homepage": "https://commitlint.js.org/", "engines": { - "node": ">=v12" + "node": ">=v18" }, "devDependencies": { - "@commitlint/test": "^13.0.0", - "@commitlint/utils": "^13.0.0" + "@commitlint/test": "^20.0.0", + "@commitlint/utils": "^20.0.0" }, "dependencies": { - "@commitlint/prompt": "^13.1.0", - "execa": "^5.0.0" + "@commitlint/prompt": "^20.1.0", + "inquirer": "^9.2.15", + "tinyexec": "^1.0.0" }, - "gitHead": "70f7f4688b51774e7ac5e40e896cdaa3f132b2bc" + "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" } diff --git a/@commitlint/prompt/CHANGELOG.md b/@commitlint/prompt/CHANGELOG.md index 723cb3a120..f3804b12ac 100644 --- a/@commitlint/prompt/CHANGELOG.md +++ b/@commitlint/prompt/CHANGELOG.md @@ -3,7 +3,7 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. -# [13.1.0](https://github.com/conventional-changelog/commitlint/compare/v13.0.0...v13.1.0) (2021-07-24) +# [20.1.0](https://github.com/conventional-changelog/commitlint/compare/v20.0.0...v20.1.0) (2025-09-30) **Note:** Version bump only for package @commitlint/prompt @@ -11,67 +11,66 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) +**Note:** Version bump only for package @commitlint/prompt -* chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) -### BREAKING CHANGES -* minimum node version is 12 +## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) +**Note:** Version bump only for package @commitlint/prompt -## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) -**Note:** Version bump only for package @commitlint/prompt +# [19.8.0](https://github.com/conventional-changelog/commitlint/compare/v19.7.1...v19.8.0) (2025-03-07) +### Performance Improvements +* use `node:` prefix to bypass require.cache call for builtins ([#4302](https://github.com/conventional-changelog/commitlint/issues/4302)) ([0cd8f41](https://github.com/conventional-changelog/commitlint/commit/0cd8f410573fe11383f788b1ceb7e0946143591d)) -## [12.1.2](https://github.com/conventional-changelog/commitlint/compare/v12.1.1...v12.1.2) (2021-04-29) -**Note:** Version bump only for package @commitlint/prompt +## [19.7.1](https://github.com/conventional-changelog/commitlint/compare/v19.7.0...v19.7.1) (2025-02-02) +**Note:** Version bump only for package @commitlint/prompt -## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) -### Bug Fixes -* **prompt:** modify the entry point to pass commitizen's function check ([#2501](https://github.com/conventional-changelog/commitlint/issues/2501)) ([0173fb7](https://github.com/conventional-changelog/commitlint/commit/0173fb7cc01dc8442ed88a0ab8feec20c955deee)), closes [/github.com/conventional-changelog/commitlint/issues/2486#issuecomment-791682272](https://github.com//github.com/conventional-changelog/commitlint/issues/2486/issues/issuecomment-791682272) [/github.com/conventional-changelog/commitlint/issues/2486#issuecomment-791682272](https://github.com//github.com/conventional-changelog/commitlint/issues/2486/issues/issuecomment-791682272) +# [19.7.0](https://github.com/conventional-changelog/commitlint/compare/v19.6.1...v19.7.0) (2025-01-04) +**Note:** Version bump only for package @commitlint/prompt -# [12.1.0](https://github.com/conventional-changelog/commitlint/compare/v12.0.1...v12.1.0) (2021-03-06) -**Note:** Version bump only for package @commitlint/prompt +## [19.6.1](https://github.com/conventional-changelog/commitlint/compare/v19.6.0...v19.6.1) (2024-12-15) +**Note:** Version bump only for package @commitlint/prompt -## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) -### Bug Fixes +# [19.6.0](https://github.com/conventional-changelog/commitlint/compare/v19.5.0...v19.6.0) (2024-11-19) -* update dependency throat to v6 ([#2417](https://github.com/conventional-changelog/commitlint/issues/2417)) ([6f7db1b](https://github.com/conventional-changelog/commitlint/commit/6f7db1b39c48561b84a4fce9623fb045c5467fe8)) +**Note:** Version bump only for package @commitlint/prompt -# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) +# [19.5.0](https://github.com/conventional-changelog/commitlint/compare/v19.4.1...v19.5.0) (2024-09-11) **Note:** Version bump only for package @commitlint/prompt @@ -79,7 +78,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) +## [19.4.1](https://github.com/conventional-changelog/commitlint/compare/v19.4.0...v19.4.1) (2024-08-28) **Note:** Version bump only for package @commitlint/prompt @@ -87,29 +86,26 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) +# [19.4.0](https://github.com/conventional-changelog/commitlint/compare/v19.3.1...v19.4.0) (2024-08-07) +**Note:** Version bump only for package @commitlint/prompt -* refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) -### BREAKING CHANGES -* remove node 8 from circle-ci checks -also remove node 13 because we do not support experimental versions +## [19.3.1](https://github.com/conventional-changelog/commitlint/compare/v19.3.0...v19.3.1) (2024-05-13) -* docs: update node v10 to latest LTS 10 version -Co-authored-by: Cedric van Putten <me@bycedric.com> +### Bug Fixes -Co-authored-by: Cedric van Putten <me@bycedric.com> +* **prompt:** prompt does not respect [body-leading-blank] setting ([#4066](https://github.com/conventional-changelog/commitlint/issues/4066)) ([3f1f44d](https://github.com/conventional-changelog/commitlint/commit/3f1f44d9cbb93438d01cfd79f9b71659411e126d)) -## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) +# [19.3.0](https://github.com/conventional-changelog/commitlint/compare/v19.2.2...v19.3.0) (2024-04-23) **Note:** Version bump only for package @commitlint/prompt @@ -117,7 +113,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) +## [19.2.2](https://github.com/conventional-changelog/commitlint/compare/v19.2.1...v19.2.2) (2024-04-14) **Note:** Version bump only for package @commitlint/prompt @@ -125,41 +121,39 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) +# [19.2.0](https://github.com/conventional-changelog/commitlint/compare/v19.1.0...v19.2.0) (2024-03-15) +**Note:** Version bump only for package @commitlint/prompt -### Bug Fixes -* update dependency chalk to v4 ([#1275](https://github.com/conventional-changelog/commitlint/issues/1275)) ([a5d8fa1](https://github.com/conventional-changelog/commitlint/commit/a5d8fa118e8221361f14f5fd2b21d7aaad008a27)) +# [19.1.0](https://github.com/conventional-changelog/commitlint/compare/v19.0.3...v19.1.0) (2024-03-12) +**Note:** Version bump only for package @commitlint/prompt -## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) -### Bug Fixes -* add missing @babel/runtime dep [#1738](https://github.com/conventional-changelog/commitlint/issues/1738) ([#1754](https://github.com/conventional-changelog/commitlint/issues/1754)) ([09afcd6](https://github.com/conventional-changelog/commitlint/commit/09afcd647a2c1d00538cf1c970e3790d936111f8)) +## [19.0.3](https://github.com/conventional-changelog/commitlint/compare/v19.0.2...v19.0.3) (2024-02-28) +**Note:** Version bump only for package @commitlint/prompt -# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) -### Bug Fixes +## [19.0.2](https://github.com/conventional-changelog/commitlint/compare/v19.0.1...v19.0.2) (2024-02-28) -* [#840](https://github.com/conventional-changelog/commitlint/issues/840) add caret to lodash versions ([#843](https://github.com/conventional-changelog/commitlint/issues/843)) ([ffc0bac](https://github.com/conventional-changelog/commitlint/commit/ffc0bac26993acb2ab6a8fa51065f93c92b0d644)) -* incorrect use of when in getForcedCaseFn ([#993](https://github.com/conventional-changelog/commitlint/issues/993)) ([34c11b8](https://github.com/conventional-changelog/commitlint/commit/34c11b8f3f233eca51866274a10d35231e8eb3d4)) +**Note:** Version bump only for package @commitlint/prompt -## [8.3.5](https://github.com/conventional-changelog/commitlint/compare/v8.3.4...v8.3.5) (2020-01-15) +## [19.0.1](https://github.com/conventional-changelog/commitlint/compare/v19.0.0...v19.0.1) (2024-02-27) **Note:** Version bump only for package @commitlint/prompt @@ -167,55 +161,70 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) - -**Note:** Version bump only for package @commitlint/prompt +# [19.0.0](https://github.com/conventional-changelog/commitlint/compare/v18.6.2...v19.0.0) (2024-02-27) +* feat!: migrate to pure ESM (#3850) ([3423735](https://github.com/conventional-changelog/commitlint/commit/342373559bdf7c783c4ef37ff05dc38a5f681159)), closes [#3850](https://github.com/conventional-changelog/commitlint/issues/3850) +### Reverts -## [8.3.1](https://github.com/conventional-changelog/commitlint/compare/v8.3.0...v8.3.1) (2019-10-16) +* Revert "chore!: minimum node version v20" ([2816783](https://github.com/conventional-changelog/commitlint/commit/2816783d00e7eb967de3ac9347c2fc43dc8b94fa)) -**Note:** Version bump only for package @commitlint/prompt +### BREAKING CHANGES +* migrate to pure ESM +* feat: migrate to pure ESM +* chore: update snapshot -# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) +* fix: load `parserPreset` with another `await` -**Note:** Version bump only for package @commitlint/prompt +* test: migrate to vitest +* test: remove no replacement `--runInBand` test-ci script +* chore: fix code reviews +* refactor(load): rewrite resolve logic +* fix(config-nx-scopes): fix syntax error -# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) +* feat(resolve-extends): add resolveFrom and loadParserPreset -**Note:** Version bump only for package @commitlint/prompt +* feat(load): use resolveFrom and loadParserPreset from resolve-extends +* test: include only @commitlint/* packages src in coverage +* test: explicit import vitest utilities +* test: remove @jest/globals from dependencies +* fix(resolve-extends): `resolveFrom` output should be platform aware -# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) +* test: restore NO_COLOR to test script -**Note:** Version bump only for package @commitlint/prompt +* chore: fix linting issues +* fix: should use fileURLToPath instead of pathname for Windows compatibility +* Apply suggestions from code review +* fix: should reuse `cli` instead call `yargs()` +* feat(cli): set terminalWidth as wrap to avoid work break on help -## [7.6.1](https://github.com/conventional-changelog/commitlint/compare/v7.6.0...v7.6.1) (2019-05-09) +* Update .eslintrc.cjs -**Note:** Version bump only for package @commitlint/prompt +* feat: migrate @commitlint/config-conventional to pure ESM -# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) +## [18.6.1](https://github.com/conventional-changelog/commitlint/compare/v18.6.0...v18.6.1) (2024-02-13) **Note:** Version bump only for package @commitlint/prompt @@ -223,400 +232,745 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -<a name="7.5.0"></a> -# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) +# [18.6.0](https://github.com/conventional-changelog/commitlint/compare/v18.5.1...v18.6.0) (2024-01-25) +**Note:** Version bump only for package @commitlint/prompt -### Bug Fixes -* all broken website references ([#564](https://github.com/conventional-changelog/commitlint/issues/564)) ([82eeb5a](https://github.com/conventional-changelog/commitlint/commit/82eeb5a)) -* replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) -* replace all website references with conventional changelog ([#563](https://github.com/conventional-changelog/commitlint/issues/563)) ([6b86fb1](https://github.com/conventional-changelog/commitlint/commit/6b86fb1)) +# [18.5.0](https://github.com/conventional-changelog/commitlint/compare/v18.4.4...v18.5.0) (2024-01-22) + +**Note:** Version bump only for package @commitlint/prompt -<a name="7.3.1"></a> -## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) +## [18.4.4](https://github.com/conventional-changelog/commitlint/compare/v18.4.3...v18.4.4) (2024-01-04) + **Note:** Version bump only for package @commitlint/prompt -<a name="7.3.0"></a> -# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) -### Bug Fixes -* update to security-patched dependency versions ([97c033b](https://github.com/conventional-changelog/commitlint/commit/97c033b)) +## [18.4.3](https://github.com/conventional-changelog/commitlint/compare/v18.4.2...v18.4.3) (2023-11-21) +**Note:** Version bump only for package @commitlint/prompt -<a name="7.2.1"></a> -## [7.2.1](https://github.com/conventional-changelog/commitlint/compare/v7.2.0...v7.2.1) (2018-10-11) +## [18.4.2](https://github.com/conventional-changelog/commitlint/compare/v18.4.1...v18.4.2) (2023-11-16) **Note:** Version bump only for package @commitlint/prompt -<a name="7.2.0"></a> -# [7.2.0](https://github.com/conventional-changelog/commitlint/compare/v7.1.2...v7.2.0) (2018-10-05) +## [18.4.1](https://github.com/conventional-changelog/commitlint/compare/v18.4.0...v18.4.1) (2023-11-12) + **Note:** Version bump only for package @commitlint/prompt -<a name="7.1.2"></a> -## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) +# [18.4.0](https://github.com/conventional-changelog/commitlint/compare/v18.3.0...v18.4.0) (2023-11-10) + **Note:** Version bump only for package @commitlint/prompt -<a name="6.1.1"></a> -## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) -**Note:** Version bump only for package @commitlint/prompt +# [18.2.0](https://github.com/conventional-changelog/commitlint/compare/v18.1.0...v18.2.0) (2023-10-26) -<a name="6.1.0"></a> -# [6.1.0](https://github.com/conventional-changelog/commitlint/compare/v6.0.5...v6.1.0) (2018-02-03) +**Note:** Version bump only for package @commitlint/prompt -**Note:** Version bump only for package @commitlint/prompt -<a name="6.0.5"></a> -## [6.0.5](https://github.com/conventional-changelog/commitlint/compare/v6.0.4...v6.0.5) (2018-01-31) +# [18.1.0](https://github.com/conventional-changelog/commitlint/compare/v18.0.0...v18.1.0) (2023-10-25) +**Note:** Version bump only for package @commitlint/prompt -**Note:** Version bump only for package @commitlint/prompt -<a name="6.0.4"></a> -## [6.0.4](https://github.com/conventional-changelog/commitlint/compare/v6.0.3...v6.0.4) (2018-01-31) +# [18.0.0](https://github.com/conventional-changelog/commitlint/compare/v17.8.1...v18.0.0) (2023-10-20) +* chore!: minimum node version v18 (#3644) ([5b4aeaf](https://github.com/conventional-changelog/commitlint/commit/5b4aeaf4f01c2726a7bc8631a23bb34c849baad2)), closes [#3644](https://github.com/conventional-changelog/commitlint/issues/3644) -**Note:** Version bump only for package @commitlint/prompt -<a name="6.0.3"></a> -## [6.0.3](https://github.com/conventional-changelog/commitlint/compare/v6.0.2...v6.0.3) (2018-01-31) +### BREAKING CHANGES +* drop node v14 and v16 support +* chore: remove unused types +* docs: prepare node update and new release -**Note:** Version bump only for package @commitlint/prompt +* chore!: minimum TS version v5 +* drop TS v4 support -<a name="6.0.2"></a> -## [6.0.2](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.2) (2018-01-12) +* ci: remove node v14/16 checks +* chore: adjust node types to minimal supported version +* chore!: further major versions of other deps +* upgrade conventional-changelog-conventionalcommits, conventional-commits-parser, conventional-changelog-atom, +* docs: simplify releases and remove roadmap -**Note:** Version bump only for package @commitlint/prompt -<a name="6.0.1"></a> -## [6.0.1](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.1) (2018-01-09) +## [17.8.1](https://github.com/conventional-changelog/commitlint/compare/v17.8.0...v17.8.1) (2023-10-20) **Note:** Version bump only for package @commitlint/prompt -<a name="6.0.0"></a> -# [6.0.0](https://github.com/conventional-changelog/commitlint/compare/v5.2.6...v6.0.0) (2018-01-09) +# [17.8.0](https://github.com/conventional-changelog/commitlint/compare/v17.7.2...v17.8.0) (2023-10-14) + **Note:** Version bump only for package @commitlint/prompt -<a name="5.2.6"></a> -## [5.2.6](https://github.com/conventional-changelog/commitlint/compare/v5.2.5...v5.2.6) (2017-12-21) +## [17.7.2](https://github.com/conventional-changelog/commitlint/compare/v17.7.1...v17.7.2) (2023-09-28) + **Note:** Version bump only for package @commitlint/prompt -<a name="5.2.5"></a> -## [5.2.5](https://github.com/conventional-changelog/commitlint/compare/v5.2.4...v5.2.5) (2017-12-08) +## [17.7.1](https://github.com/conventional-changelog/commitlint/compare/v17.7.0...v17.7.1) (2023-08-10) + **Note:** Version bump only for package @commitlint/prompt -<a name="5.2.4"></a> -## [5.2.4](https://github.com/conventional-changelog/commitlint/compare/v5.2.3...v5.2.4) (2017-12-08) +# [17.7.0](https://github.com/conventional-changelog/commitlint/compare/v17.6.7...v17.7.0) (2023-08-09) + **Note:** Version bump only for package @commitlint/prompt -<a name="5.2.0"></a> -# [5.2.0](https://github.com/conventional-changelog/commitlint/compare/v5.1.3...v5.2.0) (2017-11-30) +## [17.6.7](https://github.com/conventional-changelog/commitlint/compare/v17.6.6...v17.6.7) (2023-07-19) + **Note:** Version bump only for package @commitlint/prompt -<a name="5.1.2"></a> -## [5.1.2](https://github.com/conventional-changelog/commitlint/compare/v5.1.1...v5.1.2) (2017-11-24) -### Bug Fixes -* **prompt:** apply forced cases properly ([3a569a7](https://github.com/conventional-changelog/commitlint/commit/3a569a7)), closes [#145](https://github.com/conventional-changelog/commitlint/issues/145) +## [17.6.6](https://github.com/conventional-changelog/commitlint/compare/v17.6.5...v17.6.6) (2023-06-24) +**Note:** Version bump only for package @commitlint/prompt -<a name="5.1.1"></a> -## [5.1.1](https://github.com/conventional-changelog/commitlint/compare/v5.1.0...v5.1.1) (2017-11-24) +## [17.6.5](https://github.com/conventional-changelog/commitlint/compare/v17.6.4...v17.6.5) (2023-05-30) **Note:** Version bump only for package @commitlint/prompt -<a name="5.1.0"></a> -# [5.1.0](https://github.com/conventional-changelog/commitlint/compare/v5.0.2...v5.1.0) (2017-11-24) - -### Bug Fixes - -* update dependency concurrently to v3.5.1 ([#147](https://github.com/conventional-changelog/commitlint/issues/147)) ([a809d0f](https://github.com/conventional-changelog/commitlint/commit/a809d0f)) -### Features - -* **prompt:** add description for build, ci and revert ([#148](https://github.com/conventional-changelog/commitlint/issues/148)) ([ee6ec6e](https://github.com/conventional-changelog/commitlint/commit/ee6ec6e)) -* **travis-cli:** add reusable travis command line interface ([3e6e6a8](https://github.com/conventional-changelog/commitlint/commit/3e6e6a8)) +## [17.6.3](https://github.com/conventional-changelog/commitlint/compare/v17.6.2...v17.6.3) (2023-05-04) +**Note:** Version bump only for package @commitlint/prompt -<a name="5.0.1"></a> -## [5.0.1](https://github.com/conventional-changelog/commitlint/compare/v5.0.0...v5.0.1) (2017-11-19) +## [17.6.1](https://github.com/conventional-changelog/commitlint/compare/v17.6.0...v17.6.1) (2023-04-14) **Note:** Version bump only for package @commitlint/prompt -<a name="4.3.0"></a> -# [4.3.0](https://github.com/conventional-changelog/commitlint/compare/v4.2.2...v4.3.0) (2017-11-08) +# [17.6.0](https://github.com/conventional-changelog/commitlint/compare/v17.5.1...v17.6.0) (2023-04-13) + **Note:** Version bump only for package @commitlint/prompt -<a name="4.2.2"></a> -## [4.2.2](https://github.com/conventional-changelog/commitlint/compare/v4.2.1...v4.2.2) (2017-10-26) +# [17.5.0](https://github.com/conventional-changelog/commitlint/compare/v17.4.4...v17.5.0) (2023-03-22) + **Note:** Version bump only for package @commitlint/prompt -<a name="4.2.1"></a> -## [4.2.1](https://github.com/conventional-changelog/commitlint/compare/v4.2.0...v4.2.1) (2017-10-18) +## [17.4.4](https://github.com/conventional-changelog/commitlint/compare/v17.4.3...v17.4.4) (2023-02-17) + **Note:** Version bump only for package @commitlint/prompt -<a name="4.2.0"></a> -# [4.2.0](https://github.com/conventional-changelog/commitlint/compare/v4.1.1...v4.2.0) (2017-10-14) +## [17.4.3](https://github.com/conventional-changelog/commitlint/compare/v17.4.2...v17.4.3) (2023-02-13) + **Note:** Version bump only for package @commitlint/prompt -<a name="4.1.1"></a> -## [4.1.1](https://github.com/conventional-changelog/commitlint/compare/v4.1.0...v4.1.1) (2017-10-09) +## [17.4.2](https://github.com/conventional-changelog/commitlint/compare/v17.4.1...v17.4.2) (2023-01-12) + **Note:** Version bump only for package @commitlint/prompt -<a name="4.1.0"></a> -# [4.1.0](https://github.com/conventional-changelog/commitlint/compare/v4.0.0...v4.1.0) (2017-10-05) +## [17.4.1](https://github.com/conventional-changelog/commitlint/compare/v17.4.0...v17.4.1) (2023-01-09) + **Note:** Version bump only for package @commitlint/prompt -<a name="4.0.0"></a> -# [4.0.0](https://github.com/conventional-changelog/commitlint/compare/v3.2.0...v4.0.0) (2017-10-04) +# [17.4.0](https://github.com/conventional-changelog/commitlint/compare/v17.3.0...v17.4.0) (2023-01-04) + **Note:** Version bump only for package @commitlint/prompt -<a name="3.2.0"></a> -# 3.2.0 (2017-09-05) +# [17.3.0](https://github.com/conventional-changelog/commitlint/compare/v17.2.1...v17.3.0) (2022-11-21) +**Note:** Version bump only for package @commitlint/prompt +# [17.2.0](https://github.com/conventional-changelog/commitlint/compare/v17.1.2...v17.2.0) (2022-10-31) -<a name="3.1.3"></a> -## 3.1.3 (2017-08-21) +**Note:** Version bump only for package @commitlint/prompt +## [17.1.2](https://github.com/conventional-changelog/commitlint/compare/v17.1.1...v17.1.2) (2022-08-29) +**Note:** Version bump only for package @commitlint/prompt -<a name="3.1.2"></a> -## 3.1.2 (2017-08-07) +## [17.1.1](https://github.com/conventional-changelog/commitlint/compare/v17.1.0...v17.1.1) (2022-08-27) +**Note:** Version bump only for package @commitlint/prompt +# [17.1.0](https://github.com/conventional-changelog/commitlint/compare/v17.0.3...v17.1.0) (2022-08-27) -<a name="3.1.1"></a> -## 3.1.1 (2017-08-07) +**Note:** Version bump only for package @commitlint/prompt +## [17.0.3](https://github.com/conventional-changelog/commitlint/compare/v17.0.2...v17.0.3) (2022-06-25) +**Note:** Version bump only for package @commitlint/prompt -<a name="3.0.4"></a> -## 3.0.4 (2017-08-04) +# [17.0.0](https://github.com/conventional-changelog/commitlint/compare/v16.3.0...v17.0.0) (2022-05-16) +- chore!: minimum node version v14 (#3128) ([ac5f9b4](https://github.com/conventional-changelog/commitlint/commit/ac5f9b47a9e3cd5c9d58b14da0feb426f06b1ef9)), closes [#3128](https://github.com/conventional-changelog/commitlint/issues/3128) +### BREAKING CHANGES -<a name="3.0.3"></a> -## 3.0.3 (2017-07-16) +- drop node v12 support +- chore: rename circleci windows job +node version is not defned by the name anyways (i think) -<a name="3.0.2"></a> -## 3.0.2 (2017-07-11) +# [16.3.0](https://github.com/conventional-changelog/commitlint/compare/v16.2.4...v16.3.0) (2022-05-14) +**Note:** Version bump only for package @commitlint/prompt +## [16.2.4](https://github.com/conventional-changelog/commitlint/compare/v16.2.3...v16.2.4) (2022-04-28) +**Note:** Version bump only for package @commitlint/prompt -<a name="3.1.3"></a> -## 3.1.3 (2017-08-21) +## [16.2.3](https://github.com/conventional-changelog/commitlint/compare/v16.2.2...v16.2.3) (2022-03-16) +**Note:** Version bump only for package @commitlint/prompt +## [16.2.1](https://github.com/conventional-changelog/commitlint/compare/v16.2.0...v16.2.1) (2022-02-13) -<a name="3.1.2"></a> -## 3.1.2 (2017-08-07) +**Note:** Version bump only for package @commitlint/prompt +# [16.1.0](https://github.com/conventional-changelog/commitlint/compare/v16.0.3...v16.1.0) (2022-01-20) +**Note:** Version bump only for package @commitlint/prompt -<a name="3.1.1"></a> -## 3.1.1 (2017-08-07) +# [16.0.0](https://github.com/conventional-changelog/commitlint/compare/v15.0.0...v16.0.0) (2021-12-26) +**Note:** Version bump only for package @commitlint/prompt +# [15.0.0](https://github.com/conventional-changelog/commitlint/compare/v14.2.0...v15.0.0) (2021-11-17) -<a name="3.0.4"></a> -## 3.0.4 (2017-08-04) +### Bug Fixes +- **prompt:** correct import kind in prompt package ([#2852](https://github.com/conventional-changelog/commitlint/issues/2852)) ([45bf394](https://github.com/conventional-changelog/commitlint/commit/45bf394b34cef78011c2e0a1a7d0cc0d2bab41ae)) +- **prompt:** correct version of internal dependencies in prompt package [#2697](https://github.com/conventional-changelog/commitlint/issues/2697) ([#2851](https://github.com/conventional-changelog/commitlint/issues/2851)) ([b1155ca](https://github.com/conventional-changelog/commitlint/commit/b1155cae766aba7e93bc42c69c9ea7f47c1c16d4)) +# [14.2.0](https://github.com/conventional-changelog/commitlint/compare/v14.1.0...v14.2.0) (2021-11-06) -<a name="3.0.3"></a> -## 3.0.3 (2017-07-16) +### Features +- **prompt:** rewrite codebase to use inquirer - UPDATED with current master ([#2697](https://github.com/conventional-changelog/commitlint/issues/2697)) ([5105f43](https://github.com/conventional-changelog/commitlint/commit/5105f43ea8093bce82fe4703c4c14a8210721924)) +# [14.1.0](https://github.com/conventional-changelog/commitlint/compare/v14.0.0...v14.1.0) (2021-11-01) -<a name="3.0.2"></a> -## 3.0.2 (2017-07-11) +**Note:** Version bump only for package @commitlint/prompt +# [14.0.0](https://github.com/conventional-changelog/commitlint/compare/v13.2.1...v14.0.0) (2021-10-26) +**Note:** Version bump only for package @commitlint/prompt +## [13.2.1](https://github.com/conventional-changelog/commitlint/compare/v13.2.0...v13.2.1) (2021-10-09) -<a name="3.1.2"></a> -## 3.1.2 (2017-08-07) +**Note:** Version bump only for package @commitlint/prompt +# [13.2.0](https://github.com/conventional-changelog/commitlint/compare/v13.1.0...v13.2.0) (2021-09-28) +**Note:** Version bump only for package @commitlint/prompt -<a name="3.1.1"></a> -## 3.1.1 (2017-08-07) +# [13.1.0](https://github.com/conventional-changelog/commitlint/compare/v13.0.0...v13.1.0) (2021-07-24) +**Note:** Version bump only for package @commitlint/prompt +# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) -<a name="3.0.4"></a> -## 3.0.4 (2017-08-04) +- chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) +### BREAKING CHANGES +- minimum node version is 12 -<a name="3.0.3"></a> -## 3.0.3 (2017-07-16) +## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) +**Note:** Version bump only for package @commitlint/prompt +## [12.1.2](https://github.com/conventional-changelog/commitlint/compare/v12.1.1...v12.1.2) (2021-04-29) -<a name="3.0.2"></a> -## 3.0.2 (2017-07-11) +**Note:** Version bump only for package @commitlint/prompt +## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) +### Bug Fixes +- **prompt:** modify the entry point to pass commitizen's function check ([#2501](https://github.com/conventional-changelog/commitlint/issues/2501)) ([0173fb7](https://github.com/conventional-changelog/commitlint/commit/0173fb7cc01dc8442ed88a0ab8feec20c955deee)), closes [/github.com/conventional-changelog/commitlint/issues/2486#issuecomment-791682272](https://github.com//github.com/conventional-changelog/commitlint/issues/2486/issues/issuecomment-791682272) [/github.com/conventional-changelog/commitlint/issues/2486#issuecomment-791682272](https://github.com//github.com/conventional-changelog/commitlint/issues/2486/issues/issuecomment-791682272) -<a name="3.0.4"></a> -## 3.0.4 (2017-08-04) +# [12.1.0](https://github.com/conventional-changelog/commitlint/compare/v12.0.1...v12.1.0) (2021-03-06) +**Note:** Version bump only for package @commitlint/prompt +## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) -<a name="3.0.3"></a> -## 3.0.3 (2017-07-16) +### Bug Fixes +- update dependency throat to v6 ([#2417](https://github.com/conventional-changelog/commitlint/issues/2417)) ([6f7db1b](https://github.com/conventional-changelog/commitlint/commit/6f7db1b39c48561b84a4fce9623fb045c5467fe8)) +# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) -<a name="3.0.2"></a> -## 3.0.2 (2017-07-11) +**Note:** Version bump only for package @commitlint/prompt +# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) +**Note:** Version bump only for package @commitlint/prompt +# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) -<a name="3.0.3"></a> -## 3.0.3 (2017-07-16) +- refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) +### BREAKING CHANGES +- remove node 8 from circle-ci checks -<a name="3.0.2"></a> -## 3.0.2 (2017-07-11) +also remove node 13 because we do not support experimental versions +- docs: update node v10 to latest LTS 10 version +Co-authored-by: Cedric van Putten <me@bycedric.com> +Co-authored-by: Cedric van Putten <me@bycedric.com> -<a name="3.0.2"></a> -## 3.0.2 (2017-07-11) +## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) +**Note:** Version bump only for package @commitlint/prompt +## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) +**Note:** Version bump only for package @commitlint/prompt -<a name="3.0.1"></a> -## 3.0.1 (2017-07-11) +# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) +### Bug Fixes +- update dependency chalk to v4 ([#1275](https://github.com/conventional-changelog/commitlint/issues/1275)) ([a5d8fa1](https://github.com/conventional-changelog/commitlint/commit/a5d8fa118e8221361f14f5fd2b21d7aaad008a27)) +## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) -<a name="3.0.1"></a> -## 3.0.1 (2017-07-11) +### Bug Fixes +- add missing @babel/runtime dep [#1738](https://github.com/conventional-changelog/commitlint/issues/1738) ([#1754](https://github.com/conventional-changelog/commitlint/issues/1754)) ([09afcd6](https://github.com/conventional-changelog/commitlint/commit/09afcd647a2c1d00538cf1c970e3790d936111f8)) +# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) -<a name="3.0.0"></a> -# 3.0.0 (2017-07-10) +### Bug Fixes + +- [#840](https://github.com/conventional-changelog/commitlint/issues/840) add caret to lodash versions ([#843](https://github.com/conventional-changelog/commitlint/issues/843)) ([ffc0bac](https://github.com/conventional-changelog/commitlint/commit/ffc0bac26993acb2ab6a8fa51065f93c92b0d644)) +- incorrect use of when in getForcedCaseFn ([#993](https://github.com/conventional-changelog/commitlint/issues/993)) ([34c11b8](https://github.com/conventional-changelog/commitlint/commit/34c11b8f3f233eca51866274a10d35231e8eb3d4)) + +## [8.3.5](https://github.com/conventional-changelog/commitlint/compare/v8.3.4...v8.3.5) (2020-01-15) + +**Note:** Version bump only for package @commitlint/prompt + +## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) + +**Note:** Version bump only for package @commitlint/prompt + +## [8.3.1](https://github.com/conventional-changelog/commitlint/compare/v8.3.0...v8.3.1) (2019-10-16) + +**Note:** Version bump only for package @commitlint/prompt + +# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) + +**Note:** Version bump only for package @commitlint/prompt + +# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) + +**Note:** Version bump only for package @commitlint/prompt + +# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) + +**Note:** Version bump only for package @commitlint/prompt + +## [7.6.1](https://github.com/conventional-changelog/commitlint/compare/v7.6.0...v7.6.1) (2019-05-09) + +**Note:** Version bump only for package @commitlint/prompt + +# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) + +**Note:** Version bump only for package @commitlint/prompt + +<a name="7.5.0"></a> + +# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) + +### Bug Fixes + +- all broken website references ([#564](https://github.com/conventional-changelog/commitlint/issues/564)) ([82eeb5a](https://github.com/conventional-changelog/commitlint/commit/82eeb5a)) +- replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) +- replace all website references with conventional changelog ([#563](https://github.com/conventional-changelog/commitlint/issues/563)) ([6b86fb1](https://github.com/conventional-changelog/commitlint/commit/6b86fb1)) + +<a name="7.3.1"></a> + +## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) + +**Note:** Version bump only for package @commitlint/prompt + +<a name="7.3.0"></a> + +# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) + +### Bug Fixes + +- update to security-patched dependency versions ([97c033b](https://github.com/conventional-changelog/commitlint/commit/97c033b)) + +<a name="7.2.1"></a> + +## [7.2.1](https://github.com/conventional-changelog/commitlint/compare/v7.2.0...v7.2.1) (2018-10-11) + +**Note:** Version bump only for package @commitlint/prompt + +<a name="7.2.0"></a> + +# [7.2.0](https://github.com/conventional-changelog/commitlint/compare/v7.1.2...v7.2.0) (2018-10-05) + +**Note:** Version bump only for package @commitlint/prompt + +<a name="7.1.2"></a> + +## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) + +**Note:** Version bump only for package @commitlint/prompt + +<a name="6.1.1"></a> + +## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) + +**Note:** Version bump only for package @commitlint/prompt + +<a name="6.1.0"></a> + +# [6.1.0](https://github.com/conventional-changelog/commitlint/compare/v6.0.5...v6.1.0) (2018-02-03) + +**Note:** Version bump only for package @commitlint/prompt + +<a name="6.0.5"></a> + +## [6.0.5](https://github.com/conventional-changelog/commitlint/compare/v6.0.4...v6.0.5) (2018-01-31) + +**Note:** Version bump only for package @commitlint/prompt + +<a name="6.0.4"></a> + +## [6.0.4](https://github.com/conventional-changelog/commitlint/compare/v6.0.3...v6.0.4) (2018-01-31) + +**Note:** Version bump only for package @commitlint/prompt + +<a name="6.0.3"></a> + +## [6.0.3](https://github.com/conventional-changelog/commitlint/compare/v6.0.2...v6.0.3) (2018-01-31) + +**Note:** Version bump only for package @commitlint/prompt + +<a name="6.0.2"></a> + +## [6.0.2](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.2) (2018-01-12) + +**Note:** Version bump only for package @commitlint/prompt + +<a name="6.0.1"></a> + +## [6.0.1](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.1) (2018-01-09) + +**Note:** Version bump only for package @commitlint/prompt + +<a name="6.0.0"></a> + +# [6.0.0](https://github.com/conventional-changelog/commitlint/compare/v5.2.6...v6.0.0) (2018-01-09) + +**Note:** Version bump only for package @commitlint/prompt + +<a name="5.2.6"></a> + +## [5.2.6](https://github.com/conventional-changelog/commitlint/compare/v5.2.5...v5.2.6) (2017-12-21) + +**Note:** Version bump only for package @commitlint/prompt + +<a name="5.2.5"></a> + +## [5.2.5](https://github.com/conventional-changelog/commitlint/compare/v5.2.4...v5.2.5) (2017-12-08) + +**Note:** Version bump only for package @commitlint/prompt + +<a name="5.2.4"></a> + +## [5.2.4](https://github.com/conventional-changelog/commitlint/compare/v5.2.3...v5.2.4) (2017-12-08) + +**Note:** Version bump only for package @commitlint/prompt + +<a name="5.2.0"></a> + +# [5.2.0](https://github.com/conventional-changelog/commitlint/compare/v5.1.3...v5.2.0) (2017-11-30) + +**Note:** Version bump only for package @commitlint/prompt + +<a name="5.1.2"></a> + +## [5.1.2](https://github.com/conventional-changelog/commitlint/compare/v5.1.1...v5.1.2) (2017-11-24) + +### Bug Fixes + +- **prompt:** apply forced cases properly ([3a569a7](https://github.com/conventional-changelog/commitlint/commit/3a569a7)), closes [#145](https://github.com/conventional-changelog/commitlint/issues/145) + +<a name="5.1.1"></a> + +## [5.1.1](https://github.com/conventional-changelog/commitlint/compare/v5.1.0...v5.1.1) (2017-11-24) + +**Note:** Version bump only for package @commitlint/prompt + +<a name="5.1.0"></a> + +# [5.1.0](https://github.com/conventional-changelog/commitlint/compare/v5.0.2...v5.1.0) (2017-11-24) + +### Bug Fixes +- update dependency concurrently to v3.5.1 ([#147](https://github.com/conventional-changelog/commitlint/issues/147)) ([a809d0f](https://github.com/conventional-changelog/commitlint/commit/a809d0f)) +### Features + +- **prompt:** add description for build, ci and revert ([#148](https://github.com/conventional-changelog/commitlint/issues/148)) ([ee6ec6e](https://github.com/conventional-changelog/commitlint/commit/ee6ec6e)) +- **travis-cli:** add reusable travis command line interface ([3e6e6a8](https://github.com/conventional-changelog/commitlint/commit/3e6e6a8)) +<a name="5.0.1"></a> + +## [5.0.1](https://github.com/conventional-changelog/commitlint/compare/v5.0.0...v5.0.1) (2017-11-19) + +**Note:** Version bump only for package @commitlint/prompt + +<a name="4.3.0"></a> + +# [4.3.0](https://github.com/conventional-changelog/commitlint/compare/v4.2.2...v4.3.0) (2017-11-08) + +**Note:** Version bump only for package @commitlint/prompt + +<a name="4.2.2"></a> + +## [4.2.2](https://github.com/conventional-changelog/commitlint/compare/v4.2.1...v4.2.2) (2017-10-26) + +**Note:** Version bump only for package @commitlint/prompt + +<a name="4.2.1"></a> + +## [4.2.1](https://github.com/conventional-changelog/commitlint/compare/v4.2.0...v4.2.1) (2017-10-18) + +**Note:** Version bump only for package @commitlint/prompt + +<a name="4.2.0"></a> + +# [4.2.0](https://github.com/conventional-changelog/commitlint/compare/v4.1.1...v4.2.0) (2017-10-14) + +**Note:** Version bump only for package @commitlint/prompt + +<a name="4.1.1"></a> + +## [4.1.1](https://github.com/conventional-changelog/commitlint/compare/v4.1.0...v4.1.1) (2017-10-09) + +**Note:** Version bump only for package @commitlint/prompt + +<a name="4.1.0"></a> + +# [4.1.0](https://github.com/conventional-changelog/commitlint/compare/v4.0.0...v4.1.0) (2017-10-05) + +**Note:** Version bump only for package @commitlint/prompt + +<a name="4.0.0"></a> + +# [4.0.0](https://github.com/conventional-changelog/commitlint/compare/v3.2.0...v4.0.0) (2017-10-04) + +**Note:** Version bump only for package @commitlint/prompt + +<a name="3.2.0"></a> + +# 3.2.0 (2017-09-05) + +<a name="3.1.3"></a> + +## 3.1.3 (2017-08-21) + +<a name="3.1.2"></a> + +## 3.1.2 (2017-08-07) + +<a name="3.1.1"></a> + +## 3.1.1 (2017-08-07) + +<a name="3.0.4"></a> + +## 3.0.4 (2017-08-04) + +<a name="3.0.3"></a> + +## 3.0.3 (2017-07-16) + +<a name="3.0.2"></a> + +## 3.0.2 (2017-07-11) + +<a name="3.1.3"></a> + +## 3.1.3 (2017-08-21) + +<a name="3.1.2"></a> + +## 3.1.2 (2017-08-07) + +<a name="3.1.1"></a> + +## 3.1.1 (2017-08-07) + +<a name="3.0.4"></a> + +## 3.0.4 (2017-08-04) + +<a name="3.0.3"></a> + +## 3.0.3 (2017-07-16) + +<a name="3.0.2"></a> + +## 3.0.2 (2017-07-11) + +<a name="3.1.2"></a> + +## 3.1.2 (2017-08-07) + +<a name="3.1.1"></a> + +## 3.1.1 (2017-08-07) + +<a name="3.0.4"></a> + +## 3.0.4 (2017-08-04) + +<a name="3.0.3"></a> + +## 3.0.3 (2017-07-16) + +<a name="3.0.2"></a> + +## 3.0.2 (2017-07-11) + +<a name="3.0.4"></a> + +## 3.0.4 (2017-08-04) + +<a name="3.0.3"></a> + +## 3.0.3 (2017-07-16) + +<a name="3.0.2"></a> + +## 3.0.2 (2017-07-11) + +<a name="3.0.3"></a> + +## 3.0.3 (2017-07-16) + +<a name="3.0.2"></a> + +## 3.0.2 (2017-07-11) + +<a name="3.0.2"></a> + +## 3.0.2 (2017-07-11) + +<a name="3.0.1"></a> + +## 3.0.1 (2017-07-11) + +<a name="3.0.1"></a> + +## 3.0.1 (2017-07-11) <a name="3.0.0"></a> + +# 3.0.0 (2017-07-10) + +<a name="3.0.0"></a> + # 3.0.0 (2017-07-10) diff --git a/@commitlint/prompt/README.md b/@commitlint/prompt/README.md index 261d09f10f..64090b4001 100644 --- a/@commitlint/prompt/README.md +++ b/@commitlint/prompt/README.md @@ -1,10 +1,10 @@ -> commitizen adapter using commitlint.config.js - # @commitlint/prompt +commitizen adapter using commitlint.config.js + This is the library and commitizen adapter version of commitlint prompt. A ready-to-use cli version is available at [@commitlint/prompt-cli](../prompt-cli). -Learn how to use it at [docs/prompt](https://conventional-changelog.github.io/commitlint/#/guides-use-prompt). +Learn how to use it in this [guide](https://commitlint.js.org/guides/use-prompt). ## Getting started diff --git a/@commitlint/prompt/package.json b/@commitlint/prompt/package.json index 8b0586e9b0..3d57dc6c3e 100644 --- a/@commitlint/prompt/package.json +++ b/@commitlint/prompt/package.json @@ -1,6 +1,7 @@ { "name": "@commitlint/prompt", - "version": "13.1.0", + "type": "module", + "version": "20.1.0", "description": "commitizen prompt using commitlint.config.js", "main": "./lib/index.js", "files": [ @@ -17,7 +18,8 @@ }, "repository": { "type": "git", - "url": "https://github.com/conventional-changelog/commitlint.git" + "url": "https://github.com/conventional-changelog/commitlint.git", + "directory": "@commitlint/prompt" }, "keywords": [ "conventional-changelog", @@ -31,21 +33,23 @@ "bugs": { "url": "https://github.com/conventional-changelog/commitlint/issues" }, - "homepage": "https://github.com/conventional-changelog/commitlint#readme", + "homepage": "https://commitlint.js.org/", "engines": { - "node": ">=v12" + "node": ">=v18" }, "devDependencies": { - "@commitlint/utils": "^13.0.0", - "commitizen": "4.2.4" + "@commitlint/config-angular": "^20.0.0", + "@commitlint/types": "^14.0.0", + "@commitlint/utils": "^20.0.0", + "@types/inquirer": "^9.0.7", + "commitizen": "^4.2.4" }, "dependencies": { - "@commitlint/load": "^13.1.0", - "@commitlint/types": "^13.1.0", - "chalk": "^4.0.0", - "lodash": "^4.17.19", - "throat": "^6.0.0", - "vorpal": "^1.12.0" + "@commitlint/ensure": "^20.0.0", + "@commitlint/load": "^20.1.0", + "@commitlint/types": "^20.0.0", + "chalk": "^5.3.0", + "inquirer": "^9.2.15" }, - "gitHead": "70f7f4688b51774e7ac5e40e896cdaa3f132b2bc" + "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" } diff --git a/@commitlint/prompt/src/index.ts b/@commitlint/prompt/src/index.ts index 134c621e59..2985ec0fc6 100644 --- a/@commitlint/prompt/src/index.ts +++ b/@commitlint/prompt/src/index.ts @@ -1,18 +1,17 @@ -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore -import vorpal from 'vorpal'; -import input from './input'; +import inquirer from "inquirer"; + +import { input } from "./input.js"; type Commit = (input: string) => void; /** * Entry point for commitizen - * @param _ inquirer instance passed by commitizen, unused + * @param cz inquirer instance passed by commitizen, unused * @param commit callback to execute with complete commit message * @return {void} */ -export function prompter(_: unknown, commit: Commit): void { - input(vorpal).then((message) => { +export function prompter(cz: typeof inquirer, commit: Commit): void { + input(cz.prompt).then((message) => { commit(message); }); } diff --git a/@commitlint/prompt/src/input.test.ts b/@commitlint/prompt/src/input.test.ts new file mode 100644 index 0000000000..20d3e9572a --- /dev/null +++ b/@commitlint/prompt/src/input.test.ts @@ -0,0 +1,133 @@ +/// <reference path="./inquirer/inquirer.d.ts" /> + +import { expect, test, vi } from "vitest"; +// @ts-expect-error -- no typings +import config from "@commitlint/config-angular"; +import chalk from "chalk"; +import { + Answers, + DistinctQuestion, + InputCustomOptions, + PromptModule, +} from "inquirer"; + +import { input } from "./input.js"; + +const testConfig = { + parserPreset: config.parserPreset, + rules: { + ...config.rules, + }, +}; + +vi.mock("@commitlint/load", () => ({ + default: () => testConfig, +})); + +test("should work with all fields filled", async () => { + const prompt = stub({ + "input-custom": { + type: "fix", + scope: "test", + subject: "subject", + body: "body", + footer: "footer", + }, + }); + const message = await input(prompt); + expect(message).toEqual("fix(test): subject\n" + "\nbody\n" + "\nfooter"); +}); + +test("should not add leading blank line to body and footer if rules are disabled", async () => { + testConfig.rules["body-leading-blank"] = ["1", "never"]; + testConfig.rules["footer-leading-blank"] = ["1", "never"]; + const prompt = stub({ + "input-custom": { + type: "fix", + scope: "test", + subject: "subject", + body: "body", + footer: "footer", + }, + }); + const message = await input(prompt); + expect(message).toEqual("fix(test): subject\n" + "body\n" + "footer"); + // reset config mock + testConfig.rules["body-leading-blank"] = config.rules["body-leading-blank"]; + testConfig.rules["footer-leading-blank"] = + config.rules["footer-leading-blank"]; +}); + +test("should work without scope", async () => { + const prompt = stub({ + "input-custom": { + type: "fix", + scope: "", + subject: "subject", + body: "body", + footer: "footer", + }, + }); + const message = await input(prompt); + expect(message).toEqual("fix: subject\n" + "\nbody\n" + "\nfooter"); +}); + +test("should fail without type", async () => { + const spy = vi.spyOn(console, "error"); + const prompt = stub({ + "input-custom": { + type: "", + scope: "", + subject: "", + body: "", + footer: "", + }, + }); + const message = await input(prompt); + expect(message).toEqual(""); + expect(console.error).toHaveBeenCalledTimes(1); + expect(console.error).toHaveBeenLastCalledWith( + new Error(`⚠ ${chalk.bold("type")} may not be empty.`), + ); + spy.mockRestore(); +}); + +function stub(config: Record<string, Record<string, unknown>>): PromptModule { + const prompt = async ( + questions: DistinctQuestion | DistinctQuestion[], + ): Promise<any> => { + const result: Answers = {}; + const resolvedConfig = Array.isArray(questions) ? questions : [questions]; + for (const promptConfig of resolvedConfig) { + const configType = promptConfig.type || "input"; + const questions = config[configType]; + if (!questions) { + throw new Error(`Unexpected config type: ${configType}`); + } + let answer = questions[promptConfig.name!]; + if (answer == null) { + throw new Error(`Unexpected config name: ${promptConfig.name}`); + } + const validate = promptConfig.validate; + if (validate) { + const validationResult = await validate(answer, result); + if (validationResult !== true) { + throw new Error(validationResult || undefined); + } + } + const forceLeadingBlankFn = (promptConfig as InputCustomOptions) + .forceLeadingBlankFn; + if (forceLeadingBlankFn) { + answer = forceLeadingBlankFn(answer as string); + } + result[promptConfig.name!] = answer; + } + return result; + }; + prompt.registerPrompt = () => { + return prompt; + }; + prompt.restoreDefaultPrompts = () => true; + prompt.prompts = {}; + return prompt as any as PromptModule; +} diff --git a/@commitlint/prompt/src/input.ts b/@commitlint/prompt/src/input.ts index bb34fcf62f..d2db897fe2 100644 --- a/@commitlint/prompt/src/input.ts +++ b/@commitlint/prompt/src/input.ts @@ -1,13 +1,12 @@ -import load from '@commitlint/load'; -import throat from 'throat'; +import load from "@commitlint/load"; +import type { DistinctQuestion, PromptModule } from "inquirer"; -import format from './library/format'; -import getPrompt from './library/get-prompt'; -import settings from './settings'; -import {InputSetting, Prompter, Result} from './library/types'; -import {getHasName, getMaxLength, getRules} from './library/utils'; - -export default input; +import format from "./library/format.js"; +import getPrompt from "./library/get-prompt.js"; +import settings from "./settings.js"; +import type { InputSetting, Result } from "./library/types.js"; +import { getHasName, getMaxLength, getRules } from "./library/utils.js"; +import InputCustomPrompt from "./inquirer/InputCustomPrompt.js"; /** * Get user input by interactive prompt based on @@ -15,49 +14,38 @@ export default input; * @param prompter * @return commit message */ -async function input(prompter: () => Prompter): Promise<string> { - const results: Result = { - type: null, - scope: null, - subject: null, - body: null, - footer: null, - }; - - const {rules} = await load(); - const parts = ['type', 'scope', 'subject', 'body', 'footer'] as const; - const headerParts = ['type', 'scope', 'subject']; +export async function input(prompter: PromptModule): Promise<string> { + const { rules } = await load(); + const parts = ["type", "scope", "subject", "body", "footer"] as const; + const headerParts = ["type", "scope", "subject"]; - const headerLengthRule = getRules('header', rules).find( - getHasName('max-length') + const headerLengthRule = getRules("header", rules).find( + getHasName("max-length"), ); const maxLength = getMaxLength(headerLengthRule); - await Promise.all( - parts.map( - throat(1, async (input) => { - const inputRules = getRules(input, rules); - const inputSettings: InputSetting = settings[input]; - - if (headerParts.includes(input) && maxLength < Infinity) { - inputSettings.header = { - length: maxLength, - }; - } - - results[input] = await getPrompt(input, { - rules: inputRules, - settings: inputSettings, - results, - prompter, - }); - }) - ) - ).catch((err) => { + try { + const questions: DistinctQuestion<Result>[] = []; + prompter.registerPrompt("input-custom", InputCustomPrompt); + + for (const input of parts) { + const inputSetting: InputSetting = settings[input]; + const inputRules = getRules(input, rules); + if (headerParts.includes(input) && maxLength < Infinity) { + inputSetting.header = { + length: maxLength, + }; + } + const question = getPrompt(input, inputRules, inputSetting); + if (question) { + questions.push(question); + } + } + + const results = await prompter<Result>(questions); + return format(results); + } catch (err) { console.error(err); - return ''; - }); - - // Return the results - return format(results); + return ""; + } } diff --git a/@commitlint/prompt/src/inquirer/InputCustomPrompt.ts b/@commitlint/prompt/src/inquirer/InputCustomPrompt.ts new file mode 100644 index 0000000000..2cc7ce8400 --- /dev/null +++ b/@commitlint/prompt/src/inquirer/InputCustomPrompt.ts @@ -0,0 +1,118 @@ +/// <reference path="./inquirer.d.ts" /> +import chalk from "chalk"; + +import inquirer, { type Answers, type InputCustomOptions } from "inquirer"; +import InputPrompt from "inquirer/lib/prompts/input.js"; +import observe from "inquirer/lib/utils/events.js"; +import type { Interface as ReadlineInterface, Key } from "node:readline"; +import type { Subscription } from "rxjs"; + +import SuccessfulPromptStateData = inquirer.prompts.SuccessfulPromptStateData; + +interface KeyDescriptor { + value: string; + key: Key; +} + +export default class InputCustomPrompt< + TQuestion extends InputCustomOptions = InputCustomOptions, +> extends InputPrompt<TQuestion> { + private lineSubscription: Subscription; + private readonly tabCompletion: string[]; + + constructor( + question: TQuestion, + readLine: ReadlineInterface, + answers: Answers, + ) { + super(question, readLine, answers); + + if (this.opt.log) { + this.rl.write(this.opt.log(answers)); + } + + if (!this.opt.maxLength) { + this.throwParamError("maxLength"); + } + + const events = observe(this.rl); + this.lineSubscription = events.keypress.subscribe( + this.onKeyPress2.bind(this), + ); + this.tabCompletion = (this.opt.tabCompletion || []) + .map((item) => item.value) + .sort((a, b) => a.localeCompare(b)); + } + + onEnd(state: SuccessfulPromptStateData): void { + this.lineSubscription.unsubscribe(); + // Add or remove leading blank if rule is active. + state.value = this.opt.forceLeadingBlankFn(state.value); + super.onEnd(state); + } + + /** + * @see https://nodejs.org/api/readline.html#readline_rl_write_data_key + * @see https://nodejs.org/api/readline.html#readline_rl_line + */ + updateLine(line: string): void { + this.rl.write(null as any, { ctrl: true, name: "b" }); + this.rl.write(null as any, { ctrl: true, name: "d" }); + this.rl.write(line.substr(this.rl.line.length)); + } + + onKeyPress2(e: KeyDescriptor): void { + if (e.key.name === "tab" && this.tabCompletion.length > 0) { + let line = this.rl.line.trim(); + if (line.length > 0) { + for (const item of this.tabCompletion) { + if (item.startsWith(line) && item !== line) { + line = item; + break; + } + } + } + this.updateLine(line); + } + } + + measureInput(input: string): number { + if (this.opt.filter) { + return this.opt.filter(input, this.answers).length; + } + return input.length; + } + + render(error?: string): void { + const answered = this.status === "answered"; + + let message = this.getQuestion(); + const length = this.measureInput(this.rl.line); + + if (answered) { + message += chalk.cyan(this.answer); + } else if (this.opt.transformer) { + message += this.opt.transformer(this.rl.line, this.answers, {}); + } + + let bottomContent = ""; + + if (error) { + bottomContent = chalk.red(">> ") + error; + } else if (!answered) { + const maxLength = this.opt.maxLength(this.answers); + if (maxLength < Infinity) { + const lengthRemaining = maxLength - length; + const color = + lengthRemaining <= 5 + ? chalk.red + : lengthRemaining <= 10 + ? chalk.yellow + : chalk.grey; + bottomContent = color(`${lengthRemaining} characters left`); + } + } + + this.screen.render(message, bottomContent); + } +} diff --git a/@commitlint/prompt/src/inquirer/inquirer.d.ts b/@commitlint/prompt/src/inquirer/inquirer.d.ts new file mode 100644 index 0000000000..1d8df10d5f --- /dev/null +++ b/@commitlint/prompt/src/inquirer/inquirer.d.ts @@ -0,0 +1,24 @@ +import { Answers, InputQuestionOptions } from "inquirer"; + +declare module "inquirer" { + interface InputCustomCompletionOption { + value: string; + description?: string; + } + + export interface InputCustomOptions<T extends Answers = Answers> + extends InputQuestionOptions<T> { + /** + * @inheritdoc + */ + type?: "input-custom"; + log?(answers?: T): string; + tabCompletion?: InputCustomCompletionOption[]; + maxLength(answers?: T): number; + forceLeadingBlankFn(input: string): string; + } + + interface QuestionMap<T extends Answers = Answers> { + "input-custom": InputCustomOptions<T>; + } +} diff --git a/@commitlint/prompt/src/library/format.test.ts b/@commitlint/prompt/src/library/format.test.ts new file mode 100644 index 0000000000..e2a69d7516 --- /dev/null +++ b/@commitlint/prompt/src/library/format.test.ts @@ -0,0 +1,56 @@ +import { test, expect } from "vitest"; +import type { Result } from "./types.js"; +import format from "./format.js"; + +test("should return empty string", () => { + const result: Result = {}; + expect(format(result)).toBe(" "); +}); + +test("should omit scope", () => { + const result: Result = { + type: "fix", + subject: "test", + }; + expect(format(result)).toBe("fix: test"); +}); + +test("should include scope", () => { + const result: Result = { + type: "fix", + scope: "prompt", + subject: "test", + }; + expect(format(result)).toBe("fix(prompt): test"); +}); + +test("should include body", () => { + const result: Result = { + type: "fix", + scope: "prompt", + subject: "test", + body: "some body", + }; + expect(format(result)).toBe("fix(prompt): test\nsome body"); +}); + +test("should include footer", () => { + const result: Result = { + type: "fix", + scope: "prompt", + subject: "test", + footer: "some footer", + }; + expect(format(result)).toBe("fix(prompt): test\nsome footer"); +}); + +test("should include body and footer", () => { + const result: Result = { + type: "fix", + scope: "prompt", + subject: "test", + body: "some body", + footer: "some footer", + }; + expect(format(result)).toBe("fix(prompt): test\nsome body\nsome footer"); +}); diff --git a/@commitlint/prompt/src/library/format.ts b/@commitlint/prompt/src/library/format.ts index 54f7cf9355..414af8920f 100644 --- a/@commitlint/prompt/src/library/format.ts +++ b/@commitlint/prompt/src/library/format.ts @@ -1,7 +1,6 @@ -import chalk from 'chalk'; -import {Result} from './types'; +import chalk from "chalk"; -export default format; +import type { Result, ResultPart } from "./types.js"; /** * Get formatted commit message @@ -9,24 +8,32 @@ export default format; * @param debug show debug information in commit message * @return formatted debug message */ -function format(input: Result, debug = false): string { +export default function format(input: Result, debug = false): string { + const defaultInput = { + type: undefined, + scope: undefined, + subject: undefined, + body: undefined, + footer: undefined, + ...input, + }; const results = debug - ? Object.entries(input).reduce<Result>((registry, [name, value]) => { - registry[name as 'type' | 'scope' | 'subject' | 'body' | 'footer'] = - value === null ? chalk.grey(`<${name}>`) : chalk.bold(value); + ? Object.entries(defaultInput).reduce<Result>((registry, [name, value]) => { + registry[name as ResultPart] = + value === undefined ? chalk.grey(`<${name}>`) : chalk.bold(value); return registry; - }, {}) - : input; + }, {}) + : defaultInput; // Return formatted string - const {type, scope, subject, body, footer} = results; + const { type, scope, subject, body, footer } = results; return [ - `${type}${scope ? '(' : ''}${scope}${scope ? ')' : ''}${ - type || scope ? ':' : '' - } ${subject}`, + `${type || ""}${scope ? `(${scope})` : ""}${type || scope ? ":" : ""} ${ + subject || "" + }`, body, footer, ] .filter(Boolean) - .join('\n'); + .join("\n"); } diff --git a/@commitlint/prompt/src/library/get-forced-case-fn.test.ts b/@commitlint/prompt/src/library/get-forced-case-fn.test.ts index 0b630876bb..c96caa562a 100644 --- a/@commitlint/prompt/src/library/get-forced-case-fn.test.ts +++ b/@commitlint/prompt/src/library/get-forced-case-fn.test.ts @@ -1,116 +1,118 @@ -import {RuleConfigSeverity} from '@commitlint/types'; +import { test, expect } from "vitest"; +import { RuleConfigSeverity } from "@commitlint/types"; -import getForcedCaseFn from './get-forced-case-fn'; +import getForcedCaseFn from "./get-forced-case-fn.js"; -test('should not apply', () => { - let rule = getForcedCaseFn(['name', [RuleConfigSeverity.Disabled]]); - expect(rule('test')).toBe('test'); - expect(rule('test-foo')).toBe('test-foo'); - expect(rule('testFoo')).toBe('testFoo'); - expect(rule('TEST_FOO')).toBe('TEST_FOO'); +test("should not apply", () => { + let rule = getForcedCaseFn(["name", [RuleConfigSeverity.Disabled]]); + expect(rule("test")).toBe("test"); + expect(rule("test-foo")).toBe("test-foo"); + expect(rule("testFoo")).toBe("testFoo"); + expect(rule("TEST_FOO")).toBe("TEST_FOO"); rule = getForcedCaseFn(); - expect(rule('test')).toBe('test'); - expect(rule('test-foo')).toBe('test-foo'); - expect(rule('testFoo')).toBe('testFoo'); - expect(rule('TEST_FOO')).toBe('TEST_FOO'); + expect(rule("test")).toBe("test"); + expect(rule("test-foo")).toBe("test-foo"); + expect(rule("testFoo")).toBe("testFoo"); + expect(rule("TEST_FOO")).toBe("TEST_FOO"); - rule = getForcedCaseFn(['name', [RuleConfigSeverity.Warning, 'never']]); - expect(rule('test')).toBe('test'); - expect(rule('test-foo')).toBe('test-foo'); - expect(rule('testFoo')).toBe('testFoo'); - expect(rule('TEST_FOO')).toBe('TEST_FOO'); + rule = getForcedCaseFn(["name", [RuleConfigSeverity.Warning, "never"]]); + expect(rule("test")).toBe("test"); + expect(rule("test-foo")).toBe("test-foo"); + expect(rule("testFoo")).toBe("testFoo"); + expect(rule("TEST_FOO")).toBe("TEST_FOO"); rule = getForcedCaseFn([ - 'name', - [RuleConfigSeverity.Warning, 'always', ['camel-case', 'lowercase']], + "name", + [RuleConfigSeverity.Warning, "always", ["camel-case", "lowercase"]], ]); - expect(rule('test')).toBe('test'); - expect(rule('test-foo')).toBe('test-foo'); - expect(rule('testFoo')).toBe('testFoo'); - expect(rule('TEST_FOO')).toBe('TEST_FOO'); + expect(rule("test")).toBe("test"); + expect(rule("test-foo")).toBe("test-foo"); + expect(rule("testFoo")).toBe("testFoo"); + expect(rule("TEST_FOO")).toBe("TEST_FOO"); }); -test('should throw error on invalid casing', () => { - expect(() => - getForcedCaseFn(['name', [RuleConfigSeverity.Warning, 'always']]) - ).toThrow('Unknown target case "undefined"'); +test("should throw error on invalid casing", () => { + let rule = getForcedCaseFn(["name", [RuleConfigSeverity.Warning, "always"]]); + expect(() => rule("test")).toThrow('Unknown target case "undefined"'); - expect(() => - getForcedCaseFn(['name', [RuleConfigSeverity.Warning, 'always', 'foo']]) - ).toThrow('Unknown target case "foo"'); + rule = getForcedCaseFn([ + "name", + [RuleConfigSeverity.Warning, "always", "foo"], + ]); + expect(() => rule("test")).toThrow('Unknown target case "foo"'); }); -test('should convert text correctly', () => { +test("should convert text correctly", () => { let rule = getForcedCaseFn([ - 'name', - [RuleConfigSeverity.Warning, 'always', 'camel-case'], + "name", + [RuleConfigSeverity.Warning, "always", "camel-case"], ]); - expect(rule('TEST_FOOBar-baz baz')).toBe('testFooBarBazBaz'); + expect(rule("TEST_FOOBar-baz baz")).toBe("testFooBarBazBaz"); rule = getForcedCaseFn([ - 'name', - [RuleConfigSeverity.Warning, 'always', 'kebab-case'], + "name", + [RuleConfigSeverity.Warning, "always", "kebab-case"], ]); - expect(rule('TEST_FOOBar-baz baz')).toBe('test-foo-bar-baz-baz'); + expect(rule("TEST_FOOBar-baz baz")).toBe("test-foo-bar-baz-baz"); rule = getForcedCaseFn([ - 'name', - [RuleConfigSeverity.Warning, 'always', 'snake-case'], + "name", + [RuleConfigSeverity.Warning, "always", "snake-case"], ]); - expect(rule('TEST_FOOBar-baz baz')).toBe('test_foo_bar_baz_baz'); + expect(rule("TEST_FOOBar-baz baz")).toBe("test_foo_bar_baz_baz"); rule = getForcedCaseFn([ - 'name', - [RuleConfigSeverity.Warning, 'always', 'pascal-case'], + "name", + [RuleConfigSeverity.Warning, "always", "pascal-case"], ]); - expect(rule('TEST_FOOBar-baz baz')).toBe('TestFooBarBazBaz'); + expect(rule("TEST_FOOBar-baz baz")).toBe("TestFooBarBazBaz"); rule = getForcedCaseFn([ - 'name', - [RuleConfigSeverity.Warning, 'always', 'start-case'], + "name", + [RuleConfigSeverity.Warning, "always", "start-case"], ]); - expect(rule('TEST_FOOBar-baz baz')).toBe('TEST FOO Bar Baz Baz'); + expect(rule("TEST_FOOBar-baz baz")).toBe("TEST FOO Bar Baz Baz"); rule = getForcedCaseFn([ - 'name', - [RuleConfigSeverity.Warning, 'always', 'upper-case'], + "name", + [RuleConfigSeverity.Warning, "always", "upper-case"], ]); - expect(rule('TEST_FOOBar-baz baz')).toBe('TEST_FOOBAR-BAZ BAZ'); + expect(rule("TEST_FOOBar-baz baz")).toBe("TEST_FOOBAR-BAZ BAZ"); rule = getForcedCaseFn([ - 'name', - [RuleConfigSeverity.Warning, 'always', 'uppercase'], + "name", + [RuleConfigSeverity.Warning, "always", "uppercase"], ]); - expect(rule('TEST_FOOBar-baz baz')).toBe('TEST_FOOBAR-BAZ BAZ'); + expect(rule("TEST_FOOBar-baz baz")).toBe("TEST_FOOBAR-BAZ BAZ"); rule = getForcedCaseFn([ - 'name', - [RuleConfigSeverity.Warning, 'always', 'sentence-case'], + "name", + [RuleConfigSeverity.Warning, "always", "sentence-case"], ]); - expect(rule('TEST_FOOBar-baz baz')).toBe('Test_foobar-baz baz'); + expect(rule("TEST_FOOBar-baz baz")).toBe("TEST_FOOBar-baz baz"); rule = getForcedCaseFn([ - 'name', - [RuleConfigSeverity.Warning, 'always', 'sentencecase'], + "name", + [RuleConfigSeverity.Warning, "always", "sentencecase"], ]); - expect(rule('TEST_FOOBar-baz baz')).toBe('Test_foobar-baz baz'); + expect(rule("TEST_FOOBar-baz baz")).toBe("TEST_FOOBar-baz baz"); rule = getForcedCaseFn([ - 'name', - [RuleConfigSeverity.Warning, 'always', 'lower-case'], + "name", + [RuleConfigSeverity.Warning, "always", "lower-case"], ]); - expect(rule('TEST_FOOBar-baz baz')).toBe('test_foobar-baz baz'); + expect(rule("TEST_FOOBar-baz baz")).toBe("test_foobar-baz baz"); rule = getForcedCaseFn([ - 'name', - [RuleConfigSeverity.Warning, 'always', 'lowercase'], + "name", + [RuleConfigSeverity.Warning, "always", "lowercase"], ]); - expect(rule('TEST_FOOBar-baz baz')).toBe('test_foobar-baz baz'); + expect(rule("TEST_FOOBar-baz baz")).toBe("test_foobar-baz baz"); rule = getForcedCaseFn([ - 'name', - [RuleConfigSeverity.Warning, 'always', 'lowerCase'], + "name", + [RuleConfigSeverity.Warning, "always", "lowerCase"], ]); - expect(rule('TEST_FOOBar-baz baz')).toBe('test_foobar-baz baz'); + expect(rule("TEST_FOOBar-baz baz")).toBe("test_foobar-baz baz"); }); diff --git a/@commitlint/prompt/src/library/get-forced-case-fn.ts b/@commitlint/prompt/src/library/get-forced-case-fn.ts index 74b285afa8..11b91fb178 100644 --- a/@commitlint/prompt/src/library/get-forced-case-fn.ts +++ b/@commitlint/prompt/src/library/get-forced-case-fn.ts @@ -1,10 +1,8 @@ -import camelCase from 'lodash/camelCase'; -import kebabCase from 'lodash/kebabCase'; -import snakeCase from 'lodash/snakeCase'; -import upperFirst from 'lodash/upperFirst'; -import startCase from 'lodash/startCase'; -import {RuleEntry} from './types'; -import {ruleIsActive, ruleIsNotApplicable} from './utils'; +import { toCase } from "@commitlint/ensure"; +import type { TargetCaseType } from "@commitlint/types"; + +import type { RuleEntry } from "./types.js"; +import { ruleIsActive, ruleIsNotApplicable } from "./utils.js"; /** * Get forced case for rule @@ -12,7 +10,7 @@ import {ruleIsActive, ruleIsNotApplicable} from './utils'; * @return transform function applying the enforced case */ export default function getForcedCaseFn( - rule?: RuleEntry + rule?: RuleEntry, ): (input: string) => string { const noop = (input: string) => input; @@ -26,29 +24,5 @@ export default function getForcedCaseFn( return noop; } - switch (target) { - case 'camel-case': - return (input: string) => camelCase(input); - case 'kebab-case': - return (input: string) => kebabCase(input); - case 'snake-case': - return (input: string) => snakeCase(input); - case 'pascal-case': - return (input: string) => upperFirst(camelCase(input)); - case 'start-case': - return (input: string) => startCase(input); - case 'upper-case': - case 'uppercase': - return (input: string) => input.toUpperCase(); - case 'sentence-case': - case 'sentencecase': - return (input: string) => - `${input.charAt(0).toUpperCase()}${input.substring(1).toLowerCase()}`; - case 'lower-case': - case 'lowercase': - case 'lowerCase': // Backwards compat config-angular v4 - return (input: string) => input.toLowerCase(); - default: - throw new TypeError(`Unknown target case "${target}"`); - } + return (input: string) => toCase(input, target as TargetCaseType); } diff --git a/@commitlint/prompt/src/library/get-forced-leading-fn.ts b/@commitlint/prompt/src/library/get-forced-leading-fn.ts index 12614a0158..7a750ee201 100644 --- a/@commitlint/prompt/src/library/get-forced-leading-fn.ts +++ b/@commitlint/prompt/src/library/get-forced-leading-fn.ts @@ -1,5 +1,5 @@ -import {RuleEntry} from './types'; -import {ruleIsActive, ruleIsNotApplicable} from './utils'; +import type { RuleEntry } from "./types.js"; +import { ruleIsActive, ruleIsNotApplicable } from "./utils.js"; /** * Get forced leading for rule @@ -7,19 +7,19 @@ import {ruleIsActive, ruleIsNotApplicable} from './utils'; * @return transform function applying the leading */ export default function getForcedLeadingFn( - rule?: RuleEntry + rule?: RuleEntry, ): (input: string) => string { if (!rule || !ruleIsActive(rule)) { return (input: string): string => input; } const remove = (input: string): string => { - const fragments = input.split('\n'); - return fragments[0] === '' ? fragments.slice(1).join('\n') : input; + const fragments = input.split("\n"); + return fragments[0] === "" ? fragments.slice(1).join("\n") : input; }; const lead = (input: string): string => { - const fragments = input.split('\n'); - return fragments[0] === '' ? input : ['', ...fragments].join('\n'); + const fragments = input.split("\n"); + return fragments[0] === "" ? input : ["", ...fragments].join("\n"); }; return !ruleIsNotApplicable(rule) ? lead : remove; diff --git a/@commitlint/prompt/src/library/get-prompt.test.ts b/@commitlint/prompt/src/library/get-prompt.test.ts deleted file mode 100644 index 831fbcab8a..0000000000 --- a/@commitlint/prompt/src/library/get-prompt.test.ts +++ /dev/null @@ -1,100 +0,0 @@ -import getPrompt from './get-prompt'; -import {Prompter, PrompterCommand} from './types'; - -test('throws without params', () => { - expect(() => (getPrompt as any)()).toThrow('Missing prompter function'); -}); - -test('throws with incompatible prompter', () => { - expect(() => - getPrompt('type', { - prompter: (() => ({})) as any, - }) - ).toThrow('prompt.removeAllListeners'); -}); - -test('returns input unaltered without rules', async () => { - const message = await getPrompt('type', { - prompter: stub('foobar'), - }); - - expect(message).toEqual('foobar'); -}); - -function stub(input = '') { - return function stubPrompter(): Prompter { - const called: any[] = []; - const actions: any[] = []; - - const instanceCommand: PrompterCommand = { - description(...args) { - called.push([instanceCommand.description, args]); - return instanceCommand; - }, - action(...args) { - actions.push(args[0]); - called.push([instanceCommand.action, args]); - return instanceCommand; - }, - }; - - function redraw(...args: any[]): void { - called.push([instance.log, args]); - } - redraw.done = function (...args: any[]) { - called.push([instance.ui.redraw.done, args]); - }; - - const instance: Prompter & {called: any[]} = { - called, - addListener(...args): void { - called.push([instance.addListener, args]); - }, - catch(...args) { - called.push([instance.catch, args]); - return instanceCommand; - }, - command(...args) { - called.push([instance.command, args]); - return instanceCommand; - }, - exec(...args) { - called.push([instance.command, args]); - return Promise.resolve(); - }, - delimiter(...args) { - called.push([instance.delimiter, args]); - return instance; - }, - log(...args) { - called.push([instance.log, args]); - return instance; - }, - removeAllListeners(...args) { - called.push([instance.removeAllListeners, args]); - }, - show(...args) { - called.push([instance.show, args]); - return instance; - }, - ui: { - log(...args) { - called.push([instance.log, args]); - }, - input(...args) { - called.push([instance.log, args]); - return args[0]!; - }, - redraw, - }, - }; - - setTimeout(() => { - actions[0]({ - text: Array.isArray(input) ? input : [input], - }); - }, 0); - - return instance; - }; -} diff --git a/@commitlint/prompt/src/library/get-prompt.ts b/@commitlint/prompt/src/library/get-prompt.ts index 73a9cb7f15..924549c007 100644 --- a/@commitlint/prompt/src/library/get-prompt.ts +++ b/@commitlint/prompt/src/library/get-prompt.ts @@ -1,239 +1,124 @@ -import chalk from 'chalk'; +import chalk from "chalk"; +import type { InputCustomOptions } from "inquirer"; -import type {InputSetting, Prompter, Result, RuleEntry} from './types'; +import type { InputSetting, RuleEntry, Result, ResultPart } from "./types.js"; -import format from './format'; -import getForcedCaseFn from './get-forced-case-fn'; -import getForcedLeadingFn from './get-forced-leading-fn'; -import meta from './meta'; +import format from "./format.js"; +import getForcedCaseFn from "./get-forced-case-fn.js"; +import getForcedLeadingFn from "./get-forced-leading-fn.js"; +import meta from "./meta.js"; import { enumRuleIsActive, - ruleIsNotApplicable, - ruleIsApplicable, - ruleIsActive, getHasName, getMaxLength, -} from './utils'; + ruleIsActive, + ruleIsApplicable, + ruleIsNotApplicable, +} from "./utils.js"; + +const EOL = "\n"; /** * Get a cli prompt based on rule configuration * @param type type of the data to gather - * @param context rules to parse + * @param rules + * @param settings * @return prompt instance */ export default function getPrompt( - type: string, - context: { - rules?: RuleEntry[]; - settings?: InputSetting; - results?: Result; - prompter?: () => Prompter; - } = {} -): Promise<string | undefined> { - const {rules = [], settings = {}, results = {}, prompter} = context; - - if (typeof prompter !== 'function') { - throw new TypeError('Missing prompter function in getPrompt context'); - } - - const prompt = prompter(); - - if (typeof prompt.removeAllListeners !== 'function') { - throw new TypeError( - 'getPrompt: prompt.removeAllListeners is not a function' - ); - } - - if (typeof prompt.command !== 'function') { - throw new TypeError('getPrompt: prompt.command is not a function'); - } - - if (typeof prompt.catch !== 'function') { - throw new TypeError('getPrompt: prompt.catch is not a function'); - } - - if (typeof prompt.addListener !== 'function') { - throw new TypeError('getPrompt: prompt.addListener is not a function'); - } - - if (typeof prompt.log !== 'function') { - throw new TypeError('getPrompt: prompt.log is not a function'); - } - - if (typeof prompt.delimiter !== 'function') { - throw new TypeError('getPrompt: prompt.delimiter is not a function'); - } - - if (typeof prompt.show !== 'function') { - throw new TypeError('getPrompt: prompt.show is not a function'); - } - - const enumRule = rules.filter(getHasName('enum')).find(enumRuleIsActive); - - const emptyRule = rules.find(getHasName('empty')); - - const mustBeEmpty = - emptyRule && ruleIsActive(emptyRule) && ruleIsApplicable(emptyRule); + type: ResultPart, + rules: RuleEntry[] = [], + settings: InputSetting = {}, +): InputCustomOptions<Result> | null { + const emptyRule = rules.filter(getHasName("empty")).find(ruleIsActive); - const mayNotBeEmpty = - emptyRule && ruleIsActive(emptyRule) && ruleIsNotApplicable(emptyRule); - - const mayBeEmpty = !mayNotBeEmpty; + const mustBeEmpty = emptyRule ? ruleIsApplicable(emptyRule) : false; if (mustBeEmpty) { - prompt.removeAllListeners('keypress'); - prompt.removeAllListeners('client_prompt_submit'); - prompt.ui.redraw.done(); - return Promise.resolve(undefined); + return null; } - const caseRule = rules.find(getHasName('case')); - - const forceCaseFn = getForcedCaseFn(caseRule); + const required = emptyRule ? ruleIsNotApplicable(emptyRule) : false; - const leadingBlankRule = rules.find(getHasName('leading-blank')); + const forceCaseFn = getForcedCaseFn(rules.find(getHasName("case"))); + const forceLeadingBlankFn = getForcedLeadingFn( + rules.find(getHasName("leading-blank")), + ); - const forceLeadingBlankFn = getForcedLeadingFn(leadingBlankRule); - - const maxLengthRule = rules.find(getHasName('max-length')); + const maxLengthRule = rules.find(getHasName("max-length")); const inputMaxLength = getMaxLength(maxLengthRule); - const headerLength = settings.header ? settings.header.length : Infinity; - - const remainingHeaderLength = headerLength - ? headerLength - - [ - results.type, - results.scope, - results.scope ? '()' : '', - results.type && results.scope ? ':' : '', - results.subject, - ].join('').length - : Infinity; + const enumRule = rules.filter(getHasName("enum")).find(enumRuleIsActive); - const maxLength = Math.min(inputMaxLength, remainingHeaderLength); - - return new Promise((resolve) => { - // Add the defined enums as sub commands if applicable - if (enumRule) { - const [, [, , enums]] = enumRule; - - enums.forEach((enumerable) => { + const tabCompletion = enumRule + ? enumRule[1][2].map((enumerable) => { const enumSettings = (settings.enumerables || {})[enumerable] || {}; - prompt - .command(enumerable) - .description(enumSettings.description || '') - .action(() => { - prompt.removeAllListeners(); - prompt.ui.redraw.done(); - return resolve(forceLeadingBlankFn(forceCaseFn(enumerable))); - }); - }); - } else { - prompt.catch('[text...]').action((parameters) => { - const {text = ''} = parameters; - prompt.removeAllListeners(); - prompt.ui.redraw.done(); - return resolve(forceLeadingBlankFn(forceCaseFn(text.join(' ')))); + return { + value: forceLeadingBlankFn(forceCaseFn(enumerable)), + description: enumSettings.description || "", + }; + }) + : []; + + const maxLength = (res: Result) => { + let remainingHeaderLength = Infinity; + if (settings.header && settings.header.length) { + const header = format({ + type: res.type, + scope: res.scope, + subject: res.subject, }); + remainingHeaderLength = settings.header.length - header.length; } - - if (mayBeEmpty) { - // Add an easy exit command - prompt - .command(':skip') - .description('Skip the input if possible.') - .action(() => { - prompt.removeAllListeners(); - prompt.ui.redraw.done(); - resolve(''); - }); - } - - // Handle empty input - const onSubmit = (input: string) => { - if (input.length > 0) { - return; + return Math.min(inputMaxLength, remainingHeaderLength); + }; + + return { + type: "input-custom", + name: type, + message: `${type}:`, + validate(input, answers) { + if (input.length > maxLength(answers || {})) { + return "Input contains too many characters!"; } - - // Show help if enum is defined and input may not be empty - if (mayNotBeEmpty) { - prompt.ui.log(chalk.yellow(`⚠ ${chalk.bold(type)} may not be empty.`)); - } - - if (mayBeEmpty) { - prompt.ui.log( - chalk.blue( - `ℹ Enter ${chalk.bold(':skip')} to omit ${chalk.bold(type)}.` - ) - ); + if (required && input.trim().length === 0) { + // Show help if enum is defined and input may not be empty + return `⚠ ${chalk.bold(type)} may not be empty.`; } - if (enumRule) { - prompt.exec('help'); + const tabValues = tabCompletion.map((item) => item.value); + if ( + input.length > 0 && + tabValues.length > 0 && + !tabValues.includes(input) + ) { + return `⚠ ${chalk.bold(type)} must be one of ${tabValues.join(", ")}.`; } - }; - - const drawRemaining = (length: number) => { - if (length < Infinity) { - const colors = [ - { - threshold: 5, - color: chalk.red, - }, - { - threshold: 10, - color: chalk.yellow, - }, - { - threshold: Infinity, - color: chalk.grey, - }, - ]; - - const el = colors.find((item) => item.threshold >= length); - const color = el ? el.color : chalk.grey; - prompt.ui.redraw(color(`${length} characters left`)); + return true; + }, + tabCompletion, + log(answers?: Result) { + let prefix = + `${chalk.white("Please enter a")} ${chalk.bold(type)}: ${meta({ + optional: !required, + required: required, + "tab-completion": typeof enumRule !== "undefined", + header: typeof settings.header !== "undefined", + "multi-line": settings.multiline, + })}` + EOL; + + if (settings.description) { + prefix += chalk.grey(`${settings.description}`) + EOL; } - }; - - const onKey = (event: {value: string}) => { - const sanitized = forceCaseFn(event.value); - const cropped = sanitized.slice(0, maxLength); - - // We **could** do live editing, but there are some quirks to solve - /* const live = merge({}, results, { - [type]: cropped - }); - prompt.ui.redraw(`\n\n${format(live, true)}\n\n`); */ - - if (maxLength) { - drawRemaining(maxLength - cropped.length); + if (answers) { + prefix += EOL + `${format(answers, true)}` + EOL; } - prompt.ui.input(cropped); - }; - - prompt.addListener('keypress', onKey); - prompt.addListener('client_prompt_submit', onSubmit); - - prompt.log( - `\n\nPlease enter a ${chalk.bold(type)}: ${meta({ - optional: !mayNotBeEmpty, - required: mayNotBeEmpty, - 'tab-completion': typeof enumRule !== 'undefined', - header: typeof settings.header !== 'undefined', - 'multi-line': settings.multiline, - })}` - ); - - if (settings.description) { - prompt.log(chalk.grey(`${settings.description}\n`)); - } - - prompt.log(`\n\n${format(results, true)}\n\n`); - - drawRemaining(maxLength); - - prompt.delimiter(`❯ ${type}:`).show(); - }); + return prefix + EOL; + }, + maxLength, + transformer(value: string) { + return forceCaseFn(value); + }, + forceLeadingBlankFn, + }; } diff --git a/@commitlint/prompt/src/library/meta.ts b/@commitlint/prompt/src/library/meta.ts index 61c9a412eb..b361364a07 100644 --- a/@commitlint/prompt/src/library/meta.ts +++ b/@commitlint/prompt/src/library/meta.ts @@ -1,4 +1,4 @@ -import chalk from 'chalk'; +import chalk from "chalk"; /** * Get formatted meta hints for configuration @@ -11,8 +11,8 @@ export default function meta(settings: Record<string, unknown>): string { .filter((item) => item[1]) .map((item) => { const [name, value] = item; - return typeof value === 'boolean' ? `[${name}]` : `[${name}=${value}]`; + return typeof value === "boolean" ? `[${name}]` : `[${name}=${value}]`; }) - .join(' ') + .join(" "), ); } diff --git a/@commitlint/prompt/src/library/types.ts b/@commitlint/prompt/src/library/types.ts index 0f05c3cd6f..65b8bc3ad9 100644 --- a/@commitlint/prompt/src/library/types.ts +++ b/@commitlint/prompt/src/library/types.ts @@ -1,4 +1,7 @@ -import {RuleConfigCondition, RuleConfigSeverity} from '@commitlint/types'; +import type { + RuleConfigCondition, + RuleConfigSeverity, +} from "@commitlint/types"; export type RuleEntry = | [string, Readonly<[RuleConfigSeverity.Disabled]>] @@ -19,37 +22,6 @@ export type InputSetting = { }; }; -export type Result = Partial< - Record<'type' | 'scope' | 'subject' | 'body' | 'footer', null | string> ->; +export type ResultPart = "type" | "scope" | "subject" | "body" | "footer"; -export interface PrompterCommand { - description(value: string): this; - action( - action: (args: { - [key: string]: any; - options: { - [key: string]: any; - }; - }) => Promise<void> | void - ): this; -} - -export interface Prompter { - delimiter(value: string): this; - show(): this; - exec(command: string): Promise<any>; - log(text?: string): void; - catch(command: string, description?: string): PrompterCommand; - command(command: string, description?: string): PrompterCommand; - removeAllListeners(input?: string): void; - addListener(input: string, cb: (event: any) => void): void; - ui: { - log(text?: string): void; - input(text?: string): string; - redraw: { - (text: string, ...texts: string[]): void; - done(): void; - }; - }; -} +export type Result = Partial<Record<ResultPart, string | undefined>>; diff --git a/@commitlint/prompt/src/library/utils.test.ts b/@commitlint/prompt/src/library/utils.test.ts index 3d69313456..96f1ae6d6f 100644 --- a/@commitlint/prompt/src/library/utils.test.ts +++ b/@commitlint/prompt/src/library/utils.test.ts @@ -1,4 +1,9 @@ -import {RuleConfigSeverity} from '@commitlint/types'; +import { test, expect } from "vitest"; +import { + RuleConfigQuality, + RuleConfigSeverity, + RulesConfig, +} from "@commitlint/types"; import { enumRuleIsActive, @@ -8,115 +13,118 @@ import { getRulePrefix, getRules, ruleIsActive, -} from './utils'; +} from "./utils.js"; -test('getRulePrefix', () => { - expect(getRulePrefix('body-leading-blank')).toEqual('body'); - expect(getRulePrefix('body-max-line-length')).toEqual('body'); - expect(getRulePrefix('footer-leading-blank')).toEqual('footer'); - expect(getRulePrefix('footer-max-line-length')).toEqual('footer'); - expect(getRulePrefix('header-max-length')).toEqual('header'); - expect(getRulePrefix('scope-case')).toEqual('scope'); - expect(getRulePrefix('scope-enum')).toEqual('scope'); - expect(getRulePrefix('subject-case')).toEqual('subject'); - expect(getRulePrefix('subject-empty')).toEqual('subject'); - expect(getRulePrefix('subject-full-stop')).toEqual('subject'); - expect(getRulePrefix('type-case')).toEqual('type'); - expect(getRulePrefix('type-empty')).toEqual('type'); - expect(getRulePrefix('type-enum')).toEqual('type'); +test("getRulePrefix", () => { + expect(getRulePrefix("body-leading-blank")).toEqual("body"); + expect(getRulePrefix("body-max-line-length")).toEqual("body"); + expect(getRulePrefix("footer-leading-blank")).toEqual("footer"); + expect(getRulePrefix("footer-max-line-length")).toEqual("footer"); + expect(getRulePrefix("header-max-length")).toEqual("header"); + expect(getRulePrefix("scope-case")).toEqual("scope"); + expect(getRulePrefix("scope-enum")).toEqual("scope"); + expect(getRulePrefix("subject-case")).toEqual("subject"); + expect(getRulePrefix("subject-empty")).toEqual("subject"); + expect(getRulePrefix("subject-full-stop")).toEqual("subject"); + expect(getRulePrefix("type-case")).toEqual("type"); + expect(getRulePrefix("type-empty")).toEqual("type"); + expect(getRulePrefix("type-enum")).toEqual("type"); }); -test('getRuleName', () => { - expect(getRuleName('body-leading-blank')).toEqual('leading-blank'); - expect(getRuleName('body-max-line-length')).toEqual('max-line-length'); - expect(getRuleName('footer-leading-blank')).toEqual('leading-blank'); - expect(getRuleName('footer-max-line-length')).toEqual('max-line-length'); - expect(getRuleName('header-max-length')).toEqual('max-length'); - expect(getRuleName('scope-case')).toEqual('case'); - expect(getRuleName('scope-enum')).toEqual('enum'); - expect(getRuleName('subject-case')).toEqual('case'); - expect(getRuleName('subject-empty')).toEqual('empty'); - expect(getRuleName('subject-full-stop')).toEqual('full-stop'); - expect(getRuleName('type-case')).toEqual('case'); - expect(getRuleName('type-empty')).toEqual('empty'); - expect(getRuleName('type-enum')).toEqual('enum'); +test("getRuleName", () => { + expect(getRuleName("body-leading-blank")).toEqual("leading-blank"); + expect(getRuleName("body-max-line-length")).toEqual("max-line-length"); + expect(getRuleName("footer-leading-blank")).toEqual("leading-blank"); + expect(getRuleName("footer-max-line-length")).toEqual("max-line-length"); + expect(getRuleName("header-max-length")).toEqual("max-length"); + expect(getRuleName("scope-case")).toEqual("case"); + expect(getRuleName("scope-enum")).toEqual("enum"); + expect(getRuleName("subject-case")).toEqual("case"); + expect(getRuleName("subject-empty")).toEqual("empty"); + expect(getRuleName("subject-full-stop")).toEqual("full-stop"); + expect(getRuleName("type-case")).toEqual("case"); + expect(getRuleName("type-empty")).toEqual("empty"); + expect(getRuleName("type-enum")).toEqual("enum"); }); -test('ruleIsActive', () => { - expect(ruleIsActive(['', [RuleConfigSeverity.Error, 'always', 100]])).toBe( - true +test("ruleIsActive", () => { + expect(ruleIsActive(["", [RuleConfigSeverity.Error, "always", 100]])).toBe( + true, ); - expect(ruleIsActive(['', [RuleConfigSeverity.Warning, 'never', 100]])).toBe( - true + expect(ruleIsActive(["", [RuleConfigSeverity.Warning, "never", 100]])).toBe( + true, ); - expect(ruleIsActive(['', [RuleConfigSeverity.Disabled, 'always', 100]])).toBe( - false + expect(ruleIsActive(["", [RuleConfigSeverity.Disabled, "always", 100]])).toBe( + false, ); - expect(ruleIsActive(['', [RuleConfigSeverity.Error]] as any)).toBe(true); + expect(ruleIsActive(["", [RuleConfigSeverity.Error]] as any)).toBe(true); }); -test('getMaxLength', () => { - expect(getMaxLength(['', [RuleConfigSeverity.Error, 'always', 100]])).toBe( - 100 +test("getMaxLength", () => { + expect(getMaxLength(["", [RuleConfigSeverity.Error, "always", 100]])).toBe( + 100, ); - expect(getMaxLength(['', [RuleConfigSeverity.Warning, 'never', 100]])).toBe( - Infinity + expect(getMaxLength(["", [RuleConfigSeverity.Warning, "never", 100]])).toBe( + Infinity, ); - expect(getMaxLength(['', [RuleConfigSeverity.Disabled, 'always', 100]])).toBe( - Infinity + expect(getMaxLength(["", [RuleConfigSeverity.Disabled, "always", 100]])).toBe( + Infinity, ); - expect(getMaxLength(['', [RuleConfigSeverity.Error, 100]] as any)).toBe( - Infinity + expect(getMaxLength(["", [RuleConfigSeverity.Error, 100]] as any)).toBe( + Infinity, ); const rules: any = { - 'body-max-line-length': [2, 'always', 100], - 'header-max-length': [2, 'always', 100], - 'test-max-length': [RuleConfigSeverity.Disabled, 'always', 100], + "body-max-line-length": [RuleConfigSeverity.Error, "always", 100], + "header-max-length": [RuleConfigSeverity.Error, "always", 100], + "test-max-length": [RuleConfigSeverity.Disabled, "always", 100], }; - let lengthRule = getRules('header', rules).find(getHasName('max-length')); + let lengthRule = getRules("header", rules).find(getHasName("max-length")); expect(getMaxLength(lengthRule)).toBe(100); - lengthRule = getRules('body', rules).find(getHasName('max-length')); + lengthRule = getRules("body", rules).find(getHasName("max-length")); expect(getMaxLength(lengthRule)).toBe(Infinity); - lengthRule = getRules('test', rules).find(getHasName('max-length')); + lengthRule = getRules("test", rules).find(getHasName("max-length")); expect(getMaxLength(lengthRule)).toBe(Infinity); }); -test('check enum rule filters', () => { - const rules: any = { - 'enum-string': [RuleConfigSeverity.Warning, 'always', ['1', '2', '3']], - 'type-enum': [RuleConfigSeverity.Error, 'always', ['build', 'chore', 'ci']], - 'scope-enum': [RuleConfigSeverity.Error, 'never', ['cli', 'core', 'lint']], - 'bar-enum': [RuleConfigSeverity.Disabled, 'always', ['foo', 'bar', 'baz']], +test("check enum rule filters", () => { + const rules: Partial<RulesConfig<RuleConfigQuality.Qualified>> = { + "enum-string": [RuleConfigSeverity.Warning, "always", ["1", "2", "3"]], + "type-enum": [RuleConfigSeverity.Error, "always", ["build", "chore", "ci"]], + "scope-enum": [RuleConfigSeverity.Error, "never", ["cli", "core", "lint"]], + "bar-enum": [RuleConfigSeverity.Disabled, "always", ["foo", "bar", "baz"]], }; - let enumRule = getRules('type', rules) - .filter(getHasName('enum')) + let enumRule = getRules("type", rules) + .filter(getHasName("enum")) .find(enumRuleIsActive); expect(enumRule).toEqual([ - 'type-enum', - [2, 'always', ['build', 'chore', 'ci']], + "type-enum", + [RuleConfigSeverity.Error, "always", ["build", "chore", "ci"]], ]); - enumRule = getRules('string', rules) - .filter(getHasName('enum')) + enumRule = getRules("string", rules) + .filter(getHasName("enum")) .find(enumRuleIsActive); expect(enumRule).toEqual(undefined); - enumRule = getRules('enum', rules) - .filter(getHasName('string')) + enumRule = getRules("enum", rules) + .filter(getHasName("string")) .find(enumRuleIsActive); - expect(enumRule).toEqual(['enum-string', [1, 'always', ['1', '2', '3']]]); + expect(enumRule).toEqual([ + "enum-string", + [RuleConfigSeverity.Warning, "always", ["1", "2", "3"]], + ]); - enumRule = getRules('bar', rules) - .filter(getHasName('enum')) + enumRule = getRules("bar", rules) + .filter(getHasName("enum")) .find(enumRuleIsActive); expect(enumRule).toEqual(undefined); - enumRule = getRules('scope', rules) - .filter(getHasName('enum')) + enumRule = getRules("scope", rules) + .filter(getHasName("enum")) .find(enumRuleIsActive); expect(enumRule).toEqual(undefined); }); diff --git a/@commitlint/prompt/src/library/utils.ts b/@commitlint/prompt/src/library/utils.ts index 4eb6e74d73..aaca4e2004 100644 --- a/@commitlint/prompt/src/library/utils.ts +++ b/@commitlint/prompt/src/library/utils.ts @@ -1,5 +1,7 @@ -import {QualifiedRules, RuleConfigSeverity} from '@commitlint/types'; -import {RuleEntry} from './types'; +import { RuleConfigSeverity } from "@commitlint/types"; +import type { QualifiedRules } from "@commitlint/types"; + +import type { RuleEntry } from "./types.js"; /** * Get name for a given rule id @@ -7,8 +9,8 @@ import {RuleEntry} from './types'; * @return name of the rule */ export function getRuleName(id: string): string { - const fragments = id.split('-'); - return fragments.length > 1 ? fragments.slice(1).join('-') : fragments[0]; + const fragments = id.split("-"); + return fragments.length > 1 ? fragments.slice(1).join("-") : fragments[0]; } /** @@ -17,7 +19,7 @@ export function getRuleName(id: string): string { * @return prefix of the rule */ export function getRulePrefix(id: string): string | null { - const fragments = id.split('-'); + const fragments = id.split("-"); return fragments.length > 1 ? fragments[0] : null; } @@ -26,7 +28,7 @@ export function getRulePrefix(id: string): string | null { */ export function getHasName(name: string) { return <T extends RuleEntry>( - rule: RuleEntry + rule: RuleEntry, ): rule is Exclude<T, [string, undefined]> => getRuleName(rule[0]) === name; } @@ -36,7 +38,7 @@ export function getHasName(name: string) { * @return if the rule definition is active */ export function ruleIsActive<T extends RuleEntry>( - rule: T + rule: T, ): rule is Exclude<T, [string, Readonly<[RuleConfigSeverity.Disabled]>]> { const [, value] = rule; if (value && Array.isArray(value)) { @@ -51,13 +53,13 @@ export function ruleIsActive<T extends RuleEntry>( * @return if the rule definition is applicable */ export function ruleIsApplicable( - rule: RuleEntry + rule: RuleEntry, ): rule is - | [string, Readonly<[RuleConfigSeverity, 'always']>] - | [string, Readonly<[RuleConfigSeverity, 'always', unknown]>] { + | [string, Readonly<[RuleConfigSeverity, "always"]>] + | [string, Readonly<[RuleConfigSeverity, "always", unknown]>] { const [, value] = rule; if (value && Array.isArray(value)) { - return value[1] === 'always'; + return value[1] === "always"; } return false; } @@ -68,24 +70,24 @@ export function ruleIsApplicable( * @return if the rule definition is applicable */ export function ruleIsNotApplicable( - rule: RuleEntry + rule: RuleEntry, ): rule is - | [string, Readonly<[RuleConfigSeverity, 'never']>] - | [string, Readonly<[RuleConfigSeverity, 'never', unknown]>] { + | [string, Readonly<[RuleConfigSeverity, "never"]>] + | [string, Readonly<[RuleConfigSeverity, "never", unknown]>] { const [, value] = rule; if (value && Array.isArray(value)) { - return value[1] === 'never'; + return value[1] === "never"; } return false; } export function enumRuleIsActive( - rule: RuleEntry + rule: RuleEntry, ): rule is [ string, Readonly< - [RuleConfigSeverity.Warning | RuleConfigSeverity.Error, 'always', string[]] - > + [RuleConfigSeverity.Warning | RuleConfigSeverity.Error, "always", string[]] + >, ] { return ( ruleIsActive(rule) && @@ -103,7 +105,7 @@ export function enumRuleIsActive( */ export function getRules(prefix: string, rules: QualifiedRules): RuleEntry[] { return Object.entries(rules).filter( - (rule): rule is RuleEntry => getRulePrefix(rule[0]) === prefix + (rule): rule is RuleEntry => getRulePrefix(rule[0]) === prefix, ); } @@ -112,7 +114,7 @@ export function getMaxLength(rule?: RuleEntry): number { rule && ruleIsActive(rule) && ruleIsApplicable(rule) && - typeof rule[1][2] === 'number' + typeof rule[1][2] === "number" ) { return rule[1][2]; } diff --git a/@commitlint/prompt/src/settings.ts b/@commitlint/prompt/src/settings.ts index 8c80f14247..a85a9a5394 100644 --- a/@commitlint/prompt/src/settings.ts +++ b/@commitlint/prompt/src/settings.ts @@ -1,56 +1,56 @@ export default { type: { - description: '<type> holds information about the goal of a change.', + description: "<type> holds information about the goal of a change.", enumerables: { feat: { - description: 'Adds a new feature.', + description: "Adds a new feature.", }, fix: { - description: 'Solves a bug.', + description: "Solves a bug.", }, chore: { description: "Other changes that don't modify src or test files", }, docs: { - description: 'Adds or alters documentation.', + description: "Adds or alters documentation.", }, style: { - description: 'Improves formatting, white-space.', + description: "Improves formatting, white-space.", }, refactor: { description: - 'Rewrites code without feature, performance or bug changes.', + "Rewrites code without feature, performance or bug changes.", }, perf: { - description: 'Improves performance.', + description: "Improves performance.", }, test: { - description: 'Adds or modifies tests.', + description: "Adds or modifies tests.", }, build: { - description: 'Affects the build system or external dependencies.', + description: "Affects the build system or external dependencies.", }, ci: { - description: 'Changes CI configuration files and scripts.', + description: "Changes CI configuration files and scripts.", }, revert: { - description: 'Reverts a previous commit.', + description: "Reverts a previous commit.", }, }, }, scope: { - description: '<scope> marks which sub-component of the project is affected', + description: "<scope> marks which sub-component of the project is affected", }, subject: { - description: '<subject> is a short, high-level description of the change', + description: "<subject> is a short, high-level description of the change", }, body: { - description: '<body> holds additional information about the change', + description: "<body> holds additional information about the change", multiline: true, }, footer: { description: - '<footer> holds further meta data, such as breaking changes and issue ids', + "<footer> holds further meta data, such as breaking changes and issue ids", multiline: true, }, }; diff --git a/@commitlint/prompt/tsconfig.json b/@commitlint/prompt/tsconfig.json index 2a6d93a0fa..52e48f310a 100644 --- a/@commitlint/prompt/tsconfig.json +++ b/@commitlint/prompt/tsconfig.json @@ -7,5 +7,5 @@ }, "include": ["./src"], "exclude": ["./src/**/*.test.ts", "./lib/**/*"], - "references": [{"path": "../cli"}] + "references": [{ "path": "../types" }, { "path": "../load" }] } diff --git a/@commitlint/read/CHANGELOG.md b/@commitlint/read/CHANGELOG.md index f93e9103c3..60f0f234b0 100644 --- a/@commitlint/read/CHANGELOG.md +++ b/@commitlint/read/CHANGELOG.md @@ -3,7 +3,7 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. -# [13.1.0](https://github.com/conventional-changelog/commitlint/compare/v13.0.0...v13.1.0) (2021-07-24) +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) **Note:** Version bump only for package @commitlint/read @@ -11,40 +11,48 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) +## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) -* chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) +### Bug Fixes +* update dependency tinyexec to v1 ([#4332](https://github.com/conventional-changelog/commitlint/issues/4332)) ([e49449f](https://github.com/conventional-changelog/commitlint/commit/e49449fa9452069cdbf194f94d536194d362a299)) -### BREAKING CHANGES -* minimum node version is 12 +# [19.8.0](https://github.com/conventional-changelog/commitlint/compare/v19.7.1...v19.8.0) (2025-03-07) -## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) +### Performance Improvements +* use `node:` prefix to bypass require.cache call for builtins ([#4302](https://github.com/conventional-changelog/commitlint/issues/4302)) ([0cd8f41](https://github.com/conventional-changelog/commitlint/commit/0cd8f410573fe11383f788b1ceb7e0946143591d)) -### Bug Fixes -* update dependency fs-extra to v10 ([#2575](https://github.com/conventional-changelog/commitlint/issues/2575)) ([d47d2b5](https://github.com/conventional-changelog/commitlint/commit/d47d2b595b980adadd4fb8ff198c1914caeff18f)) +# [19.5.0](https://github.com/conventional-changelog/commitlint/compare/v19.4.1...v19.5.0) (2024-09-11) +**Note:** Version bump only for package @commitlint/read -## [12.1.2](https://github.com/conventional-changelog/commitlint/compare/v12.1.1...v12.1.2) (2021-04-29) -**Note:** Version bump only for package @commitlint/read +# [19.4.0](https://github.com/conventional-changelog/commitlint/compare/v19.3.1...v19.4.0) (2024-08-07) -## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) +### Features + +* support linting from the last tag ([#4110](https://github.com/conventional-changelog/commitlint/issues/4110)) ([4b204ec](https://github.com/conventional-changelog/commitlint/commit/4b204ecfb43dd6a00e24b51111aadbd78f9d58e1)) + + + + + +## [19.2.1](https://github.com/conventional-changelog/commitlint/compare/v19.2.0...v19.2.1) (2024-03-19) **Note:** Version bump only for package @commitlint/read @@ -52,7 +60,18 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [12.1.0](https://github.com/conventional-changelog/commitlint/compare/v12.0.1...v12.1.0) (2021-03-06) +# [19.2.0](https://github.com/conventional-changelog/commitlint/compare/v19.1.0...v19.2.0) (2024-03-15) + + +### Features + +* **cli:** introduce new --last flag, to stop recommending HEAD~1 ([#3916](https://github.com/conventional-changelog/commitlint/issues/3916)) ([99f4f3f](https://github.com/conventional-changelog/commitlint/commit/99f4f3f4839190a2758083df7ba20b988e7b68a6)) + + + + + +## [19.0.3](https://github.com/conventional-changelog/commitlint/compare/v19.0.2...v19.0.3) (2024-02-28) **Note:** Version bump only for package @commitlint/read @@ -60,7 +79,70 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) +# [19.0.0](https://github.com/conventional-changelog/commitlint/compare/v18.6.2...v19.0.0) (2024-02-27) + + +* feat!: migrate to pure ESM (#3850) ([3423735](https://github.com/conventional-changelog/commitlint/commit/342373559bdf7c783c4ef37ff05dc38a5f681159)), closes [#3850](https://github.com/conventional-changelog/commitlint/issues/3850) + + +### Reverts + +* Revert "chore!: minimum node version v20" ([2816783](https://github.com/conventional-changelog/commitlint/commit/2816783d00e7eb967de3ac9347c2fc43dc8b94fa)) + + +### BREAKING CHANGES + +* migrate to pure ESM + +* feat: migrate to pure ESM + +* chore: update snapshot + +* fix: load `parserPreset` with another `await` + +* test: migrate to vitest + +* test: remove no replacement `--runInBand` test-ci script + +* chore: fix code reviews + +* refactor(load): rewrite resolve logic + +* fix(config-nx-scopes): fix syntax error + +* feat(resolve-extends): add resolveFrom and loadParserPreset + +* feat(load): use resolveFrom and loadParserPreset from resolve-extends + +* test: include only @commitlint/* packages src in coverage + +* test: explicit import vitest utilities + +* test: remove @jest/globals from dependencies + +* fix(resolve-extends): `resolveFrom` output should be platform aware + +* test: restore NO_COLOR to test script + +* chore: fix linting issues + +* fix: should use fileURLToPath instead of pathname for Windows compatibility + +* Apply suggestions from code review + +* fix: should reuse `cli` instead call `yargs()` + +* feat(cli): set terminalWidth as wrap to avoid work break on help + +* Update .eslintrc.cjs + +* feat: migrate @commitlint/config-conventional to pure ESM + + + + + +## [18.6.1](https://github.com/conventional-changelog/commitlint/compare/v18.6.0...v18.6.1) (2024-02-13) **Note:** Version bump only for package @commitlint/read @@ -68,7 +150,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) +# [18.6.0](https://github.com/conventional-changelog/commitlint/compare/v18.5.1...v18.6.0) (2024-01-25) **Note:** Version bump only for package @commitlint/read @@ -76,45 +158,72 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) +## [18.4.4](https://github.com/conventional-changelog/commitlint/compare/v18.4.3...v18.4.4) (2024-01-04) ### Bug Fixes -* update dependency @types/fs-extra to ^9.0.1 ([#2088](https://github.com/conventional-changelog/commitlint/issues/2088)) ([cb1028e](https://github.com/conventional-changelog/commitlint/commit/cb1028ef2700d86991c69a1e2ad391bc1bdc9d90)) +* **read:** remove fs-extra usage and use fs/promises ([#3803](https://github.com/conventional-changelog/commitlint/issues/3803)) ([714be66](https://github.com/conventional-changelog/commitlint/commit/714be668c104c554c66e866e53addd04944544f6)) -# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) +## [18.4.3](https://github.com/conventional-changelog/commitlint/compare/v18.4.2...v18.4.3) (2023-11-21) + +**Note:** Version bump only for package @commitlint/read -### Bug Fixes -* update dependency fs-extra to v9 ([#1018](https://github.com/conventional-changelog/commitlint/issues/1018)) ([2df49fa](https://github.com/conventional-changelog/commitlint/commit/2df49fac907993ae78199a1012e918b0e2ff5621)) -* refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) +# [18.4.0](https://github.com/conventional-changelog/commitlint/compare/v18.3.0...v18.4.0) (2023-11-10) + +**Note:** Version bump only for package @commitlint/read + + + + + +# [18.1.0](https://github.com/conventional-changelog/commitlint/compare/v18.0.0...v18.1.0) (2023-10-25) + +**Note:** Version bump only for package @commitlint/read + + + + + +# [18.0.0](https://github.com/conventional-changelog/commitlint/compare/v17.8.1...v18.0.0) (2023-10-20) + + +* chore!: minimum node version v18 (#3644) ([5b4aeaf](https://github.com/conventional-changelog/commitlint/commit/5b4aeaf4f01c2726a7bc8631a23bb34c849baad2)), closes [#3644](https://github.com/conventional-changelog/commitlint/issues/3644) ### BREAKING CHANGES -* remove node 8 from circle-ci checks +* drop node v14 and v16 support -also remove node 13 because we do not support experimental versions +* chore: remove unused types -* docs: update node v10 to latest LTS 10 version +* docs: prepare node update and new release -Co-authored-by: Cedric van Putten <me@bycedric.com> +* chore!: minimum TS version v5 +* drop TS v4 support -Co-authored-by: Cedric van Putten <me@bycedric.com> +* ci: remove node v14/16 checks +* chore: adjust node types to minimal supported version +* chore!: further major versions of other deps +* upgrade conventional-changelog-conventionalcommits, conventional-commits-parser, conventional-changelog-atom, +* docs: simplify releases and remove roadmap -## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) + + + +## [17.8.1](https://github.com/conventional-changelog/commitlint/compare/v17.8.0...v17.8.1) (2023-10-20) **Note:** Version bump only for package @commitlint/read @@ -122,7 +231,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) +## [17.5.1](https://github.com/conventional-changelog/commitlint/compare/v17.5.0...v17.5.1) (2023-03-28) **Note:** Version bump only for package @commitlint/read @@ -130,7 +239,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) +## [17.4.4](https://github.com/conventional-changelog/commitlint/compare/v17.4.3...v17.4.4) (2023-02-17) **Note:** Version bump only for package @commitlint/read @@ -138,112 +247,206 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) +## [17.4.2](https://github.com/conventional-changelog/commitlint/compare/v17.4.1...v17.4.2) (2023-01-12) -**Note:** Version bump only for package @commitlint/read +### Bug Fixes +* update dependency @types/fs-extra to v11 ([#3494](https://github.com/conventional-changelog/commitlint/issues/3494)) ([8f553c7](https://github.com/conventional-changelog/commitlint/commit/8f553c7603e3ee0f435d878e396eec899a213de8)) -# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) + + +# [17.4.0](https://github.com/conventional-changelog/commitlint/compare/v17.3.0...v17.4.0) (2023-01-04) + +### Bug Fixes + +- update dependency fs-extra to v11 ([#3460](https://github.com/conventional-changelog/commitlint/issues/3460)) ([a437923](https://github.com/conventional-changelog/commitlint/commit/a43792388e0d9707da770b26592c5e31553384a1)) + +# [17.2.0](https://github.com/conventional-changelog/commitlint/compare/v17.1.2...v17.2.0) (2022-10-31) **Note:** Version bump only for package @commitlint/read +# [17.1.0](https://github.com/conventional-changelog/commitlint/compare/v17.0.3...v17.1.0) (2022-08-27) +### Features +- **commitlint:** add additional git log args ([#3334](https://github.com/conventional-changelog/commitlint/issues/3334)) ([229c65b](https://github.com/conventional-changelog/commitlint/commit/229c65b60f15c15da5f5b11deb555d1f557c673a)) +# [17.0.0](https://github.com/conventional-changelog/commitlint/compare/v16.3.0...v17.0.0) (2022-05-16) -## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) +- chore!: minimum node version v14 (#3128) ([ac5f9b4](https://github.com/conventional-changelog/commitlint/commit/ac5f9b47a9e3cd5c9d58b14da0feb426f06b1ef9)), closes [#3128](https://github.com/conventional-changelog/commitlint/issues/3128) + +### BREAKING CHANGES + +- drop node v12 support + +- chore: rename circleci windows job + +node version is not defned by the name anyways (i think) + +## [16.2.1](https://github.com/conventional-changelog/commitlint/compare/v16.2.0...v16.2.1) (2022-02-13) + +**Note:** Version bump only for package @commitlint/read + +# [16.0.0](https://github.com/conventional-changelog/commitlint/compare/v15.0.0...v16.0.0) (2021-12-26) **Note:** Version bump only for package @commitlint/read +# [15.0.0](https://github.com/conventional-changelog/commitlint/compare/v14.2.0...v15.0.0) (2021-11-17) +**Note:** Version bump only for package @commitlint/read +# [14.0.0](https://github.com/conventional-changelog/commitlint/compare/v13.2.1...v14.0.0) (2021-10-26) +**Note:** Version bump only for package @commitlint/read -# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) +# [13.2.0](https://github.com/conventional-changelog/commitlint/compare/v13.1.0...v13.2.0) (2021-09-28) **Note:** Version bump only for package @commitlint/read +# [13.1.0](https://github.com/conventional-changelog/commitlint/compare/v13.0.0...v13.1.0) (2021-07-24) +**Note:** Version bump only for package @commitlint/read +# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) +- chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) -# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) +### BREAKING CHANGES + +- minimum node version is 12 + +## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) + +### Bug Fixes + +- update dependency fs-extra to v10 ([#2575](https://github.com/conventional-changelog/commitlint/issues/2575)) ([d47d2b5](https://github.com/conventional-changelog/commitlint/commit/d47d2b595b980adadd4fb8ff198c1914caeff18f)) + +## [12.1.2](https://github.com/conventional-changelog/commitlint/compare/v12.1.1...v12.1.2) (2021-04-29) **Note:** Version bump only for package @commitlint/read +## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) +**Note:** Version bump only for package @commitlint/read +# [12.1.0](https://github.com/conventional-changelog/commitlint/compare/v12.0.1...v12.1.0) (2021-03-06) +**Note:** Version bump only for package @commitlint/read -# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) +## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) **Note:** Version bump only for package @commitlint/read +# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) +**Note:** Version bump only for package @commitlint/read +# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) +### Bug Fixes -# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) +- update dependency @types/fs-extra to ^9.0.1 ([#2088](https://github.com/conventional-changelog/commitlint/issues/2088)) ([cb1028e](https://github.com/conventional-changelog/commitlint/commit/cb1028ef2700d86991c69a1e2ad391bc1bdc9d90)) +# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) ### Bug Fixes -* use sander.readFile correctly ([#448](https://github.com/conventional-changelog/commitlint/issues/448)) ([#630](https://github.com/conventional-changelog/commitlint/issues/630)) ([8e47985](https://github.com/conventional-changelog/commitlint/commit/8e47985)) +- update dependency fs-extra to v9 ([#1018](https://github.com/conventional-changelog/commitlint/issues/1018)) ([2df49fa](https://github.com/conventional-changelog/commitlint/commit/2df49fac907993ae78199a1012e918b0e2ff5621)) +- refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) +### BREAKING CHANGES +- remove node 8 from circle-ci checks +also remove node 13 because we do not support experimental versions -<a name="7.5.0"></a> -# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) +- docs: update node v10 to latest LTS 10 version +Co-authored-by: Cedric van Putten <me@bycedric.com> -### Bug Fixes +Co-authored-by: Cedric van Putten <me@bycedric.com> -* all broken website references ([#564](https://github.com/conventional-changelog/commitlint/issues/564)) ([82eeb5a](https://github.com/conventional-changelog/commitlint/commit/82eeb5a)) -* replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) -* replace all website references with conventional changelog ([#563](https://github.com/conventional-changelog/commitlint/issues/563)) ([6b86fb1](https://github.com/conventional-changelog/commitlint/commit/6b86fb1)) -* resolve path to commit message for git submodules ([83b1a47](https://github.com/conventional-changelog/commitlint/commit/83b1a47)) +## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) +**Note:** Version bump only for package @commitlint/read -### Features +## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) -* add support for git submodules ([cc575fa](https://github.com/conventional-changelog/commitlint/commit/cc575fa)) +**Note:** Version bump only for package @commitlint/read +# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) +**Note:** Version bump only for package @commitlint/read +## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) -<a name="7.3.1"></a> -## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) +**Note:** Version bump only for package @commitlint/read +# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) +**Note:** Version bump only for package @commitlint/read +## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) **Note:** Version bump only for package @commitlint/read -<a name="7.3.0"></a> -# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) +# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) +**Note:** Version bump only for package @commitlint/read +# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) +**Note:** Version bump only for package @commitlint/read + +# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) **Note:** Version bump only for package @commitlint/read -<a name="7.1.2"></a> -## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) +# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) +### Bug Fixes +- use sander.readFile correctly ([#448](https://github.com/conventional-changelog/commitlint/issues/448)) ([#630](https://github.com/conventional-changelog/commitlint/issues/630)) ([8e47985](https://github.com/conventional-changelog/commitlint/commit/8e47985)) +<a name="7.5.0"></a> + +# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) + +### Bug Fixes + +- all broken website references ([#564](https://github.com/conventional-changelog/commitlint/issues/564)) ([82eeb5a](https://github.com/conventional-changelog/commitlint/commit/82eeb5a)) +- replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) +- replace all website references with conventional changelog ([#563](https://github.com/conventional-changelog/commitlint/issues/563)) ([6b86fb1](https://github.com/conventional-changelog/commitlint/commit/6b86fb1)) +- resolve path to commit message for git submodules ([83b1a47](https://github.com/conventional-changelog/commitlint/commit/83b1a47)) + +### Features + +- add support for git submodules ([cc575fa](https://github.com/conventional-changelog/commitlint/commit/cc575fa)) + +<a name="7.3.1"></a> + +## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) **Note:** Version bump only for package @commitlint/read -<a name="6.1.1"></a> -## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) +<a name="7.3.0"></a> + +# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) + +**Note:** Version bump only for package @commitlint/read + +<a name="7.1.2"></a> + +## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) +**Note:** Version bump only for package @commitlint/read +<a name="6.1.1"></a> +## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) **Note:** Version bump only for package @commitlint/read diff --git a/@commitlint/read/README.md b/@commitlint/read/README.md index acb77a6bb9..3d8c06e1a5 100644 --- a/@commitlint/read/README.md +++ b/@commitlint/read/README.md @@ -1,25 +1,15 @@ -> Read commit messages from a specified range or last edit - # @commitlint/read +Read commit messages from a specified range or last edit + ## Getting started ```shell npm install --save @commitlint/read ``` -## Example - -```js -const read = require('@commitlint/read').default; +## Documentation -// Read last edited commit message -read({edit: true}).then((messages) => console.log(messages)); -// => ['I did something\n\n'] - -// Read from the third to second commit message from HEAD -read({from: 'HEAD~2', to: 'HEAD~1'}).then((messages) => console.log(messages)); -// => ['Initial commit\n\n'] -``` +Consult [API docs](https://commitlint.js.org/api/read) for comprehensive documentation. -Consult [docs/api](https://conventional-changelog.github.io/commitlint/#/reference-api) for comprehensive documentation. +Documentation generated from [`docs` folder](../../docs/api/read.md). diff --git a/@commitlint/read/fixtures/package.json b/@commitlint/read/fixtures/package.json new file mode 100644 index 0000000000..5bbefffbab --- /dev/null +++ b/@commitlint/read/fixtures/package.json @@ -0,0 +1,3 @@ +{ + "type": "commonjs" +} diff --git a/@commitlint/read/package.json b/@commitlint/read/package.json index 1bce761dae..56294132a1 100644 --- a/@commitlint/read/package.json +++ b/@commitlint/read/package.json @@ -1,6 +1,7 @@ { "name": "@commitlint/read", - "version": "13.1.0", + "type": "module", + "version": "20.0.0", "description": "Read commit messages from a specified range or last edit", "main": "lib/read.js", "types": "lib/read.d.ts", @@ -12,16 +13,17 @@ "pkg": "pkg-check --skip-import" }, "engines": { - "node": ">=v12" + "node": ">=v18" }, "repository": { "type": "git", - "url": "https://github.com/conventional-changelog/commitlint.git" + "url": "https://github.com/conventional-changelog/commitlint.git", + "directory": "@commitlint/read" }, "bugs": { "url": "https://github.com/conventional-changelog/commitlint/issues" }, - "homepage": "https://github.com/conventional-changelog/commitlint#readme", + "homepage": "https://commitlint.js.org/", "keywords": [ "conventional-changelog", "commitlint", @@ -34,17 +36,17 @@ }, "license": "MIT", "devDependencies": { - "@commitlint/test": "^13.0.0", - "@commitlint/utils": "^13.0.0", - "@types/fs-extra": "^9.0.1", - "@types/git-raw-commits": "^2.0.0", - "execa": "^5.0.0" + "@commitlint/test": "^20.0.0", + "@commitlint/utils": "^20.0.0", + "@types/git-raw-commits": "^2.0.3", + "@types/minimist": "^1.2.4" }, "dependencies": { - "@commitlint/top-level": "^13.0.0", - "@commitlint/types": "^13.1.0", - "fs-extra": "^10.0.0", - "git-raw-commits": "^2.0.0" + "@commitlint/top-level": "^20.0.0", + "@commitlint/types": "^20.0.0", + "git-raw-commits": "^4.0.0", + "minimist": "^1.2.8", + "tinyexec": "^1.0.0" }, - "gitHead": "70f7f4688b51774e7ac5e40e896cdaa3f132b2bc" + "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" } diff --git a/@commitlint/read/src/get-edit-commit.ts b/@commitlint/read/src/get-edit-commit.ts index 81041db926..7754ecb802 100644 --- a/@commitlint/read/src/get-edit-commit.ts +++ b/@commitlint/read/src/get-edit-commit.ts @@ -1,20 +1,21 @@ -import toplevel from '@commitlint/top-level'; -import fs from 'fs-extra'; -import {getEditFilePath} from './get-edit-file-path'; +import toplevel from "@commitlint/top-level"; +import fs from "fs/promises"; + +import { getEditFilePath } from "./get-edit-file-path.js"; // Get recently edited commit message export async function getEditCommit( cwd?: string, - edit?: boolean | string + edit?: boolean | string, ): Promise<string[]> { const top = await toplevel(cwd); - if (typeof top !== 'string') { + if (typeof top !== "string") { throw new TypeError(`Could not find git root from ${cwd}`); } const editFilePath = await getEditFilePath(top, edit); const editFile: Buffer = await fs.readFile(editFilePath); - return [`${editFile.toString('utf-8')}\n`]; + return [`${editFile.toString("utf-8")}\n`]; } diff --git a/@commitlint/read/src/get-edit-file-path.ts b/@commitlint/read/src/get-edit-file-path.ts index d90ac6b7b3..b323dce1e2 100644 --- a/@commitlint/read/src/get-edit-file-path.ts +++ b/@commitlint/read/src/get-edit-file-path.ts @@ -1,26 +1,26 @@ -import path from 'path'; -import {Stats} from 'fs'; -import fs from 'fs-extra'; +import path from "node:path"; +import { Stats } from "node:fs"; +import fs from "fs/promises"; // Get path to recently edited commit message file export async function getEditFilePath( top: string, - edit?: boolean | string + edit?: boolean | string, ): Promise<string> { - if (typeof edit === 'string') { + if (typeof edit === "string") { return path.resolve(top, edit); } - const dotgitPath = path.join(top, '.git'); + const dotgitPath = path.join(top, ".git"); const dotgitStats: Stats = await fs.lstat(dotgitPath); if (dotgitStats.isDirectory()) { - return path.join(top, '.git/COMMIT_EDITMSG'); + return path.join(top, ".git/COMMIT_EDITMSG"); } const gitFile: string = await fs.readFile(dotgitPath, { - encoding: 'utf-8', + encoding: "utf-8", }); - const relativeGitPath = gitFile.replace('gitdir: ', '').replace('\n', ''); - return path.resolve(top, relativeGitPath, 'COMMIT_EDITMSG'); + const relativeGitPath = gitFile.replace("gitdir: ", "").replace("\n", ""); + return path.resolve(top, relativeGitPath, "COMMIT_EDITMSG"); } diff --git a/@commitlint/read/src/get-history-commits.ts b/@commitlint/read/src/get-history-commits.ts index caf2fae197..ad9fc0a705 100644 --- a/@commitlint/read/src/get-history-commits.ts +++ b/@commitlint/read/src/get-history-commits.ts @@ -1,10 +1,11 @@ -import gitRawCommits from 'git-raw-commits'; -import {streamToPromise} from './stream-to-promise'; +import gitRawCommits from "git-raw-commits"; + +import { streamToPromise } from "./stream-to-promise.js"; // Get commit messages from history export async function getHistoryCommits( - options: {from?: string; to?: string}, - opts: {cwd?: string} = {} + options: gitRawCommits.GitOptions, + opts: { cwd?: string } = {}, ): Promise<string[]> { - return streamToPromise(gitRawCommits(options, {cwd: opts.cwd})); + return streamToPromise(gitRawCommits(options, { cwd: opts.cwd })); } diff --git a/@commitlint/read/src/read.test.ts b/@commitlint/read/src/read.test.ts index a4c1a4c48e..c1903b1609 100644 --- a/@commitlint/read/src/read.test.ts +++ b/@commitlint/read/src/read.test.ts @@ -1,53 +1,152 @@ -import path from 'path'; -import {git} from '@commitlint/test'; -import execa from 'execa'; -import fs from 'fs-extra'; +import { test, expect } from "vitest"; +import fs from "fs/promises"; +import path from "node:path"; +import { git } from "@commitlint/test"; +import { x } from "tinyexec"; -import read from './read'; +import read from "./read.js"; -test('get edit commit message specified by the `edit` flag', async () => { +test("get edit commit message specified by the `edit` flag", async () => { const cwd: string = await git.bootstrap(); - await fs.writeFile(path.join(cwd, 'commit-msg-file'), 'foo'); + await fs.writeFile(path.join(cwd, "commit-msg-file"), "foo"); - const expected = ['foo\n']; - const actual = await read({edit: 'commit-msg-file', cwd}); + const expected = ["foo\n"]; + const actual = await read({ edit: "commit-msg-file", cwd }); expect(actual).toEqual(expected); }); -test('get edit commit message from git root', async () => { +test("get edit commit message from git root", async () => { const cwd: string = await git.bootstrap(); - await fs.writeFile(path.join(cwd, 'alpha.txt'), 'alpha'); - await execa('git', ['add', '.'], {cwd}); - await execa('git', ['commit', '-m', 'alpha'], {cwd}); - const expected = ['alpha\n\n']; - const actual = await read({edit: true, cwd}); + await fs.writeFile(path.join(cwd, "alpha.txt"), "alpha"); + await x("git", ["add", "."], { nodeOptions: { cwd } }); + await x("git", ["commit", "-m", "alpha"], { nodeOptions: { cwd } }); + const expected = ["alpha\n\n"]; + const actual = await read({ edit: true, cwd }); expect(actual).toEqual(expected); }); -test('get history commit messages', async () => { +test("get history commit messages", async () => { const cwd: string = await git.bootstrap(); - await fs.writeFile(path.join(cwd, 'alpha.txt'), 'alpha'); - await execa('git', ['add', 'alpha.txt'], {cwd}); - await execa('git', ['commit', '-m', 'alpha'], {cwd}); - await execa('git', ['rm', 'alpha.txt'], {cwd}); - await execa('git', ['commit', '-m', 'remove alpha'], {cwd}); + await fs.writeFile(path.join(cwd, "alpha.txt"), "alpha"); + await x("git", ["add", "alpha.txt"], { nodeOptions: { cwd } }); + await x("git", ["commit", "-m", "alpha"], { nodeOptions: { cwd } }); + await x("git", ["rm", "alpha.txt"], { nodeOptions: { cwd } }); + await x("git", ["commit", "-m", "remove alpha"], { nodeOptions: { cwd } }); - const expected = ['remove alpha\n\n', 'alpha\n\n']; - const actual = await read({cwd}); + const expected = ["remove alpha\n\n", "alpha\n\n"]; + const actual = await read({ cwd }); expect(actual).toEqual(expected); }); -test('get edit commit message from git subdirectory', async () => { +test("get edit commit message from git subdirectory", async () => { const cwd: string = await git.bootstrap(); - await fs.mkdir(path.join(cwd, 'beta')); - await fs.writeFile(path.join(cwd, 'beta/beta.txt'), 'beta'); + await fs.mkdir(path.join(cwd, "beta")); + await fs.writeFile(path.join(cwd, "beta/beta.txt"), "beta"); - await execa('git', ['add', '.'], {cwd}); - await execa('git', ['commit', '-m', 'beta'], {cwd}); + await x("git", ["add", "."], { nodeOptions: { cwd } }); + await x("git", ["commit", "-m", "beta"], { nodeOptions: { cwd } }); - const expected = ['beta\n\n']; - const actual = await read({edit: true, cwd}); + const expected = ["beta\n\n"]; + const actual = await read({ edit: true, cwd }); expect(actual).toEqual(expected); }); + +test("get edit commit message while skipping first commit", async () => { + const cwd: string = await git.bootstrap(); + await fs.mkdir(path.join(cwd, "beta")); + await fs.writeFile(path.join(cwd, "beta/beta.txt"), "beta"); + + await fs.writeFile(path.join(cwd, "alpha.txt"), "alpha"); + await x("git", ["add", "alpha.txt"], { nodeOptions: { cwd } }); + await x("git", ["commit", "-m", "alpha"], { nodeOptions: { cwd } }); + await fs.writeFile(path.join(cwd, "beta.txt"), "beta"); + await x("git", ["add", "beta.txt"], { nodeOptions: { cwd } }); + await x("git", ["commit", "-m", "beta"], { nodeOptions: { cwd } }); + await fs.writeFile(path.join(cwd, "gamma.txt"), "gamma"); + await x("git", ["add", "gamma.txt"], { nodeOptions: { cwd } }); + await x("git", ["commit", "-m", "gamma"], { nodeOptions: { cwd } }); + + const expected = ["beta\n\n"]; + const actual = await read({ from: "HEAD~2", cwd, gitLogArgs: "--skip 1" }); + expect(actual).toEqual(expected); +}); + +test("should only read the last commit", async () => { + const cwd: string = await git.bootstrap(); + + await x("git", ["commit", "--allow-empty", "-m", "commit Z"], { + nodeOptions: { cwd }, + }); + await x("git", ["commit", "--allow-empty", "-m", "commit Y"], { + nodeOptions: { cwd }, + }); + await x("git", ["commit", "--allow-empty", "-m", "commit X"], { + nodeOptions: { cwd }, + }); + + const result = await read({ cwd, last: true }); + + expect(result).toEqual(["commit X"]); +}); + +test("should read commits from the last annotated tag", async () => { + const cwd: string = await git.bootstrap(); + + await x("git", ["commit", "--allow-empty", "-m", "chore: release v1.0.0"], { + nodeOptions: { cwd }, + }); + await x("git", ["tag", "v1.0.0", "--annotate", "-m", "v1.0.0"], { + nodeOptions: { cwd }, + }); + await x("git", ["commit", "--allow-empty", "-m", "commit 1"], { + nodeOptions: { cwd }, + }); + await x("git", ["commit", "--allow-empty", "-m", "commit 2"], { + nodeOptions: { cwd }, + }); + + const result = await read({ cwd, fromLastTag: true }); + + expect(result).toEqual(["commit 2\n\n", "commit 1\n\n"]); +}); + +test("should read commits from the last lightweight tag", async () => { + const cwd: string = await git.bootstrap(); + + await x( + "git", + ["commit", "--allow-empty", "-m", "chore: release v9.9.9-alpha.1"], + { nodeOptions: { cwd } }, + ); + await x("git", ["tag", "v9.9.9-alpha.1"], { nodeOptions: { cwd } }); + await x("git", ["commit", "--allow-empty", "-m", "commit A"], { + nodeOptions: { cwd }, + }); + await x("git", ["commit", "--allow-empty", "-m", "commit B"], { + nodeOptions: { cwd }, + }); + + const result = await read({ cwd, fromLastTag: true }); + + expect(result).toEqual(["commit B\n\n", "commit A\n\n"]); +}); + +test("should not read any commits when there are no tags", async () => { + const cwd: string = await git.bootstrap(); + + await x("git", ["commit", "--allow-empty", "-m", "commit 7"], { + nodeOptions: { cwd }, + }); + await x("git", ["commit", "--allow-empty", "-m", "commit 8"], { + nodeOptions: { cwd }, + }); + await x("git", ["commit", "--allow-empty", "-m", "commit 9"], { + nodeOptions: { cwd }, + }); + + const result = await read({ cwd, fromLastTag: true }); + + expect(result).toHaveLength(0); +}); diff --git a/@commitlint/read/src/read.ts b/@commitlint/read/src/read.ts index 6074d9d9b4..ae991a52d1 100644 --- a/@commitlint/read/src/read.ts +++ b/@commitlint/read/src/read.ts @@ -1,22 +1,82 @@ -import {getHistoryCommits} from './get-history-commits'; -import {getEditCommit} from './get-edit-commit'; +import minimist from "minimist"; +import type { GitOptions } from "git-raw-commits"; + +import { getHistoryCommits } from "./get-history-commits.js"; +import { getEditCommit } from "./get-edit-commit.js"; + +import { x } from "tinyexec"; interface GetCommitMessageOptions { cwd?: string; from?: string; + fromLastTag?: boolean; to?: string; + last?: boolean; edit?: boolean | string; + gitLogArgs?: string; } // Get commit messages export default async function getCommitMessages( - settings: GetCommitMessageOptions + settings: GetCommitMessageOptions, ): Promise<string[]> { - const {cwd, from, to, edit} = settings; + const { cwd, fromLastTag, to, last, edit, gitLogArgs } = settings; + let from = settings.from; if (edit) { return getEditCommit(cwd, edit); } - return getHistoryCommits({from, to}, {cwd}); + if (last) { + const gitCommandResult = await x( + "git", + ["log", "-1", "--pretty=format:%B"], + { nodeOptions: { cwd } }, + ); + let output = gitCommandResult.stdout.trim(); + // strip output of extra quotation marks ("") + if (output[0] == '"' && output[output.length - 1] == '"') + output = output.slice(1, -1); + return [output]; + } + + if (!from && fromLastTag) { + const output = await x( + "git", + [ + "describe", + "--abbrev=40", + "--always", + "--first-parent", + "--long", + "--tags", + ], + { nodeOptions: { cwd } }, + ); + const stdout = output.stdout.trim(); + + if (stdout.length === 40) { + // Hash only means no last tag. Use that as the from ref which + // results in a no-op. + from = stdout; + } else { + // Description will be in the format: <tag>-<count>-g<hash> + // Example: v3.2.0-11-g9057371a52adaae5180d93fe4d0bb808d874b9fb + // Minus zero based (1), dash (1), "g" prefix (1), hash (40) = -43 + const tagSlice = stdout.lastIndexOf("-", stdout.length - 43); + + from = stdout.slice(0, tagSlice); + } + } + + let gitOptions: GitOptions = { from, to }; + if (gitLogArgs) { + gitOptions = { + ...minimist(gitLogArgs.split(" ")), + from, + to, + }; + } + + return getHistoryCommits(gitOptions, { cwd }); } diff --git a/@commitlint/read/src/stream-to-promise.ts b/@commitlint/read/src/stream-to-promise.ts index afa8c63446..149fb05049 100644 --- a/@commitlint/read/src/stream-to-promise.ts +++ b/@commitlint/read/src/stream-to-promise.ts @@ -1,11 +1,11 @@ -import {Readable} from 'stream'; +import { Readable } from "node:stream"; export function streamToPromise(stream: Readable): Promise<string[]> { const data: string[] = []; return new Promise((resolve, reject) => stream - .on('data', (chunk) => data.push(chunk.toString('utf-8'))) - .on('error', reject) - .on('end', () => resolve(data)) + .on("data", (chunk) => data.push(chunk.toString("utf-8"))) + .on("error", reject) + .on("end", () => resolve(data)), ); } diff --git a/@commitlint/read/tsconfig.json b/@commitlint/read/tsconfig.json index f54e2e29b1..6edb67bd92 100644 --- a/@commitlint/read/tsconfig.json +++ b/@commitlint/read/tsconfig.json @@ -7,5 +7,5 @@ }, "include": ["./src"], "exclude": ["./src/**/*.test.ts", "./lib/**/*"], - "references": [{"path": "../top-level"}] + "references": [{ "path": "../top-level" }] } diff --git a/@commitlint/resolve-extends/CHANGELOG.md b/@commitlint/resolve-extends/CHANGELOG.md index 72f5bdd0b9..70308b3a70 100644 --- a/@commitlint/resolve-extends/CHANGELOG.md +++ b/@commitlint/resolve-extends/CHANGELOG.md @@ -3,21 +3,26 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. -# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) +# [20.1.0](https://github.com/conventional-changelog/commitlint/compare/v20.0.0...v20.1.0) (2025-09-30) + +### Bug Fixes -* chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) +* **resolve-extends:** add import attribute for JSON config files ([#4551](https://github.com/conventional-changelog/commitlint/issues/4551)) ([82936c9](https://github.com/conventional-changelog/commitlint/commit/82936c90a2845b4f5721eef3c71d6183416d5b78)) -### BREAKING CHANGES -* minimum node version is 12 +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + +**Note:** Version bump only for package @commitlint/resolve-extends + -## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) + +## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) **Note:** Version bump only for package @commitlint/resolve-extends @@ -25,7 +30,18 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) +# [19.8.0](https://github.com/conventional-changelog/commitlint/compare/v19.7.1...v19.8.0) (2025-03-07) + + +### Performance Improvements + +* use `node:` prefix to bypass require.cache call for builtins ([#4302](https://github.com/conventional-changelog/commitlint/issues/4302)) ([0cd8f41](https://github.com/conventional-changelog/commitlint/commit/0cd8f410573fe11383f788b1ceb7e0946143591d)) + + + + + +# [19.5.0](https://github.com/conventional-changelog/commitlint/compare/v19.4.1...v19.5.0) (2024-09-11) **Note:** Version bump only for package @commitlint/resolve-extends @@ -33,7 +49,18 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) +# [19.1.0](https://github.com/conventional-changelog/commitlint/compare/v19.0.3...v19.1.0) (2024-03-12) + + +### Bug Fixes + +* add missing `conditions` param for `moduleResolve` ([#3962](https://github.com/conventional-changelog/commitlint/issues/3962)) ([67baff9](https://github.com/conventional-changelog/commitlint/commit/67baff9182854bbe184b6cf71f977920a05c27a3)) + + + + + +## [19.0.3](https://github.com/conventional-changelog/commitlint/compare/v19.0.2...v19.0.3) (2024-02-28) **Note:** Version bump only for package @commitlint/resolve-extends @@ -41,53 +68,92 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) +## [19.0.2](https://github.com/conventional-changelog/commitlint/compare/v19.0.1...v19.0.2) (2024-02-28) ### Bug Fixes -* **resolve-extends:** `extends` field should be resolved from left to right ([#2070](https://github.com/conventional-changelog/commitlint/issues/2070)) ([c0a86f5](https://github.com/conventional-changelog/commitlint/commit/c0a86f5b5ed6ef071acef4baf38e7fc549fbec37)) +* fallback to `resolve-from` for Yarn P'n'P ([#3941](https://github.com/conventional-changelog/commitlint/issues/3941)) ([1eb9b5f](https://github.com/conventional-changelog/commitlint/commit/1eb9b5f29979d35f5840141523850a7402633378)), closes [#3936](https://github.com/conventional-changelog/commitlint/issues/3936) -### BREAKING CHANGES -* **resolve-extends:** The order of the `extends` resolution is changed from right-to-left to left-to-right +## [19.0.1](https://github.com/conventional-changelog/commitlint/compare/v19.0.0...v19.0.1) (2024-02-27) +### Bug Fixes -# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) +* drop `resolve-from`, `resolve-global` and `import-fresh`, resolve global packages correctly ([#3939](https://github.com/conventional-changelog/commitlint/issues/3939)) ([8793c63](https://github.com/conventional-changelog/commitlint/commit/8793c639c083c33714da0a29429b338776813d0c)), closes [#3938](https://github.com/conventional-changelog/commitlint/issues/3938) -**Note:** Version bump only for package @commitlint/resolve-extends +# [19.0.0](https://github.com/conventional-changelog/commitlint/compare/v18.6.2...v19.0.0) (2024-02-27) -# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) + +* feat!: migrate to pure ESM (#3850) ([3423735](https://github.com/conventional-changelog/commitlint/commit/342373559bdf7c783c4ef37ff05dc38a5f681159)), closes [#3850](https://github.com/conventional-changelog/commitlint/issues/3850) -* refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) +### Reverts + +* Revert "chore!: minimum node version v20" ([2816783](https://github.com/conventional-changelog/commitlint/commit/2816783d00e7eb967de3ac9347c2fc43dc8b94fa)) ### BREAKING CHANGES -* remove node 8 from circle-ci checks +* migrate to pure ESM -also remove node 13 because we do not support experimental versions +* feat: migrate to pure ESM -* docs: update node v10 to latest LTS 10 version +* chore: update snapshot -Co-authored-by: Cedric van Putten <me@bycedric.com> +* fix: load `parserPreset` with another `await` -Co-authored-by: Cedric van Putten <me@bycedric.com> +* test: migrate to vitest +* test: remove no replacement `--runInBand` test-ci script +* chore: fix code reviews +* refactor(load): rewrite resolve logic +* fix(config-nx-scopes): fix syntax error -## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) +* feat(resolve-extends): add resolveFrom and loadParserPreset + +* feat(load): use resolveFrom and loadParserPreset from resolve-extends + +* test: include only @commitlint/* packages src in coverage + +* test: explicit import vitest utilities + +* test: remove @jest/globals from dependencies + +* fix(resolve-extends): `resolveFrom` output should be platform aware + +* test: restore NO_COLOR to test script + +* chore: fix linting issues + +* fix: should use fileURLToPath instead of pathname for Windows compatibility + +* Apply suggestions from code review + +* fix: should reuse `cli` instead call `yargs()` + +* feat(cli): set terminalWidth as wrap to avoid work break on help + +* Update .eslintrc.cjs + +* feat: migrate @commitlint/config-conventional to pure ESM + + + + + +## [18.6.1](https://github.com/conventional-changelog/commitlint/compare/v18.6.0...v18.6.1) (2024-02-13) **Note:** Version bump only for package @commitlint/resolve-extends @@ -95,7 +161,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) +# [18.6.0](https://github.com/conventional-changelog/commitlint/compare/v18.5.1...v18.6.0) (2024-01-25) **Note:** Version bump only for package @commitlint/resolve-extends @@ -103,7 +169,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) +# [18.5.0](https://github.com/conventional-changelog/commitlint/compare/v18.4.4...v18.5.0) (2024-01-22) **Note:** Version bump only for package @commitlint/resolve-extends @@ -111,7 +177,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) +## [18.4.4](https://github.com/conventional-changelog/commitlint/compare/v18.4.3...v18.4.4) (2024-01-04) **Note:** Version bump only for package @commitlint/resolve-extends @@ -119,34 +185,61 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) +## [18.4.3](https://github.com/conventional-changelog/commitlint/compare/v18.4.2...v18.4.3) (2023-11-21) +**Note:** Version bump only for package @commitlint/resolve-extends -### Bug Fixes -* [#840](https://github.com/conventional-changelog/commitlint/issues/840) add caret to lodash versions ([#843](https://github.com/conventional-changelog/commitlint/issues/843)) ([ffc0bac](https://github.com/conventional-changelog/commitlint/commit/ffc0bac26993acb2ab6a8fa51065f93c92b0d644)) -### Features -* add possibility to extend from string ([#865](https://github.com/conventional-changelog/commitlint/issues/865)) ([056c6fe](https://github.com/conventional-changelog/commitlint/commit/056c6fef346b4e84f8b1f93038a9461a7cbd9beb)) +# [18.4.0](https://github.com/conventional-changelog/commitlint/compare/v18.3.0...v18.4.0) (2023-11-10) +**Note:** Version bump only for package @commitlint/resolve-extends -## [8.3.5](https://github.com/conventional-changelog/commitlint/compare/v8.3.4...v8.3.5) (2020-01-15) +# [18.1.0](https://github.com/conventional-changelog/commitlint/compare/v18.0.0...v18.1.0) (2023-10-25) -### Bug Fixes +**Note:** Version bump only for package @commitlint/resolve-extends -* **resolve-extends:** move node types to dev dependencies ([#883](https://github.com/conventional-changelog/commitlint/issues/883)) ([b131a18](https://github.com/conventional-changelog/commitlint/commit/b131a18)), closes [#874](https://github.com/conventional-changelog/commitlint/issues/874) +# [18.0.0](https://github.com/conventional-changelog/commitlint/compare/v17.8.1...v18.0.0) (2023-10-20) -## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) + +* chore!: minimum node version v18 (#3644) ([5b4aeaf](https://github.com/conventional-changelog/commitlint/commit/5b4aeaf4f01c2726a7bc8631a23bb34c849baad2)), closes [#3644](https://github.com/conventional-changelog/commitlint/issues/3644) + + +### BREAKING CHANGES + +* drop node v14 and v16 support + +* chore: remove unused types + +* docs: prepare node update and new release + +* chore!: minimum TS version v5 +* drop TS v4 support + +* ci: remove node v14/16 checks + +* chore: adjust node types to minimal supported version + +* chore!: further major versions of other deps +* upgrade conventional-changelog-conventionalcommits, conventional-commits-parser, conventional-changelog-atom, + +* docs: simplify releases and remove roadmap + + + + + +## [17.8.1](https://github.com/conventional-changelog/commitlint/compare/v17.8.0...v17.8.1) (2023-10-20) **Note:** Version bump only for package @commitlint/resolve-extends @@ -154,128 +247,254 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) +## [17.6.7](https://github.com/conventional-changelog/commitlint/compare/v17.6.6...v17.6.7) (2023-07-19) + +**Note:** Version bump only for package @commitlint/resolve-extends -### Features -* **resolve-extends:** accept absolute path in extends ([#825](https://github.com/conventional-changelog/commitlint/issues/825)) ([ecac29f](https://github.com/conventional-changelog/commitlint/commit/ecac29f)) +## [17.4.4](https://github.com/conventional-changelog/commitlint/compare/v17.4.3...v17.4.4) (2023-02-17) + +**Note:** Version bump only for package @commitlint/resolve-extends + -# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) + +# [17.4.0](https://github.com/conventional-changelog/commitlint/compare/v17.3.0...v17.4.0) (2023-01-04) **Note:** Version bump only for package @commitlint/resolve-extends +# [17.3.0](https://github.com/conventional-changelog/commitlint/compare/v17.2.1...v17.3.0) (2022-11-21) +**Note:** Version bump only for package @commitlint/resolve-extends +# [17.1.0](https://github.com/conventional-changelog/commitlint/compare/v17.0.3...v17.1.0) (2022-08-27) +**Note:** Version bump only for package @commitlint/resolve-extends -# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) +## [17.0.3](https://github.com/conventional-changelog/commitlint/compare/v17.0.2...v17.0.3) (2022-06-25) **Note:** Version bump only for package @commitlint/resolve-extends +# [17.0.0](https://github.com/conventional-changelog/commitlint/compare/v16.3.0...v17.0.0) (2022-05-16) +- chore!: minimum node version v14 (#3128) ([ac5f9b4](https://github.com/conventional-changelog/commitlint/commit/ac5f9b47a9e3cd5c9d58b14da0feb426f06b1ef9)), closes [#3128](https://github.com/conventional-changelog/commitlint/issues/3128) +### BREAKING CHANGES +- drop node v12 support -# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) +- chore: rename circleci windows job + +node version is not defned by the name anyways (i think) +## [16.2.1](https://github.com/conventional-changelog/commitlint/compare/v16.2.0...v16.2.1) (2022-02-13) + +**Note:** Version bump only for package @commitlint/resolve-extends + +# [16.1.0](https://github.com/conventional-changelog/commitlint/compare/v16.0.3...v16.1.0) (2022-01-20) + +**Note:** Version bump only for package @commitlint/resolve-extends + +# [16.0.0](https://github.com/conventional-changelog/commitlint/compare/v15.0.0...v16.0.0) (2021-12-26) ### Features -* **resolve-extends:** accept short scoped package names in extends ([#597](https://github.com/conventional-changelog/commitlint/issues/597)) ([ba90e8e](https://github.com/conventional-changelog/commitlint/commit/ba90e8e)) +- config validation ([#2412](https://github.com/conventional-changelog/commitlint/issues/2412)) ([c717202](https://github.com/conventional-changelog/commitlint/commit/c7172022097b11f46b33617e4a94d751243c1049)), closes [#327](https://github.com/conventional-changelog/commitlint/issues/327) + +# [15.0.0](https://github.com/conventional-changelog/commitlint/compare/v14.2.0...v15.0.0) (2021-11-17) +### Features +- simplify config resolution ([#2398](https://github.com/conventional-changelog/commitlint/issues/2398)) ([8a8384f](https://github.com/conventional-changelog/commitlint/commit/8a8384f3c18954447cb633e76a573e1db71a1440)), closes [#327](https://github.com/conventional-changelog/commitlint/issues/327) +# [14.1.0](https://github.com/conventional-changelog/commitlint/compare/v14.0.0...v14.1.0) (2021-11-01) +### Features -<a name="7.5.0"></a> -# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) +- extend helpUrl from shareable config ([#2846](https://github.com/conventional-changelog/commitlint/issues/2846)) ([d7e2e2b](https://github.com/conventional-changelog/commitlint/commit/d7e2e2b943be383f99f4000b6b6bed0eab03bfcf)) +# [14.0.0](https://github.com/conventional-changelog/commitlint/compare/v13.2.1...v14.0.0) (2021-10-26) -### Bug Fixes +**Note:** Version bump only for package @commitlint/resolve-extends + +# [13.2.0](https://github.com/conventional-changelog/commitlint/compare/v13.1.0...v13.2.0) (2021-09-28) -* **resolve-extends:** override array on extending rules ([#470](https://github.com/conventional-changelog/commitlint/issues/470)) ([#539](https://github.com/conventional-changelog/commitlint/issues/539)) ([b35000c](https://github.com/conventional-changelog/commitlint/commit/b35000c)) -* replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) -* replace old require-uncached with import-fresh ([#533](https://github.com/conventional-changelog/commitlint/issues/533)) ([b636e8c](https://github.com/conventional-changelog/commitlint/commit/b636e8c)) +**Note:** Version bump only for package @commitlint/resolve-extends +# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) +- chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) +### BREAKING CHANGES -<a name="7.3.1"></a> -## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) +- minimum node version is 12 +## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) +**Note:** Version bump only for package @commitlint/resolve-extends +## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) **Note:** Version bump only for package @commitlint/resolve-extends -<a name="7.3.0"></a> -# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) +## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) +**Note:** Version bump only for package @commitlint/resolve-extends + +# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) ### Bug Fixes -* update to security-patched dependency versions ([97c033b](https://github.com/conventional-changelog/commitlint/commit/97c033b)) +- **resolve-extends:** `extends` field should be resolved from left to right ([#2070](https://github.com/conventional-changelog/commitlint/issues/2070)) ([c0a86f5](https://github.com/conventional-changelog/commitlint/commit/c0a86f5b5ed6ef071acef4baf38e7fc549fbec37)) +### BREAKING CHANGES +- **resolve-extends:** The order of the `extends` resolution is changed from right-to-left to left-to-right +# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) -<a name="7.1.2"></a> -## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) +**Note:** Version bump only for package @commitlint/resolve-extends + +# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) + +- refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) +### BREAKING CHANGES + +- remove node 8 from circle-ci checks + +also remove node 13 because we do not support experimental versions + +- docs: update node v10 to latest LTS 10 version + +Co-authored-by: Cedric van Putten <me@bycedric.com> +Co-authored-by: Cedric van Putten <me@bycedric.com> +## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) **Note:** Version bump only for package @commitlint/resolve-extends -<a name="6.1.1"></a> -## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) +## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) +**Note:** Version bump only for package @commitlint/resolve-extends +# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) +**Note:** Version bump only for package @commitlint/resolve-extends + +## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) **Note:** Version bump only for package @commitlint/resolve-extends -<a name="6.1.0"></a> -# [6.1.0](https://github.com/conventional-changelog/commitlint/compare/v6.0.5...v6.1.0) (2018-02-03) +# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) +### Bug Fixes +- [#840](https://github.com/conventional-changelog/commitlint/issues/840) add caret to lodash versions ([#843](https://github.com/conventional-changelog/commitlint/issues/843)) ([ffc0bac](https://github.com/conventional-changelog/commitlint/commit/ffc0bac26993acb2ab6a8fa51065f93c92b0d644)) +### Features + +- add possibility to extend from string ([#865](https://github.com/conventional-changelog/commitlint/issues/865)) ([056c6fe](https://github.com/conventional-changelog/commitlint/commit/056c6fef346b4e84f8b1f93038a9461a7cbd9beb)) + +## [8.3.5](https://github.com/conventional-changelog/commitlint/compare/v8.3.4...v8.3.5) (2020-01-15) + +### Bug Fixes + +- **resolve-extends:** move node types to dev dependencies ([#883](https://github.com/conventional-changelog/commitlint/issues/883)) ([b131a18](https://github.com/conventional-changelog/commitlint/commit/b131a18)), closes [#874](https://github.com/conventional-changelog/commitlint/issues/874) + +## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) **Note:** Version bump only for package @commitlint/resolve-extends -<a name="6.0.4"></a> -## [6.0.4](https://github.com/conventional-changelog/commitlint/compare/v6.0.3...v6.0.4) (2018-01-31) +# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) +### Features +- **resolve-extends:** accept absolute path in extends ([#825](https://github.com/conventional-changelog/commitlint/issues/825)) ([ecac29f](https://github.com/conventional-changelog/commitlint/commit/ecac29f)) +# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) **Note:** Version bump only for package @commitlint/resolve-extends -<a name="6.0.3"></a> -## [6.0.3](https://github.com/conventional-changelog/commitlint/compare/v6.0.2...v6.0.3) (2018-01-31) +# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) + +**Note:** Version bump only for package @commitlint/resolve-extends +# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) + +### Features +- **resolve-extends:** accept short scoped package names in extends ([#597](https://github.com/conventional-changelog/commitlint/issues/597)) ([ba90e8e](https://github.com/conventional-changelog/commitlint/commit/ba90e8e)) +<a name="7.5.0"></a> + +# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) + +### Bug Fixes + +- **resolve-extends:** override array on extending rules ([#470](https://github.com/conventional-changelog/commitlint/issues/470)) ([#539](https://github.com/conventional-changelog/commitlint/issues/539)) ([b35000c](https://github.com/conventional-changelog/commitlint/commit/b35000c)) +- replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) +- replace old require-uncached with import-fresh ([#533](https://github.com/conventional-changelog/commitlint/issues/533)) ([b636e8c](https://github.com/conventional-changelog/commitlint/commit/b636e8c)) + +<a name="7.3.1"></a> + +## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) **Note:** Version bump only for package @commitlint/resolve-extends -<a name="6.0.2"></a> -## [6.0.2](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.2) (2018-01-12) +<a name="7.3.0"></a> + +# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) + +### Bug Fixes + +- update to security-patched dependency versions ([97c033b](https://github.com/conventional-changelog/commitlint/commit/97c033b)) + +<a name="7.1.2"></a> + +## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) +**Note:** Version bump only for package @commitlint/resolve-extends + +<a name="6.1.1"></a> + +## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) + +**Note:** Version bump only for package @commitlint/resolve-extends +<a name="6.1.0"></a> +# [6.1.0](https://github.com/conventional-changelog/commitlint/compare/v6.0.5...v6.1.0) (2018-02-03) + +**Note:** Version bump only for package @commitlint/resolve-extends + +<a name="6.0.4"></a> + +## [6.0.4](https://github.com/conventional-changelog/commitlint/compare/v6.0.3...v6.0.4) (2018-01-31) + +**Note:** Version bump only for package @commitlint/resolve-extends + +<a name="6.0.3"></a> + +## [6.0.3](https://github.com/conventional-changelog/commitlint/compare/v6.0.2...v6.0.3) (2018-01-31) + +**Note:** Version bump only for package @commitlint/resolve-extends + +<a name="6.0.2"></a> + +## [6.0.2](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.2) (2018-01-12) **Note:** Version bump only for package @commitlint/resolve-extends <a name="6.0.0"></a> -# [6.0.0](https://github.com/conventional-changelog/commitlint/compare/v5.2.6...v6.0.0) (2018-01-09) +# [6.0.0](https://github.com/conventional-changelog/commitlint/compare/v5.2.6...v6.0.0) (2018-01-09) ### Bug Fixes -* correctly resolve parserOpts [#115](https://github.com/conventional-changelog/commitlint/issues/115) [#95](https://github.com/conventional-changelog/commitlint/issues/95) ([1353dd5](https://github.com/conventional-changelog/commitlint/commit/1353dd5)) +- correctly resolve parserOpts [#115](https://github.com/conventional-changelog/commitlint/issues/115) [#95](https://github.com/conventional-changelog/commitlint/issues/95) ([1353dd5](https://github.com/conventional-changelog/commitlint/commit/1353dd5)) diff --git a/@commitlint/resolve-extends/fixtures/package.json b/@commitlint/resolve-extends/fixtures/package.json new file mode 100644 index 0000000000..5bbefffbab --- /dev/null +++ b/@commitlint/resolve-extends/fixtures/package.json @@ -0,0 +1,3 @@ +{ + "type": "commonjs" +} diff --git a/@commitlint/resolve-extends/package.json b/@commitlint/resolve-extends/package.json index e7e78b7a82..87bd312318 100644 --- a/@commitlint/resolve-extends/package.json +++ b/@commitlint/resolve-extends/package.json @@ -1,6 +1,7 @@ { "name": "@commitlint/resolve-extends", - "version": "13.0.0", + "type": "module", + "version": "20.1.0", "description": "Lint your commit messages", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -12,16 +13,17 @@ "pkg": "pkg-check" }, "engines": { - "node": ">=v12" + "node": ">=v18" }, "repository": { "type": "git", - "url": "https://github.com/conventional-changelog/commitlint.git" + "url": "https://github.com/conventional-changelog/commitlint.git", + "directory": "@commitlint/resolve-extends" }, "bugs": { "url": "https://github.com/conventional-changelog/commitlint/issues" }, - "homepage": "https://github.com/conventional-changelog/commitlint#readme", + "homepage": "https://commitlint.js.org/", "keywords": [ "conventional-changelog", "commitlint", @@ -34,14 +36,16 @@ }, "license": "MIT", "devDependencies": { - "@commitlint/utils": "^13.0.0", - "@types/lodash": "^4.14.161" + "@commitlint/utils": "^20.0.0", + "@types/lodash.mergewith": "^4.6.8" }, "dependencies": { - "import-fresh": "^3.0.0", - "lodash": "^4.17.19", - "resolve-from": "^5.0.0", - "resolve-global": "^1.0.0" + "@commitlint/config-validator": "^20.0.0", + "@commitlint/types": "^20.0.0", + "global-directory": "^4.0.1", + "import-meta-resolve": "^4.0.0", + "lodash.mergewith": "^4.6.2", + "resolve-from": "^5.0.0" }, - "gitHead": "d829bf6260304ca8d6811f329fcdd1b6c50e9749" + "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" } diff --git a/@commitlint/resolve-extends/src/index.test.ts b/@commitlint/resolve-extends/src/index.test.ts index b386d001c4..0e2306c48b 100644 --- a/@commitlint/resolve-extends/src/index.test.ts +++ b/@commitlint/resolve-extends/src/index.test.ts @@ -1,350 +1,583 @@ -import resolveExtends, {ResolveExtendsContext} from '.'; +import { test, expect, vi } from "vitest"; +import { createRequire } from "node:module"; +import { RuleConfigSeverity, UserConfig } from "@commitlint/types"; + +import resolveExtends, { ResolveExtendsContext } from "./index.js"; + +const require = createRequire(import.meta.url); const id = (id: unknown) => id; -test('returns empty object when called without params', () => { - const actual = resolveExtends(); +test("returns empty object when called without params", async () => { + const actual = await resolveExtends(); expect(actual).toEqual({}); }); -test('returns an equivalent object as passed in', () => { - const expected = {foo: 'bar'}; - const actual = resolveExtends(expected); +test("returns an equivalent object as passed in", async () => { + const expected = { foo: "bar" }; + const actual = await resolveExtends(expected); expect(actual).toEqual(expected); }); -test('falls back to global install', async () => { - const resolveGlobal = jest.fn(() => '@commitlint/foo-bar'); - const require = jest.fn(() => ({})); +test("falls back to global install", async () => { + const resolveGlobal = vi.fn(() => "@commitlint/foo-bar"); + const dynamicImport = vi.fn(() => ({})); - const ctx = {resolveGlobal, require} as ResolveExtendsContext; + const ctx = { resolveGlobal, dynamicImport } as ResolveExtendsContext; - resolveExtends({extends: ['@commitlint/foo-bar']}, ctx); - expect(ctx.resolveGlobal).toBeCalledWith('@commitlint/foo-bar'); + resolveExtends({ extends: ["@commitlint/foo-bar"] }, ctx); + expect(ctx.resolveGlobal).toHaveBeenCalledWith("@commitlint/foo-bar"); }); -test('fails for missing extends', async () => { - expect(() => resolveExtends({extends: ['@commitlint/foo-bar']})).toThrow( - /Cannot find module "@commitlint\/foo-bar" from/ - ); +test("fails for missing extends", async () => { + await expect(() => + resolveExtends({ extends: ["@commitlint/foo-bar"] }), + ).rejects.toThrow(/Cannot find module "@commitlint\/foo-bar" from/); }); -test('resolves extends for single config', () => { - const input = {extends: 'extender-name'}; +test("resolves extends for single config", async () => { + const input = { extends: "extender-name" }; const ctx = { resolve: id, - require: jest.fn(() => ({})), + dynamicImport: vi.fn(() => ({})), } as ResolveExtendsContext; - resolveExtends(input, ctx); + await resolveExtends(input, ctx); - expect(ctx.require).toHaveBeenCalledWith('extender-name'); + expect(ctx.dynamicImport).toHaveBeenCalledWith("extender-name"); }); -test('uses empty prefix by default', () => { - const input = {extends: ['extender-name']}; +test("uses empty prefix by default", async () => { + const input = { extends: ["extender-name"] }; const ctx = { resolve: id, - require: jest.fn(() => ({})), + dynamicImport: vi.fn(() => ({})), } as ResolveExtendsContext; - resolveExtends(input, ctx); + await resolveExtends(input, ctx); - expect(ctx.require).toHaveBeenCalledWith('extender-name'); + expect(ctx.dynamicImport).toHaveBeenCalledWith("extender-name"); }); -test('uses prefix as configured', () => { - const input = {extends: ['extender-name']}; +test("uses prefix as configured", async () => { + const input = { extends: ["extender-name"] }; const ctx = { resolve: id, - require: jest.fn(() => ({})), + dynamicImport: vi.fn(() => ({})), } as ResolveExtendsContext; - resolveExtends(input, { + await resolveExtends(input, { ...ctx, - prefix: 'prefix', + prefix: "prefix", }); - expect(ctx.require).toHaveBeenCalledWith('prefix-extender-name'); + expect(ctx.dynamicImport).toHaveBeenCalledWith("prefix-extender-name"); }); -test('ignores prefix for scoped extends', () => { - const input = {extends: ['@scope/extender-name']}; +test("ignores prefix for scoped extends", async () => { + const input = { extends: ["@scope/extender-name"] }; const ctx = { resolve: id, - require: jest.fn(() => ({})), + dynamicImport: vi.fn(() => ({})), } as ResolveExtendsContext; - resolveExtends(input, { + await resolveExtends(input, { ...ctx, - prefix: 'prefix', + prefix: "prefix", }); - expect(ctx.require).toHaveBeenCalledWith('@scope/extender-name'); + expect(ctx.dynamicImport).toHaveBeenCalledWith("@scope/extender-name"); }); -test('adds prefix as suffix for scopes only', () => { - const input = {extends: ['@scope']}; +test("adds prefix as suffix for scopes only", async () => { + const input = { extends: ["@scope"] }; const ctx = { resolve: id, - require: jest.fn(() => ({})), + dynamicImport: vi.fn(() => ({})), } as ResolveExtendsContext; - resolveExtends(input, { + await resolveExtends(input, { ...ctx, - prefix: 'prefix', + prefix: "prefix", }); - expect(ctx.require).toHaveBeenCalledWith('@scope/prefix'); + expect(ctx.dynamicImport).toHaveBeenCalledWith("@scope/prefix"); }); -test('ignores prefix for relative extends', () => { - const input = {extends: ['./extender']}; +test("ignores prefix for relative extends", async () => { + const input = { extends: ["./extender"] }; const ctx = { resolve: id, - require: jest.fn(() => ({})), + dynamicImport: vi.fn(() => ({})), } as ResolveExtendsContext; - resolveExtends(input, { + await resolveExtends(input, { ...ctx, - prefix: 'prefix', + prefix: "prefix", }); - expect(ctx.require).toHaveBeenCalledWith('./extender'); + expect(ctx.dynamicImport).toHaveBeenCalledWith("./extender"); }); -test('ignores prefix for absolute extends', () => { - const absolutePath = require.resolve('@commitlint/config-angular'); - const input = {extends: [absolutePath]}; +test("ignores prefix for absolute extends", async () => { + const absolutePath = require.resolve("@commitlint/config-angular"); + const input = { extends: [absolutePath] }; const ctx = { resolve: id, - require: jest.fn(() => ({})), + dynamicImport: vi.fn(() => ({})), } as ResolveExtendsContext; - resolveExtends(input, { + await resolveExtends(input, { ...ctx, - prefix: 'prefix', + prefix: "prefix", }); - expect(ctx.require).toHaveBeenCalledWith(absolutePath); + expect(ctx.dynamicImport).toHaveBeenCalledWith(absolutePath); }); -test('propagates return value of require function', () => { - const input = {extends: ['extender-name']}; - const propagated = {foo: 'bar'}; +test("propagates return value of require function", async () => { + const input = { extends: ["extender-name"] }; + const propagated = { foo: "bar" }; const ctx = { resolve: id, - require: jest.fn(() => propagated), + dynamicImport: vi.fn(() => propagated), } as ResolveExtendsContext; - const actual = resolveExtends(input, ctx); + const actual = await resolveExtends(input, ctx); expect(actual).toEqual(expect.objectContaining(propagated)); }); -test('resolves extends recursively', () => { - const input = {extends: ['extender-name']}; +test("resolves extends recursively", async () => { + const input = { extends: ["extender-name"] }; - const require = (id: string) => { + const dynamicImport = (id: string) => { switch (id) { - case 'extender-name': - return {extends: ['recursive-extender-name']}; - case 'recursive-extender-name': - return {foo: 'bar'}; + case "extender-name": + return { extends: ["recursive-extender-name"] }; + case "recursive-extender-name": + return { foo: "bar" }; default: return {}; } }; - const ctx = {resolve: id, require: jest.fn(require)} as ResolveExtendsContext; - resolveExtends(input, ctx); + const ctx = { + resolve: id, + dynamicImport: vi.fn(dynamicImport), + } as ResolveExtendsContext; + await resolveExtends(input, ctx); - expect(ctx.require).toHaveBeenCalledWith('extender-name'); - expect(ctx.require).toHaveBeenCalledWith('recursive-extender-name'); + expect(ctx.dynamicImport).toHaveBeenCalledWith("extender-name"); + expect(ctx.dynamicImport).toHaveBeenCalledWith("recursive-extender-name"); }); -test('uses prefix key recursively', () => { - const input = {extends: ['extender-name']}; +test("uses prefix key recursively", async () => { + const input = { extends: ["extender-name"] }; - const require = (id: string) => { + const dynamicImport = (id: string) => { switch (id) { - case 'prefix-extender-name': - return {extends: ['recursive-extender-name']}; - case 'prefix-recursive-extender-name': - return {foo: 'bar'}; + case "prefix-extender-name": + return { extends: ["recursive-extender-name"] }; + case "prefix-recursive-extender-name": + return { foo: "bar" }; default: return {}; } }; - const ctx = {resolve: id, require: jest.fn(require)} as ResolveExtendsContext; + const ctx = { + resolve: id, + dynamicImport: vi.fn(dynamicImport), + } as ResolveExtendsContext; - resolveExtends(input, { + await resolveExtends(input, { ...ctx, - prefix: 'prefix', + prefix: "prefix", }); - expect(ctx.require).toHaveBeenCalledWith('prefix-extender-name'); - expect(ctx.require).toHaveBeenCalledWith('prefix-recursive-extender-name'); + expect(ctx.dynamicImport).toHaveBeenCalledWith("prefix-extender-name"); + expect(ctx.dynamicImport).toHaveBeenCalledWith( + "prefix-recursive-extender-name", + ); }); -test('propagates contents recursively', () => { - const input = {extends: ['extender-name']}; +test("propagates contents recursively", async () => { + const input = { extends: ["extender-name"] }; - const require = (id: string) => { + const dynamicImport = (id: string) => { switch (id) { - case 'extender-name': - return {extends: ['recursive-extender-name'], foo: 'bar'}; - case 'recursive-extender-name': - return {baz: 'bar'}; + case "extender-name": + return { extends: ["recursive-extender-name"], foo: "bar" }; + case "recursive-extender-name": + return { baz: "bar" }; default: return {}; } }; - const ctx = {resolve: id, require: jest.fn(require)} as ResolveExtendsContext; + const ctx = { + resolve: id, + dynamicImport: vi.fn(dynamicImport), + } as ResolveExtendsContext; - const actual = resolveExtends(input, ctx); + const actual = await resolveExtends(input, ctx); const expected = { - extends: ['extender-name'], - foo: 'bar', - baz: 'bar', + extends: ["extender-name"], + foo: "bar", + baz: "bar", }; expect(actual).toEqual(expected); }); -test('propagates contents recursively with overlap', () => { - const input = {extends: ['extender-name']}; +test("propagates contents recursively with overlap", async () => { + const input: UserConfig = { extends: ["extender-name"] }; - const require = (id: string) => { + const dynamicImport = (id: string): UserConfig => { switch (id) { - case 'extender-name': + case "extender-name": return { - extends: ['recursive-extender-name'], - rules: {rule: ['zero', 'one']}, + extends: ["recursive-extender-name"], + rules: { rule: [RuleConfigSeverity.Warning, "always"] }, }; - case 'recursive-extender-name': - return {rules: {rule: ['two', 'three', 'four']}}; + case "recursive-extender-name": + return { rules: { rule: [RuleConfigSeverity.Error, "never", "four"] } }; default: return {}; } }; - const ctx = {resolve: id, require: jest.fn(require)} as ResolveExtendsContext; + const ctx = { + resolve: id, + dynamicImport: vi.fn(dynamicImport), + } as ResolveExtendsContext; - const actual = resolveExtends(input, ctx); + const actual = await resolveExtends(input, ctx); - const expected = { - extends: ['extender-name'], + const expected: UserConfig = { + extends: ["extender-name"], rules: { - rule: ['zero', 'one'], + rule: [RuleConfigSeverity.Warning, "always"], }, }; expect(actual).toEqual(expected); }); -test('extends rules from left to right with overlap', () => { - const input = {extends: ['left', 'right']}; +test("extends rules from left to right with overlap", async () => { + const input: UserConfig = { extends: ["left", "right"] }; - const require = (id: string) => { + const dynamicImport = (id: string): UserConfig => { switch (id) { - case 'left': - return {rules: {a: true}}; - case 'right': - return {rules: {a: false, b: true}}; + case "left": + return { rules: { a: [RuleConfigSeverity.Disabled, "never", true] } }; + case "right": + return { + rules: { + a: [RuleConfigSeverity.Disabled, "never", false], + b: [RuleConfigSeverity.Disabled, "never", true], + }, + }; default: return {}; } }; - const ctx = {resolve: id, require: jest.fn(require)} as ResolveExtendsContext; + const ctx = { + resolve: id, + dynamicImport: vi.fn(dynamicImport), + } as ResolveExtendsContext; - const actual = resolveExtends(input, ctx); + const actual = await resolveExtends(input, ctx); - const expected = { - extends: ['left', 'right'], + const expected: UserConfig = { + extends: ["left", "right"], rules: { - a: false, - b: true, + a: [RuleConfigSeverity.Disabled, "never", false], + b: [RuleConfigSeverity.Disabled, "never", true], }, }; expect(actual).toEqual(expected); }); -test('extending contents should take precedence', () => { - const input = {extends: ['extender-name'], zero: 'root'}; +test("extending contents should take precedence", async () => { + const input = { extends: ["extender-name"], zero: "root" }; - const require = (id: string) => { + const dynamicImport = (id: string) => { switch (id) { - case 'extender-name': - return {extends: ['recursive-extender-name'], zero: id, one: id}; - case 'recursive-extender-name': + case "extender-name": + return { extends: ["recursive-extender-name"], zero: id, one: id }; + case "recursive-extender-name": return { - extends: ['second-recursive-extender-name'], + extends: ["second-recursive-extender-name"], zero: id, one: id, two: id, }; - case 'second-recursive-extender-name': - return {zero: id, one: id, two: id, three: id}; + case "second-recursive-extender-name": + return { zero: id, one: id, two: id, three: id }; default: return {}; } }; - const ctx = {resolve: id, require: jest.fn(require)} as ResolveExtendsContext; + const ctx = { + resolve: id, + dynamicImport: vi.fn(dynamicImport), + } as ResolveExtendsContext; - const actual = resolveExtends(input, ctx); + const actual = await resolveExtends(input, ctx); const expected = { - extends: ['extender-name'], - zero: 'root', - one: 'extender-name', - two: 'recursive-extender-name', - three: 'second-recursive-extender-name', + extends: ["extender-name"], + zero: "root", + one: "extender-name", + two: "recursive-extender-name", + three: "second-recursive-extender-name", }; expect(actual).toEqual(expected); }); -test('should fall back to conventional-changelog-lint-config prefix', () => { - const input = {extends: ['extender-name']}; +test("should fall back to conventional-changelog-lint-config prefix", async () => { + const input = { extends: ["extender-name"] }; const resolve = (id: string) => { - if (id === 'conventional-changelog-lint-config-extender-name') { - return 'conventional-changelog-lint-config-extender-name'; + if (id === "conventional-changelog-lint-config-extender-name") { + return "conventional-changelog-lint-config-extender-name"; } throw new Error(`Could not find module "*${id}"`); }; - const require = (id: string) => { + const dynamicImport = (id: string) => { switch (id) { - case 'conventional-changelog-lint-config-extender-name': - return { - rules: { - fallback: true, - }, - }; + case "conventional-changelog-lint-config-extender-name": + return { rules: { fallback: true } }; default: return {}; } }; const ctx = { - resolve: jest.fn(resolve), - require: jest.fn(require), + resolve: vi.fn(resolve), + dynamicImport: vi.fn(dynamicImport), } as ResolveExtendsContext; - const actual = resolveExtends(input, { + const actual = await resolveExtends(input, { ...ctx, - prefix: 'prefix', + prefix: "prefix", }); expect(actual).toEqual({ - extends: ['extender-name'], + extends: ["extender-name"], rules: { fallback: true, }, }); }); + +test("plugins should be merged correctly", async () => { + const input = { extends: ["extender-name"], zero: "root" }; + + const dynamicImport = (id: string) => { + switch (id) { + case "extender-name": + return { extends: ["recursive-extender-name"], plugins: ["test"] }; + case "recursive-extender-name": + return { + extends: ["second-recursive-extender-name"], + plugins: ["test2"], + }; + case "second-recursive-extender-name": + return { plugins: ["test3"] }; + default: + return {}; + } + }; + + const ctx = { + resolve: id, + dynamicImport: vi.fn(dynamicImport), + } as ResolveExtendsContext; + + const actual = await resolveExtends(input, ctx); + + const expected = { + extends: ["extender-name"], + plugins: ["test3", "test2", "test"], + zero: "root", + }; + + expect(actual).toEqual(expected); +}); + +test("rules should be merged correctly", async () => { + const input: UserConfig = { + extends: ["extender-name"], + rules: { test1: [RuleConfigSeverity.Warning, "never", "base"] }, + }; + + const dynamicImport = (id: string): UserConfig => { + switch (id) { + case "extender-name": + return { + extends: ["recursive-extender-name"], + rules: { test2: [RuleConfigSeverity.Error, "never", id] }, + }; + case "recursive-extender-name": + return { + extends: ["second-recursive-extender-name"], + rules: { test1: [RuleConfigSeverity.Disabled, "never", id] }, + }; + case "second-recursive-extender-name": + return { rules: { test2: [RuleConfigSeverity.Warning, "never", id] } }; + default: + return {}; + } + }; + + const ctx = { + resolve: id, + dynamicImport: vi.fn(dynamicImport), + } as ResolveExtendsContext; + + const actual = await resolveExtends(input, ctx); + + const expected: UserConfig = { + extends: ["extender-name"], + rules: { + test1: [RuleConfigSeverity.Warning, "never", "base"], + test2: [RuleConfigSeverity.Error, "never", "extender-name"], + }, + }; + + expect(actual).toEqual(expected); +}); + +// https://github.com/conventional-changelog/commitlint/issues/327 +test("parserPreset should resolve correctly in extended configuration", async () => { + const input = { extends: ["extender-name"], zero: "root" }; + + const dynamicImport = (id: string) => { + switch (id) { + case "extender-name": + return { + extends: ["recursive-extender-name"], + parserPreset: { + parserOpts: { + issuePrefixes: ["#", "!", "&", "no-references"], + referenceActions: null, + }, + }, + }; + case "recursive-extender-name": + return { parserPreset: { parserOpts: { issuePrefixes: ["#", "!"] } } }; + default: + return {}; + } + }; + + const ctx = { + resolve: id, + dynamicImport: vi.fn(dynamicImport), + } as ResolveExtendsContext; + + const actual = await resolveExtends(input, ctx); + + const expected = { + extends: ["extender-name"], + parserPreset: { + parserOpts: { + issuePrefixes: ["#", "!", "&", "no-references"], + referenceActions: null, + }, + }, + zero: "root", + }; + + expect(actual).toEqual(expected); +}); + +test("parserPreset should be merged correctly", async () => { + const input = { extends: ["extender-name"], zero: "root" }; + + const dynamicImport = (id: string) => { + switch (id) { + case "extender-name": + return { + extends: ["recursive-extender-name"], + parserPreset: { + parserOpts: { + referenceActions: null, + }, + }, + }; + case "recursive-extender-name": + return { parserPreset: { parserOpts: { issuePrefixes: ["#", "!"] } } }; + default: + return {}; + } + }; + + const ctx = { + resolve: id, + dynamicImport: vi.fn(dynamicImport), + } as ResolveExtendsContext; + + const actual = await resolveExtends(input, ctx); + + const expected = { + extends: ["extender-name"], + parserPreset: { + parserOpts: { + issuePrefixes: ["#", "!"], + referenceActions: null, + }, + }, + zero: "root", + }; + + expect(actual).toEqual(expected); +}); + +test("should correctly merge nested configs", async () => { + const input = { extends: ["extender-1"] }; + + const dynamicImport = (id: string) => { + switch (id) { + case "extender-1": + return { extends: ["extender-3", "extender-2"] }; + case "extender-2": + return { extends: ["extender-4"] }; + case "extender-3": + return { rules: { test: [RuleConfigSeverity.Warning, "never", 3] } }; + case "extender-4": + return { + extends: ["extender-5", "extender-6"], + rules: { test: [RuleConfigSeverity.Warning, "never", 4] }, + }; + case "extender-5": + return { rules: { test: [RuleConfigSeverity.Warning, "never", 5] } }; + case "extender-6": + return { rules: { test: [RuleConfigSeverity.Warning, "never", 6] } }; + default: + return {}; + } + }; + + const ctx = { + resolve: id, + dynamicImport: vi.fn(dynamicImport), + } as ResolveExtendsContext; + + const actual = await resolveExtends(input, ctx); + + const expected = { + extends: ["extender-1"], + rules: { + test: [RuleConfigSeverity.Warning, "never", 4], + }, + }; + + expect(actual).toEqual(expected); +}); diff --git a/@commitlint/resolve-extends/src/index.ts b/@commitlint/resolve-extends/src/index.ts index f8c786c18b..b44bd3956a 100644 --- a/@commitlint/resolve-extends/src/index.ts +++ b/@commitlint/resolve-extends/src/index.ts @@ -1,151 +1,246 @@ -import path from 'path'; +import { createRequire } from "node:module"; +import fs from "node:fs"; +import path from "node:path"; +import { pathToFileURL, fileURLToPath } from "node:url"; + +import globalDirectory from "global-directory"; +import { moduleResolve } from "import-meta-resolve"; +import mergeWith from "lodash.mergewith"; +import resolveFrom_ from "resolve-from"; +import { validateConfig } from "@commitlint/config-validator"; +import type { ParserPreset, UserConfig } from "@commitlint/types"; + +const dynamicImport = async <T>(id: string): Promise<T> => { + if (id.endsWith(".json")) { + const require = createRequire(import.meta.url); + return require(id); + } -import 'resolve-global'; -import resolveFrom from 'resolve-from'; -import merge from 'lodash/merge'; -import mergeWith from 'lodash/mergeWith'; + const imported = await import( + path.isAbsolute(id) ? pathToFileURL(id).toString() : id + ); + return ("default" in imported && imported.default) || imported; +}; + +const pathSuffixes = [ + "", + ".js", + ".json", + `${path.sep}index.js`, + `${path.sep}index.json`, +]; + +const specifierSuffixes = ["", ".js", ".json", "/index.js", "/index.json"]; + +const conditions = new Set(["import", "node"]); + +/** + * @see moduleResolve + */ +export const resolveFrom = (lookup: string, parent?: string): string => { + if (path.isAbsolute(lookup)) { + for (const suffix of pathSuffixes) { + const filename = lookup + suffix; + if (fs.existsSync(filename)) { + return filename; + } + } + } -const importFresh = require('import-fresh'); + let resolveError: Error | undefined; -export interface ResolvedConfig { - parserPreset?: unknown; - [key: string]: unknown; -} + const base = pathToFileURL( + parent + ? fs.statSync(parent).isDirectory() + ? path.join(parent, "noop.js") + : parent + : import.meta.url, + ); -export interface ResolveExtendsConfig { - parserPreset?: unknown; - extends?: string | string[]; - [key: string]: unknown; -} + for (const suffix of specifierSuffixes) { + try { + return fileURLToPath(moduleResolve(lookup + suffix, base, conditions)); + } catch (err) { + if (!resolveError) { + resolveError = err as Error; + } + } + } + + try { + /** + * Yarn P'n'P does not support pure ESM well, this is only a workaround for + * @see https://github.com/conventional-changelog/commitlint/issues/3936 + */ + return resolveFrom_(path.dirname(fileURLToPath(base)), lookup); + } catch { + throw resolveError; + } +}; + +/** + * + * @param resolvedParserPreset path resolved by {@link resolveFrom} + * @returns path and parserOpts function retrieved from `resolvedParserPreset` + */ +export const loadParserPreset = async ( + resolvedParserPreset: string, +): Promise<Pick<ParserPreset, "path" | "parserOpts">> => { + const finalParserOpts = await dynamicImport(resolvedParserPreset); + + const relativeParserPath = path.relative(process.cwd(), resolvedParserPreset); + + return { + path: `./${relativeParserPath}`.split(path.sep).join("/"), + parserOpts: finalParserOpts, + }; +}; export interface ResolveExtendsContext { cwd?: string; - parserPreset?: unknown; + parserPreset?: string | ParserPreset; prefix?: string; - resolve?(id: string, ctx?: {prefix?: string; cwd?: string}): string; + resolve?(id: string, ctx?: { prefix?: string; cwd?: string }): string; resolveGlobal?: (id: string) => string; - require?<T>(id: string): T; + dynamicImport?<T>(id: string): T | Promise<T>; } -export default function resolveExtends( - config: ResolveExtendsConfig = {}, - context: ResolveExtendsContext = {} -) { - const {extends: e} = config; - const extended = loadExtends(config, context).reduce( - (r, {extends: _, ...c}) => - mergeWith(r, c, (objValue, srcValue) => { - if (Array.isArray(objValue)) { +export default async function resolveExtends( + config: UserConfig = {}, + context: ResolveExtendsContext = {}, +): Promise<UserConfig> { + const { extends: e } = config; + const extended = await loadExtends(config, context); + extended.push(config); + return extended.reduce( + (r, { extends: _, ...c }) => + mergeWith(r, c, (objValue, srcValue, key) => { + if (key === "plugins") { + if (Array.isArray(objValue)) { + return objValue.concat(srcValue); + } + } else if (Array.isArray(objValue)) { return srcValue; } }), - e ? {extends: e} : {} + e ? { extends: e } : {}, ); - - return merge({}, extended, config); } -function loadExtends( - config: ResolveExtendsConfig = {}, - context: ResolveExtendsContext = {} -): ResolvedConfig[] { - const {extends: e} = config; +async function loadExtends( + config: UserConfig = {}, + context: ResolveExtendsContext = {}, +): Promise<UserConfig[]> { + const { extends: e } = config; const ext = e ? (Array.isArray(e) ? e : [e]) : []; - return ext.reduce<ResolvedConfig[]>((configs, raw) => { - const load = context.require || require; + return await ext.reduce(async (configs, raw) => { const resolved = resolveConfig(raw, context); - const c = load(resolved); + + const c = await (context.dynamicImport || dynamicImport)<{ + parserPreset?: string; + }>(resolved); const cwd = path.dirname(resolved); - const ctx = merge({}, context, {cwd}); + const ctx = { ...context, cwd }; // Resolve parser preset if none was present before if ( !context.parserPreset && - typeof c === 'object' && - typeof c.parserPreset === 'string' + typeof c === "object" && + typeof c.parserPreset === "string" ) { - const resolvedParserPreset = resolveFrom(cwd, c.parserPreset); - const parserPreset = { + const resolvedParserPreset = resolveFrom(c.parserPreset, cwd); + + const parserPreset: ParserPreset = { name: c.parserPreset, - path: `./${path.relative(process.cwd(), resolvedParserPreset)}` - .split(path.sep) - .join('/'), - parserOpts: require(resolvedParserPreset), + ...(await loadParserPreset(resolvedParserPreset)), }; ctx.parserPreset = parserPreset; config.parserPreset = parserPreset; } - return [...configs, ...loadExtends(c, ctx), c]; - }, []); + validateConfig(resolved, config); + + return [...(await configs), ...(await loadExtends(c, ctx)), c]; + }, Promise.resolve<UserConfig[]>([])); } -function getId(raw: string = '', prefix: string = ''): string { +function getId(raw: string = "", prefix: string = ""): string { const first = raw.charAt(0); - const scoped = first === '@'; - const relative = first === '.'; + const scoped = first === "@"; + const relative = first === "."; const absolute = path.isAbsolute(raw); if (scoped) { - return raw.includes('/') ? raw : [raw, prefix].filter(String).join('/'); + return raw.includes("/") ? raw : [raw, prefix].filter(String).join("/"); } - return relative || absolute ? raw : [prefix, raw].filter(String).join('-'); + return relative || absolute ? raw : [prefix, raw].filter(String).join("-"); } function resolveConfig( raw: string, - context: ResolveExtendsContext = {} + context: ResolveExtendsContext = {}, ): string { const resolve = context.resolve || resolveId; const id = getId(raw, context.prefix); + let resolved: string; try { - return resolve(id, context); + resolved = resolve(id, context); } catch (err) { - const legacy = getId(raw, 'conventional-changelog-lint-config'); - const resolved = resolve(legacy, context); + const legacy = getId(raw, "conventional-changelog-lint-config"); + resolved = resolve(legacy, context); console.warn( - `Resolving ${raw} to legacy config ${legacy}. To silence this warning raise an issue at 'npm repo ${legacy}' to rename to ${id}.` + `Resolving ${raw} to legacy config ${legacy}. To silence this warning raise an issue at 'npm repo ${legacy}' to rename to ${id}.`, ); - return resolved; } + + return resolved; } function resolveId( - id: string, - context: {cwd?: string; resolveGlobal?: (id: string) => string | void} = {} + specifier: string, + context: ResolveExtendsContext = {}, ): string { const cwd = context.cwd || process.cwd(); - const localPath = resolveFromSilent(cwd, id); + const localPath = resolveFromSilent(specifier, cwd); - if (typeof localPath === 'string') { + if (typeof localPath === "string") { return localPath; } const resolveGlobal = context.resolveGlobal || resolveGlobalSilent; - const globalPath = resolveGlobal(id); + const globalPath = resolveGlobal(specifier); - if (typeof globalPath === 'string') { + if (typeof globalPath === "string") { return globalPath; } - const err = new Error(`Cannot find module "${id}" from "${cwd}"`); - (err as any).code = 'MODULE_NOT_FOUND'; - throw err; + const err = new Error(`Cannot find module "${specifier}" from "${cwd}"`); + throw Object.assign(err, { code: "MODULE_NOT_FOUND" }); } -function resolveFromSilent(cwd: string, id: string): string | void { +export function resolveFromSilent( + specifier: string, + parent: string, +): string | void { try { - return resolveFrom(cwd, id); - } catch (err) {} + return resolveFrom(specifier, parent); + } catch {} } -function resolveGlobalSilent(id: string): string | void { - try { - const resolveGlobal = importFresh('resolve-global'); - return resolveGlobal(id); - } catch (err) {} +/** + * @see https://github.com/sindresorhus/resolve-global/blob/682a6bb0bd8192b74a6294219bb4c536b3708b65/index.js#L7 + */ +export function resolveGlobalSilent(specifier: string): string | void { + for (const globalPackages of [ + globalDirectory.npm.packages, + globalDirectory.yarn.packages, + ]) { + try { + return resolveFrom(specifier, globalPackages); + } catch {} + } } diff --git a/@commitlint/resolve-extends/tsconfig.json b/@commitlint/resolve-extends/tsconfig.json index 49479bf34f..ebcddb79e9 100644 --- a/@commitlint/resolve-extends/tsconfig.json +++ b/@commitlint/resolve-extends/tsconfig.json @@ -2,9 +2,11 @@ "extends": "../../tsconfig.shared.json", "compilerOptions": { "composite": true, + "isolatedModules": false, "rootDir": "./src", "outDir": "./lib" }, "include": ["./src"], - "exclude": ["./src/**/*.test.ts", "./lib/**/*"] + "exclude": ["./src/**/*.test.ts", "./lib/**/*"], + "references": [{ "path": "../types" }, { "path": "../config-validator" }] } diff --git a/@commitlint/rules/CHANGELOG.md b/@commitlint/rules/CHANGELOG.md index 985e62b30e..00e337a210 100644 --- a/@commitlint/rules/CHANGELOG.md +++ b/@commitlint/rules/CHANGELOG.md @@ -3,54 +3,55 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. -# [13.1.0](https://github.com/conventional-changelog/commitlint/compare/v13.0.0...v13.1.0) (2021-07-24) +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) -### Features +* feat(rules)!: make body-max-line-length ignore lines with URLs (#4486) ([2f37a88](https://github.com/conventional-changelog/commitlint/commit/2f37a886be4b07bcd8e1126cc6a13256e7b6cc37)), closes [#4486](https://github.com/conventional-changelog/commitlint/issues/4486) -* **rules:** allow body-case to accept an array of cases ([5383c9e](https://github.com/conventional-changelog/commitlint/commit/5383c9edcd9a351ea1c33ed49f47afed9b1cde6b)), closes [#2631](https://github.com/conventional-changelog/commitlint/issues/2631) +### BREAKING CHANGES +* when lines contain URLs exceeding the maximum +line length `body-max-line-length` will be ignored -# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) -### Features +## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) -* add subject-exclamation-mark rule to improve error messages ([#2593](https://github.com/conventional-changelog/commitlint/issues/2593)) ([be701bd](https://github.com/conventional-changelog/commitlint/commit/be701bdb1de4e667b7a872767244285c4fa4fda4)) -* **rules:** add `trailer-exists` rule ([#2578](https://github.com/conventional-changelog/commitlint/issues/2578)) ([cd3816d](https://github.com/conventional-changelog/commitlint/commit/cd3816d553762eae99e088689395c55afce0c6cc)) +### Performance Improvements -* chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) +* **rules:** optimize header-trim ([#4363](https://github.com/conventional-changelog/commitlint/issues/4363)) ([b7e404b](https://github.com/conventional-changelog/commitlint/commit/b7e404bc036dbd3cbdffa38e85c833d10e52d68b)) -### BREAKING CHANGES -* minimum node version is 12 +# [19.8.0](https://github.com/conventional-changelog/commitlint/compare/v19.7.1...v19.8.0) (2025-03-07) +### Performance Improvements -## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) +* use `node:` prefix to bypass require.cache call for builtins ([#4302](https://github.com/conventional-changelog/commitlint/issues/4302)) ([0cd8f41](https://github.com/conventional-changelog/commitlint/commit/0cd8f410573fe11383f788b1ceb7e0946143591d)) -**Note:** Version bump only for package @commitlint/rules +# [19.6.0](https://github.com/conventional-changelog/commitlint/compare/v19.5.0...v19.6.0) (2024-11-19) -## [12.1.2](https://github.com/conventional-changelog/commitlint/compare/v12.1.1...v12.1.2) (2021-04-29) -**Note:** Version bump only for package @commitlint/rules +### Features +* support using delimiter in `scope-enum` ([#4161](https://github.com/conventional-changelog/commitlint/issues/4161)) ([f55521d](https://github.com/conventional-changelog/commitlint/commit/f55521dbb8ce0530ecb9557122689bba740fb2a5)) -## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) + +# [19.5.0](https://github.com/conventional-changelog/commitlint/compare/v19.4.1...v19.5.0) (2024-09-11) **Note:** Version bump only for package @commitlint/rules @@ -58,75 +59,89 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [12.1.0](https://github.com/conventional-changelog/commitlint/compare/v12.0.1...v12.1.0) (2021-03-06) +## [19.4.1](https://github.com/conventional-changelog/commitlint/compare/v19.4.0...v19.4.1) (2024-08-28) -**Note:** Version bump only for package @commitlint/rules +### Bug Fixes +* **rules:** handle blank commit message in signed-off-by check ([#4124](https://github.com/conventional-changelog/commitlint/issues/4124)) ([7ab4bab](https://github.com/conventional-changelog/commitlint/commit/7ab4bab31f4b19ddedd850e435398037437007b6)) -## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) -**Note:** Version bump only for package @commitlint/rules +## [19.0.3](https://github.com/conventional-changelog/commitlint/compare/v19.0.2...v19.0.3) (2024-02-28) +**Note:** Version bump only for package @commitlint/rules -# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) -### Features +# [19.0.0](https://github.com/conventional-changelog/commitlint/compare/v18.6.2...v19.0.0) (2024-02-27) -* **rules:** add body-full-stop rule ([#2144](https://github.com/conventional-changelog/commitlint/issues/2144)) ([7767ca2](https://github.com/conventional-changelog/commitlint/commit/7767ca2591d10207c4abe7f3e5e6de503ac12a25)) +* feat!: migrate to pure ESM (#3850) ([3423735](https://github.com/conventional-changelog/commitlint/commit/342373559bdf7c783c4ef37ff05dc38a5f681159)), closes [#3850](https://github.com/conventional-changelog/commitlint/issues/3850) +### Reverts +* Revert "chore!: minimum node version v20" ([2816783](https://github.com/conventional-changelog/commitlint/commit/2816783d00e7eb967de3ac9347c2fc43dc8b94fa)) -# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) +### BREAKING CHANGES -### Bug Fixes +* migrate to pure ESM -* **rules:** ignore comments in `signed-off-by` ([#2098](https://github.com/conventional-changelog/commitlint/issues/2098)) ([b610bcd](https://github.com/conventional-changelog/commitlint/commit/b610bcd15215cc5f14fb6de07914ed595cc3047b)) +* feat: migrate to pure ESM +* chore: update snapshot +* fix: load `parserPreset` with another `await` +* test: migrate to vitest +* test: remove no replacement `--runInBand` test-ci script -# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) +* chore: fix code reviews +* refactor(load): rewrite resolve logic -* refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) +* fix(config-nx-scopes): fix syntax error +* feat(resolve-extends): add resolveFrom and loadParserPreset -### BREAKING CHANGES +* feat(load): use resolveFrom and loadParserPreset from resolve-extends -* remove node 8 from circle-ci checks +* test: include only @commitlint/* packages src in coverage -also remove node 13 because we do not support experimental versions +* test: explicit import vitest utilities -* docs: update node v10 to latest LTS 10 version +* test: remove @jest/globals from dependencies -Co-authored-by: Cedric van Putten <me@bycedric.com> +* fix(resolve-extends): `resolveFrom` output should be platform aware -Co-authored-by: Cedric van Putten <me@bycedric.com> +* test: restore NO_COLOR to test script +* chore: fix linting issues +* fix: should use fileURLToPath instead of pathname for Windows compatibility +* Apply suggestions from code review +* fix: should reuse `cli` instead call `yargs()` -## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) +* feat(cli): set terminalWidth as wrap to avoid work break on help -**Note:** Version bump only for package @commitlint/rules +* Update .eslintrc.cjs +* feat: migrate @commitlint/config-conventional to pure ESM -## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) + +## [18.6.1](https://github.com/conventional-changelog/commitlint/compare/v18.6.0...v18.6.1) (2024-02-13) **Note:** Version bump only for package @commitlint/rules @@ -134,18 +149,29 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) +# [18.6.0](https://github.com/conventional-changelog/commitlint/compare/v18.5.1...v18.6.0) (2024-01-25) ### Features -* enable multiple scopes in scope-enum and scope-case rules ([#901](https://github.com/conventional-changelog/commitlint/issues/901)) ([73632ce](https://github.com/conventional-changelog/commitlint/commit/73632cec299d5c3a980d07037c08633c843a8555)) +* **rules:** add header-trim rule ([#3199](https://github.com/conventional-changelog/commitlint/issues/3199)) ([#3871](https://github.com/conventional-changelog/commitlint/issues/3871)) ([331579a](https://github.com/conventional-changelog/commitlint/commit/331579a8796af901b5e5103c44fedf1cb3a2f661)) -## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) +## [18.4.4](https://github.com/conventional-changelog/commitlint/compare/v18.4.3...v18.4.4) (2024-01-04) + + +### Bug Fixes + +* subject-full-stop false positive when using ellipsis ([#3839](https://github.com/conventional-changelog/commitlint/issues/3839)) ([b4246d6](https://github.com/conventional-changelog/commitlint/commit/b4246d6428399177d43296dc8bec6714e664d037)) + + + + + +## [18.4.3](https://github.com/conventional-changelog/commitlint/compare/v18.4.2...v18.4.3) (2023-11-21) **Note:** Version bump only for package @commitlint/rules @@ -153,23 +179,56 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) +# [18.4.0](https://github.com/conventional-changelog/commitlint/compare/v18.3.0...v18.4.0) (2023-11-10) + +**Note:** Version bump only for package @commitlint/rules -### Bug Fixes -* [#840](https://github.com/conventional-changelog/commitlint/issues/840) add caret to lodash versions ([#843](https://github.com/conventional-changelog/commitlint/issues/843)) ([ffc0bac](https://github.com/conventional-changelog/commitlint/commit/ffc0bac26993acb2ab6a8fa51065f93c92b0d644)) + + +# [18.1.0](https://github.com/conventional-changelog/commitlint/compare/v18.0.0...v18.1.0) (2023-10-25) ### Features -* add async promise based rules methods into lint ([#976](https://github.com/conventional-changelog/commitlint/issues/976)) ([4443062](https://github.com/conventional-changelog/commitlint/commit/444306249b8a3d04524538f61edca8f6cc10d75f)) +* [scope-enum] [scope-case] allow space after comma as scope delimiter ([#3577](https://github.com/conventional-changelog/commitlint/issues/3577)) ([13c4bfc](https://github.com/conventional-changelog/commitlint/commit/13c4bfc637dd6c66477fa1c8da821ed46af28c44)), closes [#3576](https://github.com/conventional-changelog/commitlint/issues/3576) -## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) +# [18.0.0](https://github.com/conventional-changelog/commitlint/compare/v17.8.1...v18.0.0) (2023-10-20) + + +* chore!: minimum node version v18 (#3644) ([5b4aeaf](https://github.com/conventional-changelog/commitlint/commit/5b4aeaf4f01c2726a7bc8631a23bb34c849baad2)), closes [#3644](https://github.com/conventional-changelog/commitlint/issues/3644) + + +### BREAKING CHANGES + +* drop node v14 and v16 support + +* chore: remove unused types + +* docs: prepare node update and new release + +* chore!: minimum TS version v5 +* drop TS v4 support + +* ci: remove node v14/16 checks + +* chore: adjust node types to minimal supported version + +* chore!: further major versions of other deps +* upgrade conventional-changelog-conventionalcommits, conventional-commits-parser, conventional-changelog-atom, + +* docs: simplify releases and remove roadmap + + + + + +## [17.8.1](https://github.com/conventional-changelog/commitlint/compare/v17.8.0...v17.8.1) (2023-10-20) **Note:** Version bump only for package @commitlint/rules @@ -177,7 +236,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) +# [17.7.0](https://github.com/conventional-changelog/commitlint/compare/v17.6.7...v17.7.0) (2023-08-09) **Note:** Version bump only for package @commitlint/rules @@ -185,7 +244,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) +## [17.6.7](https://github.com/conventional-changelog/commitlint/compare/v17.6.6...v17.6.7) (2023-07-19) **Note:** Version bump only for package @commitlint/rules @@ -193,7 +252,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) +## [17.6.5](https://github.com/conventional-changelog/commitlint/compare/v17.6.4...v17.6.5) (2023-05-30) **Note:** Version bump only for package @commitlint/rules @@ -201,7 +260,29 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) +## [17.6.1](https://github.com/conventional-changelog/commitlint/compare/v17.6.0...v17.6.1) (2023-04-14) + + +### Bug Fixes + +* **rules:** avoid processing strings with case-less Letter category symbols in `subject-case` ([#3586](https://github.com/conventional-changelog/commitlint/issues/3586)) ([70a4450](https://github.com/conventional-changelog/commitlint/commit/70a44501ac8459f0c1d2b200608b024585964637)), closes [#3585](https://github.com/conventional-changelog/commitlint/issues/3585) + + + + + +# [17.6.0](https://github.com/conventional-changelog/commitlint/compare/v17.5.1...v17.6.0) (2023-04-13) + + +### Features + +* **rules:** expand Latin-only characters limitation for `subject-case` with Unicode support ([#3575](https://github.com/conventional-changelog/commitlint/issues/3575)) ([5f83423](https://github.com/conventional-changelog/commitlint/commit/5f8342355a856e5be7b8a7b851e1519d62678465)) + + + + + +## [17.4.4](https://github.com/conventional-changelog/commitlint/compare/v17.4.3...v17.4.4) (2023-02-17) **Note:** Version bump only for package @commitlint/rules @@ -209,161 +290,306 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [7.5.2](https://github.com/conventional-changelog/commitlint/compare/v7.5.1...v7.5.2) (2019-02-11) +## [17.4.3](https://github.com/conventional-changelog/commitlint/compare/v17.4.2...v17.4.3) (2023-02-13) ### Bug Fixes -* failing sentence-case for subjects with slashes ([#574](https://github.com/conventional-changelog/commitlint/issues/574)) ([48a8602](https://github.com/conventional-changelog/commitlint/commit/48a8602)) +* subject-full-stop rule bugfix ([#3531](https://github.com/conventional-changelog/commitlint/issues/3531)) ([5d3d529](https://github.com/conventional-changelog/commitlint/commit/5d3d529a6a57baee1bfdaaf3f0c503dee009e152)) -<a name="7.5.0"></a> -# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) +## [17.4.2](https://github.com/conventional-changelog/commitlint/compare/v17.4.1...v17.4.2) (2023-01-12) + +**Note:** Version bump only for package @commitlint/rules + + + + + +# [17.4.0](https://github.com/conventional-changelog/commitlint/compare/v17.3.0...v17.4.0) (2023-01-04) + +**Note:** Version bump only for package @commitlint/rules +# [17.3.0](https://github.com/conventional-changelog/commitlint/compare/v17.2.1...v17.3.0) (2022-11-21) + +**Note:** Version bump only for package @commitlint/rules + +# [17.2.0](https://github.com/conventional-changelog/commitlint/compare/v17.1.2...v17.2.0) (2022-10-31) + +**Note:** Version bump only for package @commitlint/rules + +# [17.0.0](https://github.com/conventional-changelog/commitlint/compare/v16.3.0...v17.0.0) (2022-05-16) + +- chore!: minimum node version v14 (#3128) ([ac5f9b4](https://github.com/conventional-changelog/commitlint/commit/ac5f9b47a9e3cd5c9d58b14da0feb426f06b1ef9)), closes [#3128](https://github.com/conventional-changelog/commitlint/issues/3128) + +### BREAKING CHANGES + +- drop node v12 support + +- chore: rename circleci windows job + +node version is not defned by the name anyways (i think) + +## [16.2.4](https://github.com/conventional-changelog/commitlint/compare/v16.2.3...v16.2.4) (2022-04-28) ### Bug Fixes -* replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) +- **rules:** footer-leading-blank should work with body comments ([#3139](https://github.com/conventional-changelog/commitlint/issues/3139)) ([7dd88c9](https://github.com/conventional-changelog/commitlint/commit/7dd88c913cba9f444acc587c77210cb718c928c9)) +## [16.2.1](https://github.com/conventional-changelog/commitlint/compare/v16.2.0...v16.2.1) (2022-02-13) -### Features +**Note:** Version bump only for package @commitlint/rules + +# [16.0.0](https://github.com/conventional-changelog/commitlint/compare/v15.0.0...v16.0.0) (2021-12-26) + +**Note:** Version bump only for package @commitlint/rules -* **rule-header-length:** show current header length ([6d61c4f](https://github.com/conventional-changelog/commitlint/commit/6d61c4f)) +# [15.0.0](https://github.com/conventional-changelog/commitlint/compare/v14.2.0...v15.0.0) (2021-11-17) +**Note:** Version bump only for package @commitlint/rules +# [14.1.0](https://github.com/conventional-changelog/commitlint/compare/v14.0.0...v14.1.0) (2021-11-01) +**Note:** Version bump only for package @commitlint/rules -<a name="7.4.0"></a> -# [7.4.0](https://github.com/conventional-changelog/commitlint/compare/v7.3.2...v7.4.0) (2019-01-27) +# [14.0.0](https://github.com/conventional-changelog/commitlint/compare/v13.2.1...v14.0.0) (2021-10-26) +**Note:** Version bump only for package @commitlint/rules + +# [13.2.0](https://github.com/conventional-changelog/commitlint/compare/v13.1.0...v13.2.0) (2021-09-28) + +**Note:** Version bump only for package @commitlint/rules + +# [13.1.0](https://github.com/conventional-changelog/commitlint/compare/v13.0.0...v13.1.0) (2021-07-24) ### Features -* **rules:** create header-case and header-full-stop rules ([#547](https://github.com/conventional-changelog/commitlint/issues/547)) ([4c36cbd](https://github.com/conventional-changelog/commitlint/commit/4c36cbd)) +- **rules:** allow body-case to accept an array of cases ([5383c9e](https://github.com/conventional-changelog/commitlint/commit/5383c9edcd9a351ea1c33ed49f47afed9b1cde6b)), closes [#2631](https://github.com/conventional-changelog/commitlint/issues/2631) + +# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) +### Features +- add subject-exclamation-mark rule to improve error messages ([#2593](https://github.com/conventional-changelog/commitlint/issues/2593)) ([be701bd](https://github.com/conventional-changelog/commitlint/commit/be701bdb1de4e667b7a872767244285c4fa4fda4)) +- **rules:** add `trailer-exists` rule ([#2578](https://github.com/conventional-changelog/commitlint/issues/2578)) ([cd3816d](https://github.com/conventional-changelog/commitlint/commit/cd3816d553762eae99e088689395c55afce0c6cc)) +- chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) -<a name="7.3.1"></a> -## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) +### BREAKING CHANGES +- minimum node version is 12 +## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) +**Note:** Version bump only for package @commitlint/rules + +## [12.1.2](https://github.com/conventional-changelog/commitlint/compare/v12.1.1...v12.1.2) (2021-04-29) **Note:** Version bump only for package @commitlint/rules -<a name="7.3.0"></a> -# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) +## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) +**Note:** Version bump only for package @commitlint/rules -### Bug Fixes +# [12.1.0](https://github.com/conventional-changelog/commitlint/compare/v12.0.1...v12.1.0) (2021-03-06) -* update to security-patched dependency versions ([97c033b](https://github.com/conventional-changelog/commitlint/commit/97c033b)) -* use correct label for failing empty subjects ([#481](https://github.com/conventional-changelog/commitlint/issues/481)) ([2e7e34d](https://github.com/conventional-changelog/commitlint/commit/2e7e34d)), closes [#476](https://github.com/conventional-changelog/commitlint/issues/476) +**Note:** Version bump only for package @commitlint/rules +## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) +**Note:** Version bump only for package @commitlint/rules +# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) -<a name="7.2.0"></a> -# [7.2.0](https://github.com/conventional-changelog/commitlint/compare/v7.1.2...v7.2.0) (2018-10-05) +### Features +- **rules:** add body-full-stop rule ([#2144](https://github.com/conventional-changelog/commitlint/issues/2144)) ([7767ca2](https://github.com/conventional-changelog/commitlint/commit/7767ca2591d10207c4abe7f3e5e6de503ac12a25)) + +# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) ### Bug Fixes -* **rules:** include possible body offset in footer leading blank ([ff0111a](https://github.com/conventional-changelog/commitlint/commit/ff0111a)) -* handle case rules for numerics correctly ([cadcfed](https://github.com/conventional-changelog/commitlint/commit/cadcfed)) +- **rules:** ignore comments in `signed-off-by` ([#2098](https://github.com/conventional-changelog/commitlint/issues/2098)) ([b610bcd](https://github.com/conventional-changelog/commitlint/commit/b610bcd15215cc5f14fb6de07914ed595cc3047b)) +# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) +- refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) +### BREAKING CHANGES -<a name="7.1.2"></a> -## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) +- remove node 8 from circle-ci checks +also remove node 13 because we do not support experimental versions + +- docs: update node v10 to latest LTS 10 version +Co-authored-by: Cedric van Putten <me@bycedric.com> +Co-authored-by: Cedric van Putten <me@bycedric.com> + +## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) **Note:** Version bump only for package @commitlint/rules -<a name="7.1.0"></a> -# [7.1.0](https://github.com/conventional-changelog/commitlint/compare/v7.0.1...v7.1.0) (2018-08-29) +## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) + +**Note:** Version bump only for package @commitlint/rules +# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) ### Features -* add max line length to body/footer ([542f50e](https://github.com/conventional-changelog/commitlint/commit/542f50e)) +- enable multiple scopes in scope-enum and scope-case rules ([#901](https://github.com/conventional-changelog/commitlint/issues/901)) ([73632ce](https://github.com/conventional-changelog/commitlint/commit/73632cec299d5c3a980d07037c08633c843a8555)) +## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) +**Note:** Version bump only for package @commitlint/rules +# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) -<a name="6.2.0"></a> -# [6.2.0](https://github.com/conventional-changelog/commitlint/compare/v6.1.3...v6.2.0) (2018-05-01) +### Bug Fixes +- [#840](https://github.com/conventional-changelog/commitlint/issues/840) add caret to lodash versions ([#843](https://github.com/conventional-changelog/commitlint/issues/843)) ([ffc0bac](https://github.com/conventional-changelog/commitlint/commit/ffc0bac26993acb2ab6a8fa51065f93c92b0d644)) ### Features -* **rules:** support array for scope-case and type-case ([#312](https://github.com/conventional-changelog/commitlint/issues/312)) ([1f46b9f](https://github.com/conventional-changelog/commitlint/commit/1f46b9f)), closes [#307](https://github.com/conventional-changelog/commitlint/issues/307) +- add async promise based rules methods into lint ([#976](https://github.com/conventional-changelog/commitlint/issues/976)) ([4443062](https://github.com/conventional-changelog/commitlint/commit/444306249b8a3d04524538f61edca8f6cc10d75f)) +## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) +**Note:** Version bump only for package @commitlint/rules +# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) -<a name="6.1.1"></a> -## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) +**Note:** Version bump only for package @commitlint/rules +# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) +**Note:** Version bump only for package @commitlint/rules +# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) **Note:** Version bump only for package @commitlint/rules -<a name="6.1.0"></a> -# [6.1.0](https://github.com/conventional-changelog/commitlint/compare/v6.0.5...v6.1.0) (2018-02-03) +# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) +**Note:** Version bump only for package @commitlint/rules +## [7.5.2](https://github.com/conventional-changelog/commitlint/compare/v7.5.1...v7.5.2) (2019-02-11) +### Bug Fixes -**Note:** Version bump only for package @commitlint/rules +- failing sentence-case for subjects with slashes ([#574](https://github.com/conventional-changelog/commitlint/issues/574)) ([48a8602](https://github.com/conventional-changelog/commitlint/commit/48a8602)) -<a name="6.0.4"></a> -## [6.0.4](https://github.com/conventional-changelog/commitlint/compare/v6.0.3...v6.0.4) (2018-01-31) +<a name="7.5.0"></a> +# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) +### Bug Fixes +- replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) -**Note:** Version bump only for package @commitlint/rules +### Features -<a name="6.0.3"></a> -## [6.0.3](https://github.com/conventional-changelog/commitlint/compare/v6.0.2...v6.0.3) (2018-01-31) +- **rule-header-length:** show current header length ([6d61c4f](https://github.com/conventional-changelog/commitlint/commit/6d61c4f)) +<a name="7.4.0"></a> +# [7.4.0](https://github.com/conventional-changelog/commitlint/compare/v7.3.2...v7.4.0) (2019-01-27) +### Features + +- **rules:** create header-case and header-full-stop rules ([#547](https://github.com/conventional-changelog/commitlint/issues/547)) ([4c36cbd](https://github.com/conventional-changelog/commitlint/commit/4c36cbd)) + +<a name="7.3.1"></a> + +## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) **Note:** Version bump only for package @commitlint/rules -<a name="6.0.2"></a> -## [6.0.2](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.2) (2018-01-12) +<a name="7.3.0"></a> +# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) ### Bug Fixes -* remove typo in error message of type-case ([cb577cb](https://github.com/conventional-changelog/commitlint/commit/cb577cb)) +- update to security-patched dependency versions ([97c033b](https://github.com/conventional-changelog/commitlint/commit/97c033b)) +- use correct label for failing empty subjects ([#481](https://github.com/conventional-changelog/commitlint/issues/481)) ([2e7e34d](https://github.com/conventional-changelog/commitlint/commit/2e7e34d)), closes [#476](https://github.com/conventional-changelog/commitlint/issues/476) +<a name="7.2.0"></a> +# [7.2.0](https://github.com/conventional-changelog/commitlint/compare/v7.1.2...v7.2.0) (2018-10-05) +### Bug Fixes -<a name="6.0.1"></a> -## [6.0.1](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.1) (2018-01-09) +- **rules:** include possible body offset in footer leading blank ([ff0111a](https://github.com/conventional-changelog/commitlint/commit/ff0111a)) +- handle case rules for numerics correctly ([cadcfed](https://github.com/conventional-changelog/commitlint/commit/cadcfed)) + +<a name="7.1.2"></a> + +## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) + +**Note:** Version bump only for package @commitlint/rules + +<a name="7.1.0"></a> + +# [7.1.0](https://github.com/conventional-changelog/commitlint/compare/v7.0.1...v7.1.0) (2018-08-29) + +### Features + +- add max line length to body/footer ([542f50e](https://github.com/conventional-changelog/commitlint/commit/542f50e)) + +<a name="6.2.0"></a> + +# [6.2.0](https://github.com/conventional-changelog/commitlint/compare/v6.1.3...v6.2.0) (2018-05-01) + +### Features + +- **rules:** support array for scope-case and type-case ([#312](https://github.com/conventional-changelog/commitlint/issues/312)) ([1f46b9f](https://github.com/conventional-changelog/commitlint/commit/1f46b9f)), closes [#307](https://github.com/conventional-changelog/commitlint/issues/307) +<a name="6.1.1"></a> +## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) +**Note:** Version bump only for package @commitlint/rules + +<a name="6.1.0"></a> + +# [6.1.0](https://github.com/conventional-changelog/commitlint/compare/v6.0.5...v6.1.0) (2018-02-03) **Note:** Version bump only for package @commitlint/rules -<a name="6.0.0"></a> -# [6.0.0](https://github.com/conventional-changelog/commitlint/compare/v5.2.6...v6.0.0) (2018-01-09) +<a name="6.0.4"></a> + +## [6.0.4](https://github.com/conventional-changelog/commitlint/compare/v6.0.3...v6.0.4) (2018-01-31) + +**Note:** Version bump only for package @commitlint/rules + +<a name="6.0.3"></a> + +## [6.0.3](https://github.com/conventional-changelog/commitlint/compare/v6.0.2...v6.0.3) (2018-01-31) +**Note:** Version bump only for package @commitlint/rules +<a name="6.0.2"></a> + +## [6.0.2](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.2) (2018-01-12) +### Bug Fixes + +- remove typo in error message of type-case ([cb577cb](https://github.com/conventional-changelog/commitlint/commit/cb577cb)) + +<a name="6.0.1"></a> + +## [6.0.1](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.1) (2018-01-09) + +**Note:** Version bump only for package @commitlint/rules + +<a name="6.0.0"></a> + +# [6.0.0](https://github.com/conventional-changelog/commitlint/compare/v5.2.6...v6.0.0) (2018-01-09) **Note:** Version bump only for package @commitlint/rules diff --git a/@commitlint/rules/package.json b/@commitlint/rules/package.json index 322f197c57..f2d15086ce 100644 --- a/@commitlint/rules/package.json +++ b/@commitlint/rules/package.json @@ -1,6 +1,7 @@ { "name": "@commitlint/rules", - "version": "13.1.0", + "type": "module", + "version": "20.0.0", "description": "Lint your commit messages", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -12,16 +13,17 @@ "pkg": "pkg-check" }, "engines": { - "node": ">=v12" + "node": ">=v18" }, "repository": { "type": "git", - "url": "https://github.com/conventional-changelog/commitlint.git" + "url": "https://github.com/conventional-changelog/commitlint.git", + "directory": "@commitlint/rules" }, "bugs": { "url": "https://github.com/conventional-changelog/commitlint/issues" }, - "homepage": "https://github.com/conventional-changelog/commitlint#readme", + "homepage": "https://commitlint.js.org/", "keywords": [ "conventional-changelog", "commitlint", @@ -34,18 +36,17 @@ }, "license": "MIT", "devDependencies": { - "@commitlint/parse": "^13.1.0", - "@commitlint/test": "^13.0.0", - "@commitlint/utils": "^13.0.0", - "conventional-changelog-angular": "5.0.12", - "globby": "^11.0.0" + "@commitlint/parse": "^20.0.0", + "@commitlint/test": "^20.0.0", + "@commitlint/utils": "^20.0.0", + "conventional-changelog-angular": "^7.0.0", + "glob": "^10.3.10" }, "dependencies": { - "@commitlint/ensure": "^13.1.0", - "@commitlint/message": "^13.0.0", - "@commitlint/to-lines": "^13.0.0", - "@commitlint/types": "^13.1.0", - "execa": "^5.0.0" + "@commitlint/ensure": "^20.0.0", + "@commitlint/message": "^20.0.0", + "@commitlint/to-lines": "^20.0.0", + "@commitlint/types": "^20.0.0" }, - "gitHead": "70f7f4688b51774e7ac5e40e896cdaa3f132b2bc" + "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" } diff --git a/@commitlint/rules/src/body-case.test.ts b/@commitlint/rules/src/body-case.test.ts index 68769d814b..9ff7b5dc23 100644 --- a/@commitlint/rules/src/body-case.test.ts +++ b/@commitlint/rules/src/body-case.test.ts @@ -1,11 +1,12 @@ -import parse from '@commitlint/parse'; -import {bodyCase} from './body-case'; +import { test, expect } from "vitest"; +import parse from "@commitlint/parse"; +import { bodyCase } from "./body-case.js"; const messages = { - empty: 'test: subject', - lowercase: 'test: subject\nbody', - mixedcase: 'test: subject\nBody', - uppercase: 'test: subject\nBODY', + empty: "test: subject", + lowercase: "test: subject\nbody", + mixedcase: "test: subject\nBody", + uppercase: "test: subject\nBODY", }; const parsed = { @@ -16,73 +17,73 @@ const parsed = { }; test('with empty body should succeed for "never lowercase"', async () => { - const [actual] = bodyCase(await parsed.empty, 'never', 'lowercase'); + const [actual] = bodyCase(await parsed.empty, "never", "lowercase"); const expected = true; expect(actual).toEqual(expected); }); test('with empty body should succeed for "always lowercase"', async () => { - const [actual] = bodyCase(await parsed.empty, 'always', 'lowercase'); + const [actual] = bodyCase(await parsed.empty, "always", "lowercase"); const expected = true; expect(actual).toEqual(expected); }); test('with empty body should succeed for "never uppercase"', async () => { - const [actual] = bodyCase(await parsed.empty, 'never', 'uppercase'); + const [actual] = bodyCase(await parsed.empty, "never", "uppercase"); const expected = true; expect(actual).toEqual(expected); }); test('with empty body should succeed for "always uppercase"', async () => { - const [actual] = bodyCase(await parsed.empty, 'always', 'uppercase'); + const [actual] = bodyCase(await parsed.empty, "always", "uppercase"); const expected = true; expect(actual).toEqual(expected); }); test('with lowercase body should fail for "never lowercase"', async () => { - const [actual] = bodyCase(await parsed.lowercase, 'never', 'lowercase'); + const [actual] = bodyCase(await parsed.lowercase, "never", "lowercase"); const expected = false; expect(actual).toEqual(expected); }); test('with lowercase body should succeed for "always lowercase"', async () => { - const [actual] = bodyCase(await parsed.lowercase, 'always', 'lowercase'); + const [actual] = bodyCase(await parsed.lowercase, "always", "lowercase"); const expected = true; expect(actual).toEqual(expected); }); test('with mixedcase body should succeed for "never lowercase"', async () => { - const [actual] = bodyCase(await parsed.mixedcase, 'never', 'lowercase'); + const [actual] = bodyCase(await parsed.mixedcase, "never", "lowercase"); const expected = true; expect(actual).toEqual(expected); }); test('with mixedcase body should fail for "always lowercase"', async () => { - const [actual] = bodyCase(await parsed.mixedcase, 'always', 'lowercase'); + const [actual] = bodyCase(await parsed.mixedcase, "always", "lowercase"); const expected = false; expect(actual).toEqual(expected); }); test('with mixedcase body should succeed for "never uppercase"', async () => { - const [actual] = bodyCase(await parsed.mixedcase, 'never', 'uppercase'); + const [actual] = bodyCase(await parsed.mixedcase, "never", "uppercase"); const expected = true; expect(actual).toEqual(expected); }); test('with mixedcase body should fail for "always uppercase"', async () => { - const [actual] = bodyCase(await parsed.mixedcase, 'always', 'uppercase'); + const [actual] = bodyCase(await parsed.mixedcase, "always", "uppercase"); const expected = false; expect(actual).toEqual(expected); }); test('with uppercase body should fail for "never uppercase"', async () => { - const [actual] = bodyCase(await parsed.uppercase, 'never', 'uppercase'); + const [actual] = bodyCase(await parsed.uppercase, "never", "uppercase"); const expected = false; expect(actual).toEqual(expected); }); test('with lowercase body should succeed for "always uppercase"', async () => { - const [actual] = bodyCase(await parsed.uppercase, 'always', 'uppercase'); + const [actual] = bodyCase(await parsed.uppercase, "always", "uppercase"); const expected = true; expect(actual).toEqual(expected); }); diff --git a/@commitlint/rules/src/body-case.ts b/@commitlint/rules/src/body-case.ts index 6c0291c22d..3870fb6238 100644 --- a/@commitlint/rules/src/body-case.ts +++ b/@commitlint/rules/src/body-case.ts @@ -1,24 +1,24 @@ -import {case as ensureCase} from '@commitlint/ensure'; -import message from '@commitlint/message'; -import {TargetCaseType, SyncRule} from '@commitlint/types'; +import { case as ensureCase } from "@commitlint/ensure"; +import message from "@commitlint/message"; +import { TargetCaseType, SyncRule } from "@commitlint/types"; -const negated = (when?: string) => when === 'never'; +const negated = (when?: string) => when === "never"; export const bodyCase: SyncRule<TargetCaseType | TargetCaseType[]> = ( parsed, - when = 'always', - value = [] + when = "always", + value = [], ) => { - const {body} = parsed; + const { body } = parsed; if (!body) { return [true]; } const checks = (Array.isArray(value) ? value : [value]).map((check) => { - if (typeof check === 'string') { + if (typeof check === "string") { return { - when: 'always', + when: "always", case: check, }; } @@ -30,7 +30,7 @@ export const bodyCase: SyncRule<TargetCaseType | TargetCaseType[]> = ( return negated(check.when) ? !r : r; }); - const list = checks.map((c) => c.case).join(', '); + const list = checks.map((c) => c.case).join(", "); return [ negated(when) ? !result : result, diff --git a/@commitlint/rules/src/body-empty.test.ts b/@commitlint/rules/src/body-empty.test.ts index a63ee2771f..fb1f82cbe9 100644 --- a/@commitlint/rules/src/body-empty.test.ts +++ b/@commitlint/rules/src/body-empty.test.ts @@ -1,9 +1,10 @@ -import parse from '@commitlint/parse'; -import {bodyEmpty} from './body-empty'; +import { test, expect } from "vitest"; +import parse from "@commitlint/parse"; +import { bodyEmpty } from "./body-empty.js"; const messages = { - empty: 'test: subject', - filled: 'test: subject\nbody', + empty: "test: subject", + filled: "test: subject\nbody", }; const parsed = { @@ -11,38 +12,38 @@ const parsed = { filled: parse(messages.filled), }; -test('with empty body should succeed for empty keyword', async () => { +test("with empty body should succeed for empty keyword", async () => { const [actual] = bodyEmpty(await parsed.empty); const expected = true; expect(actual).toEqual(expected); }); test('with empty body should fail for "never"', async () => { - const [actual] = bodyEmpty(await parsed.empty, 'never'); + const [actual] = bodyEmpty(await parsed.empty, "never"); const expected = false; expect(actual).toEqual(expected); }); test('with empty body should succeed for "always"', async () => { - const [actual] = bodyEmpty(await parsed.empty, 'always'); + const [actual] = bodyEmpty(await parsed.empty, "always"); const expected = true; expect(actual).toEqual(expected); }); -test('with body should fail for empty keyword', async () => { +test("with body should fail for empty keyword", async () => { const [actual] = bodyEmpty(await parsed.filled); const expected = false; expect(actual).toEqual(expected); }); test('with body should succeed for "never"', async () => { - const [actual] = bodyEmpty(await parsed.filled, 'never'); + const [actual] = bodyEmpty(await parsed.filled, "never"); const expected = true; expect(actual).toEqual(expected); }); test('with body should fail for "always"', async () => { - const [actual] = bodyEmpty(await parsed.filled, 'always'); + const [actual] = bodyEmpty(await parsed.filled, "always"); const expected = false; expect(actual).toEqual(expected); }); diff --git a/@commitlint/rules/src/body-empty.ts b/@commitlint/rules/src/body-empty.ts index 76ddc72ae6..520f251acb 100644 --- a/@commitlint/rules/src/body-empty.ts +++ b/@commitlint/rules/src/body-empty.ts @@ -1,13 +1,13 @@ -import * as ensure from '@commitlint/ensure'; -import message from '@commitlint/message'; -import {SyncRule} from '@commitlint/types'; +import * as ensure from "@commitlint/ensure"; +import message from "@commitlint/message"; +import { SyncRule } from "@commitlint/types"; -export const bodyEmpty: SyncRule = (parsed, when = 'always') => { - const negated = when === 'never'; - const notEmpty = ensure.notEmpty(parsed.body || ''); +export const bodyEmpty: SyncRule = (parsed, when = "always") => { + const negated = when === "never"; + const notEmpty = ensure.notEmpty(parsed.body || ""); return [ negated ? notEmpty : !notEmpty, - message(['body', negated ? 'may not' : 'must', 'be empty']), + message(["body", negated ? "may not" : "must", "be empty"]), ]; }; diff --git a/@commitlint/rules/src/body-full-stop.test.ts b/@commitlint/rules/src/body-full-stop.test.ts index 7f1c1c6913..0c08f7b8c1 100644 --- a/@commitlint/rules/src/body-full-stop.test.ts +++ b/@commitlint/rules/src/body-full-stop.test.ts @@ -1,8 +1,9 @@ -import parse from '@commitlint/parse'; -import {bodyFullStop} from './body-full-stop'; +import { test, expect } from "vitest"; +import parse from "@commitlint/parse"; +import { bodyFullStop } from "./body-full-stop.js"; const messages = { - empty: 'test:\n', + empty: "test:\n", with: `test: subject\n\nbody.`, without: `test: subject\n\nbody`, }; @@ -14,37 +15,37 @@ const parsed = { }; test('empty against "always" should succeed', async () => { - const [actual] = bodyFullStop(await parsed.empty, 'always', '.'); + const [actual] = bodyFullStop(await parsed.empty, "always", "."); const expected = true; expect(actual).toEqual(expected); }); test('empty against "never ." should succeed', async () => { - const [actual] = bodyFullStop(await parsed.empty, 'never', '.'); + const [actual] = bodyFullStop(await parsed.empty, "never", "."); const expected = true; expect(actual).toEqual(expected); }); test('with against "always ." should succeed', async () => { - const [actual] = bodyFullStop(await parsed.with, 'always', '.'); + const [actual] = bodyFullStop(await parsed.with, "always", "."); const expected = true; expect(actual).toEqual(expected); }); test('with against "never ." should fail', async () => { - const [actual] = bodyFullStop(await parsed.with, 'never', '.'); + const [actual] = bodyFullStop(await parsed.with, "never", "."); const expected = false; expect(actual).toEqual(expected); }); test('without against "always ." should fail', async () => { - const [actual] = bodyFullStop(await parsed.without, 'always', '.'); + const [actual] = bodyFullStop(await parsed.without, "always", "."); const expected = false; expect(actual).toEqual(expected); }); test('without against "never ." should succeed', async () => { - const [actual] = bodyFullStop(await parsed.without, 'never', '.'); + const [actual] = bodyFullStop(await parsed.without, "never", "."); const expected = true; expect(actual).toEqual(expected); }); diff --git a/@commitlint/rules/src/body-full-stop.ts b/@commitlint/rules/src/body-full-stop.ts index 61d79ec7c8..845b0f5790 100644 --- a/@commitlint/rules/src/body-full-stop.ts +++ b/@commitlint/rules/src/body-full-stop.ts @@ -1,10 +1,10 @@ -import message from '@commitlint/message'; -import {SyncRule} from '@commitlint/types'; +import message from "@commitlint/message"; +import { SyncRule } from "@commitlint/types"; export const bodyFullStop: SyncRule<string> = ( parsed, - when = 'always', - value = '.' + when = "always", + value = ".", ) => { const input = parsed.body; @@ -12,11 +12,11 @@ export const bodyFullStop: SyncRule<string> = ( return [true]; } - const negated = when === 'never'; + const negated = when === "never"; const hasStop = input[input.length - 1] === value; return [ negated ? !hasStop : hasStop, - message(['body', negated ? 'may not' : 'must', 'end with full stop']), + message(["body", negated ? "may not" : "must", "end with full stop"]), ]; }; diff --git a/@commitlint/rules/src/body-leading-blank.test.ts b/@commitlint/rules/src/body-leading-blank.test.ts index 265119a448..a30e243afa 100644 --- a/@commitlint/rules/src/body-leading-blank.test.ts +++ b/@commitlint/rules/src/body-leading-blank.test.ts @@ -1,10 +1,11 @@ -import parse from '@commitlint/parse'; -import {bodyLeadingBlank} from './body-leading-blank'; +import { test, expect } from "vitest"; +import parse from "@commitlint/parse"; +import { bodyLeadingBlank } from "./body-leading-blank.js"; const messages = { - simple: 'test: subject', - without: 'test: subject\nbody', - with: 'test: subject\n\nbody', + simple: "test: subject", + without: "test: subject\nbody", + with: "test: subject\n\nbody", }; const parsed = { @@ -13,56 +14,56 @@ const parsed = { with: parse(messages.with), }; -test('with simple message should succeed for empty keyword', async () => { +test("with simple message should succeed for empty keyword", async () => { const [actual] = bodyLeadingBlank(await parsed.simple); const expected = true; expect(actual).toEqual(expected); }); test('with simple message should succeed for "never"', async () => { - const [actual] = bodyLeadingBlank(await parsed.simple, 'never'); + const [actual] = bodyLeadingBlank(await parsed.simple, "never"); const expected = true; expect(actual).toEqual(expected); }); test('with simple message should succeed for "always"', async () => { - const [actual] = bodyLeadingBlank(await parsed.simple, 'always'); + const [actual] = bodyLeadingBlank(await parsed.simple, "always"); const expected = true; expect(actual).toEqual(expected); }); -test('without blank line before body should fail for empty keyword', async () => { +test("without blank line before body should fail for empty keyword", async () => { const [actual] = bodyLeadingBlank(await parsed.without); const expected = false; expect(actual).toEqual(expected); }); test('without blank line before body should succeed for "never"', async () => { - const [actual] = bodyLeadingBlank(await parsed.without, 'never'); + const [actual] = bodyLeadingBlank(await parsed.without, "never"); const expected = true; expect(actual).toEqual(expected); }); test('without blank line before body should fail for "always"', async () => { - const [actual] = bodyLeadingBlank(await parsed.without, 'always'); + const [actual] = bodyLeadingBlank(await parsed.without, "always"); const expected = false; expect(actual).toEqual(expected); }); -test('with blank line before body should succeed for empty keyword', async () => { +test("with blank line before body should succeed for empty keyword", async () => { const [actual] = bodyLeadingBlank(await parsed.with); const expected = true; expect(actual).toEqual(expected); }); test('with blank line before body should fail for "never"', async () => { - const [actual] = bodyLeadingBlank(await parsed.with, 'never'); + const [actual] = bodyLeadingBlank(await parsed.with, "never"); const expected = false; expect(actual).toEqual(expected); }); test('with blank line before body should succeed for "always"', async () => { - const [actual] = bodyLeadingBlank(await parsed.with, 'always'); + const [actual] = bodyLeadingBlank(await parsed.with, "always"); const expected = true; expect(actual).toEqual(expected); }); diff --git a/@commitlint/rules/src/body-leading-blank.ts b/@commitlint/rules/src/body-leading-blank.ts index 36a4ce7d5e..ae55973341 100644 --- a/@commitlint/rules/src/body-leading-blank.ts +++ b/@commitlint/rules/src/body-leading-blank.ts @@ -1,6 +1,6 @@ -import toLines from '@commitlint/to-lines'; -import message from '@commitlint/message'; -import {SyncRule} from '@commitlint/types'; +import toLines from "@commitlint/to-lines"; +import message from "@commitlint/message"; +import { SyncRule } from "@commitlint/types"; export const bodyLeadingBlank: SyncRule = (parsed, when) => { // Flunk if no body is found @@ -8,14 +8,14 @@ export const bodyLeadingBlank: SyncRule = (parsed, when) => { return [true]; } - const negated = when === 'never'; + const negated = when === "never"; const [leading] = toLines(parsed.raw).slice(1); // Check if the first line of body is empty - const succeeds = leading === ''; + const succeeds = leading === ""; return [ negated ? !succeeds : succeeds, - message(['body', negated ? 'may not' : 'must', 'have leading blank line']), + message(["body", negated ? "may not" : "must", "have leading blank line"]), ]; }; diff --git a/@commitlint/rules/src/body-max-length.test.ts b/@commitlint/rules/src/body-max-length.test.ts index c0c22e8400..0b85c58b0f 100644 --- a/@commitlint/rules/src/body-max-length.test.ts +++ b/@commitlint/rules/src/body-max-length.test.ts @@ -1,13 +1,14 @@ -import parse from '@commitlint/parse'; -import {bodyMaxLength} from './body-max-length'; +import { test, expect } from "vitest"; +import parse from "@commitlint/parse"; +import { bodyMaxLength } from "./body-max-length.js"; -const short = 'a'; -const long = 'ab'; +const short = "a"; +const long = "ab"; const value = short.length; const messages = { - empty: 'test: subject', + empty: "test: subject", short: `test: subject\n${short}`, long: `test: subject\n${long}`, }; @@ -18,19 +19,19 @@ const parsed = { long: parse(messages.long), }; -test('with empty should succeed', async () => { +test("with empty should succeed", async () => { const [actual] = bodyMaxLength(await parsed.empty, undefined, value); const expected = true; expect(actual).toEqual(expected); }); -test('with short should succeed', async () => { +test("with short should succeed", async () => { const [actual] = bodyMaxLength(await parsed.short, undefined, value); const expected = true; expect(actual).toEqual(expected); }); -test('with long should fail', async () => { +test("with long should fail", async () => { const [actual] = bodyMaxLength(await parsed.long, undefined, value); const expected = false; expect(actual).toEqual(expected); diff --git a/@commitlint/rules/src/body-max-length.ts b/@commitlint/rules/src/body-max-length.ts index 9121129056..2b0ca2f1b2 100644 --- a/@commitlint/rules/src/body-max-length.ts +++ b/@commitlint/rules/src/body-max-length.ts @@ -1,10 +1,10 @@ -import {maxLength} from '@commitlint/ensure'; -import {SyncRule} from '@commitlint/types'; +import { maxLength } from "@commitlint/ensure"; +import { SyncRule } from "@commitlint/types"; export const bodyMaxLength: SyncRule<number> = ( parsed, _when = undefined, - value = 0 + value = 0, ) => { const input = parsed.body; diff --git a/@commitlint/rules/src/body-max-line-length.test.ts b/@commitlint/rules/src/body-max-line-length.test.ts index 6318d5d498..7a599b30a3 100644 --- a/@commitlint/rules/src/body-max-line-length.test.ts +++ b/@commitlint/rules/src/body-max-line-length.test.ts @@ -1,51 +1,98 @@ -import parse from '@commitlint/parse'; -import {bodyMaxLineLength} from './body-max-line-length'; +import { test, expect } from "vitest"; +import parse from "@commitlint/parse"; +import type { Commit } from "conventional-commits-parser"; +import { bodyMaxLineLength } from "./body-max-line-length.js"; -const short = 'a'; -const long = 'ab'; +const short = "a"; +const long = "ab"; +const url = "https://example.com/URL/with/a/very/long/path"; const value = short.length; const messages = { - empty: 'test: subject', + empty: "test: subject", short: `test: subject\n${short}`, long: `test: subject\n${long}`, shortMultipleLines: `test:subject\n${short}\n${short}\n${short}`, longMultipleLines: `test:subject\n${short}\n${long}\n${short}`, -}; + urlStandalone: `test:subject\n${short}\n${url}\n${short}`, + urlMarkdownLinkInline: `test:subject + +This is a [link](${url}).`, + urlMarkdownLinkInList: `test:subject + +Link in a list: + +- ${url}`, + urlMarkdownLinkInFooter: `test:subject -const parsed = { - empty: parse(messages.empty), - short: parse(messages.short), - long: parse(messages.long), +Finally, [link][] via footer. + +[link]: ${url}`, }; -test('with empty should succeed', async () => { +const parsed = Object.entries(messages).reduce( + (_parsed, [key, message]) => + Object.assign(_parsed, { + [key]: parse(message), + }), + {} as Record<keyof typeof messages, Promise<Commit>>, +); + +test("with empty should succeed", async () => { const [actual] = bodyMaxLineLength(await parsed.empty, undefined, value); const expected = true; expect(actual).toEqual(expected); }); -test('with short should succeed', async () => { +test("with short should succeed", async () => { const [actual] = bodyMaxLineLength(await parsed.short, undefined, value); const expected = true; expect(actual).toEqual(expected); }); -test('with long should fail', async () => { +test("with long should fail", async () => { const [actual] = bodyMaxLineLength(await parsed.long, undefined, value); const expected = false; expect(actual).toEqual(expected); }); -test('with short with multiple lines should succeed', async () => { - const [actual] = bodyMaxLineLength(await parsed.short, undefined, value); +test("with short with multiple lines should succeed", async () => { + const [actual] = bodyMaxLineLength( + await parsed.shortMultipleLines, + undefined, + value, + ); const expected = true; expect(actual).toEqual(expected); }); -test('with long with multiple lines should fail', async () => { - const [actual] = bodyMaxLineLength(await parsed.long, undefined, value); +test("with long with multiple lines should fail", async () => { + const [actual] = bodyMaxLineLength( + await parsed.longMultipleLines, + undefined, + value, + ); const expected = false; expect(actual).toEqual(expected); }); + +test("with multiple lines and standalone URL should succeed", async () => { + const [actual] = bodyMaxLineLength( + await parsed.urlStandalone, + undefined, + value, + ); + const expected = true; + expect(actual).toEqual(expected); +}); + +test("with multiple lines and URL in inline Markdown link should succeed", async () => { + const [actual] = bodyMaxLineLength( + await parsed.urlMarkdownLinkInline, + undefined, + 30, + ); + const expected = true; + expect(actual).toEqual(expected); +}); diff --git a/@commitlint/rules/src/body-max-line-length.ts b/@commitlint/rules/src/body-max-line-length.ts index 5e937ef7e9..5049b09eec 100644 --- a/@commitlint/rules/src/body-max-line-length.ts +++ b/@commitlint/rules/src/body-max-line-length.ts @@ -1,10 +1,10 @@ -import {maxLineLength} from '@commitlint/ensure'; -import {SyncRule} from '@commitlint/types'; +import { maxLineLength } from "@commitlint/ensure"; +import { SyncRule } from "@commitlint/types"; export const bodyMaxLineLength: SyncRule<number> = ( parsed, _when = undefined, - value = 0 + value = 0, ) => { const input = parsed.body; diff --git a/@commitlint/rules/src/body-min-length.test.ts b/@commitlint/rules/src/body-min-length.test.ts index 95907870ca..bc9413c14e 100644 --- a/@commitlint/rules/src/body-min-length.test.ts +++ b/@commitlint/rules/src/body-min-length.test.ts @@ -1,13 +1,14 @@ -import parse from '@commitlint/parse'; -import {bodyMinLength} from './body-min-length'; +import { test, expect } from "vitest"; +import parse from "@commitlint/parse"; +import { bodyMinLength } from "./body-min-length.js"; -const short = 'a'; -const long = 'ab'; +const short = "a"; +const long = "ab"; const value = long.length; const messages = { - simple: 'test: subject', + simple: "test: subject", short: `test: subject\n${short}`, long: `test: subject\n${long}`, }; @@ -18,19 +19,19 @@ const parsed = { long: parse(messages.long), }; -test('with simple should succeed', async () => { +test("with simple should succeed", async () => { const [actual] = bodyMinLength(await parsed.simple, undefined, value); const expected = true; expect(actual).toEqual(expected); }); -test('with short should fail', async () => { +test("with short should fail", async () => { const [actual] = bodyMinLength(await parsed.short, undefined, value); const expected = false; expect(actual).toEqual(expected); }); -test('with long should succeed', async () => { +test("with long should succeed", async () => { const [actual] = bodyMinLength(await parsed.long, undefined, value); const expected = true; expect(actual).toEqual(expected); diff --git a/@commitlint/rules/src/body-min-length.ts b/@commitlint/rules/src/body-min-length.ts index f769e1a4a9..958e39af0c 100644 --- a/@commitlint/rules/src/body-min-length.ts +++ b/@commitlint/rules/src/body-min-length.ts @@ -1,10 +1,10 @@ -import {minLength} from '@commitlint/ensure'; -import {SyncRule} from '@commitlint/types'; +import { minLength } from "@commitlint/ensure"; +import { SyncRule } from "@commitlint/types"; export const bodyMinLength: SyncRule<number> = ( parsed, _when = undefined, - value = 0 + value = 0, ) => { if (!parsed.body) { return [true]; diff --git a/@commitlint/rules/src/breaking-change-exclamation-mark.test.ts b/@commitlint/rules/src/breaking-change-exclamation-mark.test.ts new file mode 100644 index 0000000000..7d7b9c5377 --- /dev/null +++ b/@commitlint/rules/src/breaking-change-exclamation-mark.test.ts @@ -0,0 +1,85 @@ +import { test, expect } from "vitest"; +import parse from "@commitlint/parse"; +import { breakingChangeExclamationMark } from "./breaking-change-exclamation-mark.js"; + +const noHeader = "commit message"; +const plainHeader = "type: subject"; +const breakingHeader = "type!: subject"; +const noFooter = ""; +const plainFooter = "Some-Other-Trailer: content"; +const breakingFooter = "BREAKING CHANGE: reason"; + +// These are equivalence partitions. +const messages = { + noHeaderNoFooter: `${noHeader}\n\n${noFooter}`, + noHeaderPlainFooter: `${noHeader}\n\n${plainFooter}`, + noHeaderBreakingFooter: `${noHeader}\n\n${breakingFooter}`, + plainHeaderPlainFooter: `${plainHeader}\n\n${plainFooter}`, + plainHeaderBreakingFooter: `${plainHeader}\n\n${breakingFooter}`, + breakingHeaderPlainFooter: `${breakingHeader}\n\n${plainFooter}`, + breakingHeaderBreakingFooter: `${breakingHeader}\n\n${breakingFooter}`, +}; + +const parsed = { + noHeaderNoFooter: parse(messages.noHeaderNoFooter), + noHeaderPlainFooter: parse(messages.noHeaderPlainFooter), + noHeaderBreakingFooter: parse(messages.noHeaderBreakingFooter), + plainHeaderPlainFooter: parse(messages.plainHeaderPlainFooter), + plainHeaderBreakingFooter: parse(messages.plainHeaderBreakingFooter), + breakingHeaderPlainFooter: parse(messages.breakingHeaderPlainFooter), + breakingHeaderBreakingFooter: parse(messages.breakingHeaderBreakingFooter), +}; + +test("with noHeaderNoFooter should succeed", async () => { + const [actual] = breakingChangeExclamationMark(await parsed.noHeaderNoFooter); + const expected = true; + expect(actual).toEqual(expected); +}); + +test("with noHeaderPlainFooter should succeed", async () => { + const [actual] = breakingChangeExclamationMark( + await parsed.noHeaderPlainFooter, + ); + const expected = true; + expect(actual).toEqual(expected); +}); + +test("with noHeaderBreakingFooter should fail", async () => { + const [actual] = breakingChangeExclamationMark( + await parsed.noHeaderBreakingFooter, + ); + const expected = false; + expect(actual).toEqual(expected); +}); + +test("with plainHeaderPlainFooter should succeed", async () => { + const [actual] = breakingChangeExclamationMark( + await parsed.plainHeaderPlainFooter, + ); + const expected = true; + expect(actual).toEqual(expected); +}); + +test("with plainHeaderBreakingFooter should fail", async () => { + const [actual] = breakingChangeExclamationMark( + await parsed.plainHeaderBreakingFooter, + ); + const expected = false; + expect(actual).toEqual(expected); +}); + +test("with breakingHeaderPlainFooter should fail", async () => { + const [actual] = breakingChangeExclamationMark( + await parsed.breakingHeaderPlainFooter, + ); + const expected = false; + expect(actual).toEqual(expected); +}); + +test("with breakingHeaderBreakingFooter should succeed", async () => { + const [actual] = breakingChangeExclamationMark( + await parsed.breakingHeaderBreakingFooter, + ); + const expected = true; + expect(actual).toEqual(expected); +}); diff --git a/@commitlint/rules/src/breaking-change-exclamation-mark.ts b/@commitlint/rules/src/breaking-change-exclamation-mark.ts new file mode 100644 index 0000000000..131d5fac3b --- /dev/null +++ b/@commitlint/rules/src/breaking-change-exclamation-mark.ts @@ -0,0 +1,36 @@ +import message from "@commitlint/message"; +import { SyncRule } from "@commitlint/types"; + +export const breakingChangeExclamationMark: SyncRule = ( + parsed, + when = "always", +) => { + const header = parsed.header; + const footer = parsed.footer; + + // It is the correct behavior to return true only when both the header and footer are empty, + // but still run the usual checks if one or neither are empty. + // The reasoning is that if one is empty and the other contains a breaking change marker, + // then the check fails as it is not possible for the empty one to indicate a breaking change. + if (!header && !footer) { + return [true]; + } + + const hasExclamationMark = + !!header && /^(\w*)(?:\((.*)\))?!: (.*)$/.test(header); + const hasBreakingChange = !!footer && /^BREAKING[ -]CHANGE:/m.test(footer); + + const negated = when === "never"; + const check = hasExclamationMark === hasBreakingChange; + + return [ + negated ? !check : check, + message([ + "breaking changes", + negated ? "must not" : "must", + "have both an exclamation mark in the header", + "and BREAKING CHANGE in the footer", + "to identify a breaking change", + ]), + ]; +}; diff --git a/@commitlint/rules/src/footer-empty.test.ts b/@commitlint/rules/src/footer-empty.test.ts index 9798fca40c..da98f6541b 100644 --- a/@commitlint/rules/src/footer-empty.test.ts +++ b/@commitlint/rules/src/footer-empty.test.ts @@ -1,10 +1,11 @@ -import parse from '@commitlint/parse'; -import {footerEmpty} from './footer-empty'; +import { test, expect } from "vitest"; +import parse from "@commitlint/parse"; +import { footerEmpty } from "./footer-empty.js"; const messages = { - simple: 'test: subject', - empty: 'test: subject\nbody', - filled: 'test: subject\nBREAKING CHANGE: something important', + simple: "test: subject", + empty: "test: subject\nbody", + filled: "test: subject\nBREAKING CHANGE: something important", }; const parsed = { @@ -13,56 +14,56 @@ const parsed = { filled: parse(messages.filled), }; -test('with simple message should succeed for empty keyword', async () => { +test("with simple message should succeed for empty keyword", async () => { const [actual] = footerEmpty(await parsed.simple); const expected = true; expect(actual).toEqual(expected); }); test('with simple message should fail for "never"', async () => { - const [actual] = footerEmpty(await parsed.simple, 'never'); + const [actual] = footerEmpty(await parsed.simple, "never"); const expected = false; expect(actual).toEqual(expected); }); test('with simple message should succeed for "always"', async () => { - const [actual] = footerEmpty(await parsed.simple, 'always'); + const [actual] = footerEmpty(await parsed.simple, "always"); const expected = true; expect(actual).toEqual(expected); }); -test('with empty footer should succeed for empty keyword', async () => { +test("with empty footer should succeed for empty keyword", async () => { const [actual] = footerEmpty(await parsed.empty); const expected = true; expect(actual).toEqual(expected); }); test('with empty footer should fail for "never"', async () => { - const [actual] = footerEmpty(await parsed.empty, 'never'); + const [actual] = footerEmpty(await parsed.empty, "never"); const expected = false; expect(actual).toEqual(expected); }); test('with empty footer should succeed for "always"', async () => { - const [actual] = footerEmpty(await parsed.empty, 'always'); + const [actual] = footerEmpty(await parsed.empty, "always"); const expected = true; expect(actual).toEqual(expected); }); -test('with footer should fail for empty keyword', async () => { +test("with footer should fail for empty keyword", async () => { const [actual] = footerEmpty(await parsed.filled); const expected = false; expect(actual).toEqual(expected); }); test('with footer should succeed for "never"', async () => { - const [actual] = footerEmpty(await parsed.filled, 'never'); + const [actual] = footerEmpty(await parsed.filled, "never"); const expected = true; expect(actual).toEqual(expected); }); test('with footer should fail for "always"', async () => { - const [actual] = footerEmpty(await parsed.filled, 'always'); + const [actual] = footerEmpty(await parsed.filled, "always"); const expected = false; expect(actual).toEqual(expected); }); diff --git a/@commitlint/rules/src/footer-empty.ts b/@commitlint/rules/src/footer-empty.ts index 9a3d8a81c1..c007f025c8 100644 --- a/@commitlint/rules/src/footer-empty.ts +++ b/@commitlint/rules/src/footer-empty.ts @@ -1,13 +1,13 @@ -import * as ensure from '@commitlint/ensure'; -import message from '@commitlint/message'; -import {SyncRule} from '@commitlint/types'; +import * as ensure from "@commitlint/ensure"; +import message from "@commitlint/message"; +import { SyncRule } from "@commitlint/types"; -export const footerEmpty: SyncRule = (parsed, when = 'always') => { - const negated = when === 'never'; - const notEmpty = ensure.notEmpty(parsed.footer || ''); +export const footerEmpty: SyncRule = (parsed, when = "always") => { + const negated = when === "never"; + const notEmpty = ensure.notEmpty(parsed.footer || ""); return [ negated ? notEmpty : !notEmpty, - message(['footer', negated ? 'may not' : 'must', 'be empty']), + message(["footer", negated ? "may not" : "must", "be empty"]), ]; }; diff --git a/@commitlint/rules/src/footer-leading-blank.test.ts b/@commitlint/rules/src/footer-leading-blank.test.ts index 6af6e80117..8e17c4d343 100644 --- a/@commitlint/rules/src/footer-leading-blank.test.ts +++ b/@commitlint/rules/src/footer-leading-blank.test.ts @@ -1,17 +1,20 @@ -import parse from '@commitlint/parse'; -import {footerLeadingBlank} from './footer-leading-blank'; +import { test, expect } from "vitest"; +import parse from "@commitlint/parse"; +import { footerLeadingBlank } from "./footer-leading-blank.js"; const messages = { - simple: 'test: subject', - body: 'test: subject\nbody', - trailing: 'test: subject\nbody\n\n', - without: 'test: subject\nbody\nBREAKING CHANGE: something important', + simple: "test: subject", + body: "test: subject\nbody", + trailing: "test: subject\nbody\n\n", + without: "test: subject\nbody\nBREAKING CHANGE: something important", withoutBody: - 'feat(new-parser): introduces a new parsing library\n\nBREAKING CHANGE: new library does not support foo-construct', - with: 'test: subject\nbody\n\nBREAKING CHANGE: something important', + "feat(new-parser): introduces a new parsing library\n\nBREAKING CHANGE: new library does not support foo-construct", + withBodyWithComment: + "feat(new-parser): introduces a new parsing library\n\nBody Line 1\n# comment\nBody Line 2\n\nBREAKING CHANGE: new library does not support foo-construct", + with: "test: subject\nbody\n\nBREAKING CHANGE: something important", withMulitLine: - 'test: subject\nmulti\nline\nbody\n\nBREAKING CHANGE: something important', - withDoubleNewLine: 'fix: some issue\n\ndetailed explanation\n\ncloses #123', + "test: subject\nmulti\nline\nbody\n\nBREAKING CHANGE: something important", + withDoubleNewLine: "fix: some issue\n\ndetailed explanation\n\ncloses #123", }; const parsed = { @@ -20,139 +23,151 @@ const parsed = { trailing: parse(messages.trailing), without: parse(messages.without), withoutBody: parse(messages.withoutBody), + withBodyWithComment: parse(messages.withBodyWithComment, undefined, { + commentChar: "#", + }), with: parse(messages.with), withMulitLine: parse(messages.withMulitLine), withDoubleNewLine: parse(messages.withDoubleNewLine), }; -test('with simple message should succeed for empty keyword', async () => { +test("with simple message should succeed for empty keyword", async () => { const [actual] = footerLeadingBlank(await parsed.simple); const expected = true; expect(actual).toEqual(expected); }); test('with simple message should succeed for "never"', async () => { - const [actual] = footerLeadingBlank(await parsed.simple, 'never'); + const [actual] = footerLeadingBlank(await parsed.simple, "never"); const expected = true; expect(actual).toEqual(expected); }); test('with simple message should succeed for "always"', async () => { - const [actual] = footerLeadingBlank(await parsed.simple, 'always'); + const [actual] = footerLeadingBlank(await parsed.simple, "always"); const expected = true; expect(actual).toEqual(expected); }); -test('with body message should succeed for empty keyword', async () => { +test("with body message should succeed for empty keyword", async () => { const [actual] = footerLeadingBlank(await parsed.body); const expected = true; expect(actual).toEqual(expected); }); test('with body message should succeed for "never"', async () => { - const [actual] = footerLeadingBlank(await parsed.body, 'never'); + const [actual] = footerLeadingBlank(await parsed.body, "never"); const expected = true; expect(actual).toEqual(expected); }); test('with body message should succeed for "always"', async () => { - const [actual] = footerLeadingBlank(await parsed.body, 'always'); + const [actual] = footerLeadingBlank(await parsed.body, "always"); const expected = true; expect(actual).toEqual(expected); }); -test('with trailing message should succeed for empty keyword', async () => { +test("with trailing message should succeed for empty keyword", async () => { const [actual] = footerLeadingBlank(await parsed.trailing); const expected = true; expect(actual).toEqual(expected); }); test('with trailing message should succeed for "never"', async () => { - const [actual] = footerLeadingBlank(await parsed.trailing, 'never'); + const [actual] = footerLeadingBlank(await parsed.trailing, "never"); const expected = true; expect(actual).toEqual(expected); }); test('with trailing message should succeed for "always"', async () => { - const [actual] = footerLeadingBlank(await parsed.trailing, 'always'); + const [actual] = footerLeadingBlank(await parsed.trailing, "always"); const expected = true; expect(actual).toEqual(expected); }); test('without body should fail for "never"', async () => { - const [actual] = footerLeadingBlank(await parsed.withoutBody, 'never'); + const [actual] = footerLeadingBlank(await parsed.withoutBody, "never"); const expected = false; expect(actual).toEqual(expected); }); test('without body should succeed for "always"', async () => { - const [actual] = footerLeadingBlank(await parsed.withoutBody, 'always'); + const [actual] = footerLeadingBlank(await parsed.withoutBody, "always"); const expected = true; expect(actual).toEqual(expected); }); -test('without blank line before footer should fail for empty keyword', async () => { +test("without blank line before footer should fail for empty keyword", async () => { const [actual] = footerLeadingBlank(await parsed.without); const expected = false; expect(actual).toEqual(expected); }); test('without blank line before footer should succeed for "never"', async () => { - const [actual] = footerLeadingBlank(await parsed.without, 'never'); + const [actual] = footerLeadingBlank(await parsed.without, "never"); const expected = true; expect(actual).toEqual(expected); }); test('without blank line before footer should fail for "always"', async () => { - const [actual] = footerLeadingBlank(await parsed.without, 'always'); + const [actual] = footerLeadingBlank(await parsed.without, "always"); const expected = false; expect(actual).toEqual(expected); }); -test('with blank line before footer should succeed for empty keyword', async () => { +test("with blank line before footer should succeed for empty keyword", async () => { const [actual] = footerLeadingBlank(await parsed.with); const expected = true; expect(actual).toEqual(expected); }); test('with blank line before footer should fail for "never"', async () => { - const [actual] = footerLeadingBlank(await parsed.with, 'never'); + const [actual] = footerLeadingBlank(await parsed.with, "never"); const expected = false; expect(actual).toEqual(expected); }); test('with blank line before footer should succeed for "always"', async () => { - const [actual] = footerLeadingBlank(await parsed.with, 'always'); + const [actual] = footerLeadingBlank(await parsed.with, "always"); const expected = true; expect(actual).toEqual(expected); }); -test('with blank line before footer and multiline body should succeed for empty keyword', async () => { +test("with blank line before footer and multiline body should succeed for empty keyword", async () => { const [actual] = footerLeadingBlank(await parsed.withMulitLine); const expected = true; expect(actual).toEqual(expected); }); test('with blank line before footer and multiline body should fail for "never"', async () => { - const [actual] = footerLeadingBlank(await parsed.withMulitLine, 'never'); + const [actual] = footerLeadingBlank(await parsed.withMulitLine, "never"); const expected = false; expect(actual).toEqual(expected); }); test('with blank line before footer and multiline body should succeed for "always"', async () => { - const [actual] = footerLeadingBlank(await parsed.withMulitLine, 'always'); + const [actual] = footerLeadingBlank(await parsed.withMulitLine, "always"); const expected = true; expect(actual).toEqual(expected); }); test('with double blank line before footer and double line in body should fail for "never"', async () => { - const [actual] = footerLeadingBlank(await parsed.withDoubleNewLine, 'never'); + const [actual] = footerLeadingBlank(await parsed.withDoubleNewLine, "never"); const expected = false; expect(actual).toEqual(expected); }); test('with double blank line before footer and double line in body should succeed for "always"', async () => { - const [actual] = footerLeadingBlank(await parsed.withDoubleNewLine, 'always'); + const [actual] = footerLeadingBlank(await parsed.withDoubleNewLine, "always"); + const expected = true; + expect(actual).toEqual(expected); +}); + +test('with body containing comments should succeed for "always"', async () => { + const [actual] = footerLeadingBlank( + await parsed.withBodyWithComment, + "always", + ); const expected = true; expect(actual).toEqual(expected); }); diff --git a/@commitlint/rules/src/footer-leading-blank.ts b/@commitlint/rules/src/footer-leading-blank.ts index c3aff43373..3f83b089a1 100644 --- a/@commitlint/rules/src/footer-leading-blank.ts +++ b/@commitlint/rules/src/footer-leading-blank.ts @@ -1,28 +1,28 @@ -import toLines from '@commitlint/to-lines'; -import message from '@commitlint/message'; -import {SyncRule} from '@commitlint/types'; +import toLines from "@commitlint/to-lines"; +import message from "@commitlint/message"; +import { SyncRule } from "@commitlint/types"; -export const footerLeadingBlank: SyncRule = (parsed, when = 'always') => { +export const footerLeadingBlank: SyncRule = (parsed, when = "always") => { // Flunk if no footer is found if (!parsed.footer) { return [true]; } - const negated = when === 'never'; + const negated = when === "never"; const rawLines = toLines(parsed.raw); - const bodyLines = parsed.body ? toLines(parsed.body) : []; - const bodyOffset = bodyLines.length > 0 ? rawLines.indexOf(bodyLines[0]) : 1; - const [leading] = rawLines.slice(bodyLines.length + bodyOffset); + const footerLines = toLines(parsed.footer); + const footerOffset = rawLines.indexOf(footerLines[0]); + const [leading] = rawLines.slice(footerOffset - 1); // Check if the first line of footer is empty - const succeeds = leading === ''; + const succeeds = leading === ""; return [ negated ? !succeeds : succeeds, message([ - 'footer', - negated ? 'may not' : 'must', - 'have leading blank line', + "footer", + negated ? "may not" : "must", + "have leading blank line", ]), ]; }; diff --git a/@commitlint/rules/src/footer-max-length.test.ts b/@commitlint/rules/src/footer-max-length.test.ts index 37a995924b..0dd0a3cb23 100644 --- a/@commitlint/rules/src/footer-max-length.test.ts +++ b/@commitlint/rules/src/footer-max-length.test.ts @@ -1,14 +1,15 @@ -import parse from '@commitlint/parse'; -import {footerMaxLength} from './footer-max-length'; +import { test, expect } from "vitest"; +import parse from "@commitlint/parse"; +import { footerMaxLength } from "./footer-max-length.js"; -const short = 'BREAKING CHANGE: a'; -const long = 'BREAKING CHANGE: ab'; +const short = "BREAKING CHANGE: a"; +const long = "BREAKING CHANGE: ab"; const value = short.length; const messages = { - simple: 'test: subject', - empty: 'test: subject\nbody', + simple: "test: subject", + empty: "test: subject\nbody", short: `test: subject\n${short}`, long: `test: subject\n${long}`, }; @@ -20,25 +21,25 @@ const parsed = { long: parse(messages.long), }; -test('with simple should succeed', async () => { +test("with simple should succeed", async () => { const [actual] = footerMaxLength(await parsed.simple, undefined, value); const expected = true; expect(actual).toEqual(expected); }); -test('with empty should succeed', async () => { +test("with empty should succeed", async () => { const [actual] = footerMaxLength(await parsed.empty, undefined, value); const expected = true; expect(actual).toEqual(expected); }); -test('with short should succeed', async () => { +test("with short should succeed", async () => { const [actual] = footerMaxLength(await parsed.short, undefined, value); const expected = true; expect(actual).toEqual(expected); }); -test('with long should fail', async () => { +test("with long should fail", async () => { const [actual] = footerMaxLength(await parsed.long, undefined, value); const expected = false; expect(actual).toEqual(expected); diff --git a/@commitlint/rules/src/footer-max-length.ts b/@commitlint/rules/src/footer-max-length.ts index 43520ae546..d20a03ab45 100644 --- a/@commitlint/rules/src/footer-max-length.ts +++ b/@commitlint/rules/src/footer-max-length.ts @@ -1,10 +1,10 @@ -import {maxLength} from '@commitlint/ensure'; -import {SyncRule} from '@commitlint/types'; +import { maxLength } from "@commitlint/ensure"; +import { SyncRule } from "@commitlint/types"; export const footerMaxLength: SyncRule<number> = ( parsed, _when = undefined, - value = 0 + value = 0, ) => { const input = parsed.footer; diff --git a/@commitlint/rules/src/footer-max-line-length.test.ts b/@commitlint/rules/src/footer-max-line-length.test.ts index 6aab046b5b..7efa44c686 100644 --- a/@commitlint/rules/src/footer-max-line-length.test.ts +++ b/@commitlint/rules/src/footer-max-line-length.test.ts @@ -1,14 +1,15 @@ -import parse from '@commitlint/parse'; -import {footerMaxLineLength} from './footer-max-line-length'; +import { test, expect } from "vitest"; +import parse from "@commitlint/parse"; +import { footerMaxLineLength } from "./footer-max-line-length.js"; -const short = 'BREAKING CHANGE: a'; -const long = 'BREAKING CHANGE: ab'; +const short = "BREAKING CHANGE: a"; +const long = "BREAKING CHANGE: ab"; const value = short.length; const messages = { - simple: 'test: subject', - empty: 'test: subject\nbody', + simple: "test: subject", + empty: "test: subject\nbody", short: `test: subject\n${short}`, long: `test: subject\n${long}`, shortMultipleLines: `test:subject\n${short}\n${short}\n${short}`, @@ -22,37 +23,37 @@ const parsed = { long: parse(messages.long), }; -test('with simple should succeed', async () => { +test("with simple should succeed", async () => { const [actual] = footerMaxLineLength(await parsed.simple, undefined, value); const expected = true; expect(actual).toEqual(expected); }); -test('with empty should succeed', async () => { +test("with empty should succeed", async () => { const [actual] = footerMaxLineLength(await parsed.empty, undefined, value); const expected = true; expect(actual).toEqual(expected); }); -test('with short should succeed', async () => { +test("with short should succeed", async () => { const [actual] = footerMaxLineLength(await parsed.short, undefined, value); const expected = true; expect(actual).toEqual(expected); }); -test('with long should fail', async () => { +test("with long should fail", async () => { const [actual] = footerMaxLineLength(await parsed.long, undefined, value); const expected = false; expect(actual).toEqual(expected); }); -test('with short with multiple lines should succeed', async () => { +test("with short with multiple lines should succeed", async () => { const [actual] = footerMaxLineLength(await parsed.short, undefined, value); const expected = true; expect(actual).toEqual(expected); }); -test('with long with multiple lines should fail', async () => { +test("with long with multiple lines should fail", async () => { const [actual] = footerMaxLineLength(await parsed.long, undefined, value); const expected = false; expect(actual).toEqual(expected); diff --git a/@commitlint/rules/src/footer-max-line-length.ts b/@commitlint/rules/src/footer-max-line-length.ts index 34aea097dd..61366556fe 100644 --- a/@commitlint/rules/src/footer-max-line-length.ts +++ b/@commitlint/rules/src/footer-max-line-length.ts @@ -1,10 +1,10 @@ -import {maxLineLength} from '@commitlint/ensure'; -import {SyncRule} from '@commitlint/types'; +import { maxLineLength } from "@commitlint/ensure"; +import { SyncRule } from "@commitlint/types"; export const footerMaxLineLength: SyncRule<number> = ( parsed, _when = undefined, - value = 0 + value = 0, ) => { const input = parsed.footer; diff --git a/@commitlint/rules/src/footer-min-length.test.ts b/@commitlint/rules/src/footer-min-length.test.ts index 3bf704ee56..a70d86044a 100644 --- a/@commitlint/rules/src/footer-min-length.test.ts +++ b/@commitlint/rules/src/footer-min-length.test.ts @@ -1,14 +1,15 @@ -import parse from '@commitlint/parse'; -import {footerMinLength} from './footer-min-length'; +import { test, expect } from "vitest"; +import parse from "@commitlint/parse"; +import { footerMinLength } from "./footer-min-length.js"; -const short = 'BREAKING CHANGE: a'; -const long = 'BREAKING CHANGE: ab'; +const short = "BREAKING CHANGE: a"; +const long = "BREAKING CHANGE: ab"; const value = long.length; const messages = { - simple: 'test: subject', - empty: 'test: subject\nbody', + simple: "test: subject", + empty: "test: subject\nbody", short: `test: subject\n${short}`, long: `test: subject\n${long}`, }; @@ -20,25 +21,25 @@ const parsed = { long: parse(messages.long), }; -test('with simple should succeed', async () => { +test("with simple should succeed", async () => { const [actual] = footerMinLength(await parsed.simple, undefined, value); const expected = true; expect(actual).toEqual(expected); }); -test('with empty should succeed', async () => { +test("with empty should succeed", async () => { const [actual] = footerMinLength(await parsed.empty, undefined, value); const expected = true; expect(actual).toEqual(expected); }); -test('with short should fail', async () => { +test("with short should fail", async () => { const [actual] = footerMinLength(await parsed.short, undefined, value); const expected = false; expect(actual).toEqual(expected); }); -test('with long should succeed', async () => { +test("with long should succeed", async () => { const [actual] = footerMinLength(await parsed.long, undefined, value); const expected = true; expect(actual).toEqual(expected); diff --git a/@commitlint/rules/src/footer-min-length.ts b/@commitlint/rules/src/footer-min-length.ts index 9959cb788c..54f7c6143c 100644 --- a/@commitlint/rules/src/footer-min-length.ts +++ b/@commitlint/rules/src/footer-min-length.ts @@ -1,10 +1,10 @@ -import {minLength} from '@commitlint/ensure'; -import {SyncRule} from '@commitlint/types'; +import { minLength } from "@commitlint/ensure"; +import { SyncRule } from "@commitlint/types"; export const footerMinLength: SyncRule<number> = ( parsed, _when = undefined, - value = 0 + value = 0, ) => { if (!parsed.footer) { return [true]; diff --git a/@commitlint/rules/src/header-case.test.ts b/@commitlint/rules/src/header-case.test.ts index 49fcde9dbb..edda2b957c 100644 --- a/@commitlint/rules/src/header-case.test.ts +++ b/@commitlint/rules/src/header-case.test.ts @@ -1,16 +1,17 @@ -import parse from '@commitlint/parse'; -import {headerCase} from './header-case'; +import { test, expect } from "vitest"; +import parse from "@commitlint/parse"; +import { headerCase } from "./header-case.js"; const messages = { - numeric: '1.0.0\n', - lowercase: 'header\n', - mixedcase: 'hEaDeR\n', - uppercase: 'HEADER\n', - camelcase: 'heaDer\n', - kebabcase: 'hea-der\n', - pascalcase: 'HeaDer\n', - snakecase: 'hea_der\n', - startcase: 'Hea Der\n', + numeric: "1.0.0\n", + lowercase: "header\n", + mixedcase: "hEaDeR\n", + uppercase: "HEADER\n", + camelcase: "heaDer\n", + kebabcase: "hea-der\n", + pascalcase: "HeaDer\n", + snakecase: "hea_der\n", + startcase: "Hea Der\n", }; const parsed = { @@ -26,199 +27,199 @@ const parsed = { }; test('with lowercase header should fail for "never lowercase"', async () => { - const [actual] = headerCase(await parsed.lowercase, 'never', 'lowercase'); + const [actual] = headerCase(await parsed.lowercase, "never", "lowercase"); const expected = false; expect(actual).toEqual(expected); }); test('with lowercase header should succeed for "always lowercase"', async () => { - const [actual] = headerCase(await parsed.lowercase, 'always', 'lowercase'); + const [actual] = headerCase(await parsed.lowercase, "always", "lowercase"); const expected = true; expect(actual).toEqual(expected); }); test('with mixedcase header should succeed for "never lowercase"', async () => { - const [actual] = headerCase(await parsed.mixedcase, 'never', 'lowercase'); + const [actual] = headerCase(await parsed.mixedcase, "never", "lowercase"); const expected = true; expect(actual).toEqual(expected); }); test('with mixedcase header should fail for "always lowercase"', async () => { - const [actual] = headerCase(await parsed.mixedcase, 'always', 'lowercase'); + const [actual] = headerCase(await parsed.mixedcase, "always", "lowercase"); const expected = false; expect(actual).toEqual(expected); }); test('with mixedcase header should succeed for "never uppercase"', async () => { - const [actual] = headerCase(await parsed.mixedcase, 'never', 'uppercase'); + const [actual] = headerCase(await parsed.mixedcase, "never", "uppercase"); const expected = true; expect(actual).toEqual(expected); }); test('with mixedcase header should fail for "always uppercase"', async () => { - const [actual] = headerCase(await parsed.mixedcase, 'always', 'uppercase'); + const [actual] = headerCase(await parsed.mixedcase, "always", "uppercase"); const expected = false; expect(actual).toEqual(expected); }); test('with uppercase header should fail for "never uppercase"', async () => { - const [actual] = headerCase(await parsed.uppercase, 'never', 'uppercase'); + const [actual] = headerCase(await parsed.uppercase, "never", "uppercase"); const expected = false; expect(actual).toEqual(expected); }); test('with lowercase header should succeed for "always uppercase"', async () => { - const [actual] = headerCase(await parsed.uppercase, 'always', 'uppercase'); + const [actual] = headerCase(await parsed.uppercase, "always", "uppercase"); const expected = true; expect(actual).toEqual(expected); }); test('with camelcase header should fail for "always uppercase"', async () => { - const [actual] = headerCase(await parsed.camelcase, 'always', 'uppercase'); + const [actual] = headerCase(await parsed.camelcase, "always", "uppercase"); const expected = false; expect(actual).toEqual(expected); }); test('with camelcase header should succeed for "never uppercase"', async () => { - const [actual] = headerCase(await parsed.camelcase, 'never', 'uppercase'); + const [actual] = headerCase(await parsed.camelcase, "never", "uppercase"); const expected = true; expect(actual).toEqual(expected); }); test('with camelcase header should fail for "always pascalcase"', async () => { - const [actual] = headerCase(await parsed.camelcase, 'always', 'pascal-case'); + const [actual] = headerCase(await parsed.camelcase, "always", "pascal-case"); const expected = false; expect(actual).toEqual(expected); }); test('with camelcase header should fail for "always kebabcase"', async () => { - const [actual] = headerCase(await parsed.camelcase, 'always', 'kebab-case'); + const [actual] = headerCase(await parsed.camelcase, "always", "kebab-case"); const expected = false; expect(actual).toEqual(expected); }); test('with camelcase header should fail for "always snakecase"', async () => { - const [actual] = headerCase(await parsed.camelcase, 'always', 'snake-case'); + const [actual] = headerCase(await parsed.camelcase, "always", "snake-case"); const expected = false; expect(actual).toEqual(expected); }); test('with camelcase header should succeed for "always camelcase"', async () => { - const [actual] = headerCase(await parsed.camelcase, 'always', 'camel-case'); + const [actual] = headerCase(await parsed.camelcase, "always", "camel-case"); const expected = true; expect(actual).toEqual(expected); }); test('with pascalcase header should fail for "always uppercase"', async () => { - const [actual] = headerCase(await parsed.pascalcase, 'always', 'uppercase'); + const [actual] = headerCase(await parsed.pascalcase, "always", "uppercase"); const expected = false; expect(actual).toEqual(expected); }); test('with pascalcase header should succeed for "never uppercase"', async () => { - const [actual] = headerCase(await parsed.pascalcase, 'never', 'uppercase'); + const [actual] = headerCase(await parsed.pascalcase, "never", "uppercase"); const expected = true; expect(actual).toEqual(expected); }); test('with pascalcase header should succeed for "always pascalcase"', async () => { - const [actual] = headerCase(await parsed.pascalcase, 'always', 'pascal-case'); + const [actual] = headerCase(await parsed.pascalcase, "always", "pascal-case"); const expected = true; expect(actual).toEqual(expected); }); test('with pascalcase header should fail for "always kebabcase"', async () => { - const [actual] = headerCase(await parsed.pascalcase, 'always', 'kebab-case'); + const [actual] = headerCase(await parsed.pascalcase, "always", "kebab-case"); const expected = false; expect(actual).toEqual(expected); }); test('with pascalcase header should fail for "always snakecase"', async () => { - const [actual] = headerCase(await parsed.pascalcase, 'always', 'snake-case'); + const [actual] = headerCase(await parsed.pascalcase, "always", "snake-case"); const expected = false; expect(actual).toEqual(expected); }); test('with pascalcase header should fail for "always camelcase"', async () => { - const [actual] = headerCase(await parsed.pascalcase, 'always', 'camel-case'); + const [actual] = headerCase(await parsed.pascalcase, "always", "camel-case"); const expected = false; expect(actual).toEqual(expected); }); test('with snakecase header should fail for "always uppercase"', async () => { - const [actual] = headerCase(await parsed.snakecase, 'always', 'uppercase'); + const [actual] = headerCase(await parsed.snakecase, "always", "uppercase"); const expected = false; expect(actual).toEqual(expected); }); test('with snakecase header should succeed for "never uppercase"', async () => { - const [actual] = headerCase(await parsed.snakecase, 'never', 'uppercase'); + const [actual] = headerCase(await parsed.snakecase, "never", "uppercase"); const expected = true; expect(actual).toEqual(expected); }); test('with snakecase header should fail for "always pascalcase"', async () => { - const [actual] = headerCase(await parsed.snakecase, 'always', 'pascal-case'); + const [actual] = headerCase(await parsed.snakecase, "always", "pascal-case"); const expected = false; expect(actual).toEqual(expected); }); test('with snakecase header should fail for "always kebabcase"', async () => { - const [actual] = headerCase(await parsed.snakecase, 'always', 'kebab-case'); + const [actual] = headerCase(await parsed.snakecase, "always", "kebab-case"); const expected = false; expect(actual).toEqual(expected); }); test('with snakecase header should succeed for "always snakecase"', async () => { - const [actual] = headerCase(await parsed.snakecase, 'always', 'snake-case'); + const [actual] = headerCase(await parsed.snakecase, "always", "snake-case"); const expected = true; expect(actual).toEqual(expected); }); test('with snakecase header should fail for "always camelcase"', async () => { - const [actual] = headerCase(await parsed.snakecase, 'always', 'camel-case'); + const [actual] = headerCase(await parsed.snakecase, "always", "camel-case"); const expected = false; expect(actual).toEqual(expected); }); test('with startcase header should fail for "always uppercase"', async () => { - const [actual] = headerCase(await parsed.startcase, 'always', 'uppercase'); + const [actual] = headerCase(await parsed.startcase, "always", "uppercase"); const expected = false; expect(actual).toEqual(expected); }); test('with startcase header should succeed for "never uppercase"', async () => { - const [actual] = headerCase(await parsed.startcase, 'never', 'uppercase'); + const [actual] = headerCase(await parsed.startcase, "never", "uppercase"); const expected = true; expect(actual).toEqual(expected); }); test('with startcase header should fail for "always pascalcase"', async () => { - const [actual] = headerCase(await parsed.startcase, 'always', 'pascal-case'); + const [actual] = headerCase(await parsed.startcase, "always", "pascal-case"); const expected = false; expect(actual).toEqual(expected); }); test('with startcase header should fail for "always kebabcase"', async () => { - const [actual] = headerCase(await parsed.startcase, 'always', 'kebab-case'); + const [actual] = headerCase(await parsed.startcase, "always", "kebab-case"); const expected = false; expect(actual).toEqual(expected); }); test('with startcase header should fail for "always snakecase"', async () => { - const [actual] = headerCase(await parsed.startcase, 'always', 'snake-case'); + const [actual] = headerCase(await parsed.startcase, "always", "snake-case"); const expected = false; expect(actual).toEqual(expected); }); test('with startcase header should fail for "always camelcase"', async () => { - const [actual] = headerCase(await parsed.startcase, 'always', 'camel-case'); + const [actual] = headerCase(await parsed.startcase, "always", "camel-case"); const expected = false; expect(actual).toEqual(expected); }); test('with startcase header should succeed for "always startcase"', async () => { - const [actual] = headerCase(await parsed.startcase, 'always', 'start-case'); + const [actual] = headerCase(await parsed.startcase, "always", "start-case"); const expected = true; expect(actual).toEqual(expected); }); @@ -226,92 +227,92 @@ test('with startcase header should succeed for "always startcase"', async () => test('should use expected message with "always"', async () => { const [, message] = headerCase( await parsed.uppercase, - 'always', - 'lower-case' + "always", + "lower-case", ); - expect(message).toContain('must be lower-case'); + expect(message).toContain("must be lower-case"); }); test('should use expected message with "never"', async () => { - const [, message] = headerCase(await parsed.uppercase, 'never', 'upper-case'); - expect(message).toContain('must not be upper-case'); + const [, message] = headerCase(await parsed.uppercase, "never", "upper-case"); + expect(message).toContain("must not be upper-case"); }); test('with uppercase scope should succeed for "always [uppercase, lowercase]"', async () => { - const [actual] = headerCase(await parsed.uppercase, 'always', [ - 'uppercase', - 'lowercase', + const [actual] = headerCase(await parsed.uppercase, "always", [ + "uppercase", + "lowercase", ]); const expected = true; expect(actual).toEqual(expected); }); test('with lowercase header should succeed for "always [uppercase, lowercase]"', async () => { - const [actual] = headerCase(await parsed.lowercase, 'always', [ - 'uppercase', - 'lowercase', + const [actual] = headerCase(await parsed.lowercase, "always", [ + "uppercase", + "lowercase", ]); const expected = true; expect(actual).toEqual(expected); }); test('with mixedcase header should fail for "always [uppercase, lowercase]"', async () => { - const [actual] = headerCase(await parsed.mixedcase, 'always', [ - 'uppercase', - 'lowercase', + const [actual] = headerCase(await parsed.mixedcase, "always", [ + "uppercase", + "lowercase", ]); const expected = false; expect(actual).toEqual(expected); }); test('with mixedcase header should pass for "always [uppercase, lowercase, camel-case]"', async () => { - const [actual] = headerCase(await parsed.mixedcase, 'always', [ - 'uppercase', - 'lowercase', - 'camel-case', + const [actual] = headerCase(await parsed.mixedcase, "always", [ + "uppercase", + "lowercase", + "camel-case", ]); const expected = true; expect(actual).toEqual(expected); }); test('with mixedcase scope should pass for "never [uppercase, lowercase]"', async () => { - const [actual] = headerCase(await parsed.mixedcase, 'never', [ - 'uppercase', - 'lowercase', + const [actual] = headerCase(await parsed.mixedcase, "never", [ + "uppercase", + "lowercase", ]); const expected = true; expect(actual).toEqual(expected); }); test('with uppercase scope should fail for "never [uppercase, lowercase]"', async () => { - const [actual] = headerCase(await parsed.uppercase, 'never', [ - 'uppercase', - 'lowercase', + const [actual] = headerCase(await parsed.uppercase, "never", [ + "uppercase", + "lowercase", ]); const expected = false; expect(actual).toEqual(expected); }); test('with numeric header should succeed for "never lowercase"', async () => { - const [actual] = headerCase(await parsed.numeric, 'never', 'lowercase'); + const [actual] = headerCase(await parsed.numeric, "never", "lowercase"); const expected = true; expect(actual).toEqual(expected); }); test('with numeric header should succeed for "always lowercase"', async () => { - const [actual] = headerCase(await parsed.numeric, 'always', 'lowercase'); + const [actual] = headerCase(await parsed.numeric, "always", "lowercase"); const expected = true; expect(actual).toEqual(expected); }); test('with numeric header should succeed for "never uppercase"', async () => { - const [actual] = headerCase(await parsed.numeric, 'never', 'uppercase'); + const [actual] = headerCase(await parsed.numeric, "never", "uppercase"); const expected = true; expect(actual).toEqual(expected); }); test('with numeric header should succeed for "always uppercase"', async () => { - const [actual] = headerCase(await parsed.numeric, 'always', 'uppercase'); + const [actual] = headerCase(await parsed.numeric, "always", "uppercase"); const expected = true; expect(actual).toEqual(expected); }); diff --git a/@commitlint/rules/src/header-case.ts b/@commitlint/rules/src/header-case.ts index cb907c9e40..310b8a753e 100644 --- a/@commitlint/rules/src/header-case.ts +++ b/@commitlint/rules/src/header-case.ts @@ -1,24 +1,24 @@ -import {case as ensureCase} from '@commitlint/ensure'; -import message from '@commitlint/message'; -import {TargetCaseType, SyncRule} from '@commitlint/types'; +import { case as ensureCase } from "@commitlint/ensure"; +import message from "@commitlint/message"; +import { TargetCaseType, SyncRule } from "@commitlint/types"; -const negated = (when?: string) => when === 'never'; +const negated = (when?: string) => when === "never"; export const headerCase: SyncRule<TargetCaseType | TargetCaseType[]> = ( parsed, - when = 'always', - value = [] + when = "always", + value = [], ) => { - const {header} = parsed; + const { header } = parsed; - if (typeof header !== 'string' || !header.match(/^[a-z]/i)) { + if (typeof header !== "string" || !header.match(/^[a-z]/i)) { return [true]; } const checks = (Array.isArray(value) ? value : [value]).map((check) => { - if (typeof check === 'string') { + if (typeof check === "string") { return { - when: 'always', + when: "always", case: check, }; } @@ -30,7 +30,7 @@ export const headerCase: SyncRule<TargetCaseType | TargetCaseType[]> = ( return negated(check.when) ? !r : r; }); - const list = checks.map((c) => c.case).join(', '); + const list = checks.map((c) => c.case).join(", "); return [ negated(when) ? !result : result, diff --git a/@commitlint/rules/src/header-full-stop.test.ts b/@commitlint/rules/src/header-full-stop.test.ts index 3339ddd757..98fd156437 100644 --- a/@commitlint/rules/src/header-full-stop.test.ts +++ b/@commitlint/rules/src/header-full-stop.test.ts @@ -1,5 +1,6 @@ -import parse from '@commitlint/parse'; -import {headerFullStop} from './header-full-stop'; +import { test, expect } from "vitest"; +import parse from "@commitlint/parse"; +import { headerFullStop } from "./header-full-stop.js"; const messages = { with: `header.\n`, @@ -12,25 +13,25 @@ const parsed = { }; test('with against "always ." should succeed', async () => { - const [actual] = headerFullStop(await parsed.with, 'always', '.'); + const [actual] = headerFullStop(await parsed.with, "always", "."); const expected = true; expect(actual).toEqual(expected); }); test('with against "never ." should fail', async () => { - const [actual] = headerFullStop(await parsed.with, 'never', '.'); + const [actual] = headerFullStop(await parsed.with, "never", "."); const expected = false; expect(actual).toEqual(expected); }); test('without against "always ." should fail', async () => { - const [actual] = headerFullStop(await parsed.without, 'always', '.'); + const [actual] = headerFullStop(await parsed.without, "always", "."); const expected = false; expect(actual).toEqual(expected); }); test('without against "never ." should succeed', async () => { - const [actual] = headerFullStop(await parsed.without, 'never', '.'); + const [actual] = headerFullStop(await parsed.without, "never", "."); const expected = true; expect(actual).toEqual(expected); }); diff --git a/@commitlint/rules/src/header-full-stop.ts b/@commitlint/rules/src/header-full-stop.ts index 3b2880a9c9..ae57cd26e5 100644 --- a/@commitlint/rules/src/header-full-stop.ts +++ b/@commitlint/rules/src/header-full-stop.ts @@ -1,17 +1,17 @@ -import message from '@commitlint/message'; -import {SyncRule} from '@commitlint/types'; +import message from "@commitlint/message"; +import { SyncRule } from "@commitlint/types"; export const headerFullStop: SyncRule<string> = ( parsed, - when = 'always', - value = '.' + when = "always", + value = ".", ) => { - const {header} = parsed; - const negated = when === 'never'; - const hasStop = header[header.length - 1] === value; + const { header } = parsed; + const negated = when === "never"; + const hasStop = header?.[header.length - 1] === value; return [ negated ? !hasStop : hasStop, - message(['header', negated ? 'may not' : 'must', 'end with full stop']), + message(["header", negated ? "may not" : "must", "end with full stop"]), ]; }; diff --git a/@commitlint/rules/src/header-max-length.test.ts b/@commitlint/rules/src/header-max-length.test.ts index e285e3528e..c7180e66b0 100644 --- a/@commitlint/rules/src/header-max-length.test.ts +++ b/@commitlint/rules/src/header-max-length.test.ts @@ -1,8 +1,9 @@ -import parse from '@commitlint/parse'; -import {headerMaxLength} from './header-max-length'; +import { test, expect } from "vitest"; +import parse from "@commitlint/parse"; +import { headerMaxLength } from "./header-max-length.js"; -const short = 'test: a'; -const long = 'test: ab'; +const short = "test: a"; +const long = "test: ab"; const value = short.length; @@ -16,13 +17,13 @@ const parsed = { long: parse(messages.long), }; -test('with short should succeed', async () => { +test("with short should succeed", async () => { const [actual] = headerMaxLength(await parsed.short, undefined, value); const expected = true; expect(actual).toEqual(expected); }); -test('with long should fail', async () => { +test("with long should fail", async () => { const [actual] = headerMaxLength(await parsed.long, undefined, value); const expected = false; expect(actual).toEqual(expected); diff --git a/@commitlint/rules/src/header-max-length.ts b/@commitlint/rules/src/header-max-length.ts index 64855e6615..0147c9d67f 100644 --- a/@commitlint/rules/src/header-max-length.ts +++ b/@commitlint/rules/src/header-max-length.ts @@ -1,13 +1,13 @@ -import {maxLength} from '@commitlint/ensure'; -import {SyncRule} from '@commitlint/types'; +import { maxLength } from "@commitlint/ensure"; +import { SyncRule } from "@commitlint/types"; export const headerMaxLength: SyncRule<number> = ( parsed, _when = undefined, - value = 0 + value = 0, ) => { return [ maxLength(parsed.header, value), - `header must not be longer than ${value} characters, current length is ${parsed.header.length}`, + `header must not be longer than ${value} characters, current length is ${parsed.header?.length}`, ]; }; diff --git a/@commitlint/rules/src/header-min-length.test.ts b/@commitlint/rules/src/header-min-length.test.ts index 09b5987372..e97dfe3d48 100644 --- a/@commitlint/rules/src/header-min-length.test.ts +++ b/@commitlint/rules/src/header-min-length.test.ts @@ -1,8 +1,9 @@ -import parse from '@commitlint/parse'; -import {headerMinLength} from './header-min-length'; +import { test, expect } from "vitest"; +import parse from "@commitlint/parse"; +import { headerMinLength } from "./header-min-length.js"; -const short = 'BREAKING CHANGE: a'; -const long = 'BREAKING CHANGE: ab'; +const short = "BREAKING CHANGE: a"; +const long = "BREAKING CHANGE: ab"; const value = long.length; @@ -16,13 +17,13 @@ const parsed = { long: parse(messages.long), }; -test('with short should fail', async () => { +test("with short should fail", async () => { const [actual] = headerMinLength(await parsed.short, undefined, value); const expected = false; expect(actual).toEqual(expected); }); -test('with long should succeed', async () => { +test("with long should succeed", async () => { const [actual] = headerMinLength(await parsed.long, undefined, value); const expected = true; expect(actual).toEqual(expected); diff --git a/@commitlint/rules/src/header-min-length.ts b/@commitlint/rules/src/header-min-length.ts index cc84ef56e7..d332b077b3 100644 --- a/@commitlint/rules/src/header-min-length.ts +++ b/@commitlint/rules/src/header-min-length.ts @@ -1,13 +1,13 @@ -import {minLength} from '@commitlint/ensure'; -import {SyncRule} from '@commitlint/types'; +import { minLength } from "@commitlint/ensure"; +import { SyncRule } from "@commitlint/types"; export const headerMinLength: SyncRule<number> = ( parsed, _when = undefined, - value = 0 + value = 0, ) => { return [ minLength(parsed.header, value), - `header must not be shorter than ${value} characters, current length is ${parsed.header.length}`, + `header must not be shorter than ${value} characters, current length is ${parsed.header?.length}`, ]; }; diff --git a/@commitlint/rules/src/header-trim.test.ts b/@commitlint/rules/src/header-trim.test.ts new file mode 100644 index 0000000000..f9280b2bf7 --- /dev/null +++ b/@commitlint/rules/src/header-trim.test.ts @@ -0,0 +1,73 @@ +import { test, expect } from "vitest"; +import parse from "@commitlint/parse"; +import type { Commit } from "conventional-commits-parser"; + +import { headerTrim } from "./header-trim.js"; + +const messages = { + correct: "test: subject", + + whitespaceStart: " test: subject", + whitespaceEnd: "test: subject ", + whitespaceSurround: " test: subject ", + + tabStart: "\t\ttest: subject", + tabEnd: "test: subject\t\t", + tabSurround: "\t\ttest: subject\t", + + mixStart: "\t\ttest: subject", + mixEnd: "test: subject\t\t", + mixSurround: "\t \ttest: subject \t \t", +}; + +const parsed = Object.entries(messages).reduce( + (_parsed, [key, message]) => + Object.assign(_parsed, { + [key]: parse(message), + }), + {} as Record<keyof typeof messages, Promise<Commit>>, +); + +test("should succeed when header is not surrounded by whitespace", async () => { + const result = headerTrim(await parsed.correct); + expect(result).toEqual(expect.arrayContaining([true])); +}); + +test.each([ + { scenario: "mixed whitespace ", commit: parsed.mixStart }, + { scenario: "whitespace", commit: parsed.whitespaceStart }, + { scenario: "tab", commit: parsed.tabStart }, +] as const)("should fail when starts with $scenario", async ({ commit }) => { + const result = headerTrim(await commit); + expect(result).toEqual( + expect.arrayContaining([false, "header must not start with whitespace"]), + ); +}); + +test.each([ + { scenario: "mixed whitespace", commit: parsed.mixEnd }, + { scenario: "whitespace", commit: parsed.whitespaceEnd }, + { scenario: "tab", commit: parsed.tabEnd }, +] as const)("should fail when ends with $scenario", async ({ commit }) => { + const result = headerTrim(await commit); + expect(result).toEqual( + expect.arrayContaining([false, "header must not end with whitespace"]), + ); +}); + +test.each([ + { scenario: "mixed whitespace", commit: parsed.mixSurround }, + { scenario: "whitespace", commit: parsed.whitespaceSurround }, + { scenario: "tab", commit: parsed.tabSurround }, +] as const)( + "should fail when surrounded by with $scenario", + async ({ commit }) => { + const result = headerTrim(await commit); + expect(result).toEqual( + expect.arrayContaining([ + false, + "header must not be surrounded by whitespace", + ]), + ); + }, +); diff --git a/@commitlint/rules/src/header-trim.ts b/@commitlint/rules/src/header-trim.ts new file mode 100644 index 0000000000..05edeab268 --- /dev/null +++ b/@commitlint/rules/src/header-trim.ts @@ -0,0 +1,22 @@ +import message from "@commitlint/message"; +import { SyncRule } from "@commitlint/types"; + +export const headerTrim: SyncRule = (parsed) => { + const { header } = parsed; + + if (!header) return [true]; + + const startsWithWhiteSpace = header.length > header.trimStart().length; + const endsWithWhiteSpace = header.length > header.trimEnd().length; + + if (startsWithWhiteSpace && endsWithWhiteSpace) + return [false, message(["header", "must not be surrounded by whitespace"])]; + + if (startsWithWhiteSpace) + return [false, message(["header", "must not start with whitespace"])]; + + if (endsWithWhiteSpace) + return [false, message(["header", "must not end with whitespace"])]; + + return [true]; +}; diff --git a/@commitlint/rules/src/index.test.ts b/@commitlint/rules/src/index.test.ts index 1eaf0010e3..22f3b91847 100644 --- a/@commitlint/rules/src/index.test.ts +++ b/@commitlint/rules/src/index.test.ts @@ -1,35 +1,41 @@ -import path from 'path'; -import fs from 'fs'; -import globby from 'globby'; -import rules from '.'; +import { test, expect } from "vitest"; +import fs from "node:fs"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; -test('exports all rules', async () => { - const expected = (await glob('*.ts')).sort(); +import { globSync } from "glob"; + +import rules from "./index.js"; + +const __dirname = path.resolve(fileURLToPath(import.meta.url), ".."); + +test("exports all rules", () => { + const expected = _glob("*.ts").sort(); const actual = Object.keys(rules).sort(); expect(actual).toEqual(expected); }); -test('rules export functions', () => { +test("rules export functions", () => { const actual = Object.values(rules); - expect(actual.every((rule) => typeof rule === 'function')).toBe(true); + expect(actual.every((rule) => typeof rule === "function")).toBe(true); }); -test('all rules are present in documentation', () => { +test("all rules are present in documentation", () => { const file = fs.readFileSync( - path.join(__dirname, '../../../docs/reference-rules.md'), - 'utf-8' + path.join(__dirname, "../../../docs/reference/rules.md"), + "utf-8", ); const results = file .split(/(\n|\r)/) - .filter((s) => s.startsWith('####') && !s.includes('`deprecated`')) - .map((s) => s.replace('#### ', '')); + .filter((s) => s.startsWith("##") && !s.includes("`deprecated`")) + .map((s) => s.replace("## ", "")); expect(Object.keys(rules)).toEqual(expect.arrayContaining(results)); }); -async function glob(pattern: string | string[]) { - const files = await globby(pattern, { - ignore: ['**/index.ts', '**/*.test.ts'], +function _glob(pattern: string) { + const files = globSync(pattern, { + ignore: ["**/index.ts", "**/*.test.ts"], cwd: __dirname, }); return files.map(relative).map(toExport); diff --git a/@commitlint/rules/src/index.ts b/@commitlint/rules/src/index.ts index af8ea6a544..95e7a9c86d 100644 --- a/@commitlint/rules/src/index.ts +++ b/@commitlint/rules/src/index.ts @@ -1,73 +1,77 @@ -import {bodyCase} from './body-case'; -import {bodyEmpty} from './body-empty'; -import {bodyFullStop} from './body-full-stop'; -import {bodyLeadingBlank} from './body-leading-blank'; -import {bodyMaxLength} from './body-max-length'; -import {bodyMaxLineLength} from './body-max-line-length'; -import {bodyMinLength} from './body-min-length'; -import {footerEmpty} from './footer-empty'; -import {footerLeadingBlank} from './footer-leading-blank'; -import {footerMaxLength} from './footer-max-length'; -import {footerMaxLineLength} from './footer-max-line-length'; -import {footerMinLength} from './footer-min-length'; -import {headerCase} from './header-case'; -import {headerFullStop} from './header-full-stop'; -import {headerMaxLength} from './header-max-length'; -import {headerMinLength} from './header-min-length'; -import {referencesEmpty} from './references-empty'; -import {scopeCase} from './scope-case'; -import {scopeEmpty} from './scope-empty'; -import {scopeEnum} from './scope-enum'; -import {scopeMaxLength} from './scope-max-length'; -import {scopeMinLength} from './scope-min-length'; -import {signedOffBy} from './signed-off-by'; -import {subjectCase} from './subject-case'; -import {subjectEmpty} from './subject-empty'; -import {subjectFullStop} from './subject-full-stop'; -import {subjectMaxLength} from './subject-max-length'; -import {subjectMinLength} from './subject-min-length'; -import {subjectExclamationMark} from './subject-exclamation-mark'; -import {trailerExists} from './trailer-exists'; -import {typeCase} from './type-case'; -import {typeEmpty} from './type-empty'; -import {typeEnum} from './type-enum'; -import {typeMaxLength} from './type-max-length'; -import {typeMinLength} from './type-min-length'; +import { breakingChangeExclamationMark } from "./breaking-change-exclamation-mark.js"; +import { bodyCase } from "./body-case.js"; +import { bodyEmpty } from "./body-empty.js"; +import { bodyFullStop } from "./body-full-stop.js"; +import { bodyLeadingBlank } from "./body-leading-blank.js"; +import { bodyMaxLength } from "./body-max-length.js"; +import { bodyMaxLineLength } from "./body-max-line-length.js"; +import { bodyMinLength } from "./body-min-length.js"; +import { footerEmpty } from "./footer-empty.js"; +import { footerLeadingBlank } from "./footer-leading-blank.js"; +import { footerMaxLength } from "./footer-max-length.js"; +import { footerMaxLineLength } from "./footer-max-line-length.js"; +import { footerMinLength } from "./footer-min-length.js"; +import { headerCase } from "./header-case.js"; +import { headerFullStop } from "./header-full-stop.js"; +import { headerMaxLength } from "./header-max-length.js"; +import { headerMinLength } from "./header-min-length.js"; +import { headerTrim } from "./header-trim.js"; +import { referencesEmpty } from "./references-empty.js"; +import { scopeCase } from "./scope-case.js"; +import { scopeEmpty } from "./scope-empty.js"; +import { scopeEnum } from "./scope-enum.js"; +import { scopeMaxLength } from "./scope-max-length.js"; +import { scopeMinLength } from "./scope-min-length.js"; +import { signedOffBy } from "./signed-off-by.js"; +import { subjectCase } from "./subject-case.js"; +import { subjectEmpty } from "./subject-empty.js"; +import { subjectFullStop } from "./subject-full-stop.js"; +import { subjectMaxLength } from "./subject-max-length.js"; +import { subjectMinLength } from "./subject-min-length.js"; +import { subjectExclamationMark } from "./subject-exclamation-mark.js"; +import { trailerExists } from "./trailer-exists.js"; +import { typeCase } from "./type-case.js"; +import { typeEmpty } from "./type-empty.js"; +import { typeEnum } from "./type-enum.js"; +import { typeMaxLength } from "./type-max-length.js"; +import { typeMinLength } from "./type-min-length.js"; export default { - 'body-case': bodyCase, - 'body-empty': bodyEmpty, - 'body-full-stop': bodyFullStop, - 'body-leading-blank': bodyLeadingBlank, - 'body-max-length': bodyMaxLength, - 'body-max-line-length': bodyMaxLineLength, - 'body-min-length': bodyMinLength, - 'footer-empty': footerEmpty, - 'footer-leading-blank': footerLeadingBlank, - 'footer-max-length': footerMaxLength, - 'footer-max-line-length': footerMaxLineLength, - 'footer-min-length': footerMinLength, - 'header-case': headerCase, - 'header-full-stop': headerFullStop, - 'header-max-length': headerMaxLength, - 'header-min-length': headerMinLength, - 'references-empty': referencesEmpty, - 'scope-case': scopeCase, - 'scope-empty': scopeEmpty, - 'scope-enum': scopeEnum, - 'scope-max-length': scopeMaxLength, - 'scope-min-length': scopeMinLength, - 'signed-off-by': signedOffBy, - 'subject-case': subjectCase, - 'subject-empty': subjectEmpty, - 'subject-full-stop': subjectFullStop, - 'subject-max-length': subjectMaxLength, - 'subject-min-length': subjectMinLength, - 'subject-exclamation-mark': subjectExclamationMark, - 'trailer-exists': trailerExists, - 'type-case': typeCase, - 'type-empty': typeEmpty, - 'type-enum': typeEnum, - 'type-max-length': typeMaxLength, - 'type-min-length': typeMinLength, + "body-case": bodyCase, + "body-empty": bodyEmpty, + "body-full-stop": bodyFullStop, + "body-leading-blank": bodyLeadingBlank, + "body-max-length": bodyMaxLength, + "body-max-line-length": bodyMaxLineLength, + "body-min-length": bodyMinLength, + "breaking-change-exclamation-mark": breakingChangeExclamationMark, + "footer-empty": footerEmpty, + "footer-leading-blank": footerLeadingBlank, + "footer-max-length": footerMaxLength, + "footer-max-line-length": footerMaxLineLength, + "footer-min-length": footerMinLength, + "header-case": headerCase, + "header-full-stop": headerFullStop, + "header-max-length": headerMaxLength, + "header-min-length": headerMinLength, + "header-trim": headerTrim, + "references-empty": referencesEmpty, + "scope-case": scopeCase, + "scope-empty": scopeEmpty, + "scope-enum": scopeEnum, + "scope-max-length": scopeMaxLength, + "scope-min-length": scopeMinLength, + "signed-off-by": signedOffBy, + "subject-case": subjectCase, + "subject-empty": subjectEmpty, + "subject-exclamation-mark": subjectExclamationMark, + "subject-full-stop": subjectFullStop, + "subject-max-length": subjectMaxLength, + "subject-min-length": subjectMinLength, + "trailer-exists": trailerExists, + "type-case": typeCase, + "type-empty": typeEmpty, + "type-enum": typeEnum, + "type-max-length": typeMaxLength, + "type-min-length": typeMinLength, }; diff --git a/@commitlint/rules/src/references-empty.test.ts b/@commitlint/rules/src/references-empty.test.ts index 90073cb4dc..03b12bd060 100644 --- a/@commitlint/rules/src/references-empty.test.ts +++ b/@commitlint/rules/src/references-empty.test.ts @@ -1,19 +1,21 @@ -import parse from '@commitlint/parse'; -import {referencesEmpty} from './references-empty'; +import { test, expect } from "vitest"; +import parse from "@commitlint/parse"; +import { referencesEmpty } from "./references-empty.js"; -const preset = require('conventional-changelog-angular'); +// @ts-expect-error -- no typings +import preset from "conventional-changelog-angular"; const messages = { - plain: 'foo: bar', - comment: 'foo: baz\n#1 Comment', - reference: '#comment\nfoo: baz \nCloses #1', - references: '#comment\nfoo: bar \nCloses #1, #2, #3', - prefix: 'bar REF-1234', + plain: "foo: bar", + comment: "foo: baz\n#1 Comment", + reference: "#comment\nfoo: baz \nCloses #1", + references: "#comment\nfoo: bar \nCloses #1, #2, #3", + prefix: "bar REF-1234", }; const opts = (async () => { - const o = await preset; - o.parserOpts.commentChar = '#'; + const o = await preset(); + o.parserOpts.commentChar = "#"; return o; })(); @@ -27,60 +29,60 @@ const parsed = { references: (async () => parse(messages.references, undefined, (await opts).parserOpts))(), prefix: parse(messages.prefix, undefined, { - issuePrefixes: ['REF-'], + issuePrefixes: ["REF-"], }), }; -test('defaults to never and fails for plain', async () => { +test("defaults to never and fails for plain", async () => { const [actual] = referencesEmpty(await parsed.plain); const expected = false; expect(actual).toEqual(expected); }); -test('defaults to never and succeeds for reference', async () => { +test("defaults to never and succeeds for reference", async () => { const [actual] = referencesEmpty(await parsed.reference); const expected = true; expect(actual).toEqual(expected); }); -test('fails for comment with never', async () => { - const [actual] = referencesEmpty(await parsed.comment, 'never'); +test("fails for comment with never", async () => { + const [actual] = referencesEmpty(await parsed.comment, "never"); const expected = false; expect(actual).toEqual(expected); }); -test('succeeds for comment with always', async () => { - const [actual] = referencesEmpty(await parsed.comment, 'always'); +test("succeeds for comment with always", async () => { + const [actual] = referencesEmpty(await parsed.comment, "always"); const expected = true; expect(actual).toEqual(expected); }); -test('succeeds for reference with never', async () => { - const [actual] = referencesEmpty(await parsed.reference, 'never'); +test("succeeds for reference with never", async () => { + const [actual] = referencesEmpty(await parsed.reference, "never"); const expected = true; expect(actual).toEqual(expected); }); -test('fails for reference with always', async () => { - const [actual] = referencesEmpty(await parsed.reference, 'always'); +test("fails for reference with always", async () => { + const [actual] = referencesEmpty(await parsed.reference, "always"); const expected = false; expect(actual).toEqual(expected); }); -test('succeeds for references with never', async () => { - const [actual] = referencesEmpty(await parsed.references, 'never'); +test("succeeds for references with never", async () => { + const [actual] = referencesEmpty(await parsed.references, "never"); const expected = true; expect(actual).toEqual(expected); }); -test('fails for references with always', async () => { - const [actual] = referencesEmpty(await parsed.references, 'always'); +test("fails for references with always", async () => { + const [actual] = referencesEmpty(await parsed.references, "always"); const expected = false; expect(actual).toEqual(expected); }); -test('succeeds for custom references with always', async () => { - const [actual] = referencesEmpty(await parsed.prefix, 'never'); +test("succeeds for custom references with always", async () => { + const [actual] = referencesEmpty(await parsed.prefix, "never"); const expected = true; expect(actual).toEqual(expected); }); diff --git a/@commitlint/rules/src/references-empty.ts b/@commitlint/rules/src/references-empty.ts index 6682d1d99f..650675e087 100644 --- a/@commitlint/rules/src/references-empty.ts +++ b/@commitlint/rules/src/references-empty.ts @@ -1,11 +1,11 @@ -import message from '@commitlint/message'; -import {SyncRule} from '@commitlint/types'; +import message from "@commitlint/message"; +import { SyncRule } from "@commitlint/types"; -export const referencesEmpty: SyncRule = (parsed, when = 'never') => { - const negated = when === 'always'; +export const referencesEmpty: SyncRule = (parsed, when = "never") => { + const negated = when === "always"; const notEmpty = parsed.references.length > 0; return [ negated ? !notEmpty : notEmpty, - message(['references', negated ? 'must' : 'may not', 'be empty']), + message(["references", negated ? "must" : "may not", "be empty"]), ]; }; diff --git a/@commitlint/rules/src/scope-case.test.ts b/@commitlint/rules/src/scope-case.test.ts index b7c218af5c..4e352e7017 100644 --- a/@commitlint/rules/src/scope-case.test.ts +++ b/@commitlint/rules/src/scope-case.test.ts @@ -1,16 +1,17 @@ -import parse from '@commitlint/parse'; -import {scopeCase} from './scope-case'; +import { test, expect } from "vitest"; +import parse from "@commitlint/parse"; +import { scopeCase } from "./scope-case.js"; const messages = { - empty: 'test: subject', - lowercase: 'test(scope): subject', - mixedcase: 'test(sCoPe): subject', - uppercase: 'test(SCOPE): subject', - camelcase: 'test(myScope): subject', - kebabcase: 'test(my-scope): subject', - pascalcase: 'test(MyScope): subject', - snakecase: 'test(my_scope): subject', - startcase: 'test(My Scope): subject', + empty: "test: subject", + lowercase: "test(scope): subject", + mixedcase: "test(sCoPe): subject", + uppercase: "test(SCOPE): subject", + camelcase: "test(myScope): subject", + kebabcase: "test(my-scope): subject", + pascalcase: "test(MyScope): subject", + snakecase: "test(my_scope): subject", + startcase: "test(My Scope): subject", }; const parsed = { @@ -26,298 +27,298 @@ const parsed = { }; test('with empty scope should succeed for "never lowercase"', async () => { - const [actual] = scopeCase(await parsed.empty, 'never', 'lowercase'); + const [actual] = scopeCase(await parsed.empty, "never", "lowercase"); const expected = true; expect(actual).toEqual(expected); }); test('with empty scope should succeed for "always lowercase"', async () => { - const [actual] = scopeCase(await parsed.empty, 'always', 'lowercase'); + const [actual] = scopeCase(await parsed.empty, "always", "lowercase"); const expected = true; expect(actual).toEqual(expected); }); test('with empty scope should succeed for "never uppercase"', async () => { - const [actual] = scopeCase(await parsed.empty, 'never', 'uppercase'); + const [actual] = scopeCase(await parsed.empty, "never", "uppercase"); const expected = true; expect(actual).toEqual(expected); }); test('with empty scope should succeed for "always uppercase"', async () => { - const [actual] = scopeCase(await parsed.empty, 'always', 'uppercase'); + const [actual] = scopeCase(await parsed.empty, "always", "uppercase"); const expected = true; expect(actual).toEqual(expected); }); test('with empty scope should succeed for "never camelcase"', async () => { - const [actual] = scopeCase(await parsed.empty, 'never', 'camel-case'); + const [actual] = scopeCase(await parsed.empty, "never", "camel-case"); const expected = true; expect(actual).toEqual(expected); }); test('with empty scope should succeed for "always camelcase"', async () => { - const [actual] = scopeCase(await parsed.empty, 'never', 'camel-case'); + const [actual] = scopeCase(await parsed.empty, "never", "camel-case"); const expected = true; expect(actual).toEqual(expected); }); test('with empty scope should succeed for "never kebabcase"', async () => { - const [actual] = scopeCase(await parsed.empty, 'never', 'kebab-case'); + const [actual] = scopeCase(await parsed.empty, "never", "kebab-case"); const expected = true; expect(actual).toEqual(expected); }); test('with empty scope should succeed for "always kebabcase"', async () => { - const [actual] = scopeCase(await parsed.empty, 'never', 'kebab-case'); + const [actual] = scopeCase(await parsed.empty, "never", "kebab-case"); const expected = true; expect(actual).toEqual(expected); }); test('with empty scope should succeed for "never pascalcase"', async () => { - const [actual] = scopeCase(await parsed.empty, 'never', 'pascal-case'); + const [actual] = scopeCase(await parsed.empty, "never", "pascal-case"); const expected = true; expect(actual).toEqual(expected); }); test('with empty scope should succeed for "always pascalcase"', async () => { - const [actual] = scopeCase(await parsed.empty, 'never', 'pascal-case'); + const [actual] = scopeCase(await parsed.empty, "never", "pascal-case"); const expected = true; expect(actual).toEqual(expected); }); test('with empty scope should succeed for "never snakecase"', async () => { - const [actual] = scopeCase(await parsed.empty, 'never', 'snake-case'); + const [actual] = scopeCase(await parsed.empty, "never", "snake-case"); const expected = true; expect(actual).toEqual(expected); }); test('with empty scope should succeed for "always snakecase"', async () => { - const [actual] = scopeCase(await parsed.empty, 'never', 'snake-case'); + const [actual] = scopeCase(await parsed.empty, "never", "snake-case"); const expected = true; expect(actual).toEqual(expected); }); test('with empty scope should succeed for "never startcase"', async () => { - const [actual] = scopeCase(await parsed.empty, 'never', 'start-case'); + const [actual] = scopeCase(await parsed.empty, "never", "start-case"); const expected = true; expect(actual).toEqual(expected); }); test('with empty scope should succeed for "always startcase"', async () => { - const [actual] = scopeCase(await parsed.empty, 'never', 'start-case'); + const [actual] = scopeCase(await parsed.empty, "never", "start-case"); const expected = true; expect(actual).toEqual(expected); }); test('with lowercase scope should fail for "never lowercase"', async () => { - const [actual] = scopeCase(await parsed.lowercase, 'never', 'lowercase'); + const [actual] = scopeCase(await parsed.lowercase, "never", "lowercase"); const expected = false; expect(actual).toEqual(expected); }); test('with lowercase scope should succeed for "always lowercase"', async () => { - const [actual] = scopeCase(await parsed.lowercase, 'always', 'lowercase'); + const [actual] = scopeCase(await parsed.lowercase, "always", "lowercase"); const expected = true; expect(actual).toEqual(expected); }); test('with mixedcase scope should succeed for "never lowercase"', async () => { - const [actual] = scopeCase(await parsed.mixedcase, 'never', 'lowercase'); + const [actual] = scopeCase(await parsed.mixedcase, "never", "lowercase"); const expected = true; expect(actual).toEqual(expected); }); test('with mixedcase scope should fail for "always lowercase"', async () => { - const [actual] = scopeCase(await parsed.mixedcase, 'always', 'lowercase'); + const [actual] = scopeCase(await parsed.mixedcase, "always", "lowercase"); const expected = false; expect(actual).toEqual(expected); }); test('with mixedcase scope should succeed for "never uppercase"', async () => { - const [actual] = scopeCase(await parsed.mixedcase, 'never', 'uppercase'); + const [actual] = scopeCase(await parsed.mixedcase, "never", "uppercase"); const expected = true; expect(actual).toEqual(expected); }); test('with kebabcase scope should succeed for "always lowercase"', async () => { - const [actual] = scopeCase(await parsed.kebabcase, 'always', 'lowercase'); + const [actual] = scopeCase(await parsed.kebabcase, "always", "lowercase"); const expected = true; expect(actual).toEqual(expected); }); test('with kebabcase scope should fail for "always camelcase"', async () => { - const [actual] = scopeCase(await parsed.kebabcase, 'always', 'camel-case'); + const [actual] = scopeCase(await parsed.kebabcase, "always", "camel-case"); const expected = false; expect(actual).toEqual(expected); }); test('with kebabcase scope should fail for "always pascalcase"', async () => { - const [actual] = scopeCase(await parsed.kebabcase, 'always', 'pascal-case'); + const [actual] = scopeCase(await parsed.kebabcase, "always", "pascal-case"); const expected = false; expect(actual).toEqual(expected); }); test('with kebabcase scope should succeed for "always kebabcase"', async () => { - const [actual] = scopeCase(await parsed.kebabcase, 'always', 'kebab-case'); + const [actual] = scopeCase(await parsed.kebabcase, "always", "kebab-case"); const expected = true; expect(actual).toEqual(expected); }); test('with snakecase scope should succeed for "always lowercase"', async () => { - const [actual] = scopeCase(await parsed.snakecase, 'always', 'lowercase'); + const [actual] = scopeCase(await parsed.snakecase, "always", "lowercase"); const expected = true; expect(actual).toEqual(expected); }); test('with snakecase scope should fail for "always camelcase"', async () => { - const [actual] = scopeCase(await parsed.snakecase, 'always', 'camel-case'); + const [actual] = scopeCase(await parsed.snakecase, "always", "camel-case"); const expected = false; expect(actual).toEqual(expected); }); test('with snakecase scope should fail for "always pascalcase"', async () => { - const [actual] = scopeCase(await parsed.snakecase, 'always', 'pascal-case'); + const [actual] = scopeCase(await parsed.snakecase, "always", "pascal-case"); const expected = false; expect(actual).toEqual(expected); }); test('with snakecase scope should succeed for "always snakecase"', async () => { - const [actual] = scopeCase(await parsed.snakecase, 'always', 'snake-case'); + const [actual] = scopeCase(await parsed.snakecase, "always", "snake-case"); const expected = true; expect(actual).toEqual(expected); }); test('with camelcase scope should fail for "always lowercase"', async () => { - const [actual] = scopeCase(await parsed.camelcase, 'always', 'lowercase'); + const [actual] = scopeCase(await parsed.camelcase, "always", "lowercase"); const expected = false; expect(actual).toEqual(expected); }); test('with camelcase scope should succeed for "always camelcase"', async () => { - const [actual] = scopeCase(await parsed.camelcase, 'always', 'camel-case'); + const [actual] = scopeCase(await parsed.camelcase, "always", "camel-case"); const expected = true; expect(actual).toEqual(expected); }); test('with camelcase scope should fail for "always kebabcase"', async () => { - const [actual] = scopeCase(await parsed.camelcase, 'always', 'kebab-case'); + const [actual] = scopeCase(await parsed.camelcase, "always", "kebab-case"); const expected = false; expect(actual).toEqual(expected); }); test('with camelcase scope should fail for "always pascalcase"', async () => { - const [actual] = scopeCase(await parsed.camelcase, 'always', 'pascal-case'); + const [actual] = scopeCase(await parsed.camelcase, "always", "pascal-case"); const expected = false; expect(actual).toEqual(expected); }); test('with pascalcase scope should fail for "always lowercase"', async () => { - const [actual] = scopeCase(await parsed.pascalcase, 'always', 'lowercase'); + const [actual] = scopeCase(await parsed.pascalcase, "always", "lowercase"); const expected = false; expect(actual).toEqual(expected); }); test('with pascalcase scope should fail for "always kebabcase"', async () => { - const [actual] = scopeCase(await parsed.pascalcase, 'always', 'kebab-case'); + const [actual] = scopeCase(await parsed.pascalcase, "always", "kebab-case"); const expected = false; expect(actual).toEqual(expected); }); test('with pascalcase scope should fail for "always camelcase"', async () => { - const [actual] = scopeCase(await parsed.pascalcase, 'always', 'camel-case'); + const [actual] = scopeCase(await parsed.pascalcase, "always", "camel-case"); const expected = false; expect(actual).toEqual(expected); }); test('with pascalcase scope should succeed for "always pascalcase"', async () => { - const [actual] = scopeCase(await parsed.pascalcase, 'always', 'pascal-case'); + const [actual] = scopeCase(await parsed.pascalcase, "always", "pascal-case"); const expected = true; expect(actual).toEqual(expected); }); test('with mixedcase scope should fail for "always uppercase"', async () => { - const [actual] = scopeCase(await parsed.mixedcase, 'always', 'uppercase'); + const [actual] = scopeCase(await parsed.mixedcase, "always", "uppercase"); const expected = false; expect(actual).toEqual(expected); }); test('with uppercase scope should fail for "never uppercase"', async () => { - const [actual] = scopeCase(await parsed.uppercase, 'never', 'uppercase'); + const [actual] = scopeCase(await parsed.uppercase, "never", "uppercase"); const expected = false; expect(actual).toEqual(expected); }); test('with uppercase scope should succeed for "always uppercase"', async () => { - const [actual] = scopeCase(await parsed.uppercase, 'always', 'uppercase'); + const [actual] = scopeCase(await parsed.uppercase, "always", "uppercase"); const expected = true; expect(actual).toEqual(expected); }); test('with uppercase scope should succeed for "always [uppercase, lowercase]"', async () => { - const [actual] = scopeCase(await parsed.uppercase, 'always', [ - 'uppercase', - 'lowercase', + const [actual] = scopeCase(await parsed.uppercase, "always", [ + "uppercase", + "lowercase", ]); const expected = true; expect(actual).toEqual(expected); }); test('with lowercase scope should succeed for "always [uppercase, lowercase]"', async () => { - const [actual] = scopeCase(await parsed.lowercase, 'always', [ - 'uppercase', - 'lowercase', + const [actual] = scopeCase(await parsed.lowercase, "always", [ + "uppercase", + "lowercase", ]); const expected = true; expect(actual).toEqual(expected); }); test('with mixedcase scope should fail for "always [uppercase, lowercase]"', async () => { - const [actual] = scopeCase(await parsed.mixedcase, 'always', [ - 'uppercase', - 'lowercase', + const [actual] = scopeCase(await parsed.mixedcase, "always", [ + "uppercase", + "lowercase", ]); const expected = false; expect(actual).toEqual(expected); }); test('with mixedcase scope should pass for "always [uppercase, lowercase, camel-case]"', async () => { - const [actual] = scopeCase(await parsed.mixedcase, 'always', [ - 'uppercase', - 'lowercase', - 'camel-case', + const [actual] = scopeCase(await parsed.mixedcase, "always", [ + "uppercase", + "lowercase", + "camel-case", ]); const expected = true; expect(actual).toEqual(expected); }); test('with mixedcase scope should pass for "never [uppercase, lowercase]"', async () => { - const [actual] = scopeCase(await parsed.mixedcase, 'never', [ - 'uppercase', - 'lowercase', + const [actual] = scopeCase(await parsed.mixedcase, "never", [ + "uppercase", + "lowercase", ]); const expected = true; expect(actual).toEqual(expected); }); test('with uppercase scope should fail for "never [uppercase, lowercase]"', async () => { - const [actual] = scopeCase(await parsed.uppercase, 'never', [ - 'uppercase', - 'lowercase', + const [actual] = scopeCase(await parsed.uppercase, "never", [ + "uppercase", + "lowercase", ]); const expected = false; expect(actual).toEqual(expected); }); test('with slash in scope should succeed for "always pascal-case"', async () => { - const commit = await parse('feat(Modules/Graph): add Pie Chart'); - const [actual] = scopeCase(commit, 'always', 'pascal-case'); + const commit = await parse("feat(Modules/Graph): add Pie Chart"); + const [actual] = scopeCase(commit, "always", "pascal-case"); const expected = true; expect(actual).toEqual(expected); }); test('with slash in subject should succeed for "always sentence case"', async () => { - const commit = await parse('chore: Update @angular/core'); - const [actual] = scopeCase(commit, 'always', 'sentencecase'); + const commit = await parse("chore: Update @angular/core"); + const [actual] = scopeCase(commit, "always", "sentencecase"); const expected = true; expect(actual).toEqual(expected); }); diff --git a/@commitlint/rules/src/scope-case.ts b/@commitlint/rules/src/scope-case.ts index 9bac0d3db2..c620086eff 100644 --- a/@commitlint/rules/src/scope-case.ts +++ b/@commitlint/rules/src/scope-case.ts @@ -1,24 +1,24 @@ -import {case as ensureCase} from '@commitlint/ensure'; -import message from '@commitlint/message'; -import {TargetCaseType, SyncRule} from '@commitlint/types'; +import { case as ensureCase } from "@commitlint/ensure"; +import message from "@commitlint/message"; +import { TargetCaseType, SyncRule } from "@commitlint/types"; -const negated = (when?: string) => when === 'never'; +const negated = (when?: string) => when === "never"; export const scopeCase: SyncRule<TargetCaseType | TargetCaseType[]> = ( parsed, - when = 'always', - value = [] + when = "always", + value = [], ) => { - const {scope} = parsed; + const { scope } = parsed; if (!scope) { return [true]; } const checks = (Array.isArray(value) ? value : [value]).map((check) => { - if (typeof check === 'string') { + if (typeof check === "string") { return { - when: 'always', + when: "always", case: check, }; } @@ -27,18 +27,18 @@ export const scopeCase: SyncRule<TargetCaseType | TargetCaseType[]> = ( // Scopes may contain slash or comma delimiters to separate them and mark them as individual segments. // This means that each of these segments should be tested separately with `ensure`. - const delimiters = /\/|\\|,/g; + const delimiters = /\/|\\|, ?/g; const scopeSegments = scope.split(delimiters); const result = checks.some((check) => { const r = scopeSegments.every( - (segment) => delimiters.test(segment) || ensureCase(segment, check.case) + (segment) => delimiters.test(segment) || ensureCase(segment, check.case), ); return negated(check.when) ? !r : r; }); - const list = checks.map((c) => c.case).join(', '); + const list = checks.map((c) => c.case).join(", "); return [ negated(when) ? !result : result, diff --git a/@commitlint/rules/src/scope-empty.test.ts b/@commitlint/rules/src/scope-empty.test.ts index 2cd22cb3ab..88977f8c17 100644 --- a/@commitlint/rules/src/scope-empty.test.ts +++ b/@commitlint/rules/src/scope-empty.test.ts @@ -1,10 +1,11 @@ -import parse from '@commitlint/parse'; -import {scopeEmpty} from './scope-empty'; +import { test, expect } from "vitest"; +import parse from "@commitlint/parse"; +import { scopeEmpty } from "./scope-empty.js"; const messages = { - plain: 'foo(bar): baz', - superfluous: 'foo(): baz', - empty: 'foo: baz', + plain: "foo(bar): baz", + superfluous: "foo(): baz", + empty: "foo: baz", }; const parsed = { @@ -13,56 +14,56 @@ const parsed = { empty: parse(messages.empty), }; -test('with plain message it should succeed for empty keyword', async () => { +test("with plain message it should succeed for empty keyword", async () => { const [actual] = scopeEmpty(await parsed.plain); const expected = true; expect(actual).toEqual(expected); }); test('with plain message it should succeed for "never"', async () => { - const [actual] = scopeEmpty(await parsed.plain, 'never'); + const [actual] = scopeEmpty(await parsed.plain, "never"); const expected = true; expect(actual).toEqual(expected); }); test('with plain message it should fail for "always"', async () => { - const [actual] = scopeEmpty(await parsed.plain, 'always'); + const [actual] = scopeEmpty(await parsed.plain, "always"); const expected = false; expect(actual).toEqual(expected); }); -test('with superfluous message it should fail for empty keyword', async () => { +test("with superfluous message it should fail for empty keyword", async () => { const [actual] = scopeEmpty(await parsed.superfluous); const expected = false; expect(actual).toEqual(expected); }); test('with superfluous message it should fail for "never"', async () => { - const [actual] = scopeEmpty(await parsed.superfluous, 'never'); + const [actual] = scopeEmpty(await parsed.superfluous, "never"); const expected = false; expect(actual).toEqual(expected); }); test('with superfluous message it should fail for "always"', async () => { - const [actual] = scopeEmpty(await parsed.superfluous, 'always'); + const [actual] = scopeEmpty(await parsed.superfluous, "always"); const expected = true; expect(actual).toEqual(expected); }); -test('with empty message it should fail for empty keyword', async () => { +test("with empty message it should fail for empty keyword", async () => { const [actual] = scopeEmpty(await parsed.empty); const expected = false; expect(actual).toEqual(expected); }); test('with empty message it should fail for "never"', async () => { - const [actual] = scopeEmpty(await parsed.empty, 'never'); + const [actual] = scopeEmpty(await parsed.empty, "never"); const expected = false; expect(actual).toEqual(expected); }); test('with empty message it should fail for "always"', async () => { - const [actual] = scopeEmpty(await parsed.empty, 'always'); + const [actual] = scopeEmpty(await parsed.empty, "always"); const expected = true; expect(actual).toEqual(expected); }); diff --git a/@commitlint/rules/src/scope-empty.ts b/@commitlint/rules/src/scope-empty.ts index 3ea0fa1f81..d7a9bb0e2e 100644 --- a/@commitlint/rules/src/scope-empty.ts +++ b/@commitlint/rules/src/scope-empty.ts @@ -1,12 +1,12 @@ -import * as ensure from '@commitlint/ensure'; -import message from '@commitlint/message'; -import {SyncRule} from '@commitlint/types'; +import * as ensure from "@commitlint/ensure"; +import message from "@commitlint/message"; +import { SyncRule } from "@commitlint/types"; -export const scopeEmpty: SyncRule = (parsed, when = 'never') => { - const negated = when === 'always'; - const notEmpty = ensure.notEmpty(parsed.scope || ''); +export const scopeEmpty: SyncRule = (parsed, when = "never") => { + const negated = when === "always"; + const notEmpty = ensure.notEmpty(parsed.scope || ""); return [ negated ? !notEmpty : notEmpty, - message(['scope', negated ? 'must' : 'may not', 'be empty']), + message(["scope", negated ? "must" : "may not", "be empty"]), ]; }; diff --git a/@commitlint/rules/src/scope-enum.test.ts b/@commitlint/rules/src/scope-enum.test.ts index f624d7bce8..1e7fb7efa7 100644 --- a/@commitlint/rules/src/scope-enum.test.ts +++ b/@commitlint/rules/src/scope-enum.test.ts @@ -1,112 +1,207 @@ -import parse from '@commitlint/parse'; -import {scopeEnum} from './scope-enum'; - -const messages = { - plain: 'foo(bar): baz', - superfluous: 'foo(): baz', - empty: 'foo: baz', - multiple: 'foo(bar,baz): qux', +import { describe, test, it, expect } from "vitest"; +import parse from "@commitlint/parse"; +import { RuleConfigCondition } from "@commitlint/types"; + +import { scopeEnum } from "./scope-enum.js"; + +const messagesByScope = { + single: { + plain: "foo(bar): baz", + }, + multiple: { + multiple: "foo(bar,baz): qux", + multipleCommaSpace: "foo(bar, baz): qux", + multipleSlash: "foo(bar/baz): qux", + }, + none: { + empty: "foo: baz", + superfluous: "foo(): baz", + }, }; -const parsed = { - plain: parse(messages.plain), - superfluous: parse(messages.superfluous), - empty: parse(messages.empty), - multiple: parse(messages.multiple), -}; - -test('scope-enum with plain message and always should succeed empty enum', async () => { - const [actual] = scopeEnum(await parsed.plain, 'always', []); - const expected = true; - expect(actual).toEqual(expected); -}); - -test('scope-enum with plain message and never should error empty enum', async () => { - const [actual] = scopeEnum(await parsed.plain, 'never', []); - const expected = false; - expect(actual).toEqual(expected); -}); - -test('with plain message should succeed correct enum', async () => { - const [actual] = scopeEnum(await parsed.plain, 'always', ['bar']); - const expected = true; - expect(actual).toEqual(expected); -}); - -test('scope-enum with plain message should error false enum', async () => { - const [actual] = scopeEnum(await parsed.plain, 'always', ['foo']); - const expected = false; - expect(actual).toEqual(expected); -}); - -test('scope-enum with plain message should error forbidden enum', async () => { - const [actual] = scopeEnum(await parsed.plain, 'never', ['bar']); - const expected = false; - expect(actual).toEqual(expected); -}); - -test('scope-enum with plain message should succeed forbidden enum', async () => { - const [actual] = scopeEnum(await parsed.plain, 'never', ['foo']); - const expected = true; - expect(actual).toEqual(expected); -}); - -test('scope-enum with superfluous scope should succeed enum', async () => { - const [actual] = scopeEnum(await parsed.superfluous, 'always', ['bar']); - const expected = true; - expect(actual).toEqual(expected); -}); - -test('scope-enum with superfluous scope and "never" should succeed', async () => { - const [actual] = scopeEnum(await parsed.superfluous, 'never', ['bar']); - const expected = true; - expect(actual).toEqual(expected); -}); - -test('scope-enum with superfluous scope and always should succeed empty enum', async () => { - const [actual] = scopeEnum(await parsed.superfluous, 'always', []); - const expected = true; - expect(actual).toEqual(expected); -}); - -test('scope-enum with superfluous scope and never should succeed empty enum', async () => { - const [actual] = scopeEnum(await parsed.superfluous, 'never', []); - const expected = true; - expect(actual).toEqual(expected); -}); - -test('scope-enum with empty scope and always should succeed empty enum', async () => { - const [actual] = scopeEnum(await parsed.superfluous, 'always', []); - const expected = true; - expect(actual).toEqual(expected); -}); - -test('scope-enum with empty scope and always should succeed filled enum', async () => { - const [actual] = scopeEnum(await parsed.superfluous, 'always', ['foo']); - const expected = true; - expect(actual).toEqual(expected); -}); - -test('scope-enum with empty scope and never should succeed empty enum', async () => { - const [actual] = scopeEnum(await parsed.superfluous, 'never', []); - const expected = true; - expect(actual).toEqual(expected); -}); - -test('scope-enum with multiple scope should succeed on message with multiple scope', async () => { - const [actual] = scopeEnum(await parsed.multiple, 'never', ['bar', 'baz']); - const expected = false; - expect(actual).toEqual(expected); -}); - -test('scope-enum with multiple scope should error on message with forbidden enum', async () => { - const [actual] = scopeEnum(await parsed.multiple, 'never', ['bar', 'qux']); - const expected = true; - expect(actual).toEqual(expected); -}); - -test('scope-enum with multiple scope should error on message with superfluous scope', async () => { - const [actual] = scopeEnum(await parsed.multiple, 'never', ['bar']); - const expected = true; - expect(actual).toEqual(expected); +const { single, multiple, none } = messagesByScope; + +const messages = Object.values(messagesByScope).reduce<Record<string, string>>( + (acc, curr) => ({ ...acc, ...curr }), + {}, +); + +const conditions: RuleConfigCondition[] = ["always", "never"]; + +describe("Scope Enum Validation", () => { + describe.each(conditions)("condition: %s", (condition) => { + describe("Enum without Scopes", () => { + test.each(Object.keys(messages))( + `Succeeds with a %s message and '${condition}'`, + async (messageType) => { + const [actual, message] = scopeEnum( + await parse(messages[messageType]), + condition, + [], + ); + const expected = true; + expect(actual).toEqual(expected); + expect(message).toEqual(""); + }, + ); + }); + + describe("Messages without Scopes", () => { + Object.keys(none).forEach((messageType) => { + const fakeMessage = messages[messageType]; + + it(`Succeeds with a '${messageType}' message and '${condition}' with single-scope enum`, async () => { + const [actual, message] = scopeEnum( + await parse(fakeMessage), + condition, + ["bar"], + ); + expect(actual).toBeTruthy(); + expect(message).toBeFalsy(); + }); + + it(`Succeeds with a '${messageType}' message and '${condition}' with multi-scope enum`, async () => { + const [actual, message] = scopeEnum( + await parse(fakeMessage), + condition, + ["bar", "baz"], + ); + expect(actual).toBeTruthy(); + expect(message).toBeFalsy(); + }); + }); + }); + }); + + describe("Always", () => { + describe("Single-Scope Messages", () => { + Object.keys(single).forEach((messageType) => { + const fakeMessage = messages[messageType]; + + it(`Succeeds with a '${messageType}' message when all message scopes are included in single-scope enum`, async () => { + const [actual, message] = scopeEnum( + await parse(fakeMessage), + "always", + ["bar"], + ); + expect(actual).toBeTruthy(); + expect(message).toEqual("scope must be one of [bar]"); + }); + + test(`Succeeds with a '${messageType}' message when all message scopes are included in multi-scope enum`, async () => { + const [actual, message] = scopeEnum( + await parse(fakeMessage), + "always", + ["bar", "baz"], + ); + expect(actual).toBeTruthy(); + expect(message).toEqual("scope must be one of [bar, baz]"); + }); + + test(`Fails with a '${messageType}' message when any message scope is not included in enum`, async () => { + const [actual, message] = scopeEnum( + await parse(fakeMessage), + "always", + ["foo"], + ); + expect(actual).toBeFalsy(); + expect(message).toEqual("scope must be one of [foo]"); + }); + }); + }); + + describe("Multi-Scope Messages", () => { + Object.keys(multiple).forEach((messageType) => { + const fakeMessage = messages[messageType]; + + test(`Succeeds with a '${messageType}' message when all message scopes are included in enum`, async () => { + const [actual, message] = scopeEnum( + await parse(fakeMessage), + "always", + ["bar", "baz"], + ); + expect(actual).toBeTruthy(); + expect(message).toEqual("scope must be one of [bar, baz]"); + }); + + test(`Fails with a '${messageType}' message when no message scopes are included in enum`, async () => { + const [actual, message] = scopeEnum( + await parse(fakeMessage), + "always", + ["foo"], + ); + expect(actual).toBeFalsy(); + expect(message).toEqual("scope must be one of [foo]"); + }); + + it(`Fails with a '${messageType}' message when only some message scopes are included in enum`, async () => { + const [actual, message] = scopeEnum( + await parse(fakeMessage), + "always", + ["bar"], + ); + expect(actual).toBeFalsy(); + expect(message).toEqual("scope must be one of [bar]"); + }); + }); + + test(`Succeeds with a 'multipleSlash' message when the scopes are included in enum`, async () => { + const [actual, message] = scopeEnum( + await parse(messages["multipleSlash"]), + "always", + ["bar/baz"], + ); + expect(actual).toBeTruthy(); + expect(message).toEqual("scope must be one of [bar/baz]"); + }); + }); + }); + + describe("Never", () => { + describe("Messages with Scopes", () => { + Object.keys({ ...single, ...multiple }).forEach((messageType) => { + const fakeMessage = messages[messageType]; + + test(`Succeeds with a '${messageType}' message when no message scopes are included in enum`, async () => { + const [actual, message] = scopeEnum( + await parse(fakeMessage), + "never", + ["foo"], + ); + expect(actual).toBeTruthy(); + expect(message).toEqual("scope must not be one of [foo]"); + }); + + it(`Fails with a '${messageType}' message when any message scope is included in single-scope enum`, async () => { + const [actual, message] = scopeEnum( + await parse(fakeMessage), + "never", + ["bar"], + ); + expect(actual).toBeFalsy(); + expect(message).toEqual("scope must not be one of [bar]"); + }); + + test(`Fails with a '${messageType}' message when any message scope is included in multi-scope enum`, async () => { + const [actual, message] = scopeEnum( + await parse(fakeMessage), + "never", + ["bar", "baz"], + ); + expect(actual).toBeFalsy(); + expect(message).toEqual("scope must not be one of [bar, baz]"); + }); + }); + + test(`Fails with a 'multipleSlash' message when the scopes are included in enum`, async () => { + const [actual, message] = scopeEnum( + await parse(messages["multipleSlash"]), + "never", + ["bar/baz"], + ); + expect(actual).toBeFalsy(); + expect(message).toEqual("scope must not be one of [bar/baz]"); + }); + }); + }); }); diff --git a/@commitlint/rules/src/scope-enum.ts b/@commitlint/rules/src/scope-enum.ts index e368df5a6a..59cef26df9 100644 --- a/@commitlint/rules/src/scope-enum.ts +++ b/@commitlint/rules/src/scope-enum.ts @@ -1,32 +1,30 @@ -import * as ensure from '@commitlint/ensure'; -import message from '@commitlint/message'; -import {SyncRule} from '@commitlint/types'; +import * as ensure from "@commitlint/ensure"; +import message from "@commitlint/message"; +import { SyncRule } from "@commitlint/types"; export const scopeEnum: SyncRule<string[]> = ( - parsed, - when = 'always', - value = [] + { scope }, + when = "always", + value = [], ) => { - if (!parsed.scope) { - return [true, '']; + if (!scope || !value.length) { + return [true, ""]; } // Scopes may contain slash or comma delimiters to separate them and mark them as individual segments. // This means that each of these segments should be tested separately with `ensure`. - const delimiters = /\/|\\|,/g; - const scopeSegments = parsed.scope.split(delimiters); + const delimiters = /\/|\\|, ?/g; + const messageScopes = scope.split(delimiters); + const errorMessage = ["scope must", `be one of [${value.join(", ")}]`]; + const isScopeInEnum = (scope: string) => ensure.enum(scope, value); + let isValid; - const negated = when === 'never'; - const result = - value.length === 0 || - scopeSegments.every((scope) => ensure.enum(scope, value)); + if (when === "never") { + isValid = !messageScopes.some(isScopeInEnum) && !isScopeInEnum(scope); + errorMessage.splice(1, 0, "not"); + } else { + isValid = messageScopes.every(isScopeInEnum) || isScopeInEnum(scope); + } - return [ - negated ? !result : result, - message([ - `scope must`, - negated ? `not` : null, - `be one of [${value.join(', ')}]`, - ]), - ]; + return [isValid, message(errorMessage)]; }; diff --git a/@commitlint/rules/src/scope-max-length.test.ts b/@commitlint/rules/src/scope-max-length.test.ts index 01be757283..97e5e4f6fa 100644 --- a/@commitlint/rules/src/scope-max-length.test.ts +++ b/@commitlint/rules/src/scope-max-length.test.ts @@ -1,13 +1,14 @@ -import parse from '@commitlint/parse'; -import {scopeMaxLength} from './scope-max-length'; +import { test, expect } from "vitest"; +import parse from "@commitlint/parse"; +import { scopeMaxLength } from "./scope-max-length.js"; -const short = 'a'; -const long = 'ab'; +const short = "a"; +const long = "ab"; const value = short.length; const messages = { - empty: 'test: \n', + empty: "test: \n", short: `test(${short}): \n`, long: `test(${long}): \n`, }; @@ -18,19 +19,19 @@ const parsed = { long: parse(messages.long), }; -test('with empty should succeed', async () => { +test("with empty should succeed", async () => { const [actual] = scopeMaxLength(await parsed.empty, undefined, value); const expected = true; expect(actual).toEqual(expected); }); -test('with short should succeed', async () => { +test("with short should succeed", async () => { const [actual] = scopeMaxLength(await parsed.short, undefined, value); const expected = true; expect(actual).toEqual(expected); }); -test('with long should fail', async () => { +test("with long should fail", async () => { const [actual] = scopeMaxLength(await parsed.long, undefined, value); const expected = false; expect(actual).toEqual(expected); diff --git a/@commitlint/rules/src/scope-max-length.ts b/@commitlint/rules/src/scope-max-length.ts index 917d548f91..bcdf6f81ce 100644 --- a/@commitlint/rules/src/scope-max-length.ts +++ b/@commitlint/rules/src/scope-max-length.ts @@ -1,10 +1,10 @@ -import {maxLength} from '@commitlint/ensure'; -import {SyncRule} from '@commitlint/types'; +import { maxLength } from "@commitlint/ensure"; +import { SyncRule } from "@commitlint/types"; export const scopeMaxLength: SyncRule<number> = ( parsed, _when = undefined, - value = 0 + value = 0, ) => { const input = parsed.scope; diff --git a/@commitlint/rules/src/scope-min-length.test.ts b/@commitlint/rules/src/scope-min-length.test.ts index 31fdd499ad..3ff18920ec 100644 --- a/@commitlint/rules/src/scope-min-length.test.ts +++ b/@commitlint/rules/src/scope-min-length.test.ts @@ -1,13 +1,14 @@ -import parse from '@commitlint/parse'; -import {scopeMinLength} from './scope-min-length'; +import { test, expect } from "vitest"; +import parse from "@commitlint/parse"; +import { scopeMinLength } from "./scope-min-length.js"; -const short = 'a'; -const long = 'ab'; +const short = "a"; +const long = "ab"; const value = long.length; const messages = { - empty: 'test:\n', + empty: "test:\n", short: `test(${short}): \n`, long: `test(${long}): \n`, }; @@ -18,19 +19,19 @@ const parsed = { long: parse(messages.long), }; -test('with empty should succeed', async () => { +test("with empty should succeed", async () => { const [actual] = scopeMinLength(await parsed.empty, undefined, value); const expected = true; expect(actual).toEqual(expected); }); -test('with short should fail', async () => { +test("with short should fail", async () => { const [actual] = scopeMinLength(await parsed.short, undefined, value); const expected = false; expect(actual).toEqual(expected); }); -test('with long should succeed', async () => { +test("with long should succeed", async () => { const [actual] = scopeMinLength(await parsed.long, undefined, value); const expected = true; expect(actual).toEqual(expected); diff --git a/@commitlint/rules/src/scope-min-length.ts b/@commitlint/rules/src/scope-min-length.ts index 55a69da3e9..40b4c909f9 100644 --- a/@commitlint/rules/src/scope-min-length.ts +++ b/@commitlint/rules/src/scope-min-length.ts @@ -1,10 +1,10 @@ -import {minLength} from '@commitlint/ensure'; -import {SyncRule} from '@commitlint/types'; +import { minLength } from "@commitlint/ensure"; +import { SyncRule } from "@commitlint/types"; export const scopeMinLength: SyncRule<number> = ( parsed, _when = undefined, - value = 0 + value = 0, ) => { const input = parsed.scope; if (!input) { diff --git a/@commitlint/rules/src/signed-off-by.test.ts b/@commitlint/rules/src/signed-off-by.test.ts index 29fc665501..d47353927a 100644 --- a/@commitlint/rules/src/signed-off-by.test.ts +++ b/@commitlint/rules/src/signed-off-by.test.ts @@ -1,8 +1,9 @@ -import parse from '@commitlint/parse'; -import {signedOffBy} from './signed-off-by'; +import { test, expect } from "vitest"; +import parse from "@commitlint/parse"; +import { signedOffBy } from "./signed-off-by.js"; const messages = { - empty: 'test:\n', + empty: "test:\n", with: `test: subject\nbody\nfooter\nSigned-off-by:\n\n`, without: `test: subject\nbody\nfooter\n\n`, inSubject: `test: subject Signed-off-by:\nbody\nfooter\n\n`, @@ -28,25 +29,25 @@ const parsed = { }; test('empty against "always signed-off-by" should fail', async () => { - const [actual] = signedOffBy(await parsed.empty, 'always', 'Signed-off-by:'); + const [actual] = signedOffBy(await parsed.empty, "always", "Signed-off-by:"); const expected = false; expect(actual).toEqual(expected); }); test('empty against "never signed-off-by" should succeed', async () => { - const [actual] = signedOffBy(await parsed.empty, 'never', 'Signed-off-by:'); + const [actual] = signedOffBy(await parsed.empty, "never", "Signed-off-by:"); const expected = true; expect(actual).toEqual(expected); }); test('with against "always signed-off-by" should succeed', async () => { - const [actual] = signedOffBy(await parsed.with, 'always', 'Signed-off-by:'); + const [actual] = signedOffBy(await parsed.with, "always", "Signed-off-by:"); const expected = true; expect(actual).toEqual(expected); }); test('with against "never signed-off-by" should fail', async () => { - const [actual] = signedOffBy(await parsed.with, 'never', 'Signed-off-by:'); + const [actual] = signedOffBy(await parsed.with, "never", "Signed-off-by:"); const expected = false; expect(actual).toEqual(expected); }); @@ -54,24 +55,24 @@ test('with against "never signed-off-by" should fail', async () => { test('without against "always signed-off-by" should fail', async () => { const [actual] = signedOffBy( await parsed.without, - 'always', - 'Signed-off-by:' + "always", + "Signed-off-by:", ); const expected = false; expect(actual).toEqual(expected); }); test('without against "never signed-off-by" should succeed', async () => { - const [actual] = signedOffBy(await parsed.without, 'never', 'Signed-off-by:'); + const [actual] = signedOffBy(await parsed.without, "never", "Signed-off-by:"); const expected = true; expect(actual).toEqual(expected); }); -test('trailing comments should be ignored', async () => { +test("trailing comments should be ignored", async () => { const [actual] = signedOffBy( await parsed.withSignoffAndComments, - 'always', - 'Signed-off-by:' + "always", + "Signed-off-by:", ); const expected = true; expect(actual).toEqual(expected); @@ -80,8 +81,8 @@ test('trailing comments should be ignored', async () => { test('inSubject against "always signed-off-by" should fail', async () => { const [actual] = signedOffBy( await parsed.inSubject, - 'always', - 'Signed-off-by:' + "always", + "Signed-off-by:", ); const expected = false; expect(actual).toEqual(expected); @@ -90,21 +91,21 @@ test('inSubject against "always signed-off-by" should fail', async () => { test('inSubject against "never signed-off-by" should succeed', async () => { const [actual] = signedOffBy( await parsed.inSubject, - 'never', - 'Signed-off-by:' + "never", + "Signed-off-by:", ); const expected = true; expect(actual).toEqual(expected); }); test('inBody against "always signed-off-by" should fail', async () => { - const [actual] = signedOffBy(await parsed.inBody, 'always', 'Signed-off-by:'); + const [actual] = signedOffBy(await parsed.inBody, "always", "Signed-off-by:"); const expected = false; expect(actual).toEqual(expected); }); test('inBody against "never signed-off-by" should succeed', async () => { - const [actual] = signedOffBy(await parsed.inBody, 'never', 'Signed-off-by:'); + const [actual] = signedOffBy(await parsed.inBody, "never", "Signed-off-by:"); const expected = true; expect(actual).toEqual(expected); }); diff --git a/@commitlint/rules/src/signed-off-by.ts b/@commitlint/rules/src/signed-off-by.ts index 674a206197..5a53c32395 100644 --- a/@commitlint/rules/src/signed-off-by.ts +++ b/@commitlint/rules/src/signed-off-by.ts @@ -1,27 +1,29 @@ -import message from '@commitlint/message'; -import toLines from '@commitlint/to-lines'; -import {SyncRule} from '@commitlint/types'; +import message from "@commitlint/message"; +import toLines from "@commitlint/to-lines"; +import { SyncRule } from "@commitlint/types"; export const signedOffBy: SyncRule<string> = ( parsed, - when = 'always', - value = '' + when = "always", + value = "", ) => { const lines = toLines(parsed.raw).filter( (ln) => // skip comments - !ln.startsWith('#') && + !ln.startsWith("#") && // ignore empty lines - Boolean(ln) + Boolean(ln), ); const last = lines[lines.length - 1]; - const negated = when === 'never'; - const hasSignedOffBy = last.startsWith(value); + const negated = when === "never"; + const hasSignedOffBy = + // empty commit message + last ? last.startsWith(value) : false; return [ negated ? !hasSignedOffBy : hasSignedOffBy, - message(['message', negated ? 'must not' : 'must', 'be signed off']), + message(["message", negated ? "must not" : "must", "be signed off"]), ]; }; diff --git a/@commitlint/rules/src/subject-case.test.ts b/@commitlint/rules/src/subject-case.test.ts index 55a6158e44..911b8d5321 100644 --- a/@commitlint/rules/src/subject-case.test.ts +++ b/@commitlint/rules/src/subject-case.test.ts @@ -1,148 +1,227 @@ -import parse from '@commitlint/parse'; -import {subjectCase} from './subject-case'; +import { test, expect } from "vitest"; +import parse from "@commitlint/parse"; +import { subjectCase } from "./subject-case.js"; const messages = { - empty: 'test:\n', - numeric: 'test: 1.0.0', - lowercase: 'test: subject', - mixedcase: 'test: sUbJeCt', - uppercase: 'test: SUBJECT', - camelcase: 'test: subJect', - kebabcase: 'test: sub-ject', - pascalcase: 'test: SubJect', - snakecase: 'test: sub_ject', - startcase: 'test: Sub Ject', + empty: "test:\n", + numeric: "test: 1.0.0", + lowercase: "test: subject", + lowercase_unicode: "test: тема", // Bulgarian for `subject` + mixedcase: "test: sUbJeCt", + caseless: "test: 这是一次提交", // Chinese for `this is a commit` + uppercase: "test: SUBJECT", + uppercase_unicode: "test: ÛNDERWERP", // Frisian for `SUBJECT` + camelcase: "test: subJect", + camelcase_unicode: "test: θέΜα", // Greek for `subJect` + kebabcase: "test: sub-ject", + kebabcase_unicode: "test: áb-har", // Irish for `sub-ject` + pascalcase: "test: SubJect", + pascalcase_unicode: "test: ТақыРып", // Kazakh for `SubJect` + snakecase: "test: sub_ject", + snakecase_unicode: "test: сэ_дэв", // Mongolian for `sub_ject` + startcase: "test: Sub Ject", + startcase_unicode: "test: Äm Ne", // Swedish for `Sub Ject` + sentencecase: "test: Sub ject", + sentencecase_unicode: "test: Мав зуъ", // Tajik for `Sub ject` }; const parsed = { empty: parse(messages.empty), numeric: parse(messages.numeric), lowercase: parse(messages.lowercase), + lowercase_unicode: parse(messages.lowercase_unicode), mixedcase: parse(messages.mixedcase), + caseless: parse(messages.caseless), uppercase: parse(messages.uppercase), + uppercase_unicode: parse(messages.uppercase_unicode), camelcase: parse(messages.camelcase), + camelcase_unicode: parse(messages.camelcase_unicode), kebabcase: parse(messages.kebabcase), + kebabcase_unicode: parse(messages.kebabcase_unicode), pascalcase: parse(messages.pascalcase), + pascalcase_unicode: parse(messages.pascalcase_unicode), snakecase: parse(messages.snakecase), + snakecase_unicode: parse(messages.snakecase_unicode), startcase: parse(messages.startcase), + startcase_unicode: parse(messages.startcase_unicode), + sentencecase: parse(messages.sentencecase), + sentencecase_unicode: parse(messages.sentencecase_unicode), }; test('with empty subject should succeed for "never lowercase"', async () => { - const [actual] = subjectCase(await parsed.empty, 'never', 'lowercase'); + const [actual] = subjectCase(await parsed.empty, "never", "lowercase"); const expected = true; expect(actual).toEqual(expected); }); test('with empty subject should succeed for "always lowercase"', async () => { - const [actual] = subjectCase(await parsed.empty, 'always', 'lowercase'); + const [actual] = subjectCase(await parsed.empty, "always", "lowercase"); const expected = true; expect(actual).toEqual(expected); }); test('with empty subject should succeed for "never uppercase"', async () => { - const [actual] = subjectCase(await parsed.empty, 'never', 'uppercase'); + const [actual] = subjectCase(await parsed.empty, "never", "uppercase"); const expected = true; expect(actual).toEqual(expected); }); test('with empty subject should succeed for "always uppercase"', async () => { - const [actual] = subjectCase(await parsed.empty, 'always', 'uppercase'); + const [actual] = subjectCase(await parsed.empty, "always", "uppercase"); const expected = true; expect(actual).toEqual(expected); }); test('with lowercase subject should fail for "never lowercase"', async () => { - const [actual] = subjectCase(await parsed.lowercase, 'never', 'lowercase'); + const [actual] = subjectCase(await parsed.lowercase, "never", "lowercase"); const expected = false; expect(actual).toEqual(expected); }); test('with lowercase subject should succeed for "always lowercase"', async () => { - const [actual] = subjectCase(await parsed.lowercase, 'always', 'lowercase'); + const [actual] = subjectCase(await parsed.lowercase, "always", "lowercase"); const expected = true; expect(actual).toEqual(expected); }); +test('with lowercase unicode subject should fail for "always uppercase"', async () => { + const [actual] = subjectCase( + await parsed.lowercase_unicode, + "always", + "upper-case", + ); + const expected = false; + expect(actual).toEqual(expected); +}); + test('with mixedcase subject should succeed for "never lowercase"', async () => { - const [actual] = subjectCase(await parsed.mixedcase, 'never', 'lowercase'); + const [actual] = subjectCase(await parsed.mixedcase, "never", "lowercase"); const expected = true; expect(actual).toEqual(expected); }); test('with mixedcase subject should fail for "always lowercase"', async () => { - const [actual] = subjectCase(await parsed.mixedcase, 'always', 'lowercase'); + const [actual] = subjectCase(await parsed.mixedcase, "always", "lowercase"); const expected = false; expect(actual).toEqual(expected); }); test('with mixedcase subject should succeed for "never uppercase"', async () => { - const [actual] = subjectCase(await parsed.mixedcase, 'never', 'uppercase'); + const [actual] = subjectCase(await parsed.mixedcase, "never", "uppercase"); const expected = true; expect(actual).toEqual(expected); }); test('with mixedcase subject should fail for "always uppercase"', async () => { - const [actual] = subjectCase(await parsed.mixedcase, 'always', 'uppercase'); + const [actual] = subjectCase(await parsed.mixedcase, "always", "uppercase"); const expected = false; expect(actual).toEqual(expected); }); +test('with caseless subject should succeed for "never sentencecase"', async () => { + const [actual] = subjectCase(await parsed.caseless, "never", "sentence-case"); + const expected = true; + expect(actual).toEqual(expected); +}); + +test('with caseless subject should succeed for "never uppercase"', async () => { + const [actual] = subjectCase(await parsed.caseless, "never", "upper-case"); + const expected = true; + expect(actual).toEqual(expected); +}); + +test('with caseless subject should succeed for "always uppercase"', async () => { + const [actual] = subjectCase(await parsed.caseless, "always", "upper-case"); + const expected = true; + expect(actual).toEqual(expected); +}); + test('with uppercase subject should fail for "never uppercase"', async () => { - const [actual] = subjectCase(await parsed.uppercase, 'never', 'uppercase'); + const [actual] = subjectCase(await parsed.uppercase, "never", "uppercase"); const expected = false; expect(actual).toEqual(expected); }); -test('with lowercase subject should succeed for "always uppercase"', async () => { - const [actual] = subjectCase(await parsed.uppercase, 'always', 'uppercase'); +test('with uppercase subject should succeed for "always uppercase"', async () => { + const [actual] = subjectCase(await parsed.uppercase, "always", "uppercase"); const expected = true; expect(actual).toEqual(expected); }); +test('with uppercase unicode subject should fail for "always lowercase"', async () => { + const [actual] = subjectCase( + await parsed.uppercase_unicode, + "always", + "lower-case", + ); + const expected = false; + expect(actual).toEqual(expected); +}); + test('with camelcase subject should fail for "always uppercase"', async () => { - const [actual] = subjectCase(await parsed.camelcase, 'always', 'uppercase'); + const [actual] = subjectCase(await parsed.camelcase, "always", "uppercase"); const expected = false; expect(actual).toEqual(expected); }); test('with camelcase subject should succeed for "never uppercase"', async () => { - const [actual] = subjectCase(await parsed.camelcase, 'never', 'uppercase'); + const [actual] = subjectCase(await parsed.camelcase, "never", "uppercase"); const expected = true; expect(actual).toEqual(expected); }); test('with camelcase subject should fail for "always pascalcase"', async () => { - const [actual] = subjectCase(await parsed.camelcase, 'always', 'pascal-case'); + const [actual] = subjectCase(await parsed.camelcase, "always", "pascal-case"); const expected = false; expect(actual).toEqual(expected); }); test('with camelcase subject should fail for "always kebabcase"', async () => { - const [actual] = subjectCase(await parsed.camelcase, 'always', 'kebab-case'); + const [actual] = subjectCase(await parsed.camelcase, "always", "kebab-case"); const expected = false; expect(actual).toEqual(expected); }); test('with camelcase subject should fail for "always snakecase"', async () => { - const [actual] = subjectCase(await parsed.camelcase, 'always', 'snake-case'); + const [actual] = subjectCase(await parsed.camelcase, "always", "snake-case"); const expected = false; expect(actual).toEqual(expected); }); test('with camelcase subject should succeed for "always camelcase"', async () => { - const [actual] = subjectCase(await parsed.camelcase, 'always', 'camel-case'); + const [actual] = subjectCase(await parsed.camelcase, "always", "camel-case"); const expected = true; expect(actual).toEqual(expected); }); +test('with camelcase unicode subject should fail for "always sentencecase"', async () => { + const [actual] = subjectCase( + await parsed.camelcase_unicode, + "always", + "sentence-case", + ); + const expected = false; + expect(actual).toEqual(expected); +}); + +test('with kebabcase unicode subject should fail for "always camelcase"', async () => { + const [actual] = subjectCase( + await parsed.kebabcase_unicode, + "always", + "camel-case", + ); + const expected = false; + expect(actual).toEqual(expected); +}); + test('with pascalcase subject should fail for "always uppercase"', async () => { - const [actual] = subjectCase(await parsed.pascalcase, 'always', 'uppercase'); + const [actual] = subjectCase(await parsed.pascalcase, "always", "uppercase"); const expected = false; expect(actual).toEqual(expected); }); test('with pascalcase subject should succeed for "never uppercase"', async () => { - const [actual] = subjectCase(await parsed.pascalcase, 'never', 'uppercase'); + const [actual] = subjectCase(await parsed.pascalcase, "never", "uppercase"); const expected = true; expect(actual).toEqual(expected); }); @@ -150,202 +229,282 @@ test('with pascalcase subject should succeed for "never uppercase"', async () => test('with pascalcase subject should succeed for "always pascalcase"', async () => { const [actual] = subjectCase( await parsed.pascalcase, - 'always', - 'pascal-case' + "always", + "pascal-case", ); const expected = true; expect(actual).toEqual(expected); }); test('with pascalcase subject should fail for "always kebabcase"', async () => { - const [actual] = subjectCase(await parsed.pascalcase, 'always', 'kebab-case'); + const [actual] = subjectCase(await parsed.pascalcase, "always", "kebab-case"); const expected = false; expect(actual).toEqual(expected); }); test('with pascalcase subject should fail for "always snakecase"', async () => { - const [actual] = subjectCase(await parsed.pascalcase, 'always', 'snake-case'); + const [actual] = subjectCase(await parsed.pascalcase, "always", "snake-case"); const expected = false; expect(actual).toEqual(expected); }); test('with pascalcase subject should fail for "always camelcase"', async () => { - const [actual] = subjectCase(await parsed.pascalcase, 'always', 'camel-case'); + const [actual] = subjectCase(await parsed.pascalcase, "always", "camel-case"); + const expected = false; + expect(actual).toEqual(expected); +}); + +test('with pascalcase unicode subject should fail for "always uppercase"', async () => { + const [actual] = subjectCase( + await parsed.pascalcase_unicode, + "always", + "upper-case", + ); const expected = false; expect(actual).toEqual(expected); }); test('with snakecase subject should fail for "always uppercase"', async () => { - const [actual] = subjectCase(await parsed.snakecase, 'always', 'uppercase'); + const [actual] = subjectCase(await parsed.snakecase, "always", "uppercase"); const expected = false; expect(actual).toEqual(expected); }); test('with snakecase subject should succeed for "never uppercase"', async () => { - const [actual] = subjectCase(await parsed.snakecase, 'never', 'uppercase'); + const [actual] = subjectCase(await parsed.snakecase, "never", "uppercase"); const expected = true; expect(actual).toEqual(expected); }); test('with snakecase subject should fail for "always pascalcase"', async () => { - const [actual] = subjectCase(await parsed.snakecase, 'always', 'pascal-case'); + const [actual] = subjectCase(await parsed.snakecase, "always", "pascal-case"); const expected = false; expect(actual).toEqual(expected); }); test('with snakecase subject should fail for "always kebabcase"', async () => { - const [actual] = subjectCase(await parsed.snakecase, 'always', 'kebab-case'); + const [actual] = subjectCase(await parsed.snakecase, "always", "kebab-case"); const expected = false; expect(actual).toEqual(expected); }); test('with snakecase subject should succeed for "always snakecase"', async () => { - const [actual] = subjectCase(await parsed.snakecase, 'always', 'snake-case'); + const [actual] = subjectCase(await parsed.snakecase, "always", "snake-case"); const expected = true; expect(actual).toEqual(expected); }); test('with snakecase subject should fail for "always camelcase"', async () => { - const [actual] = subjectCase(await parsed.snakecase, 'always', 'camel-case'); + const [actual] = subjectCase(await parsed.snakecase, "always", "camel-case"); + const expected = false; + expect(actual).toEqual(expected); +}); + +test('with snakecase unicode subject should fail for "never lowercase"', async () => { + const [actual] = subjectCase( + await parsed.snakecase_unicode, + "never", + "lower-case", + ); const expected = false; expect(actual).toEqual(expected); }); test('with startcase subject should fail for "always uppercase"', async () => { - const [actual] = subjectCase(await parsed.startcase, 'always', 'uppercase'); + const [actual] = subjectCase(await parsed.startcase, "always", "uppercase"); const expected = false; expect(actual).toEqual(expected); }); test('with startcase subject should succeed for "never uppercase"', async () => { - const [actual] = subjectCase(await parsed.startcase, 'never', 'uppercase'); + const [actual] = subjectCase(await parsed.startcase, "never", "uppercase"); const expected = true; expect(actual).toEqual(expected); }); test('with startcase subject should fail for "always pascalcase"', async () => { - const [actual] = subjectCase(await parsed.startcase, 'always', 'pascal-case'); + const [actual] = subjectCase(await parsed.startcase, "always", "pascal-case"); const expected = false; expect(actual).toEqual(expected); }); test('with startcase subject should fail for "always kebabcase"', async () => { - const [actual] = subjectCase(await parsed.startcase, 'always', 'kebab-case'); + const [actual] = subjectCase(await parsed.startcase, "always", "kebab-case"); const expected = false; expect(actual).toEqual(expected); }); test('with startcase subject should fail for "always snakecase"', async () => { - const [actual] = subjectCase(await parsed.startcase, 'always', 'snake-case'); + const [actual] = subjectCase(await parsed.startcase, "always", "snake-case"); const expected = false; expect(actual).toEqual(expected); }); test('with startcase subject should fail for "always camelcase"', async () => { - const [actual] = subjectCase(await parsed.startcase, 'always', 'camel-case'); + const [actual] = subjectCase(await parsed.startcase, "always", "camel-case"); const expected = false; expect(actual).toEqual(expected); }); test('with startcase subject should succeed for "always startcase"', async () => { - const [actual] = subjectCase(await parsed.startcase, 'always', 'start-case'); + const [actual] = subjectCase(await parsed.startcase, "always", "start-case"); + const expected = true; + expect(actual).toEqual(expected); +}); + +test('with startcase unicode subject should fail for "always pascalcase"', async () => { + const [actual] = subjectCase( + await parsed.startcase_unicode, + "always", + "pascal-case", + ); + const expected = false; + expect(actual).toEqual(expected); +}); + +test('with sentencecase subject should succeed for "always sentence-case"', async () => { + const [actual] = subjectCase( + await parsed.sentencecase, + "always", + "sentence-case", + ); + const expected = true; + expect(actual).toEqual(expected); +}); + +test('with sentencecase subject should fail for "never sentencecase"', async () => { + const [actual] = subjectCase( + await parsed.sentencecase, + "never", + "sentence-case", + ); + const expected = false; + expect(actual).toEqual(expected); +}); + +test('with sentencecase subject should fail for "always pascalcase"', async () => { + const [actual] = subjectCase( + await parsed.sentencecase, + "always", + "pascal-case", + ); + const expected = false; + expect(actual).toEqual(expected); +}); + +test('with sentencecase subject should succeed for "never camelcase"', async () => { + const [actual] = subjectCase( + await parsed.sentencecase, + "never", + "camel-case", + ); const expected = true; expect(actual).toEqual(expected); }); +test('with sentencecase unicode subject should fail for "always camelcase"', async () => { + const [actual] = subjectCase( + await parsed.sentencecase_unicode, + "always", + "camel-case", + ); + const expected = false; + expect(actual).toEqual(expected); +}); + test('should use expected message with "always"', async () => { const [, message] = subjectCase( await parsed.uppercase, - 'always', - 'lower-case' + "always", + "lower-case", ); - expect(message).toContain('must be lower-case'); + expect(message).toContain("must be lower-case"); }); test('should use expected message with "never"', async () => { const [, message] = subjectCase( await parsed.uppercase, - 'never', - 'upper-case' + "never", + "upper-case", ); - expect(message).toContain('must not be upper-case'); + expect(message).toContain("must not be upper-case"); }); test('with uppercase scope should succeed for "always [uppercase, lowercase]"', async () => { - const [actual] = subjectCase(await parsed.uppercase, 'always', [ - 'uppercase', - 'lowercase', + const [actual] = subjectCase(await parsed.uppercase, "always", [ + "uppercase", + "lowercase", ]); const expected = true; expect(actual).toEqual(expected); }); test('with lowercase subject should succeed for "always [uppercase, lowercase]"', async () => { - const [actual] = subjectCase(await parsed.lowercase, 'always', [ - 'uppercase', - 'lowercase', + const [actual] = subjectCase(await parsed.lowercase, "always", [ + "uppercase", + "lowercase", ]); const expected = true; expect(actual).toEqual(expected); }); test('with mixedcase subject should fail for "always [uppercase, lowercase]"', async () => { - const [actual] = subjectCase(await parsed.mixedcase, 'always', [ - 'uppercase', - 'lowercase', + const [actual] = subjectCase(await parsed.mixedcase, "always", [ + "uppercase", + "lowercase", ]); const expected = false; expect(actual).toEqual(expected); }); test('with mixedcase subject should pass for "always [uppercase, lowercase, camel-case]"', async () => { - const [actual] = subjectCase(await parsed.mixedcase, 'always', [ - 'uppercase', - 'lowercase', - 'camel-case', + const [actual] = subjectCase(await parsed.mixedcase, "always", [ + "uppercase", + "lowercase", + "camel-case", ]); const expected = true; expect(actual).toEqual(expected); }); test('with mixedcase scope should pass for "never [uppercase, lowercase]"', async () => { - const [actual] = subjectCase(await parsed.mixedcase, 'never', [ - 'uppercase', - 'lowercase', + const [actual] = subjectCase(await parsed.mixedcase, "never", [ + "uppercase", + "lowercase", ]); const expected = true; expect(actual).toEqual(expected); }); test('with uppercase scope should fail for "never [uppercase, lowercase]"', async () => { - const [actual] = subjectCase(await parsed.uppercase, 'never', [ - 'uppercase', - 'lowercase', + const [actual] = subjectCase(await parsed.uppercase, "never", [ + "uppercase", + "lowercase", ]); const expected = false; expect(actual).toEqual(expected); }); test('with numeric subject should succeed for "never lowercase"', async () => { - const [actual] = subjectCase(await parsed.numeric, 'never', 'lowercase'); + const [actual] = subjectCase(await parsed.numeric, "never", "lowercase"); const expected = true; expect(actual).toEqual(expected); }); test('with numeric subject should succeed for "always lowercase"', async () => { - const [actual] = subjectCase(await parsed.numeric, 'always', 'lowercase'); + const [actual] = subjectCase(await parsed.numeric, "always", "lowercase"); const expected = true; expect(actual).toEqual(expected); }); test('with numeric subject should succeed for "never uppercase"', async () => { - const [actual] = subjectCase(await parsed.numeric, 'never', 'uppercase'); + const [actual] = subjectCase(await parsed.numeric, "never", "uppercase"); const expected = true; expect(actual).toEqual(expected); }); test('with numeric subject should succeed for "always uppercase"', async () => { - const [actual] = subjectCase(await parsed.numeric, 'always', 'uppercase'); + const [actual] = subjectCase(await parsed.numeric, "always", "uppercase"); const expected = true; expect(actual).toEqual(expected); }); diff --git a/@commitlint/rules/src/subject-case.ts b/@commitlint/rules/src/subject-case.ts index a993af5af1..c5bfa610b7 100644 --- a/@commitlint/rules/src/subject-case.ts +++ b/@commitlint/rules/src/subject-case.ts @@ -1,24 +1,41 @@ -import {case as ensureCase} from '@commitlint/ensure'; -import message from '@commitlint/message'; -import {TargetCaseType, SyncRule} from '@commitlint/types'; +import { case as ensureCase } from "@commitlint/ensure"; +import message from "@commitlint/message"; +import { TargetCaseType, SyncRule } from "@commitlint/types"; -const negated = (when?: string) => when === 'never'; +/** + * Since the rule requires first symbol of a subject to be a letter, use + * Unicode `Cased_Letter` category now to allow non-Latin alphabets as well. + * + * Do not use `Letter` category directly to avoid capturing `Modifier_Letter` + * (which just modifiers letters, so we probably shouldn't anyway) and + * `Other_Letter` (they actually are case-less, so they can't be validated) + * categories, and to stay close to previous implementation. + * + * Also, typescript does not seem to support almost any longhand category name + * (and even short for `Cased_Letter` too) so list all required letter + * categories manually just to prevent it from complaining about unknown stuff. + * + * @see [Unicode Categories]{@link https://www.regular-expressions.info/unicode.html} + */ +const startsWithLetterRegex = /^[\p{Ll}\p{Lu}\p{Lt}]/iu; + +const negated = (when?: string) => when === "never"; export const subjectCase: SyncRule<TargetCaseType | TargetCaseType[]> = ( parsed, - when = 'always', - value = [] + when = "always", + value = [], ) => { - const {subject} = parsed; + const { subject } = parsed; - if (typeof subject !== 'string' || !subject.match(/^[a-z]/i)) { + if (typeof subject !== "string" || !subject.match(startsWithLetterRegex)) { return [true]; } const checks = (Array.isArray(value) ? value : [value]).map((check) => { - if (typeof check === 'string') { + if (typeof check === "string") { return { - when: 'always', + when: "always", case: check, }; } @@ -30,7 +47,7 @@ export const subjectCase: SyncRule<TargetCaseType | TargetCaseType[]> = ( return negated(check.when) ? !r : r; }); - const list = checks.map((c) => c.case).join(', '); + const list = checks.map((c) => c.case).join(", "); return [ negated(when) ? !result : result, diff --git a/@commitlint/rules/src/subject-empty.test.ts b/@commitlint/rules/src/subject-empty.test.ts index bddb11646f..e8c6440c84 100644 --- a/@commitlint/rules/src/subject-empty.test.ts +++ b/@commitlint/rules/src/subject-empty.test.ts @@ -1,9 +1,10 @@ -import parse from '@commitlint/parse'; -import {subjectEmpty} from './subject-empty'; +import { test, expect } from "vitest"; +import parse from "@commitlint/parse"; +import { subjectEmpty } from "./subject-empty.js"; const messages = { - empty: 'test: \nbody', - filled: 'test: subject\nbody', + empty: "test: \nbody", + filled: "test: subject\nbody", }; const parsed = { @@ -11,38 +12,38 @@ const parsed = { filled: parse(messages.filled), }; -test('without subject should succeed for empty keyword', async () => { +test("without subject should succeed for empty keyword", async () => { const [actual] = subjectEmpty(await parsed.empty); const expected = true; expect(actual).toEqual(expected); }); test('without subject should fail for "never"', async () => { - const [actual] = subjectEmpty(await parsed.empty, 'never'); + const [actual] = subjectEmpty(await parsed.empty, "never"); const expected = false; expect(actual).toEqual(expected); }); test('without subject should succeed for "always"', async () => { - const [actual] = subjectEmpty(await parsed.empty, 'always'); + const [actual] = subjectEmpty(await parsed.empty, "always"); const expected = true; expect(actual).toEqual(expected); }); -test('with subject fail for empty keyword', async () => { +test("with subject fail for empty keyword", async () => { const [actual] = subjectEmpty(await parsed.filled); const expected = false; expect(actual).toEqual(expected); }); test('with subject succeed for "never"', async () => { - const [actual] = subjectEmpty(await parsed.filled, 'never'); + const [actual] = subjectEmpty(await parsed.filled, "never"); const expected = true; expect(actual).toEqual(expected); }); test('with subject fail for "always"', async () => { - const [actual] = subjectEmpty(await parsed.filled, 'always'); + const [actual] = subjectEmpty(await parsed.filled, "always"); const expected = false; expect(actual).toEqual(expected); }); diff --git a/@commitlint/rules/src/subject-empty.ts b/@commitlint/rules/src/subject-empty.ts index fc94daefcb..d489b2c3ab 100644 --- a/@commitlint/rules/src/subject-empty.ts +++ b/@commitlint/rules/src/subject-empty.ts @@ -1,13 +1,13 @@ -import * as ensure from '@commitlint/ensure'; -import message from '@commitlint/message'; -import {SyncRule} from '@commitlint/types'; +import * as ensure from "@commitlint/ensure"; +import message from "@commitlint/message"; +import { SyncRule } from "@commitlint/types"; -export const subjectEmpty: SyncRule = (parsed, when = 'always') => { - const negated = when === 'never'; - const notEmpty = ensure.notEmpty(parsed.subject || ''); +export const subjectEmpty: SyncRule = (parsed, when = "always") => { + const negated = when === "never"; + const notEmpty = ensure.notEmpty(parsed.subject || ""); return [ negated ? notEmpty : !notEmpty, - message(['subject', negated ? 'may not' : 'must', 'be empty']), + message(["subject", negated ? "may not" : "must", "be empty"]), ]; }; diff --git a/@commitlint/rules/src/subject-exclamation-mark.test.ts b/@commitlint/rules/src/subject-exclamation-mark.test.ts index 1b36eb8e3b..55e47d0e7a 100644 --- a/@commitlint/rules/src/subject-exclamation-mark.test.ts +++ b/@commitlint/rules/src/subject-exclamation-mark.test.ts @@ -1,15 +1,17 @@ -import parse from '@commitlint/parse'; -import {subjectExclamationMark} from './subject-exclamation-mark'; +import { test, expect } from "vitest"; +import parse from "@commitlint/parse"; +// @ts-expect-error -- no typings +import preset from "conventional-changelog-angular"; -const preset = require('conventional-changelog-angular'); +import { subjectExclamationMark } from "./subject-exclamation-mark.js"; const parseMessage = async (str: string) => { - const {parserOpts} = await preset; + const { parserOpts } = await preset(); return parse(str, undefined, parserOpts); }; const messages = { - empty: 'test:\n', + empty: "test:\n", with: `test!: subject\n`, without: `test: subject\n`, }; @@ -21,37 +23,37 @@ const parsed = { }; test('empty against "always" should fail', async () => { - const [actual] = subjectExclamationMark(await parsed.empty, 'always'); + const [actual] = subjectExclamationMark(await parsed.empty, "always"); const expected = false; expect(actual).toEqual(expected); }); test('empty against "never" should succeed', async () => { - const [actual] = subjectExclamationMark(await parsed.empty, 'never'); + const [actual] = subjectExclamationMark(await parsed.empty, "never"); const expected = true; expect(actual).toEqual(expected); }); test('with against "always" should succeed', async () => { - const [actual] = subjectExclamationMark(await parsed.with, 'always'); + const [actual] = subjectExclamationMark(await parsed.with, "always"); const expected = true; expect(actual).toEqual(expected); }); test('with against "never" should fail', async () => { - const [actual] = subjectExclamationMark(await parsed.with, 'never'); + const [actual] = subjectExclamationMark(await parsed.with, "never"); const expected = false; expect(actual).toEqual(expected); }); test('without against "always" should fail', async () => { - const [actual] = subjectExclamationMark(await parsed.without, 'always'); + const [actual] = subjectExclamationMark(await parsed.without, "always"); const expected = false; expect(actual).toEqual(expected); }); test('without against "never" should succeed', async () => { - const [actual] = subjectExclamationMark(await parsed.without, 'never'); + const [actual] = subjectExclamationMark(await parsed.without, "never"); const expected = true; expect(actual).toEqual(expected); }); diff --git a/@commitlint/rules/src/subject-exclamation-mark.ts b/@commitlint/rules/src/subject-exclamation-mark.ts index 11cc29b590..886d142f9c 100644 --- a/@commitlint/rules/src/subject-exclamation-mark.ts +++ b/@commitlint/rules/src/subject-exclamation-mark.ts @@ -1,21 +1,21 @@ -import message from '@commitlint/message'; -import {SyncRule} from '@commitlint/types'; +import message from "@commitlint/message"; +import { SyncRule } from "@commitlint/types"; -export const subjectExclamationMark: SyncRule = (parsed, when = 'always') => { +export const subjectExclamationMark: SyncRule = (parsed, when = "always") => { const input = parsed.header; if (!input) { - return [true, '']; + return [true, ""]; } - const negated = when === 'never'; - const hasExclamationMark = /!:/.test(input); + const negated = when === "never"; + const hasExclamationMark = /^(\w*)(?:\((.*)\))?!: (.*)$/.test(input); return [ negated ? !hasExclamationMark : hasExclamationMark, message([ - 'subject', - negated ? 'must not' : 'must', - 'have an exclamation mark in the subject to identify a breaking change', + "subject", + negated ? "must not" : "must", + "have an exclamation mark in the subject to identify a breaking change", ]), ]; }; diff --git a/@commitlint/rules/src/subject-full-stop.test.ts b/@commitlint/rules/src/subject-full-stop.test.ts index c6587adecd..344f65652b 100644 --- a/@commitlint/rules/src/subject-full-stop.test.ts +++ b/@commitlint/rules/src/subject-full-stop.test.ts @@ -1,50 +1,83 @@ -import parse from '@commitlint/parse'; -import {subjectFullStop} from './subject-full-stop'; +import { test, expect } from "vitest"; +import parse from "@commitlint/parse"; +import { subjectFullStop } from "./subject-full-stop.js"; const messages = { - empty: 'test:\n', + empty: "test:\n", with: `test: subject.\n`, without: `test: subject\n`, + standardScopeWith: `type(scope): subject.\n`, + nonStandardScopeWith: "type.scope: subject.\n", + ellipsisMessage: "test: subject ends with ellipsis...", }; const parsed = { empty: parse(messages.empty), with: parse(messages.with), without: parse(messages.without), + standardScopeWith: parse(messages.standardScopeWith), + nonStandardScopeWith: parse(messages.nonStandardScopeWith), + ellipsisMessage: parse(messages.ellipsisMessage), }; test('empty against "always" should succeed', async () => { - const [actual] = subjectFullStop(await parsed.empty, 'always', '.'); + const [actual] = subjectFullStop(await parsed.empty, "always", "."); const expected = true; expect(actual).toEqual(expected); }); test('empty against "never ." should succeed', async () => { - const [actual] = subjectFullStop(await parsed.empty, 'never', '.'); + const [actual] = subjectFullStop(await parsed.empty, "never", "."); const expected = true; expect(actual).toEqual(expected); }); test('with against "always ." should succeed', async () => { - const [actual] = subjectFullStop(await parsed.with, 'always', '.'); + const [actual] = subjectFullStop(await parsed.with, "always", "."); const expected = true; expect(actual).toEqual(expected); }); test('with against "never ." should fail', async () => { - const [actual] = subjectFullStop(await parsed.with, 'never', '.'); + const [actual] = subjectFullStop(await parsed.with, "never", "."); const expected = false; expect(actual).toEqual(expected); }); test('without against "always ." should fail', async () => { - const [actual] = subjectFullStop(await parsed.without, 'always', '.'); + const [actual] = subjectFullStop(await parsed.without, "always", "."); const expected = false; expect(actual).toEqual(expected); }); test('without against "never ." should succeed', async () => { - const [actual] = subjectFullStop(await parsed.without, 'never', '.'); + const [actual] = subjectFullStop(await parsed.without, "never", "."); + const expected = true; + expect(actual).toEqual(expected); +}); + +test('commit message title with standard scope and full-stop against "never ." should fail', async () => { + const [actual] = subjectFullStop( + await parsed.standardScopeWith, + "never", + ".", + ); + const expected = false; + expect(actual).toEqual(expected); +}); + +test('commit message title with non standard scope and full-stop against "never ." should fail', async () => { + const [actual] = subjectFullStop( + await parsed.nonStandardScopeWith, + "never", + ".", + ); + const expected = false; + expect(actual).toEqual(expected); +}); + +test('ellipsis is not fullstop so commit title ending with it against "never ." should not fail', async () => { + const [actual] = subjectFullStop(await parsed.ellipsisMessage, "never", "."); const expected = true; expect(actual).toEqual(expected); }); diff --git a/@commitlint/rules/src/subject-full-stop.ts b/@commitlint/rules/src/subject-full-stop.ts index 050a4f7b16..6f1eed4aef 100644 --- a/@commitlint/rules/src/subject-full-stop.ts +++ b/@commitlint/rules/src/subject-full-stop.ts @@ -1,22 +1,26 @@ -import message from '@commitlint/message'; -import {SyncRule} from '@commitlint/types'; +import message from "@commitlint/message"; +import { SyncRule } from "@commitlint/types"; export const subjectFullStop: SyncRule<string> = ( parsed, - when = 'always', - value = '.' + when = "always", + value = ".", ) => { - const input = parsed.subject; - - if (!input) { + const colonIndex = parsed.header?.indexOf(":") || 0; + if (colonIndex > 0 && colonIndex === parsed.header!.length - 1) { return [true]; } - const negated = when === 'never'; - const hasStop = input[input.length - 1] === value; + const input = parsed.header; + + const negated = when === "never"; + let hasStop = input?.[input.length - 1] === value; + if (input?.slice(-3) === "...") { + hasStop = false; + } return [ negated ? !hasStop : hasStop, - message(['subject', negated ? 'may not' : 'must', 'end with full stop']), + message(["subject", negated ? "may not" : "must", "end with full stop"]), ]; }; diff --git a/@commitlint/rules/src/subject-max-length.test.ts b/@commitlint/rules/src/subject-max-length.test.ts index 7a9d321151..c89b8c246d 100644 --- a/@commitlint/rules/src/subject-max-length.test.ts +++ b/@commitlint/rules/src/subject-max-length.test.ts @@ -1,13 +1,14 @@ -import parse from '@commitlint/parse'; -import {subjectMaxLength} from './subject-max-length'; +import { test, expect } from "vitest"; +import parse from "@commitlint/parse"; +import { subjectMaxLength } from "./subject-max-length.js"; -const short = 'a'; -const long = 'ab'; +const short = "a"; +const long = "ab"; const value = short.length; const messages = { - empty: 'test:\n', + empty: "test:\n", short: `test: ${short}\n`, long: `test: ${long}\n`, }; @@ -18,19 +19,19 @@ const parsed = { long: parse(messages.long), }; -test('with empty should succeed', async () => { +test("with empty should succeed", async () => { const [actual] = subjectMaxLength(await parsed.empty, undefined, value); const expected = true; expect(actual).toEqual(expected); }); -test('with short should succeed', async () => { +test("with short should succeed", async () => { const [actual] = subjectMaxLength(await parsed.short, undefined, value); const expected = true; expect(actual).toEqual(expected); }); -test('with long should fail', async () => { +test("with long should fail", async () => { const [actual] = subjectMaxLength(await parsed.long, undefined, value); const expected = false; expect(actual).toEqual(expected); diff --git a/@commitlint/rules/src/subject-max-length.ts b/@commitlint/rules/src/subject-max-length.ts index 86d27ed60c..ca2c148cfa 100644 --- a/@commitlint/rules/src/subject-max-length.ts +++ b/@commitlint/rules/src/subject-max-length.ts @@ -1,10 +1,10 @@ -import {maxLength} from '@commitlint/ensure'; -import {SyncRule} from '@commitlint/types'; +import { maxLength } from "@commitlint/ensure"; +import { SyncRule } from "@commitlint/types"; export const subjectMaxLength: SyncRule<number> = ( parsed, _when = undefined, - value = 0 + value = 0, ) => { const input = parsed.subject; diff --git a/@commitlint/rules/src/subject-min-length.test.ts b/@commitlint/rules/src/subject-min-length.test.ts index df9b6854c0..d269f6e22a 100644 --- a/@commitlint/rules/src/subject-min-length.test.ts +++ b/@commitlint/rules/src/subject-min-length.test.ts @@ -1,13 +1,14 @@ -import parse from '@commitlint/parse'; -import {subjectMinLength} from './subject-min-length'; +import { test, expect } from "vitest"; +import parse from "@commitlint/parse"; +import { subjectMinLength } from "./subject-min-length.js"; -const short = 'a'; -const long = 'ab'; +const short = "a"; +const long = "ab"; const value = long.length; const messages = { - empty: 'test:\n', + empty: "test:\n", short: `test: ${short}\n`, long: `test: ${long}\n`, }; @@ -18,19 +19,19 @@ const parsed = { long: parse(messages.long), }; -test('with empty should succeed', async () => { +test("with empty should succeed", async () => { const [actual] = subjectMinLength(await parsed.empty, undefined, value); const expected = true; expect(actual).toEqual(expected); }); -test('with short should fail', async () => { +test("with short should fail", async () => { const [actual] = subjectMinLength(await parsed.short, undefined, value); const expected = false; expect(actual).toEqual(expected); }); -test('with long should succeed', async () => { +test("with long should succeed", async () => { const [actual] = subjectMinLength(await parsed.long, undefined, value); const expected = true; expect(actual).toEqual(expected); diff --git a/@commitlint/rules/src/subject-min-length.ts b/@commitlint/rules/src/subject-min-length.ts index 98310a4fb3..b0835e8159 100644 --- a/@commitlint/rules/src/subject-min-length.ts +++ b/@commitlint/rules/src/subject-min-length.ts @@ -1,10 +1,10 @@ -import {minLength} from '@commitlint/ensure'; -import {SyncRule} from '@commitlint/types'; +import { minLength } from "@commitlint/ensure"; +import { SyncRule } from "@commitlint/types"; export const subjectMinLength: SyncRule<number> = ( parsed, _when = undefined, - value = 0 + value = 0, ) => { const input = parsed.subject; if (!input) { diff --git a/@commitlint/rules/src/trailer-exists.test.ts b/@commitlint/rules/src/trailer-exists.test.ts index f97ab83be1..c090ad7b11 100644 --- a/@commitlint/rules/src/trailer-exists.test.ts +++ b/@commitlint/rules/src/trailer-exists.test.ts @@ -1,8 +1,9 @@ -import parse from '@commitlint/parse'; -import {trailerExists} from './trailer-exists'; +import { test, expect } from "vitest"; +import parse from "@commitlint/parse"; +import { trailerExists } from "./trailer-exists.js"; const messages = { - empty: 'test:\n', + empty: "test:\n", with: `test: subject\n\nbody\n\nfooter\n\nSigned-off-by:\n\n`, without: `test: subject\n\nbody\n\nfooter\n\n`, inSubject: `test: subject Signed-off-by:\n\nbody\n\nfooter\n\n`, @@ -32,8 +33,8 @@ const parsed = { test('empty against "always trailer-exists" should fail', async () => { const [actual] = trailerExists( await parsed.empty, - 'always', - 'Signed-off-by:' + "always", + "Signed-off-by:", ); const expected = false; @@ -41,19 +42,19 @@ test('empty against "always trailer-exists" should fail', async () => { }); test('empty against "never trailer-exists" should succeed', async () => { - const [actual] = trailerExists(await parsed.empty, 'never', 'Signed-off-by:'); + const [actual] = trailerExists(await parsed.empty, "never", "Signed-off-by:"); const expected = true; expect(actual).toEqual(expected); }); test('with against "always trailer-exists" should succeed', async () => { - const [actual] = trailerExists(await parsed.with, 'always', 'Signed-off-by:'); + const [actual] = trailerExists(await parsed.with, "always", "Signed-off-by:"); const expected = true; expect(actual).toEqual(expected); }); test('with against "never trailer-exists" should fail', async () => { - const [actual] = trailerExists(await parsed.with, 'never', 'Signed-off-by:'); + const [actual] = trailerExists(await parsed.with, "never", "Signed-off-by:"); const expected = false; expect(actual).toEqual(expected); }); @@ -61,8 +62,8 @@ test('with against "never trailer-exists" should fail', async () => { test('without against "always trailer-exists" should fail', async () => { const [actual] = trailerExists( await parsed.without, - 'always', - 'Signed-off-by:' + "always", + "Signed-off-by:", ); const expected = false; @@ -72,19 +73,19 @@ test('without against "always trailer-exists" should fail', async () => { test('without against "never trailer-exists" should succeed', async () => { const [actual] = trailerExists( await parsed.without, - 'never', - 'Signed-off-by:' + "never", + "Signed-off-by:", ); const expected = true; expect(actual).toEqual(expected); }); -test('comments and other trailers should be ignored', async () => { +test("comments and other trailers should be ignored", async () => { const [actual] = trailerExists( await parsed.withSignoffAndNoise, - 'always', - 'Signed-off-by:' + "always", + "Signed-off-by:", ); const expected = true; @@ -94,8 +95,8 @@ test('comments and other trailers should be ignored', async () => { test('inSubject against "always trailer-exists" should fail', async () => { const [actual] = trailerExists( await parsed.inSubject, - 'always', - 'Signed-off-by:' + "always", + "Signed-off-by:", ); const expected = false; @@ -105,8 +106,8 @@ test('inSubject against "always trailer-exists" should fail', async () => { test('inSubject against "never trailer-exists" should succeed', async () => { const [actual] = trailerExists( await parsed.inSubject, - 'never', - 'Signed-off-by:' + "never", + "Signed-off-by:", ); const expected = true; @@ -116,8 +117,8 @@ test('inSubject against "never trailer-exists" should succeed', async () => { test('inBody against "always trailer-exists" should fail', async () => { const [actual] = trailerExists( await parsed.inBody, - 'always', - 'Signed-off-by:' + "always", + "Signed-off-by:", ); const expected = false; @@ -127,8 +128,8 @@ test('inBody against "always trailer-exists" should fail', async () => { test('inBody against "never trailer-exists" should succeed', async () => { const [actual] = trailerExists( await parsed.inBody, - 'never', - 'Signed-off-by:' + "never", + "Signed-off-by:", ); const expected = true; diff --git a/@commitlint/rules/src/trailer-exists.ts b/@commitlint/rules/src/trailer-exists.ts index 2b78da87a8..3dc516767e 100644 --- a/@commitlint/rules/src/trailer-exists.ts +++ b/@commitlint/rules/src/trailer-exists.ts @@ -1,28 +1,30 @@ -import execa from 'execa'; -import message from '@commitlint/message'; -import toLines from '@commitlint/to-lines'; -import {SyncRule} from '@commitlint/types'; +import { spawnSync } from "node:child_process"; +import message from "@commitlint/message"; +import toLines from "@commitlint/to-lines"; +import { SyncRule } from "@commitlint/types"; export const trailerExists: SyncRule<string> = ( parsed, - when = 'always', - value = '' + when = "always", + value = "", ) => { - const trailers = execa.sync('git', ['interpret-trailers', '--parse'], { - input: parsed.raw, + const trailers = spawnSync("git", ["interpret-trailers", "--parse"], { + input: parsed.raw || "", }).stdout; - const matches = toLines(trailers).filter((ln) => ln.startsWith(value)).length; + const matches = toLines(trailers.toString()).filter((ln) => + ln.startsWith(value), + ).length; - const negated = when === 'never'; + const negated = when === "never"; const hasTrailer = matches > 0; return [ negated ? !hasTrailer : hasTrailer, message([ - 'message', - negated ? 'must not' : 'must', - 'have `' + value + '` trailer', + "message", + negated ? "must not" : "must", + "have `" + value + "` trailer", ]), ]; }; diff --git a/@commitlint/rules/src/type-case.test.ts b/@commitlint/rules/src/type-case.test.ts index d78442814f..b482e53cc0 100644 --- a/@commitlint/rules/src/type-case.test.ts +++ b/@commitlint/rules/src/type-case.test.ts @@ -1,16 +1,17 @@ -import parse from '@commitlint/parse'; -import {typeCase} from './type-case'; +import { test, expect } from "vitest"; +import parse from "@commitlint/parse"; +import { typeCase } from "./type-case.js"; const messages = { - empty: '(scope): subject', - lowercase: 'type: subject', - mixedcase: 'tYpE: subject', - uppercase: 'TYPE: subject', - camelcase: 'tyPe: subject', - pascalcase: 'TyPe: subject', - snakecase: 'ty_pe: subject', - kebabcase: 'ty-pe: subject', - startcase: 'Ty Pe: subject', + empty: "(scope): subject", + lowercase: "type: subject", + mixedcase: "tYpE: subject", + uppercase: "TYPE: subject", + camelcase: "tyPe: subject", + pascalcase: "TyPe: subject", + snakecase: "ty_pe: subject", + kebabcase: "ty-pe: subject", + startcase: "Ty Pe: subject", }; const parsed = { @@ -24,300 +25,300 @@ const parsed = { kebabcase: parse(messages.kebabcase), startcase: parse(messages.startcase, undefined, { headerPattern: /^(.*): (.*)$/, - headerCorrespondence: ['type', 'subject'], + headerCorrespondence: ["type", "subject"], }), }; test('with empty type should succeed for "never lowercase"', async () => { - const [actual] = typeCase(await parsed.empty, 'never', 'lowercase'); + const [actual] = typeCase(await parsed.empty, "never", "lowercase"); const expected = true; expect(actual).toEqual(expected); }); test('with empty type should succeed for "always lowercase"', async () => { - const [actual] = typeCase(await parsed.empty, 'always', 'lowercase'); + const [actual] = typeCase(await parsed.empty, "always", "lowercase"); const expected = true; expect(actual).toEqual(expected); }); test('with empty type should succeed for "never uppercase"', async () => { - const [actual] = typeCase(await parsed.empty, 'never', 'uppercase'); + const [actual] = typeCase(await parsed.empty, "never", "uppercase"); const expected = true; expect(actual).toEqual(expected); }); test('with empty type should succeed for "always uppercase"', async () => { - const [actual] = typeCase(await parsed.empty, 'always', 'uppercase'); + const [actual] = typeCase(await parsed.empty, "always", "uppercase"); const expected = true; expect(actual).toEqual(expected); }); test('with lowercase type should fail for "never lowercase"', async () => { - const [actual] = typeCase(await parsed.lowercase, 'never', 'lowercase'); + const [actual] = typeCase(await parsed.lowercase, "never", "lowercase"); const expected = false; expect(actual).toEqual(expected); }); test('with lowercase type should succeed for "always lowercase"', async () => { - const [actual] = typeCase(await parsed.lowercase, 'always', 'lowercase'); + const [actual] = typeCase(await parsed.lowercase, "always", "lowercase"); const expected = true; expect(actual).toEqual(expected); }); test('with mixedcase type should succeed for "never lowercase"', async () => { - const [actual] = typeCase(await parsed.mixedcase, 'never', 'lowercase'); + const [actual] = typeCase(await parsed.mixedcase, "never", "lowercase"); const expected = true; expect(actual).toEqual(expected); }); test('with mixedcase type should fail for "always lowercase"', async () => { - const [actual] = typeCase(await parsed.mixedcase, 'always', 'lowercase'); + const [actual] = typeCase(await parsed.mixedcase, "always", "lowercase"); const expected = false; expect(actual).toEqual(expected); }); test('with mixedcase type should succeed for "never uppercase"', async () => { - const [actual] = typeCase(await parsed.mixedcase, 'never', 'uppercase'); + const [actual] = typeCase(await parsed.mixedcase, "never", "uppercase"); const expected = true; expect(actual).toEqual(expected); }); test('with mixedcase type should fail for "always uppercase"', async () => { - const [actual] = typeCase(await parsed.mixedcase, 'always', 'uppercase'); + const [actual] = typeCase(await parsed.mixedcase, "always", "uppercase"); const expected = false; expect(actual).toEqual(expected); }); test('with uppercase type should fail for "never uppercase"', async () => { - const [actual] = typeCase(await parsed.uppercase, 'never', 'uppercase'); + const [actual] = typeCase(await parsed.uppercase, "never", "uppercase"); const expected = false; expect(actual).toEqual(expected); }); test('with lowercase type should succeed for "always uppercase"', async () => { - const [actual] = typeCase(await parsed.uppercase, 'always', 'uppercase'); + const [actual] = typeCase(await parsed.uppercase, "always", "uppercase"); const expected = true; expect(actual).toEqual(expected); }); test('with camelcase type should fail for "always uppercase"', async () => { - const [actual] = typeCase(await parsed.camelcase, 'always', 'uppercase'); + const [actual] = typeCase(await parsed.camelcase, "always", "uppercase"); const expected = false; expect(actual).toEqual(expected); }); test('with camelcase type should succeed for "never uppercase"', async () => { - const [actual] = typeCase(await parsed.camelcase, 'never', 'uppercase'); + const [actual] = typeCase(await parsed.camelcase, "never", "uppercase"); const expected = true; expect(actual).toEqual(expected); }); test('with camelcase type should fail for "always pascalcase"', async () => { - const [actual] = typeCase(await parsed.camelcase, 'always', 'pascal-case'); + const [actual] = typeCase(await parsed.camelcase, "always", "pascal-case"); const expected = false; expect(actual).toEqual(expected); }); test('with camelcase type should fail for "always kebabcase"', async () => { - const [actual] = typeCase(await parsed.camelcase, 'always', 'kebab-case'); + const [actual] = typeCase(await parsed.camelcase, "always", "kebab-case"); const expected = false; expect(actual).toEqual(expected); }); test('with camelcase type should fail for "always snakecase"', async () => { - const [actual] = typeCase(await parsed.camelcase, 'always', 'snake-case'); + const [actual] = typeCase(await parsed.camelcase, "always", "snake-case"); const expected = false; expect(actual).toEqual(expected); }); test('with camelcase type should fail for "always startcase"', async () => { - const [actual] = typeCase(await parsed.camelcase, 'always', 'start-case'); + const [actual] = typeCase(await parsed.camelcase, "always", "start-case"); const expected = false; expect(actual).toEqual(expected); }); test('with camelcase type should succeed for "always camelcase"', async () => { - const [actual] = typeCase(await parsed.camelcase, 'always', 'camel-case'); + const [actual] = typeCase(await parsed.camelcase, "always", "camel-case"); const expected = true; expect(actual).toEqual(expected); }); test('with pascalcase type should fail for "always uppercase"', async () => { - const [actual] = typeCase(await parsed.pascalcase, 'always', 'uppercase'); + const [actual] = typeCase(await parsed.pascalcase, "always", "uppercase"); const expected = false; expect(actual).toEqual(expected); }); test('with pascalcase type should succeed for "never uppercase"', async () => { - const [actual] = typeCase(await parsed.pascalcase, 'never', 'uppercase'); + const [actual] = typeCase(await parsed.pascalcase, "never", "uppercase"); const expected = true; expect(actual).toEqual(expected); }); test('with pascalcase type should fail for "always camelcase"', async () => { - const [actual] = typeCase(await parsed.pascalcase, 'always', 'camel-case'); + const [actual] = typeCase(await parsed.pascalcase, "always", "camel-case"); const expected = false; expect(actual).toEqual(expected); }); test('with pascalcase type should fail for "always kebabcase"', async () => { - const [actual] = typeCase(await parsed.pascalcase, 'always', 'kebab-case'); + const [actual] = typeCase(await parsed.pascalcase, "always", "kebab-case"); const expected = false; expect(actual).toEqual(expected); }); test('with pascalcase type should fail for "always snakecase"', async () => { - const [actual] = typeCase(await parsed.pascalcase, 'always', 'snake-case'); + const [actual] = typeCase(await parsed.pascalcase, "always", "snake-case"); const expected = false; expect(actual).toEqual(expected); }); test('with pascalcase type should fail for "always startcase"', async () => { - const [actual] = typeCase(await parsed.pascalcase, 'always', 'start-case'); + const [actual] = typeCase(await parsed.pascalcase, "always", "start-case"); const expected = false; expect(actual).toEqual(expected); }); test('with pascalcase type should succeed for "always pascalcase"', async () => { - const [actual] = typeCase(await parsed.pascalcase, 'always', 'pascal-case'); + const [actual] = typeCase(await parsed.pascalcase, "always", "pascal-case"); const expected = true; expect(actual).toEqual(expected); }); test('with snakecase type should fail for "always uppercase"', async () => { - const [actual] = typeCase(await parsed.snakecase, 'always', 'uppercase'); + const [actual] = typeCase(await parsed.snakecase, "always", "uppercase"); const expected = false; expect(actual).toEqual(expected); }); test('with snakecase type should succeed for "never uppercase"', async () => { - const [actual] = typeCase(await parsed.snakecase, 'never', 'uppercase'); + const [actual] = typeCase(await parsed.snakecase, "never", "uppercase"); const expected = true; expect(actual).toEqual(expected); }); test('with snakecase type should fail for "always camelcase"', async () => { - const [actual] = typeCase(await parsed.snakecase, 'always', 'camel-case'); + const [actual] = typeCase(await parsed.snakecase, "always", "camel-case"); const expected = false; expect(actual).toEqual(expected); }); test('with snakecase type should fail for "always kebabcase"', async () => { - const [actual] = typeCase(await parsed.snakecase, 'always', 'kebab-case'); + const [actual] = typeCase(await parsed.snakecase, "always", "kebab-case"); const expected = false; expect(actual).toEqual(expected); }); test('with snakecase type should succeed for "always snakecase"', async () => { - const [actual] = typeCase(await parsed.snakecase, 'always', 'snake-case'); + const [actual] = typeCase(await parsed.snakecase, "always", "snake-case"); const expected = true; expect(actual).toEqual(expected); }); test('with snakecase type should fail for "always pascalcase"', async () => { - const [actual] = typeCase(await parsed.snakecase, 'always', 'pascal-case'); + const [actual] = typeCase(await parsed.snakecase, "always", "pascal-case"); const expected = false; expect(actual).toEqual(expected); }); test('with snakecase type should fail for "always start case"', async () => { - const [actual] = typeCase(await parsed.snakecase, 'always', 'start-case'); + const [actual] = typeCase(await parsed.snakecase, "always", "start-case"); const expected = false; expect(actual).toEqual(expected); }); test('with startcase type should fail for "always uppercase"', async () => { - const [actual] = typeCase(await parsed.startcase, 'always', 'uppercase'); + const [actual] = typeCase(await parsed.startcase, "always", "uppercase"); const expected = false; expect(actual).toEqual(expected); }); test('with startcase type should succeed for "never uppercase"', async () => { - const [actual] = typeCase(await parsed.startcase, 'never', 'uppercase'); + const [actual] = typeCase(await parsed.startcase, "never", "uppercase"); const expected = true; expect(actual).toEqual(expected); }); test('with startcase type should fail for "always camelcase"', async () => { - const [actual] = typeCase(await parsed.startcase, 'always', 'camel-case'); + const [actual] = typeCase(await parsed.startcase, "always", "camel-case"); const expected = false; expect(actual).toEqual(expected); }); test('with startcase type should fail for "always kebabcase"', async () => { - const [actual] = typeCase(await parsed.startcase, 'always', 'kebab-case'); + const [actual] = typeCase(await parsed.startcase, "always", "kebab-case"); const expected = false; expect(actual).toEqual(expected); }); test('with startcase type should fail for "always snakecase"', async () => { - const [actual] = typeCase(await parsed.startcase, 'always', 'snake-case'); + const [actual] = typeCase(await parsed.startcase, "always", "snake-case"); const expected = false; expect(actual).toEqual(expected); }); test('with startcase type should fail for "always pascalcase"', async () => { - const [actual] = typeCase(await parsed.startcase, 'always', 'pascal-case'); + const [actual] = typeCase(await parsed.startcase, "always", "pascal-case"); const expected = false; expect(actual).toEqual(expected); }); test('with startcase type should succeed for "always startcase"', async () => { - const [actual] = typeCase(await parsed.startcase, 'always', 'start-case'); + const [actual] = typeCase(await parsed.startcase, "always", "start-case"); const expected = true; expect(actual).toEqual(expected); }); test('with uppercase scope should succeed for "always [uppercase, lowercase]"', async () => { - const [actual] = typeCase(await parsed.uppercase, 'always', [ - 'uppercase', - 'lowercase', + const [actual] = typeCase(await parsed.uppercase, "always", [ + "uppercase", + "lowercase", ]); const expected = true; expect(actual).toEqual(expected); }); test('with lowercase subject should succeed for "always [uppercase, lowercase]"', async () => { - const [actual] = typeCase(await parsed.lowercase, 'always', [ - 'uppercase', - 'lowercase', + const [actual] = typeCase(await parsed.lowercase, "always", [ + "uppercase", + "lowercase", ]); const expected = true; expect(actual).toEqual(expected); }); test('with mixedcase subject should fail for "always [uppercase, lowercase]"', async () => { - const [actual] = typeCase(await parsed.mixedcase, 'always', [ - 'uppercase', - 'lowercase', + const [actual] = typeCase(await parsed.mixedcase, "always", [ + "uppercase", + "lowercase", ]); const expected = false; expect(actual).toEqual(expected); }); test('with mixedcase subject should pass for "always [uppercase, lowercase, camel-case]"', async () => { - const [actual] = typeCase(await parsed.mixedcase, 'always', [ - 'uppercase', - 'lowercase', - 'camel-case', + const [actual] = typeCase(await parsed.mixedcase, "always", [ + "uppercase", + "lowercase", + "camel-case", ]); const expected = true; expect(actual).toEqual(expected); }); test('with mixedcase scope should pass for "never [uppercase, lowercase]"', async () => { - const [actual] = typeCase(await parsed.mixedcase, 'never', [ - 'uppercase', - 'lowercase', + const [actual] = typeCase(await parsed.mixedcase, "never", [ + "uppercase", + "lowercase", ]); const expected = true; expect(actual).toEqual(expected); }); test('with uppercase scope should fail for "never [uppercase, lowercase]"', async () => { - const [actual] = typeCase(await parsed.uppercase, 'never', [ - 'uppercase', - 'lowercase', + const [actual] = typeCase(await parsed.uppercase, "never", [ + "uppercase", + "lowercase", ]); const expected = false; expect(actual).toEqual(expected); diff --git a/@commitlint/rules/src/type-case.ts b/@commitlint/rules/src/type-case.ts index 71aa2fafdc..8c622e26ff 100644 --- a/@commitlint/rules/src/type-case.ts +++ b/@commitlint/rules/src/type-case.ts @@ -1,24 +1,24 @@ -import {case as ensureCase} from '@commitlint/ensure'; -import message from '@commitlint/message'; -import {TargetCaseType, SyncRule} from '@commitlint/types'; +import { case as ensureCase } from "@commitlint/ensure"; +import message from "@commitlint/message"; +import { TargetCaseType, SyncRule } from "@commitlint/types"; -const negated = (when?: string) => when === 'never'; +const negated = (when?: string) => when === "never"; export const typeCase: SyncRule<TargetCaseType | TargetCaseType[]> = ( parsed, - when = 'always', - value = [] + when = "always", + value = [], ) => { - const {type} = parsed; + const { type } = parsed; if (!type) { return [true]; } const checks = (Array.isArray(value) ? value : [value]).map((check) => { - if (typeof check === 'string') { + if (typeof check === "string") { return { - when: 'always', + when: "always", case: check, }; } @@ -30,7 +30,7 @@ export const typeCase: SyncRule<TargetCaseType | TargetCaseType[]> = ( return negated(check.when) ? !r : r; }); - const list = checks.map((c) => c.case).join(', '); + const list = checks.map((c) => c.case).join(", "); return [ negated(when) ? !result : result, diff --git a/@commitlint/rules/src/type-empty.test.ts b/@commitlint/rules/src/type-empty.test.ts index a1c6f4ab86..48b5d3a893 100644 --- a/@commitlint/rules/src/type-empty.test.ts +++ b/@commitlint/rules/src/type-empty.test.ts @@ -1,9 +1,10 @@ -import parse from '@commitlint/parse'; -import {typeEmpty} from './type-empty'; +import { test, expect } from "vitest"; +import parse from "@commitlint/parse"; +import { typeEmpty } from "./type-empty.js"; const messages = { - empty: '(scope):', - filled: 'type: subject', + empty: "(scope):", + filled: "type: subject", }; const parsed = { @@ -11,38 +12,38 @@ const parsed = { filled: parse(messages.filled), }; -test('without type should succeed for empty keyword', async () => { +test("without type should succeed for empty keyword", async () => { const [actual] = typeEmpty(await parsed.empty); const expected = true; expect(actual).toEqual(expected); }); test('without type should fail for "never"', async () => { - const [actual] = typeEmpty(await parsed.empty, 'never'); + const [actual] = typeEmpty(await parsed.empty, "never"); const expected = false; expect(actual).toEqual(expected); }); test('without type should succeed for "always"', async () => { - const [actual] = typeEmpty(await parsed.empty, 'always'); + const [actual] = typeEmpty(await parsed.empty, "always"); const expected = true; expect(actual).toEqual(expected); }); -test('with type fail for empty keyword', async () => { +test("with type fail for empty keyword", async () => { const [actual] = typeEmpty(await parsed.filled); const expected = false; expect(actual).toEqual(expected); }); test('with type succeed for "never"', async () => { - const [actual] = typeEmpty(await parsed.filled, 'never'); + const [actual] = typeEmpty(await parsed.filled, "never"); const expected = true; expect(actual).toEqual(expected); }); test('with type fail for "always"', async () => { - const [actual] = typeEmpty(await parsed.filled, 'always'); + const [actual] = typeEmpty(await parsed.filled, "always"); const expected = false; expect(actual).toEqual(expected); }); diff --git a/@commitlint/rules/src/type-empty.ts b/@commitlint/rules/src/type-empty.ts index 8802e00d77..867f6120e5 100644 --- a/@commitlint/rules/src/type-empty.ts +++ b/@commitlint/rules/src/type-empty.ts @@ -1,12 +1,12 @@ -import * as ensure from '@commitlint/ensure'; -import message from '@commitlint/message'; -import {SyncRule} from '@commitlint/types'; +import * as ensure from "@commitlint/ensure"; +import message from "@commitlint/message"; +import { SyncRule } from "@commitlint/types"; -export const typeEmpty: SyncRule = (parsed, when = 'always') => { - const negated = when === 'never'; - const notEmpty = ensure.notEmpty(parsed.type || ''); +export const typeEmpty: SyncRule = (parsed, when = "always") => { + const negated = when === "never"; + const notEmpty = ensure.notEmpty(parsed.type || ""); return [ negated ? notEmpty : !notEmpty, - message(['type', negated ? 'may not' : 'must', 'be empty']), + message(["type", negated ? "may not" : "must", "be empty"]), ]; }; diff --git a/@commitlint/rules/src/type-enum.test.ts b/@commitlint/rules/src/type-enum.test.ts index fbd841dd04..dda24c27ea 100644 --- a/@commitlint/rules/src/type-enum.test.ts +++ b/@commitlint/rules/src/type-enum.test.ts @@ -1,10 +1,11 @@ -import parse from '@commitlint/parse'; -import {typeEnum} from './type-enum'; +import { test, expect } from "vitest"; +import parse from "@commitlint/parse"; +import { typeEnum } from "./type-enum.js"; const messages = { - empty: '(): \n', - a: 'a(): \n', - b: 'b(): \n', + empty: "(): \n", + a: "a(): \n", + b: "b(): \n", }; const parsed = { @@ -13,110 +14,110 @@ const parsed = { b: parse(messages.b), }; -test('empty succeeds', async () => { +test("empty succeeds", async () => { const [actual] = typeEnum(await parsed.empty); const expected = true; expect(actual).toEqual(expected); }); test('empty on "a" succeeds', async () => { - const [actual] = typeEnum(await parsed.empty, undefined, ['a']); + const [actual] = typeEnum(await parsed.empty, undefined, ["a"]); const expected = true; expect(actual).toEqual(expected); }); test('empty on "always a" succeeds', async () => { - const [actual] = typeEnum(await parsed.empty, 'always', ['a']); + const [actual] = typeEnum(await parsed.empty, "always", ["a"]); const expected = true; expect(actual).toEqual(expected); }); test('empty on "never a" succeeds', async () => { - const [actual] = typeEnum(await parsed.empty, 'never', ['a']); + const [actual] = typeEnum(await parsed.empty, "never", ["a"]); const expected = true; expect(actual).toEqual(expected); }); test('empty on "always a, b" succeeds', async () => { - const [actual] = typeEnum(await parsed.empty, 'always', ['a', 'b']); + const [actual] = typeEnum(await parsed.empty, "always", ["a", "b"]); const expected = true; expect(actual).toEqual(expected); }); test('empty on "never a, b" succeeds', async () => { - const [actual] = typeEnum(await parsed.empty, 'never', ['a', 'b']); + const [actual] = typeEnum(await parsed.empty, "never", ["a", "b"]); const expected = true; expect(actual).toEqual(expected); }); test('a on "a" succeeds', async () => { - const [actual] = typeEnum(await parsed.a, undefined, ['a']); + const [actual] = typeEnum(await parsed.a, undefined, ["a"]); const expected = true; expect(actual).toEqual(expected); }); test('a on "always a" succeeds', async () => { - const [actual] = typeEnum(await parsed.a, 'always', ['a']); + const [actual] = typeEnum(await parsed.a, "always", ["a"]); const expected = true; expect(actual).toEqual(expected); }); test('a on "never a" fails', async () => { - const [actual] = typeEnum(await parsed.a, 'never', ['a']); + const [actual] = typeEnum(await parsed.a, "never", ["a"]); const expected = false; expect(actual).toEqual(expected); }); test('b on "b" succeeds', async () => { - const [actual] = typeEnum(await parsed.b, undefined, ['b']); + const [actual] = typeEnum(await parsed.b, undefined, ["b"]); const expected = true; expect(actual).toEqual(expected); }); test('b on "always b" succeeds', async () => { - const [actual] = typeEnum(await parsed.b, 'always', ['b']); + const [actual] = typeEnum(await parsed.b, "always", ["b"]); const expected = true; expect(actual).toEqual(expected); }); test('b on "never b" fails', async () => { - const [actual] = typeEnum(await parsed.b, 'never', ['b']); + const [actual] = typeEnum(await parsed.b, "never", ["b"]); const expected = false; expect(actual).toEqual(expected); }); test('a on "a, b" succeeds', async () => { - const [actual] = typeEnum(await parsed.a, undefined, ['a', 'b']); + const [actual] = typeEnum(await parsed.a, undefined, ["a", "b"]); const expected = true; expect(actual).toEqual(expected); }); test('a on "always a, b" succeeds', async () => { - const [actual] = typeEnum(await parsed.a, 'always', ['a', 'b']); + const [actual] = typeEnum(await parsed.a, "always", ["a", "b"]); const expected = true; expect(actual).toEqual(expected); }); test('a on "never a, b" fails', async () => { - const [actual] = typeEnum(await parsed.a, 'never', ['a', 'b']); + const [actual] = typeEnum(await parsed.a, "never", ["a", "b"]); const expected = false; expect(actual).toEqual(expected); }); test('b on "a, b" succeeds', async () => { - const [actual] = typeEnum(await parsed.b, undefined, ['a', 'b']); + const [actual] = typeEnum(await parsed.b, undefined, ["a", "b"]); const expected = true; expect(actual).toEqual(expected); }); test('b on "always a, b" succeeds', async () => { - const [actual] = typeEnum(await parsed.b, 'always', ['a', 'b']); + const [actual] = typeEnum(await parsed.b, "always", ["a", "b"]); const expected = true; expect(actual).toEqual(expected); }); test('b on "never a, b" fails', async () => { - const [actual] = typeEnum(await parsed.b, 'never', ['a', 'b']); + const [actual] = typeEnum(await parsed.b, "never", ["a", "b"]); const expected = false; expect(actual).toEqual(expected); }); diff --git a/@commitlint/rules/src/type-enum.ts b/@commitlint/rules/src/type-enum.ts index c4a8f9aa18..4ae17d9574 100644 --- a/@commitlint/rules/src/type-enum.ts +++ b/@commitlint/rules/src/type-enum.ts @@ -1,19 +1,19 @@ -import * as ensure from '@commitlint/ensure'; -import message from '@commitlint/message'; -import {SyncRule} from '@commitlint/types'; +import * as ensure from "@commitlint/ensure"; +import message from "@commitlint/message"; +import { SyncRule } from "@commitlint/types"; export const typeEnum: SyncRule<string[]> = ( parsed, - when = 'always', - value = [] + when = "always", + value = [], ) => { - const {type: input} = parsed; + const { type: input } = parsed; if (!input) { return [true]; } - const negated = when === 'never'; + const negated = when === "never"; const result = ensure.enum(input, value); return [ @@ -21,7 +21,7 @@ export const typeEnum: SyncRule<string[]> = ( message([ `type must`, negated ? `not` : null, - `be one of [${value.join(', ')}]`, + `be one of [${value.join(", ")}]`, ]), ]; }; diff --git a/@commitlint/rules/src/type-max-length.test.ts b/@commitlint/rules/src/type-max-length.test.ts index 4b35f20d00..2ce7601fcd 100644 --- a/@commitlint/rules/src/type-max-length.test.ts +++ b/@commitlint/rules/src/type-max-length.test.ts @@ -1,13 +1,14 @@ -import parse from '@commitlint/parse'; -import {typeMaxLength} from './type-max-length'; +import { test, expect } from "vitest"; +import parse from "@commitlint/parse"; +import { typeMaxLength } from "./type-max-length.js"; -const short = 'a'; -const long = 'ab'; +const short = "a"; +const long = "ab"; const value = short.length; const messages = { - empty: '():\n', + empty: "():\n", short: `${short}: \n`, long: `${long}: \n`, }; @@ -18,19 +19,19 @@ const parsed = { long: parse(messages.long), }; -test('with empty should succeed', async () => { +test("with empty should succeed", async () => { const [actual] = typeMaxLength(await parsed.empty, undefined, value); const expected = true; expect(actual).toEqual(expected); }); -test('with short should succeed', async () => { +test("with short should succeed", async () => { const [actual] = typeMaxLength(await parsed.short, undefined, value); const expected = true; expect(actual).toEqual(expected); }); -test('with long should fail', async () => { +test("with long should fail", async () => { const [actual] = typeMaxLength(await parsed.long, undefined, value); const expected = false; expect(actual).toEqual(expected); diff --git a/@commitlint/rules/src/type-max-length.ts b/@commitlint/rules/src/type-max-length.ts index 1e4d27766f..7398ef3138 100644 --- a/@commitlint/rules/src/type-max-length.ts +++ b/@commitlint/rules/src/type-max-length.ts @@ -1,10 +1,10 @@ -import {maxLength} from '@commitlint/ensure'; -import {SyncRule} from '@commitlint/types'; +import { maxLength } from "@commitlint/ensure"; +import { SyncRule } from "@commitlint/types"; export const typeMaxLength: SyncRule<number> = ( parsed, _when = undefined, - value = 0 + value = 0, ) => { const input = parsed.type; diff --git a/@commitlint/rules/src/type-min-length.test.ts b/@commitlint/rules/src/type-min-length.test.ts index fbf5a58a6f..7caf3a91c5 100644 --- a/@commitlint/rules/src/type-min-length.test.ts +++ b/@commitlint/rules/src/type-min-length.test.ts @@ -1,13 +1,14 @@ -import parse from '@commitlint/parse'; -import {typeMinLength} from './type-min-length'; +import { test, expect } from "vitest"; +import parse from "@commitlint/parse"; +import { typeMinLength } from "./type-min-length.js"; -const short = 'a'; -const long = 'ab'; +const short = "a"; +const long = "ab"; const value = long.length; const messages = { - empty: '():\n', + empty: "():\n", short: `${short}: \n`, long: `${long}: \n`, }; @@ -18,19 +19,19 @@ const parsed = { long: parse(messages.long), }; -test('with empty should succeed', async () => { +test("with empty should succeed", async () => { const [actual] = typeMinLength(await parsed.empty, undefined, value); const expected = true; expect(actual).toEqual(expected); }); -test('with short should fail', async () => { +test("with short should fail", async () => { const [actual] = typeMinLength(await parsed.short, undefined, value); const expected = false; expect(actual).toEqual(expected); }); -test('with long should succeed', async () => { +test("with long should succeed", async () => { const [actual] = typeMinLength(await parsed.long, undefined, value); const expected = true; expect(actual).toEqual(expected); diff --git a/@commitlint/rules/src/type-min-length.ts b/@commitlint/rules/src/type-min-length.ts index f7ff3ea38b..619f7593ad 100644 --- a/@commitlint/rules/src/type-min-length.ts +++ b/@commitlint/rules/src/type-min-length.ts @@ -1,10 +1,10 @@ -import {minLength} from '@commitlint/ensure'; -import {SyncRule} from '@commitlint/types'; +import { minLength } from "@commitlint/ensure"; +import { SyncRule } from "@commitlint/types"; export const typeMinLength: SyncRule<number> = ( parsed, _when = undefined, - value = 0 + value = 0, ) => { const input = parsed.type; if (!input) { diff --git a/@commitlint/rules/tsconfig.json b/@commitlint/rules/tsconfig.json index 3f6d480309..2bc7f16034 100644 --- a/@commitlint/rules/tsconfig.json +++ b/@commitlint/rules/tsconfig.json @@ -8,9 +8,9 @@ "include": ["./src"], "exclude": ["./src/**/*.test.ts", "./lib/**/*"], "references": [ - {"path": "../ensure"}, - {"path": "../message"}, - {"path": "../to-lines"}, - {"path": "../types"} + { "path": "../ensure" }, + { "path": "../message" }, + { "path": "../to-lines" }, + { "path": "../types" } ] } diff --git a/@commitlint/to-lines/CHANGELOG.md b/@commitlint/to-lines/CHANGELOG.md index 276cd6ee0f..975274248b 100644 --- a/@commitlint/to-lines/CHANGELOG.md +++ b/@commitlint/to-lines/CHANGELOG.md @@ -3,21 +3,23 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. -# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) +**Note:** Version bump only for package @commitlint/to-lines -* chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) -### BREAKING CHANGES -* minimum node version is 12 +## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) +**Note:** Version bump only for package @commitlint/to-lines -## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) + + +# [19.8.0](https://github.com/conventional-changelog/commitlint/compare/v19.7.1...v19.8.0) (2025-03-07) **Note:** Version bump only for package @commitlint/to-lines @@ -25,7 +27,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) +# [19.5.0](https://github.com/conventional-changelog/commitlint/compare/v19.4.1...v19.5.0) (2024-09-11) **Note:** Version bump only for package @commitlint/to-lines @@ -33,53 +35,70 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) +# [19.0.0](https://github.com/conventional-changelog/commitlint/compare/v18.6.2...v19.0.0) (2024-02-27) -**Note:** Version bump only for package @commitlint/to-lines +* feat!: migrate to pure ESM (#3850) ([3423735](https://github.com/conventional-changelog/commitlint/commit/342373559bdf7c783c4ef37ff05dc38a5f681159)), closes [#3850](https://github.com/conventional-changelog/commitlint/issues/3850) +### Reverts +* Revert "chore!: minimum node version v20" ([2816783](https://github.com/conventional-changelog/commitlint/commit/2816783d00e7eb967de3ac9347c2fc43dc8b94fa)) -# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) -**Note:** Version bump only for package @commitlint/to-lines +### BREAKING CHANGES +* migrate to pure ESM +* feat: migrate to pure ESM +* chore: update snapshot +* fix: load `parserPreset` with another `await` -# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) +* test: migrate to vitest -**Note:** Version bump only for package @commitlint/to-lines +* test: remove no replacement `--runInBand` test-ci script +* chore: fix code reviews +* refactor(load): rewrite resolve logic +* fix(config-nx-scopes): fix syntax error +* feat(resolve-extends): add resolveFrom and loadParserPreset -# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) +* feat(load): use resolveFrom and loadParserPreset from resolve-extends +* test: include only @commitlint/* packages src in coverage -* refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) +* test: explicit import vitest utilities +* test: remove @jest/globals from dependencies -### BREAKING CHANGES +* fix(resolve-extends): `resolveFrom` output should be platform aware -* remove node 8 from circle-ci checks +* test: restore NO_COLOR to test script -also remove node 13 because we do not support experimental versions +* chore: fix linting issues -* docs: update node v10 to latest LTS 10 version +* fix: should use fileURLToPath instead of pathname for Windows compatibility -Co-authored-by: Cedric van Putten <me@bycedric.com> +* Apply suggestions from code review -Co-authored-by: Cedric van Putten <me@bycedric.com> +* fix: should reuse `cli` instead call `yargs()` +* feat(cli): set terminalWidth as wrap to avoid work break on help +* Update .eslintrc.cjs +* feat: migrate @commitlint/config-conventional to pure ESM -## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) + + + +## [18.6.1](https://github.com/conventional-changelog/commitlint/compare/v18.6.0...v18.6.1) (2024-02-13) **Note:** Version bump only for package @commitlint/to-lines @@ -87,7 +106,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) +## [18.4.4](https://github.com/conventional-changelog/commitlint/compare/v18.4.3...v18.4.4) (2024-01-04) **Note:** Version bump only for package @commitlint/to-lines @@ -95,7 +114,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) +## [18.4.3](https://github.com/conventional-changelog/commitlint/compare/v18.4.2...v18.4.3) (2023-11-21) **Note:** Version bump only for package @commitlint/to-lines @@ -103,7 +122,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) +# [18.4.0](https://github.com/conventional-changelog/commitlint/compare/v18.3.0...v18.4.0) (2023-11-10) **Note:** Version bump only for package @commitlint/to-lines @@ -111,7 +130,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) +# [18.1.0](https://github.com/conventional-changelog/commitlint/compare/v18.0.0...v18.1.0) (2023-10-25) **Note:** Version bump only for package @commitlint/to-lines @@ -119,7 +138,37 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) +# [18.0.0](https://github.com/conventional-changelog/commitlint/compare/v17.8.1...v18.0.0) (2023-10-20) + + +* chore!: minimum node version v18 (#3644) ([5b4aeaf](https://github.com/conventional-changelog/commitlint/commit/5b4aeaf4f01c2726a7bc8631a23bb34c849baad2)), closes [#3644](https://github.com/conventional-changelog/commitlint/issues/3644) + + +### BREAKING CHANGES + +* drop node v14 and v16 support + +* chore: remove unused types + +* docs: prepare node update and new release + +* chore!: minimum TS version v5 +* drop TS v4 support + +* ci: remove node v14/16 checks + +* chore: adjust node types to minimal supported version + +* chore!: further major versions of other deps +* upgrade conventional-changelog-conventionalcommits, conventional-commits-parser, conventional-changelog-atom, + +* docs: simplify releases and remove roadmap + + + + + +## [17.8.1](https://github.com/conventional-changelog/commitlint/compare/v17.8.0...v17.8.1) (2023-10-20) **Note:** Version bump only for package @commitlint/to-lines @@ -127,117 +176,184 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) +# [17.4.0](https://github.com/conventional-changelog/commitlint/compare/v17.3.0...v17.4.0) (2023-01-04) **Note:** Version bump only for package @commitlint/to-lines +# [17.0.0](https://github.com/conventional-changelog/commitlint/compare/v16.3.0...v17.0.0) (2022-05-16) +- chore!: minimum node version v14 (#3128) ([ac5f9b4](https://github.com/conventional-changelog/commitlint/commit/ac5f9b47a9e3cd5c9d58b14da0feb426f06b1ef9)), closes [#3128](https://github.com/conventional-changelog/commitlint/issues/3128) +### BREAKING CHANGES +- drop node v12 support -# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) +- chore: rename circleci windows job + +node version is not defned by the name anyways (i think) + +## [16.2.1](https://github.com/conventional-changelog/commitlint/compare/v16.2.0...v16.2.1) (2022-02-13) **Note:** Version bump only for package @commitlint/to-lines +# [16.0.0](https://github.com/conventional-changelog/commitlint/compare/v15.0.0...v16.0.0) (2021-12-26) +**Note:** Version bump only for package @commitlint/to-lines +# [15.0.0](https://github.com/conventional-changelog/commitlint/compare/v14.2.0...v15.0.0) (2021-11-17) +**Note:** Version bump only for package @commitlint/to-lines -# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) +# [14.0.0](https://github.com/conventional-changelog/commitlint/compare/v13.2.1...v14.0.0) (2021-10-26) **Note:** Version bump only for package @commitlint/to-lines +# [13.2.0](https://github.com/conventional-changelog/commitlint/compare/v13.1.0...v13.2.0) (2021-09-28) +**Note:** Version bump only for package @commitlint/to-lines +# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) +- chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) -# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) +### BREAKING CHANGES + +- minimum node version is 12 + +## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) **Note:** Version bump only for package @commitlint/to-lines +## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) + +**Note:** Version bump only for package @commitlint/to-lines +## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) +**Note:** Version bump only for package @commitlint/to-lines +# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) -<a name="7.5.0"></a> -# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) +**Note:** Version bump only for package @commitlint/to-lines +# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) -### Bug Fixes +**Note:** Version bump only for package @commitlint/to-lines -* replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) +# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) +- refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) +### BREAKING CHANGES +- remove node 8 from circle-ci checks -<a name="7.3.1"></a> -## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) +also remove node 13 because we do not support experimental versions +- docs: update node v10 to latest LTS 10 version +Co-authored-by: Cedric van Putten <me@bycedric.com> +Co-authored-by: Cedric van Putten <me@bycedric.com> + +## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) **Note:** Version bump only for package @commitlint/to-lines -<a name="7.3.0"></a> -# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) +## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) +**Note:** Version bump only for package @commitlint/to-lines +# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) +**Note:** Version bump only for package @commitlint/to-lines + +## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) **Note:** Version bump only for package @commitlint/to-lines -<a name="7.1.2"></a> -## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) +# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) +**Note:** Version bump only for package @commitlint/to-lines +## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) +**Note:** Version bump only for package @commitlint/to-lines + +# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) **Note:** Version bump only for package @commitlint/to-lines -<a name="6.1.1"></a> -## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) +# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) +**Note:** Version bump only for package @commitlint/to-lines +# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) +**Note:** Version bump only for package @commitlint/to-lines + +# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) **Note:** Version bump only for package @commitlint/to-lines -<a name="6.1.0"></a> -# [6.1.0](https://github.com/conventional-changelog/commitlint/compare/v6.0.5...v6.1.0) (2018-02-03) +<a name="7.5.0"></a> + +# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) +### Bug Fixes +- replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) +<a name="7.3.1"></a> + +## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) **Note:** Version bump only for package @commitlint/to-lines -<a name="6.0.4"></a> -## [6.0.4](https://github.com/conventional-changelog/commitlint/compare/v6.0.3...v6.0.4) (2018-01-31) +<a name="7.3.0"></a> +# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) +**Note:** Version bump only for package @commitlint/to-lines +<a name="7.1.2"></a> + +## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) **Note:** Version bump only for package @commitlint/to-lines -<a name="6.0.3"></a> -## [6.0.3](https://github.com/conventional-changelog/commitlint/compare/v6.0.2...v6.0.3) (2018-01-31) +<a name="6.1.1"></a> +## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) +**Note:** Version bump only for package @commitlint/to-lines +<a name="6.1.0"></a> + +# [6.1.0](https://github.com/conventional-changelog/commitlint/compare/v6.0.5...v6.1.0) (2018-02-03) **Note:** Version bump only for package @commitlint/to-lines -<a name="6.0.2"></a> -## [6.0.2](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.2) (2018-01-12) +<a name="6.0.4"></a> +## [6.0.4](https://github.com/conventional-changelog/commitlint/compare/v6.0.3...v6.0.4) (2018-01-31) + +**Note:** Version bump only for package @commitlint/to-lines +<a name="6.0.3"></a> +## [6.0.3](https://github.com/conventional-changelog/commitlint/compare/v6.0.2...v6.0.3) (2018-01-31) **Note:** Version bump only for package @commitlint/to-lines -<a name="6.0.0"></a> -# [6.0.0](https://github.com/conventional-changelog/commitlint/compare/v5.2.6...v6.0.0) (2018-01-09) +<a name="6.0.2"></a> +## [6.0.2](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.2) (2018-01-12) +**Note:** Version bump only for package @commitlint/to-lines + +<a name="6.0.0"></a> +# [6.0.0](https://github.com/conventional-changelog/commitlint/compare/v5.2.6...v6.0.0) (2018-01-09) **Note:** Version bump only for package @commitlint/to-lines diff --git a/@commitlint/to-lines/package.json b/@commitlint/to-lines/package.json index 0d8dface9d..cf4b62751d 100644 --- a/@commitlint/to-lines/package.json +++ b/@commitlint/to-lines/package.json @@ -1,6 +1,7 @@ { "name": "@commitlint/to-lines", - "version": "13.0.0", + "type": "module", + "version": "20.0.0", "description": "Lint your commit messages", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -12,16 +13,17 @@ "pkg": "pkg-check" }, "engines": { - "node": ">=v12" + "node": ">=v18" }, "repository": { "type": "git", - "url": "https://github.com/conventional-changelog/commitlint.git" + "url": "https://github.com/conventional-changelog/commitlint.git", + "directory": "@commitlint/to-lines" }, "bugs": { "url": "https://github.com/conventional-changelog/commitlint/issues" }, - "homepage": "https://github.com/conventional-changelog/commitlint#readme", + "homepage": "https://commitlint.js.org/", "keywords": [ "conventional-changelog", "commitlint", @@ -34,7 +36,7 @@ }, "license": "MIT", "devDependencies": { - "@commitlint/utils": "^13.0.0" + "@commitlint/utils": "^20.0.0" }, - "gitHead": "d829bf6260304ca8d6811f329fcdd1b6c50e9749" + "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" } diff --git a/@commitlint/to-lines/src/index.test.ts b/@commitlint/to-lines/src/index.test.ts index 6efc3aea8c..8df9e30d52 100644 --- a/@commitlint/to-lines/src/index.test.ts +++ b/@commitlint/to-lines/src/index.test.ts @@ -1,25 +1,27 @@ -import toLines from '.'; +import { test, expect } from "vitest"; -test('should return an array for empty input', () => { +import toLines from "./index.js"; + +test("should return an array for empty input", () => { expect((toLines as () => string[])()).toStrictEqual([]); }); -test('should return an array for null input', () => { +test("should return an array for null input", () => { expect((toLines as (input: any) => string[])(null)).toStrictEqual([]); }); -test('should return an array for empty string input', () => { - expect(toLines('')).toStrictEqual(['']); +test("should return an array for empty string input", () => { + expect(toLines("")).toStrictEqual([""]); }); -test('should split LF newlines', () => { - expect(toLines('some\nweird\ntext')).toStrictEqual(['some', 'weird', 'text']); +test("should split LF newlines", () => { + expect(toLines("some\nweird\ntext")).toStrictEqual(["some", "weird", "text"]); }); -test('should split CR+LF newlines', () => { - expect(toLines('some\r\nweird\r\ntext')).toStrictEqual([ - 'some', - 'weird', - 'text', +test("should split CR+LF newlines", () => { + expect(toLines("some\r\nweird\r\ntext")).toStrictEqual([ + "some", + "weird", + "text", ]); }); diff --git a/@commitlint/to-lines/src/index.ts b/@commitlint/to-lines/src/index.ts index 1f29d0d5b3..ccc1d1b7d2 100644 --- a/@commitlint/to-lines/src/index.ts +++ b/@commitlint/to-lines/src/index.ts @@ -1,5 +1,5 @@ -export default function toLines(input: string): string[] { - if (typeof input !== 'string') { +export default function toLines(input?: string | null): string[] { + if (typeof input !== "string") { return []; } diff --git a/@commitlint/top-level/CHANGELOG.md b/@commitlint/top-level/CHANGELOG.md index c0da0ed373..326a0ef33a 100644 --- a/@commitlint/top-level/CHANGELOG.md +++ b/@commitlint/top-level/CHANGELOG.md @@ -3,29 +3,34 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. -# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) +**Note:** Version bump only for package @commitlint/top-level -* chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) -### BREAKING CHANGES -* minimum node version is 12 +## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) +**Note:** Version bump only for package @commitlint/top-level -## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) -**Note:** Version bump only for package @commitlint/top-level +# [19.8.0](https://github.com/conventional-changelog/commitlint/compare/v19.7.1...v19.8.0) (2025-03-07) + + +### Performance Improvements + +* use `node:` prefix to bypass require.cache call for builtins ([#4302](https://github.com/conventional-changelog/commitlint/issues/4302)) ([0cd8f41](https://github.com/conventional-changelog/commitlint/commit/0cd8f410573fe11383f788b1ceb7e0946143591d)) -## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) + +# [19.5.0](https://github.com/conventional-changelog/commitlint/compare/v19.4.1...v19.5.0) (2024-09-11) **Note:** Version bump only for package @commitlint/top-level @@ -33,58 +38,70 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) +# [19.0.0](https://github.com/conventional-changelog/commitlint/compare/v18.6.2...v19.0.0) (2024-02-27) -**Note:** Version bump only for package @commitlint/top-level +* feat!: migrate to pure ESM (#3850) ([3423735](https://github.com/conventional-changelog/commitlint/commit/342373559bdf7c783c4ef37ff05dc38a5f681159)), closes [#3850](https://github.com/conventional-changelog/commitlint/issues/3850) +### Reverts +* Revert "chore!: minimum node version v20" ([2816783](https://github.com/conventional-changelog/commitlint/commit/2816783d00e7eb967de3ac9347c2fc43dc8b94fa)) -# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) -**Note:** Version bump only for package @commitlint/top-level +### BREAKING CHANGES +* migrate to pure ESM +* feat: migrate to pure ESM +* chore: update snapshot +* fix: load `parserPreset` with another `await` -# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) +* test: migrate to vitest -**Note:** Version bump only for package @commitlint/top-level +* test: remove no replacement `--runInBand` test-ci script +* chore: fix code reviews +* refactor(load): rewrite resolve logic +* fix(config-nx-scopes): fix syntax error +* feat(resolve-extends): add resolveFrom and loadParserPreset -# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) +* feat(load): use resolveFrom and loadParserPreset from resolve-extends +* test: include only @commitlint/* packages src in coverage -### Bug Fixes +* test: explicit import vitest utilities -* update dependency find-up to v5 ([#2060](https://github.com/conventional-changelog/commitlint/issues/2060)) ([25d42f4](https://github.com/conventional-changelog/commitlint/commit/25d42f4179396bdfbfc622a401d8ca8877102286)) +* test: remove @jest/globals from dependencies +* fix(resolve-extends): `resolveFrom` output should be platform aware -* refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) +* test: restore NO_COLOR to test script +* chore: fix linting issues -### BREAKING CHANGES +* fix: should use fileURLToPath instead of pathname for Windows compatibility -* remove node 8 from circle-ci checks +* Apply suggestions from code review -also remove node 13 because we do not support experimental versions +* fix: should reuse `cli` instead call `yargs()` -* docs: update node v10 to latest LTS 10 version +* feat(cli): set terminalWidth as wrap to avoid work break on help -Co-authored-by: Cedric van Putten <me@bycedric.com> +* Update .eslintrc.cjs -Co-authored-by: Cedric van Putten <me@bycedric.com> +* feat: migrate @commitlint/config-conventional to pure ESM -## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) +## [18.6.1](https://github.com/conventional-changelog/commitlint/compare/v18.6.0...v18.6.1) (2024-02-13) **Note:** Version bump only for package @commitlint/top-level @@ -92,7 +109,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) +## [18.4.4](https://github.com/conventional-changelog/commitlint/compare/v18.4.3...v18.4.4) (2024-01-04) **Note:** Version bump only for package @commitlint/top-level @@ -100,7 +117,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) +## [18.4.3](https://github.com/conventional-changelog/commitlint/compare/v18.4.2...v18.4.3) (2023-11-21) **Note:** Version bump only for package @commitlint/top-level @@ -108,7 +125,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) +# [18.4.0](https://github.com/conventional-changelog/commitlint/compare/v18.3.0...v18.4.0) (2023-11-10) **Note:** Version bump only for package @commitlint/top-level @@ -116,7 +133,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) +# [18.1.0](https://github.com/conventional-changelog/commitlint/compare/v18.0.0...v18.1.0) (2023-10-25) **Note:** Version bump only for package @commitlint/top-level @@ -124,15 +141,37 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) +# [18.0.0](https://github.com/conventional-changelog/commitlint/compare/v17.8.1...v18.0.0) (2023-10-20) -**Note:** Version bump only for package @commitlint/top-level +* chore!: minimum node version v18 (#3644) ([5b4aeaf](https://github.com/conventional-changelog/commitlint/commit/5b4aeaf4f01c2726a7bc8631a23bb34c849baad2)), closes [#3644](https://github.com/conventional-changelog/commitlint/issues/3644) +### BREAKING CHANGES +* drop node v14 and v16 support -# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) +* chore: remove unused types + +* docs: prepare node update and new release + +* chore!: minimum TS version v5 +* drop TS v4 support + +* ci: remove node v14/16 checks + +* chore: adjust node types to minimal supported version + +* chore!: further major versions of other deps +* upgrade conventional-changelog-conventionalcommits, conventional-commits-parser, conventional-changelog-atom, + +* docs: simplify releases and remove roadmap + + + + + +## [17.8.1](https://github.com/conventional-changelog/commitlint/compare/v17.8.0...v17.8.1) (2023-10-20) **Note:** Version bump only for package @commitlint/top-level @@ -140,120 +179,196 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) +# [17.4.0](https://github.com/conventional-changelog/commitlint/compare/v17.3.0...v17.4.0) (2023-01-04) **Note:** Version bump only for package @commitlint/top-level +# [17.0.0](https://github.com/conventional-changelog/commitlint/compare/v16.3.0...v17.0.0) (2022-05-16) +- chore!: minimum node version v14 (#3128) ([ac5f9b4](https://github.com/conventional-changelog/commitlint/commit/ac5f9b47a9e3cd5c9d58b14da0feb426f06b1ef9)), closes [#3128](https://github.com/conventional-changelog/commitlint/issues/3128) +### BREAKING CHANGES +- drop node v12 support -# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) +- chore: rename circleci windows job + +node version is not defned by the name anyways (i think) + +## [16.2.1](https://github.com/conventional-changelog/commitlint/compare/v16.2.0...v16.2.1) (2022-02-13) **Note:** Version bump only for package @commitlint/top-level +# [16.0.0](https://github.com/conventional-changelog/commitlint/compare/v15.0.0...v16.0.0) (2021-12-26) +**Note:** Version bump only for package @commitlint/top-level +# [15.0.0](https://github.com/conventional-changelog/commitlint/compare/v14.2.0...v15.0.0) (2021-11-17) +**Note:** Version bump only for package @commitlint/top-level -# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) +# [14.0.0](https://github.com/conventional-changelog/commitlint/compare/v13.2.1...v14.0.0) (2021-10-26) **Note:** Version bump only for package @commitlint/top-level +# [13.2.0](https://github.com/conventional-changelog/commitlint/compare/v13.1.0...v13.2.0) (2021-09-28) +**Note:** Version bump only for package @commitlint/top-level +# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) +- chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) -<a name="7.5.0"></a> -# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) +### BREAKING CHANGES +- minimum node version is 12 -### Bug Fixes +## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) -* replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) +**Note:** Version bump only for package @commitlint/top-level +## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) +**Note:** Version bump only for package @commitlint/top-level +## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) -<a name="7.3.1"></a> -## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) +**Note:** Version bump only for package @commitlint/top-level +# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) +**Note:** Version bump only for package @commitlint/top-level +# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) **Note:** Version bump only for package @commitlint/top-level -<a name="7.3.0"></a> -# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) +# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) + +### Bug Fixes +- update dependency find-up to v5 ([#2060](https://github.com/conventional-changelog/commitlint/issues/2060)) ([25d42f4](https://github.com/conventional-changelog/commitlint/commit/25d42f4179396bdfbfc622a401d8ca8877102286)) +- refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) +### BREAKING CHANGES + +- remove node 8 from circle-ci checks + +also remove node 13 because we do not support experimental versions + +- docs: update node v10 to latest LTS 10 version + +Co-authored-by: Cedric van Putten <me@bycedric.com> + +Co-authored-by: Cedric van Putten <me@bycedric.com> + +## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) **Note:** Version bump only for package @commitlint/top-level -<a name="7.1.2"></a> -## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) +## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) +**Note:** Version bump only for package @commitlint/top-level +# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) +**Note:** Version bump only for package @commitlint/top-level + +## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) **Note:** Version bump only for package @commitlint/top-level -<a name="6.1.1"></a> -## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) +# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) +**Note:** Version bump only for package @commitlint/top-level +## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) +**Note:** Version bump only for package @commitlint/top-level + +# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) **Note:** Version bump only for package @commitlint/top-level -<a name="6.1.0"></a> -# [6.1.0](https://github.com/conventional-changelog/commitlint/compare/v6.0.5...v6.1.0) (2018-02-03) +# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) +**Note:** Version bump only for package @commitlint/top-level +# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) +**Note:** Version bump only for package @commitlint/top-level + +# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) **Note:** Version bump only for package @commitlint/top-level -<a name="6.0.5"></a> -## [6.0.5](https://github.com/conventional-changelog/commitlint/compare/v6.0.4...v6.0.5) (2018-01-31) +<a name="7.5.0"></a> +# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) ### Bug Fixes -* remove utils from prod dependencies ([4fb858a](https://github.com/conventional-changelog/commitlint/commit/4fb858a)) +- replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) +<a name="7.3.1"></a> +## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) +**Note:** Version bump only for package @commitlint/top-level -<a name="6.0.4"></a> -## [6.0.4](https://github.com/conventional-changelog/commitlint/compare/v6.0.3...v6.0.4) (2018-01-31) +<a name="7.3.0"></a> +# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) + +**Note:** Version bump only for package @commitlint/top-level +<a name="7.1.2"></a> +## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) **Note:** Version bump only for package @commitlint/top-level -<a name="6.0.3"></a> -## [6.0.3](https://github.com/conventional-changelog/commitlint/compare/v6.0.2...v6.0.3) (2018-01-31) +<a name="6.1.1"></a> +## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) +**Note:** Version bump only for package @commitlint/top-level +<a name="6.1.0"></a> + +# [6.1.0](https://github.com/conventional-changelog/commitlint/compare/v6.0.5...v6.1.0) (2018-02-03) **Note:** Version bump only for package @commitlint/top-level -<a name="6.0.2"></a> -## [6.0.2](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.2) (2018-01-12) +<a name="6.0.5"></a> + +## [6.0.5](https://github.com/conventional-changelog/commitlint/compare/v6.0.4...v6.0.5) (2018-01-31) +### Bug Fixes +- remove utils from prod dependencies ([4fb858a](https://github.com/conventional-changelog/commitlint/commit/4fb858a)) +<a name="6.0.4"></a> + +## [6.0.4](https://github.com/conventional-changelog/commitlint/compare/v6.0.3...v6.0.4) (2018-01-31) **Note:** Version bump only for package @commitlint/top-level -<a name="6.0.0"></a> -# [6.0.0](https://github.com/conventional-changelog/commitlint/compare/v5.2.6...v6.0.0) (2018-01-09) +<a name="6.0.3"></a> +## [6.0.3](https://github.com/conventional-changelog/commitlint/compare/v6.0.2...v6.0.3) (2018-01-31) +**Note:** Version bump only for package @commitlint/top-level +<a name="6.0.2"></a> + +## [6.0.2](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.2) (2018-01-12) + +**Note:** Version bump only for package @commitlint/top-level + +<a name="6.0.0"></a> + +# [6.0.0](https://github.com/conventional-changelog/commitlint/compare/v5.2.6...v6.0.0) (2018-01-09) **Note:** Version bump only for package @commitlint/top-level diff --git a/@commitlint/top-level/package.json b/@commitlint/top-level/package.json index 5736039d8b..4c48c1557a 100644 --- a/@commitlint/top-level/package.json +++ b/@commitlint/top-level/package.json @@ -1,6 +1,7 @@ { "name": "@commitlint/top-level", - "version": "13.0.0", + "type": "module", + "version": "20.0.0", "description": "Lint your commit messages", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -12,16 +13,17 @@ "pkg": "pkg-check" }, "engines": { - "node": ">=v12" + "node": ">=v18" }, "repository": { "type": "git", - "url": "https://github.com/conventional-changelog/commitlint.git" + "url": "https://github.com/conventional-changelog/commitlint.git", + "directory": "@commitlint/top-level" }, "bugs": { "url": "https://github.com/conventional-changelog/commitlint/issues" }, - "homepage": "https://github.com/conventional-changelog/commitlint#readme", + "homepage": "https://commitlint.js.org/", "keywords": [ "conventional-changelog", "commitlint", @@ -34,10 +36,10 @@ }, "license": "MIT", "devDependencies": { - "@commitlint/utils": "^13.0.0" + "@commitlint/utils": "^20.0.0" }, "dependencies": { - "find-up": "^5.0.0" + "find-up": "^7.0.0" }, - "gitHead": "d829bf6260304ca8d6811f329fcdd1b6c50e9749" + "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" } diff --git a/@commitlint/top-level/src/index.ts b/@commitlint/top-level/src/index.ts index 560aa982b2..4996d4f8ee 100644 --- a/@commitlint/top-level/src/index.ts +++ b/@commitlint/top-level/src/index.ts @@ -1,5 +1,5 @@ -import path from 'path'; -import up from 'find-up'; +import path from "node:path"; +import { findUp } from "find-up"; export default toplevel; @@ -9,19 +9,19 @@ export default toplevel; async function toplevel(cwd?: string) { const found = await searchDotGit(cwd); - if (typeof found !== 'string') { + if (typeof found !== "string") { return found; } - return path.join(found, '..'); + return path.join(found, ".."); } /** * Search .git, the '.git' can be a file(submodule), also can be a directory(normal) */ async function searchDotGit(cwd?: string) { - const foundFile = await up('.git', {cwd, type: 'file'}); - const foundDir = await up('.git', {cwd, type: 'directory'}); + const foundFile = await findUp(".git", { cwd, type: "file" }); + const foundDir = await findUp(".git", { cwd, type: "directory" }); return foundFile || foundDir; } diff --git a/@commitlint/travis-cli/CHANGELOG.md b/@commitlint/travis-cli/CHANGELOG.md index 90c4082eab..579b28545c 100644 --- a/@commitlint/travis-cli/CHANGELOG.md +++ b/@commitlint/travis-cli/CHANGELOG.md @@ -3,7 +3,7 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. -# [13.1.0](https://github.com/conventional-changelog/commitlint/compare/v13.0.0...v13.1.0) (2021-07-24) +# [20.1.0](https://github.com/conventional-changelog/commitlint/compare/v20.0.0...v20.1.0) (2025-09-30) **Note:** Version bump only for package @commitlint/travis-cli @@ -11,21 +11,37 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) +**Note:** Version bump only for package @commitlint/travis-cli -* chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) -### BREAKING CHANGES -* minimum node version is 12 +## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) +### Bug Fixes + +* update dependency tinyexec to v1 ([#4332](https://github.com/conventional-changelog/commitlint/issues/4332)) ([e49449f](https://github.com/conventional-changelog/commitlint/commit/e49449fa9452069cdbf194f94d536194d362a299)) + + + + + +# [19.8.0](https://github.com/conventional-changelog/commitlint/compare/v19.7.1...v19.8.0) (2025-03-07) + + +### Performance Improvements + +* use `node:` prefix to bypass require.cache call for builtins ([#4302](https://github.com/conventional-changelog/commitlint/issues/4302)) ([0cd8f41](https://github.com/conventional-changelog/commitlint/commit/0cd8f410573fe11383f788b1ceb7e0946143591d)) -## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) + + + +## [19.7.1](https://github.com/conventional-changelog/commitlint/compare/v19.7.0...v19.7.1) (2025-02-02) **Note:** Version bump only for package @commitlint/travis-cli @@ -33,7 +49,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.1.2](https://github.com/conventional-changelog/commitlint/compare/v12.1.1...v12.1.2) (2021-04-29) +## [19.6.1](https://github.com/conventional-changelog/commitlint/compare/v19.6.0...v19.6.1) (2024-12-15) **Note:** Version bump only for package @commitlint/travis-cli @@ -41,7 +57,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) +# [19.6.0](https://github.com/conventional-changelog/commitlint/compare/v19.5.0...v19.6.0) (2024-11-19) **Note:** Version bump only for package @commitlint/travis-cli @@ -49,7 +65,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [12.1.0](https://github.com/conventional-changelog/commitlint/compare/v12.0.1...v12.1.0) (2021-03-06) +# [19.5.0](https://github.com/conventional-changelog/commitlint/compare/v19.4.1...v19.5.0) (2024-09-11) **Note:** Version bump only for package @commitlint/travis-cli @@ -57,7 +73,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) +## [19.4.1](https://github.com/conventional-changelog/commitlint/compare/v19.4.0...v19.4.1) (2024-08-28) **Note:** Version bump only for package @commitlint/travis-cli @@ -65,18 +81,23 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) +# [19.4.0](https://github.com/conventional-changelog/commitlint/compare/v19.3.1...v19.4.0) (2024-08-07) +**Note:** Version bump only for package @commitlint/travis-cli -### Bug Fixes -* update dependency execa to v5 ([#2341](https://github.com/conventional-changelog/commitlint/issues/2341)) ([f349df9](https://github.com/conventional-changelog/commitlint/commit/f349df90f08096a9bcad46b5e55b411aac327a24)) +# [19.3.0](https://github.com/conventional-changelog/commitlint/compare/v19.2.2...v19.3.0) (2024-04-23) + +**Note:** Version bump only for package @commitlint/travis-cli + -# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) + + +## [19.2.2](https://github.com/conventional-changelog/commitlint/compare/v19.2.1...v19.2.2) (2024-04-14) **Note:** Version bump only for package @commitlint/travis-cli @@ -84,34 +105,121 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) +## [19.2.1](https://github.com/conventional-changelog/commitlint/compare/v19.2.0...v19.2.1) (2024-03-19) + +**Note:** Version bump only for package @commitlint/travis-cli + + + + + +# [19.2.0](https://github.com/conventional-changelog/commitlint/compare/v19.1.0...v19.2.0) (2024-03-15) + +**Note:** Version bump only for package @commitlint/travis-cli + + + + + +# [19.1.0](https://github.com/conventional-changelog/commitlint/compare/v19.0.3...v19.1.0) (2024-03-12) ### Bug Fixes -* update dependency execa to v4 ([#1936](https://github.com/conventional-changelog/commitlint/issues/1936)) ([8efb441](https://github.com/conventional-changelog/commitlint/commit/8efb44193058d286f7325327a6d33936b273ec91)) +* add `main` and `types` keys in package.json ([#3953](https://github.com/conventional-changelog/commitlint/issues/3953)) ([7ddaad4](https://github.com/conventional-changelog/commitlint/commit/7ddaad4bc4e71afe89f25cc02d3e19beba1ce6cd)) + + + + + +## [19.0.3](https://github.com/conventional-changelog/commitlint/compare/v19.0.2...v19.0.3) (2024-02-28) + +**Note:** Version bump only for package @commitlint/travis-cli + + -* refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) + +## [19.0.2](https://github.com/conventional-changelog/commitlint/compare/v19.0.1...v19.0.2) (2024-02-28) + +**Note:** Version bump only for package @commitlint/travis-cli + + + + + +## [19.0.1](https://github.com/conventional-changelog/commitlint/compare/v19.0.0...v19.0.1) (2024-02-27) + +**Note:** Version bump only for package @commitlint/travis-cli + + + + + +# [19.0.0](https://github.com/conventional-changelog/commitlint/compare/v18.6.2...v19.0.0) (2024-02-27) + + +* feat!: migrate to pure ESM (#3850) ([3423735](https://github.com/conventional-changelog/commitlint/commit/342373559bdf7c783c4ef37ff05dc38a5f681159)), closes [#3850](https://github.com/conventional-changelog/commitlint/issues/3850) + + +### Reverts + +* Revert "chore!: minimum node version v20" ([2816783](https://github.com/conventional-changelog/commitlint/commit/2816783d00e7eb967de3ac9347c2fc43dc8b94fa)) ### BREAKING CHANGES -* remove node 8 from circle-ci checks +* migrate to pure ESM -also remove node 13 because we do not support experimental versions +* feat: migrate to pure ESM -* docs: update node v10 to latest LTS 10 version +* chore: update snapshot -Co-authored-by: Cedric van Putten <me@bycedric.com> +* fix: load `parserPreset` with another `await` -Co-authored-by: Cedric van Putten <me@bycedric.com> +* test: migrate to vitest +* test: remove no replacement `--runInBand` test-ci script +* chore: fix code reviews +* refactor(load): rewrite resolve logic +* fix(config-nx-scopes): fix syntax error -## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) +* feat(resolve-extends): add resolveFrom and loadParserPreset + +* feat(load): use resolveFrom and loadParserPreset from resolve-extends + +* test: include only @commitlint/* packages src in coverage + +* test: explicit import vitest utilities + +* test: remove @jest/globals from dependencies + +* fix(resolve-extends): `resolveFrom` output should be platform aware + +* test: restore NO_COLOR to test script + +* chore: fix linting issues + +* fix: should use fileURLToPath instead of pathname for Windows compatibility + +* Apply suggestions from code review + +* fix: should reuse `cli` instead call `yargs()` + +* feat(cli): set terminalWidth as wrap to avoid work break on help + +* Update .eslintrc.cjs + +* feat: migrate @commitlint/config-conventional to pure ESM + + + + + +## [18.6.1](https://github.com/conventional-changelog/commitlint/compare/v18.6.0...v18.6.1) (2024-02-13) **Note:** Version bump only for package @commitlint/travis-cli @@ -119,7 +227,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) +# [18.6.0](https://github.com/conventional-changelog/commitlint/compare/v18.5.1...v18.6.0) (2024-01-25) **Note:** Version bump only for package @commitlint/travis-cli @@ -127,7 +235,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) +# [18.5.0](https://github.com/conventional-changelog/commitlint/compare/v18.4.4...v18.5.0) (2024-01-22) **Note:** Version bump only for package @commitlint/travis-cli @@ -135,29 +243,31 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) +## [18.4.4](https://github.com/conventional-changelog/commitlint/compare/v18.4.3...v18.4.4) (2024-01-04) + +**Note:** Version bump only for package @commitlint/travis-cli -### Bug Fixes -* add missing @babel/runtime dep [#1738](https://github.com/conventional-changelog/commitlint/issues/1738) ([#1754](https://github.com/conventional-changelog/commitlint/issues/1754)) ([09afcd6](https://github.com/conventional-changelog/commitlint/commit/09afcd647a2c1d00538cf1c970e3790d936111f8)) +## [18.4.3](https://github.com/conventional-changelog/commitlint/compare/v18.4.2...v18.4.3) (2023-11-21) +**Note:** Version bump only for package @commitlint/travis-cli -# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) -### Features -* passdown argv to lint command ([#891](https://github.com/conventional-changelog/commitlint/issues/891)) ([c49a57c](https://github.com/conventional-changelog/commitlint/commit/c49a57c77767b8213d565df3a8bbcd7369f36641)) +## [18.4.2](https://github.com/conventional-changelog/commitlint/compare/v18.4.1...v18.4.2) (2023-11-16) +**Note:** Version bump only for package @commitlint/travis-cli -## [8.3.5](https://github.com/conventional-changelog/commitlint/compare/v8.3.4...v8.3.5) (2020-01-15) + +## [18.4.1](https://github.com/conventional-changelog/commitlint/compare/v18.4.0...v18.4.1) (2023-11-12) **Note:** Version bump only for package @commitlint/travis-cli @@ -165,7 +275,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) +# [18.4.0](https://github.com/conventional-changelog/commitlint/compare/v18.3.0...v18.4.0) (2023-11-10) **Note:** Version bump only for package @commitlint/travis-cli @@ -173,7 +283,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [8.3.1](https://github.com/conventional-changelog/commitlint/compare/v8.3.0...v8.3.1) (2019-10-16) +# [18.2.0](https://github.com/conventional-changelog/commitlint/compare/v18.1.0...v18.2.0) (2023-10-26) **Note:** Version bump only for package @commitlint/travis-cli @@ -181,7 +291,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) +# [18.1.0](https://github.com/conventional-changelog/commitlint/compare/v18.0.0...v18.1.0) (2023-10-25) **Note:** Version bump only for package @commitlint/travis-cli @@ -189,7 +299,37 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) +# [18.0.0](https://github.com/conventional-changelog/commitlint/compare/v17.8.1...v18.0.0) (2023-10-20) + + +* chore!: minimum node version v18 (#3644) ([5b4aeaf](https://github.com/conventional-changelog/commitlint/commit/5b4aeaf4f01c2726a7bc8631a23bb34c849baad2)), closes [#3644](https://github.com/conventional-changelog/commitlint/issues/3644) + + +### BREAKING CHANGES + +* drop node v14 and v16 support + +* chore: remove unused types + +* docs: prepare node update and new release + +* chore!: minimum TS version v5 +* drop TS v4 support + +* ci: remove node v14/16 checks + +* chore: adjust node types to minimal supported version + +* chore!: further major versions of other deps +* upgrade conventional-changelog-conventionalcommits, conventional-commits-parser, conventional-changelog-atom, + +* docs: simplify releases and remove roadmap + + + + + +## [17.8.1](https://github.com/conventional-changelog/commitlint/compare/v17.8.0...v17.8.1) (2023-10-20) **Note:** Version bump only for package @commitlint/travis-cli @@ -197,7 +337,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) +# [17.8.0](https://github.com/conventional-changelog/commitlint/compare/v17.7.2...v17.8.0) (2023-10-14) **Note:** Version bump only for package @commitlint/travis-cli @@ -205,7 +345,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [7.6.1](https://github.com/conventional-changelog/commitlint/compare/v7.6.0...v7.6.1) (2019-05-09) +## [17.7.2](https://github.com/conventional-changelog/commitlint/compare/v17.7.1...v17.7.2) (2023-09-28) **Note:** Version bump only for package @commitlint/travis-cli @@ -213,7 +353,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) +## [17.7.1](https://github.com/conventional-changelog/commitlint/compare/v17.7.0...v17.7.1) (2023-08-10) **Note:** Version bump only for package @commitlint/travis-cli @@ -221,7 +361,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [7.5.2](https://github.com/conventional-changelog/commitlint/compare/v7.5.1...v7.5.2) (2019-02-11) +# [17.7.0](https://github.com/conventional-changelog/commitlint/compare/v17.6.7...v17.7.0) (2023-08-09) **Note:** Version bump only for package @commitlint/travis-cli @@ -229,7 +369,7 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [7.5.1](https://github.com/conventional-changelog/commitlint/compare/v7.5.0...v7.5.1) (2019-02-09) +## [17.6.7](https://github.com/conventional-changelog/commitlint/compare/v17.6.6...v17.6.7) (2023-07-19) **Note:** Version bump only for package @commitlint/travis-cli @@ -237,230 +377,492 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -<a name="7.5.0"></a> -# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) +## [17.6.6](https://github.com/conventional-changelog/commitlint/compare/v17.6.5...v17.6.6) (2023-06-24) +**Note:** Version bump only for package @commitlint/travis-cli -### Bug Fixes -* replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) +## [17.6.5](https://github.com/conventional-changelog/commitlint/compare/v17.6.4...v17.6.5) (2023-05-30) + +**Note:** Version bump only for package @commitlint/travis-cli -<a name="7.4.0"></a> -# [7.4.0](https://github.com/conventional-changelog/commitlint/compare/v7.3.2...v7.4.0) (2019-01-27) +## [17.6.3](https://github.com/conventional-changelog/commitlint/compare/v17.6.2...v17.6.3) (2023-05-04) + **Note:** Version bump only for package @commitlint/travis-cli -<a name="7.3.2"></a> -## [7.3.2](https://github.com/conventional-changelog/commitlint/compare/v7.3.1...v7.3.2) (2019-01-15) +## [17.6.1](https://github.com/conventional-changelog/commitlint/compare/v17.6.0...v17.6.1) (2023-04-14) + **Note:** Version bump only for package @commitlint/travis-cli -<a name="7.3.1"></a> -## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) +# [17.6.0](https://github.com/conventional-changelog/commitlint/compare/v17.5.1...v17.6.0) (2023-04-13) + **Note:** Version bump only for package @commitlint/travis-cli -<a name="7.3.0"></a> -# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) +## [17.5.1](https://github.com/conventional-changelog/commitlint/compare/v17.5.0...v17.5.1) (2023-03-28) + **Note:** Version bump only for package @commitlint/travis-cli -<a name="7.2.1"></a> -## [7.2.1](https://github.com/conventional-changelog/commitlint/compare/v7.2.0...v7.2.1) (2018-10-11) +# [17.5.0](https://github.com/conventional-changelog/commitlint/compare/v17.4.4...v17.5.0) (2023-03-22) + **Note:** Version bump only for package @commitlint/travis-cli -<a name="7.2.0"></a> -# [7.2.0](https://github.com/conventional-changelog/commitlint/compare/v7.1.2...v7.2.0) (2018-10-05) +## [17.4.4](https://github.com/conventional-changelog/commitlint/compare/v17.4.3...v17.4.4) (2023-02-17) + **Note:** Version bump only for package @commitlint/travis-cli -<a name="7.1.2"></a> -## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) +## [17.4.3](https://github.com/conventional-changelog/commitlint/compare/v17.4.2...v17.4.3) (2023-02-13) + **Note:** Version bump only for package @commitlint/travis-cli -<a name="7.1.0"></a> -# [7.1.0](https://github.com/conventional-changelog/commitlint/compare/v7.0.1...v7.1.0) (2018-08-29) +## [17.4.2](https://github.com/conventional-changelog/commitlint/compare/v17.4.1...v17.4.2) (2023-01-12) + **Note:** Version bump only for package @commitlint/travis-cli -<a name="6.2.0"></a> -# [6.2.0](https://github.com/conventional-changelog/commitlint/compare/v6.1.3...v6.2.0) (2018-05-01) +## [17.4.1](https://github.com/conventional-changelog/commitlint/compare/v17.4.0...v17.4.1) (2023-01-09) + **Note:** Version bump only for package @commitlint/travis-cli -<a name="6.1.1"></a> -## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) +# [17.4.0](https://github.com/conventional-changelog/commitlint/compare/v17.3.0...v17.4.0) (2023-01-04) + **Note:** Version bump only for package @commitlint/travis-cli -<a name="6.1.0"></a> -# [6.1.0](https://github.com/conventional-changelog/commitlint/compare/v6.0.5...v6.1.0) (2018-02-03) +# [17.3.0](https://github.com/conventional-changelog/commitlint/compare/v17.2.1...v17.3.0) (2022-11-21) + +**Note:** Version bump only for package @commitlint/travis-cli +# [17.2.0](https://github.com/conventional-changelog/commitlint/compare/v17.1.2...v17.2.0) (2022-10-31) +**Note:** Version bump only for package @commitlint/travis-cli +## [17.1.2](https://github.com/conventional-changelog/commitlint/compare/v17.1.1...v17.1.2) (2022-08-29) **Note:** Version bump only for package @commitlint/travis-cli -<a name="6.0.5"></a> -## [6.0.5](https://github.com/conventional-changelog/commitlint/compare/v6.0.4...v6.0.5) (2018-01-31) +## [17.1.1](https://github.com/conventional-changelog/commitlint/compare/v17.1.0...v17.1.1) (2022-08-27) +**Note:** Version bump only for package @commitlint/travis-cli +# [17.1.0](https://github.com/conventional-changelog/commitlint/compare/v17.0.3...v17.1.0) (2022-08-27) +**Note:** Version bump only for package @commitlint/travis-cli + +## [17.0.3](https://github.com/conventional-changelog/commitlint/compare/v17.0.2...v17.0.3) (2022-06-25) **Note:** Version bump only for package @commitlint/travis-cli -<a name="6.0.4"></a> -## [6.0.4](https://github.com/conventional-changelog/commitlint/compare/v6.0.3...v6.0.4) (2018-01-31) +## [17.0.2](https://github.com/conventional-changelog/commitlint/compare/v17.0.1...v17.0.2) (2022-06-01) +**Note:** Version bump only for package @commitlint/travis-cli + +## [17.0.1](https://github.com/conventional-changelog/commitlint/compare/v17.0.0...v17.0.1) (2022-05-25) +**Note:** Version bump only for package @commitlint/travis-cli +# [17.0.0](https://github.com/conventional-changelog/commitlint/compare/v16.3.0...v17.0.0) (2022-05-16) + +- chore!: minimum node version v14 (#3128) ([ac5f9b4](https://github.com/conventional-changelog/commitlint/commit/ac5f9b47a9e3cd5c9d58b14da0feb426f06b1ef9)), closes [#3128](https://github.com/conventional-changelog/commitlint/issues/3128) + +### BREAKING CHANGES + +- drop node v12 support + +- chore: rename circleci windows job + +node version is not defned by the name anyways (i think) + +# [16.3.0](https://github.com/conventional-changelog/commitlint/compare/v16.2.4...v16.3.0) (2022-05-14) **Note:** Version bump only for package @commitlint/travis-cli -<a name="6.0.3"></a> -## [6.0.3](https://github.com/conventional-changelog/commitlint/compare/v6.0.2...v6.0.3) (2018-01-31) +## [16.2.4](https://github.com/conventional-changelog/commitlint/compare/v16.2.3...v16.2.4) (2022-04-28) +**Note:** Version bump only for package @commitlint/travis-cli +## [16.2.3](https://github.com/conventional-changelog/commitlint/compare/v16.2.2...v16.2.3) (2022-03-16) +**Note:** Version bump only for package @commitlint/travis-cli + +## [16.2.1](https://github.com/conventional-changelog/commitlint/compare/v16.2.0...v16.2.1) (2022-02-13) **Note:** Version bump only for package @commitlint/travis-cli -<a name="6.0.2"></a> -## [6.0.2](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.2) (2018-01-12) +# [16.1.0](https://github.com/conventional-changelog/commitlint/compare/v16.0.3...v16.1.0) (2022-01-20) +**Note:** Version bump only for package @commitlint/travis-cli + +## [16.0.3](https://github.com/conventional-changelog/commitlint/compare/v16.0.2...v16.0.3) (2022-01-19) +**Note:** Version bump only for package @commitlint/travis-cli +## [16.0.2](https://github.com/conventional-changelog/commitlint/compare/v16.0.1...v16.0.2) (2022-01-09) **Note:** Version bump only for package @commitlint/travis-cli -<a name="6.0.1"></a> -## [6.0.1](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.1) (2018-01-09) +## [16.0.1](https://github.com/conventional-changelog/commitlint/compare/v16.0.0...v16.0.1) (2021-12-28) + +**Note:** Version bump only for package @commitlint/travis-cli +# [16.0.0](https://github.com/conventional-changelog/commitlint/compare/v15.0.0...v16.0.0) (2021-12-26) +**Note:** Version bump only for package @commitlint/travis-cli +# [15.0.0](https://github.com/conventional-changelog/commitlint/compare/v14.2.0...v15.0.0) (2021-11-17) **Note:** Version bump only for package @commitlint/travis-cli -<a name="6.0.0"></a> -# [6.0.0](https://github.com/conventional-changelog/commitlint/compare/v5.2.6...v6.0.0) (2018-01-09) +# [14.1.0](https://github.com/conventional-changelog/commitlint/compare/v14.0.0...v14.1.0) (2021-11-01) +**Note:** Version bump only for package @commitlint/travis-cli +# [14.0.0](https://github.com/conventional-changelog/commitlint/compare/v13.2.1...v14.0.0) (2021-10-26) +**Note:** Version bump only for package @commitlint/travis-cli + +## [13.2.1](https://github.com/conventional-changelog/commitlint/compare/v13.2.0...v13.2.1) (2021-10-09) **Note:** Version bump only for package @commitlint/travis-cli -<a name="5.2.6"></a> -## [5.2.6](https://github.com/conventional-changelog/commitlint/compare/v5.2.5...v5.2.6) (2017-12-21) +# [13.2.0](https://github.com/conventional-changelog/commitlint/compare/v13.1.0...v13.2.0) (2021-09-28) + +**Note:** Version bump only for package @commitlint/travis-cli + +# [13.1.0](https://github.com/conventional-changelog/commitlint/compare/v13.0.0...v13.1.0) (2021-07-24) + +**Note:** Version bump only for package @commitlint/travis-cli +# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) + +- chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) +### BREAKING CHANGES +- minimum node version is 12 + +## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) **Note:** Version bump only for package @commitlint/travis-cli -<a name="5.2.5"></a> -## [5.2.5](https://github.com/conventional-changelog/commitlint/compare/v5.2.4...v5.2.5) (2017-12-08) +## [12.1.2](https://github.com/conventional-changelog/commitlint/compare/v12.1.1...v12.1.2) (2021-04-29) + +**Note:** Version bump only for package @commitlint/travis-cli +## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) +**Note:** Version bump only for package @commitlint/travis-cli +# [12.1.0](https://github.com/conventional-changelog/commitlint/compare/v12.0.1...v12.1.0) (2021-03-06) **Note:** Version bump only for package @commitlint/travis-cli -<a name="5.2.4"></a> -## [5.2.4](https://github.com/conventional-changelog/commitlint/compare/v5.2.3...v5.2.4) (2017-12-08) +## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) +**Note:** Version bump only for package @commitlint/travis-cli +# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) +### Bug Fixes + +- update dependency execa to v5 ([#2341](https://github.com/conventional-changelog/commitlint/issues/2341)) ([f349df9](https://github.com/conventional-changelog/commitlint/commit/f349df90f08096a9bcad46b5e55b411aac327a24)) + +# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) **Note:** Version bump only for package @commitlint/travis-cli -<a name="5.2.3"></a> -## [5.2.3](https://github.com/conventional-changelog/commitlint/compare/v5.2.2...v5.2.3) (2017-12-05) +# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) + +### Bug Fixes + +- update dependency execa to v4 ([#1936](https://github.com/conventional-changelog/commitlint/issues/1936)) ([8efb441](https://github.com/conventional-changelog/commitlint/commit/8efb44193058d286f7325327a6d33936b273ec91)) + +- refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) + +### BREAKING CHANGES + +- remove node 8 from circle-ci checks + +also remove node 13 because we do not support experimental versions + +- docs: update node v10 to latest LTS 10 version + +Co-authored-by: Cedric van Putten <me@bycedric.com> + +Co-authored-by: Cedric van Putten <me@bycedric.com> +## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) +**Note:** Version bump only for package @commitlint/travis-cli +## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) **Note:** Version bump only for package @commitlint/travis-cli -<a name="5.2.2"></a> -## [5.2.2](https://github.com/conventional-changelog/commitlint/compare/v5.2.1...v5.2.2) (2017-11-30) +# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) + +**Note:** Version bump only for package @commitlint/travis-cli +## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) ### Bug Fixes -* **travis-cli:** read push commits directly ([9bc56c6](https://github.com/conventional-changelog/commitlint/commit/9bc56c6)) +- add missing @babel/runtime dep [#1738](https://github.com/conventional-changelog/commitlint/issues/1738) ([#1754](https://github.com/conventional-changelog/commitlint/issues/1754)) ([09afcd6](https://github.com/conventional-changelog/commitlint/commit/09afcd647a2c1d00538cf1c970e3790d936111f8)) +# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) +### Features +- passdown argv to lint command ([#891](https://github.com/conventional-changelog/commitlint/issues/891)) ([c49a57c](https://github.com/conventional-changelog/commitlint/commit/c49a57c77767b8213d565df3a8bbcd7369f36641)) -<a name="5.2.1"></a> -## [5.2.1](https://github.com/conventional-changelog/commitlint/compare/v5.2.0...v5.2.1) (2017-11-30) +## [8.3.5](https://github.com/conventional-changelog/commitlint/compare/v8.3.4...v8.3.5) (2020-01-15) + +**Note:** Version bump only for package @commitlint/travis-cli + +## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) + +**Note:** Version bump only for package @commitlint/travis-cli + +## [8.3.1](https://github.com/conventional-changelog/commitlint/compare/v8.3.0...v8.3.1) (2019-10-16) +**Note:** Version bump only for package @commitlint/travis-cli + +# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) + +**Note:** Version bump only for package @commitlint/travis-cli + +# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) + +**Note:** Version bump only for package @commitlint/travis-cli + +# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) + +**Note:** Version bump only for package @commitlint/travis-cli + +## [7.6.1](https://github.com/conventional-changelog/commitlint/compare/v7.6.0...v7.6.1) (2019-05-09) + +**Note:** Version bump only for package @commitlint/travis-cli + +# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) + +**Note:** Version bump only for package @commitlint/travis-cli + +## [7.5.2](https://github.com/conventional-changelog/commitlint/compare/v7.5.1...v7.5.2) (2019-02-11) + +**Note:** Version bump only for package @commitlint/travis-cli + +## [7.5.1](https://github.com/conventional-changelog/commitlint/compare/v7.5.0...v7.5.1) (2019-02-09) + +**Note:** Version bump only for package @commitlint/travis-cli + +<a name="7.5.0"></a> + +# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) ### Bug Fixes -* **travis-cli:** lint ranges only for pr builds ([85b201f](https://github.com/conventional-changelog/commitlint/commit/85b201f)) +- replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) +<a name="7.4.0"></a> +# [7.4.0](https://github.com/conventional-changelog/commitlint/compare/v7.3.2...v7.4.0) (2019-01-27) +**Note:** Version bump only for package @commitlint/travis-cli -<a name="5.2.0"></a> -# [5.2.0](https://github.com/conventional-changelog/commitlint/compare/v5.1.3...v5.2.0) (2017-11-30) +<a name="7.3.2"></a> + +## [7.3.2](https://github.com/conventional-changelog/commitlint/compare/v7.3.1...v7.3.2) (2019-01-15) + +**Note:** Version bump only for package @commitlint/travis-cli + +<a name="7.3.1"></a> + +## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) +**Note:** Version bump only for package @commitlint/travis-cli + +<a name="7.3.0"></a> + +# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) + +**Note:** Version bump only for package @commitlint/travis-cli + +<a name="7.2.1"></a> + +## [7.2.1](https://github.com/conventional-changelog/commitlint/compare/v7.2.0...v7.2.1) (2018-10-11) + +**Note:** Version bump only for package @commitlint/travis-cli + +<a name="7.2.0"></a> + +# [7.2.0](https://github.com/conventional-changelog/commitlint/compare/v7.1.2...v7.2.0) (2018-10-05) + +**Note:** Version bump only for package @commitlint/travis-cli + +<a name="7.1.2"></a> + +## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) + +**Note:** Version bump only for package @commitlint/travis-cli + +<a name="7.1.0"></a> + +# [7.1.0](https://github.com/conventional-changelog/commitlint/compare/v7.0.1...v7.1.0) (2018-08-29) + +**Note:** Version bump only for package @commitlint/travis-cli + +<a name="6.2.0"></a> + +# [6.2.0](https://github.com/conventional-changelog/commitlint/compare/v6.1.3...v6.2.0) (2018-05-01) + +**Note:** Version bump only for package @commitlint/travis-cli + +<a name="6.1.1"></a> + +## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) + +**Note:** Version bump only for package @commitlint/travis-cli + +<a name="6.1.0"></a> + +# [6.1.0](https://github.com/conventional-changelog/commitlint/compare/v6.0.5...v6.1.0) (2018-02-03) + +**Note:** Version bump only for package @commitlint/travis-cli + +<a name="6.0.5"></a> + +## [6.0.5](https://github.com/conventional-changelog/commitlint/compare/v6.0.4...v6.0.5) (2018-01-31) + +**Note:** Version bump only for package @commitlint/travis-cli + +<a name="6.0.4"></a> + +## [6.0.4](https://github.com/conventional-changelog/commitlint/compare/v6.0.3...v6.0.4) (2018-01-31) + +**Note:** Version bump only for package @commitlint/travis-cli + +<a name="6.0.3"></a> + +## [6.0.3](https://github.com/conventional-changelog/commitlint/compare/v6.0.2...v6.0.3) (2018-01-31) + +**Note:** Version bump only for package @commitlint/travis-cli + +<a name="6.0.2"></a> + +## [6.0.2](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.2) (2018-01-12) + +**Note:** Version bump only for package @commitlint/travis-cli + +<a name="6.0.1"></a> + +## [6.0.1](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.1) (2018-01-09) + +**Note:** Version bump only for package @commitlint/travis-cli + +<a name="6.0.0"></a> + +# [6.0.0](https://github.com/conventional-changelog/commitlint/compare/v5.2.6...v6.0.0) (2018-01-09) + +**Note:** Version bump only for package @commitlint/travis-cli + +<a name="5.2.6"></a> + +## [5.2.6](https://github.com/conventional-changelog/commitlint/compare/v5.2.5...v5.2.6) (2017-12-21) + +**Note:** Version bump only for package @commitlint/travis-cli + +<a name="5.2.5"></a> + +## [5.2.5](https://github.com/conventional-changelog/commitlint/compare/v5.2.4...v5.2.5) (2017-12-08) + +**Note:** Version bump only for package @commitlint/travis-cli + +<a name="5.2.4"></a> + +## [5.2.4](https://github.com/conventional-changelog/commitlint/compare/v5.2.3...v5.2.4) (2017-12-08) + +**Note:** Version bump only for package @commitlint/travis-cli + +<a name="5.2.3"></a> + +## [5.2.3](https://github.com/conventional-changelog/commitlint/compare/v5.2.2...v5.2.3) (2017-12-05) + +**Note:** Version bump only for package @commitlint/travis-cli + +<a name="5.2.2"></a> + +## [5.2.2](https://github.com/conventional-changelog/commitlint/compare/v5.2.1...v5.2.2) (2017-11-30) ### Bug Fixes -* consider pull requests from forks ([4653c2c](https://github.com/conventional-changelog/commitlint/commit/4653c2c)) +- **travis-cli:** read push commits directly ([9bc56c6](https://github.com/conventional-changelog/commitlint/commit/9bc56c6)) + +<a name="5.2.1"></a> +## [5.2.1](https://github.com/conventional-changelog/commitlint/compare/v5.2.0...v5.2.1) (2017-11-30) +### Bug Fixes +- **travis-cli:** lint ranges only for pr builds ([85b201f](https://github.com/conventional-changelog/commitlint/commit/85b201f)) -<a name="5.1.1"></a> -## [5.1.1](https://github.com/conventional-changelog/commitlint/compare/v5.1.0...v5.1.1) (2017-11-24) +<a name="5.2.0"></a> + +# [5.2.0](https://github.com/conventional-changelog/commitlint/compare/v5.1.3...v5.2.0) (2017-11-30) +### Bug Fixes +- consider pull requests from forks ([4653c2c](https://github.com/conventional-changelog/commitlint/commit/4653c2c)) +<a name="5.1.1"></a> + +## [5.1.1](https://github.com/conventional-changelog/commitlint/compare/v5.1.0...v5.1.1) (2017-11-24) **Note:** Version bump only for package @commitlint/travis-cli <a name="5.1.0"></a> -# [5.1.0](https://github.com/conventional-changelog/commitlint/compare/v5.0.2...v5.1.0) (2017-11-24) +# [5.1.0](https://github.com/conventional-changelog/commitlint/compare/v5.0.2...v5.1.0) (2017-11-24) ### Features -* **travis-cli:** add reusable travis command line interface ([3e6e6a8](https://github.com/conventional-changelog/commitlint/commit/3e6e6a8)) +- **travis-cli:** add reusable travis command line interface ([3e6e6a8](https://github.com/conventional-changelog/commitlint/commit/3e6e6a8)) diff --git a/@commitlint/travis-cli/cli.js b/@commitlint/travis-cli/cli.js index 50cba5b2bf..940e27804b 100755 --- a/@commitlint/travis-cli/cli.js +++ b/@commitlint/travis-cli/cli.js @@ -1,2 +1,2 @@ #!/usr/bin/env node -require('./lib/cli'); +import "./lib/cli.js"; diff --git a/@commitlint/travis-cli/package.json b/@commitlint/travis-cli/package.json index c96d320655..ed08b7cf2b 100644 --- a/@commitlint/travis-cli/package.json +++ b/@commitlint/travis-cli/package.json @@ -1,7 +1,10 @@ { "name": "@commitlint/travis-cli", - "version": "13.1.0", + "type": "module", + "version": "20.1.0", "description": "Lint all relevant commits for a change or PR on Travis CI", + "main": "lib/cli.js", + "types": "lib/cli.d.ts", "files": [ "lib/", "cli.js" @@ -14,16 +17,17 @@ "pkg": "pkg-check --skip-main" }, "engines": { - "node": ">=v12" + "node": ">=v18" }, "repository": { "type": "git", - "url": "https://github.com/conventional-changelog/commitlint.git" + "url": "https://github.com/conventional-changelog/commitlint.git", + "directory": "@commitlint/travis-cli" }, "bugs": { "url": "https://github.com/conventional-changelog/commitlint/issues" }, - "homepage": "https://github.com/conventional-changelog/commitlint#readme", + "homepage": "https://commitlint.js.org/", "keywords": [ "conventional-changelog", "commitlint", @@ -35,12 +39,12 @@ }, "license": "MIT", "devDependencies": { - "@commitlint/test": "^13.0.0", - "@commitlint/utils": "^13.0.0" + "@commitlint/test": "^20.0.0", + "@commitlint/utils": "^20.0.0" }, "dependencies": { - "@commitlint/cli": "^13.1.0", - "execa": "^5.0.0" + "@commitlint/cli": "^20.1.0", + "tinyexec": "^1.0.0" }, - "gitHead": "70f7f4688b51774e7ac5e40e896cdaa3f132b2bc" + "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" } diff --git a/@commitlint/travis-cli/src/cli.test.ts b/@commitlint/travis-cli/src/cli.test.ts index 29613ef8d3..b276a40792 100644 --- a/@commitlint/travis-cli/src/cli.test.ts +++ b/@commitlint/travis-cli/src/cli.test.ts @@ -1,133 +1,143 @@ -import execa from 'execa'; -import {git} from '@commitlint/test'; +import { SpawnOptions } from "node:child_process"; -const bin = require.resolve('../cli.js'); +import { test, expect } from "vitest"; +import { createRequire } from "node:module"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; -const TRAVIS_COMMITLINT_BIN = require.resolve('../fixtures/commitlint'); -const TRAVIS_COMMITLINT_GIT_BIN = require.resolve('../fixtures/git'); +import { git } from "@commitlint/test"; +import { x } from "tinyexec"; + +const require = createRequire(import.meta.url); + +const __dirname = path.resolve(fileURLToPath(import.meta.url), ".."); + +const bin = require.resolve("../cli.js"); + +const TRAVIS_COMMITLINT_BIN = require.resolve("../fixtures/commitlint"); +const TRAVIS_COMMITLINT_GIT_BIN = require.resolve("../fixtures/git"); const validBaseEnv = { - TRAVIS: 'true', - CI: 'true', - TRAVIS_COMMIT: 'TRAVIS_COMMIT', + TRAVIS: "true", + CI: "true", + TRAVIS_COMMIT: "TRAVIS_COMMIT", TRAVIS_COMMITLINT_BIN: TRAVIS_COMMITLINT_BIN, TRAVIS_COMMITLINT_GIT_BIN: TRAVIS_COMMITLINT_GIT_BIN, - TRAVIS_COMMIT_RANGE: 'TRAVIS_COMMIT_A.TRAVIS_COMMIT_B', - TRAVIS_EVENT_TYPE: 'TRAVIS_EVENT_TYPE', - TRAVIS_REPO_SLUG: 'TRAVIS_REPO_SLUG', - TRAVIS_PULL_REQUEST_SLUG: 'TRAVIS_PULL_REQUEST_SLUG', + TRAVIS_COMMIT_RANGE: "TRAVIS_COMMIT_A.TRAVIS_COMMIT_B", + TRAVIS_EVENT_TYPE: "TRAVIS_EVENT_TYPE", + TRAVIS_REPO_SLUG: "TRAVIS_REPO_SLUG", + TRAVIS_PULL_REQUEST_SLUG: "TRAVIS_PULL_REQUEST_SLUG", }; -const cli = async (config: execa.Options = {}, args: string[] = []) => { - try { - return await execa(bin, args, config); - } catch (err) { - throw new Error([err.stdout, err.stderr].join('\n')); - } -}; +const cli = async (nodeOptions: SpawnOptions = {}, args: string[] = []) => + x(bin, args, { nodeOptions }); -test('should throw when not on travis ci', async () => { +test("should throw when not on travis ci", async () => { const env = { - CI: 'false', - TRAVIS: 'false', + CI: "false", + TRAVIS: "false", }; - await expect(cli({env})).rejects.toThrow( - '@commitlint/travis-cli is intended to be used on Travis CI' + const output = await cli({ env }); + expect(output.stderr).toContain( + "@commitlint/travis-cli is intended to be used on Travis CI", ); }); -test('should throw when on travis ci, but env vars are missing', async () => { +test("should throw when on travis ci, but env vars are missing", async () => { const env = { - TRAVIS: 'true', - CI: 'true', + TRAVIS: "true", + CI: "true", }; - await expect(cli({env})).rejects.toThrow( - 'TRAVIS_COMMIT, TRAVIS_COMMIT_RANGE, TRAVIS_EVENT_TYPE, TRAVIS_REPO_SLUG, TRAVIS_PULL_REQUEST_SLUG' + const output = await cli({ env }); + expect(output.stderr).toContain( + "TRAVIS_COMMIT, TRAVIS_COMMIT_RANGE, TRAVIS_EVENT_TYPE, TRAVIS_REPO_SLUG, TRAVIS_PULL_REQUEST_SLUG", ); }); -test('should call git with expected args', async () => { +test("should call git with expected args (test might fail locally)", async () => { const cwd = await git.clone( - 'https://github.com/conventional-changelog/commitlint.git', - ['--depth=10'], + "https://github.com/conventional-changelog/commitlint.git", + ["--depth=10"], __dirname, - TRAVIS_COMMITLINT_GIT_BIN + TRAVIS_COMMITLINT_GIT_BIN, ); const result = await cli({ cwd, env: validBaseEnv, }); - const invocations = await getInvocations(result.stdout); + + const invocations = getInvocations(result.stdout); + expect(invocations.length).toBe(3); - const [stash, branches, commilint] = invocations; + const [stash, branches, commitlint] = invocations; - expect(stash).toEqual(['git', 'stash', '-k', '-u', '--quiet']); - expect(branches).toEqual(['git', 'stash', 'pop', '--quiet']); - expect(commilint).toEqual(['commitlint']); + expect(stash).toEqual(["git", "stash", "-k", "-u", "--quiet"]); + expect(branches).toEqual(["git", "stash", "pop", "--quiet"]); + expect(commitlint).toEqual(["commitlint"]); }); -test('should call git with expected args on pull_request', async () => { +test("should call git with expected args on pull_request (test might fail locally)", async () => { const cwd = await git.clone( - 'https://github.com/conventional-changelog/commitlint.git', - ['--depth=10'], + "https://github.com/conventional-changelog/commitlint.git", + ["--depth=10"], __dirname, - TRAVIS_COMMITLINT_GIT_BIN + TRAVIS_COMMITLINT_GIT_BIN, ); const result = await cli({ cwd, - env: {...validBaseEnv, TRAVIS_EVENT_TYPE: 'pull_request'}, + env: { ...validBaseEnv, TRAVIS_EVENT_TYPE: "pull_request" }, }); - const invocations = await getInvocations(result.stdout); + const invocations = getInvocations(result.stdout); expect(invocations.length).toBe(3); - const [stash, branches, commilint] = invocations; + const [stash, branches, commitlint] = invocations; - expect(stash).toEqual(['git', 'stash', '-k', '-u', '--quiet']); - expect(branches).toEqual(['git', 'stash', 'pop', '--quiet']); - expect(commilint).toEqual([ - 'commitlint', - '--from', - 'TRAVIS_COMMIT_A', - '--to', - 'TRAVIS_COMMIT_B', + expect(stash).toEqual(["git", "stash", "-k", "-u", "--quiet"]); + expect(branches).toEqual(["git", "stash", "pop", "--quiet"]); + expect(commitlint).toEqual([ + "commitlint", + "--from", + "TRAVIS_COMMIT_A", + "--to", + "TRAVIS_COMMIT_B", ]); }); -test('should call git with extra expected args on pull_request', async () => { +test("should call git with extra expected args on pull_request (test might fail locally)", async () => { const cwd = await git.clone( - 'https://github.com/conventional-changelog/commitlint.git', - ['--depth=10'], + "https://github.com/conventional-changelog/commitlint.git", + ["--depth=10"], __dirname, - TRAVIS_COMMITLINT_GIT_BIN + TRAVIS_COMMITLINT_GIT_BIN, ); const result = await cli( { cwd, - env: {...validBaseEnv, TRAVIS_EVENT_TYPE: 'pull_request'}, + env: { ...validBaseEnv, TRAVIS_EVENT_TYPE: "pull_request" }, }, - ['--config', './config/commitlint.config.js'] + ["--config", "./config/commitlint.config.js"], ); - const invocations = await getInvocations(result.stdout); + const invocations = getInvocations(result.stdout); expect(invocations.length).toBe(3); - const [stash, branches, commilint] = invocations; - - expect(stash).toEqual(['git', 'stash', '-k', '-u', '--quiet']); - expect(branches).toEqual(['git', 'stash', 'pop', '--quiet']); - expect(commilint).toEqual([ - 'commitlint', - '--from', - 'TRAVIS_COMMIT_A', - '--to', - 'TRAVIS_COMMIT_B', - '--config', - './config/commitlint.config.js', + const [stash, branches, commitlint] = invocations; + + expect(stash).toEqual(["git", "stash", "-k", "-u", "--quiet"]); + expect(branches).toEqual(["git", "stash", "pop", "--quiet"]); + expect(commitlint).toEqual([ + "commitlint", + "--from", + "TRAVIS_COMMIT_A", + "--to", + "TRAVIS_COMMIT_B", + "--config", + "./config/commitlint.config.js", ]); }); @@ -136,12 +146,12 @@ function getInvocations(stdout: string): string[][] { const raw = Array.isArray(matches) ? matches : []; return raw - .filter((invocation) => invocation !== '\n') + .filter((invocation) => invocation !== "\n") .map((invocation) => invocation - .split(',') + .split(",") .map((fragment) => fragment.trim()) .map((fragment) => fragment.substring(1, fragment.length - 1)) - .filter(Boolean) + .filter(Boolean), ); } diff --git a/@commitlint/travis-cli/src/cli.ts b/@commitlint/travis-cli/src/cli.ts index 22ccea6c87..ad4c586277 100644 --- a/@commitlint/travis-cli/src/cli.ts +++ b/@commitlint/travis-cli/src/cli.ts @@ -1,26 +1,32 @@ -import execa from 'execa'; +import { SpawnOptions } from "node:child_process"; + +import { createRequire } from "node:module"; + +import { x } from "tinyexec"; + +const require = createRequire(import.meta.url); // Allow to override used bins for testing purposes -const GIT = process.env.TRAVIS_COMMITLINT_GIT_BIN || 'git'; +const GIT = process.env.TRAVIS_COMMITLINT_GIT_BIN || "git"; const COMMITLINT = - process.env.TRAVIS_COMMITLINT_BIN || require('@commitlint/cli'); + process.env.TRAVIS_COMMITLINT_BIN || require("@commitlint/cli"); const REQUIRED = [ - 'TRAVIS_COMMIT', - 'TRAVIS_COMMIT_RANGE', - 'TRAVIS_EVENT_TYPE', - 'TRAVIS_REPO_SLUG', - 'TRAVIS_PULL_REQUEST_SLUG', + "TRAVIS_COMMIT", + "TRAVIS_COMMIT_RANGE", + "TRAVIS_EVENT_TYPE", + "TRAVIS_REPO_SLUG", + "TRAVIS_PULL_REQUEST_SLUG", ]; -const COMMIT = process.env.TRAVIS_COMMIT || ''; +const COMMIT = process.env.TRAVIS_COMMIT || ""; const REPO_SLUG = process.env.TRAVIS_REPO_SLUG; const PR_SLUG = process.env.TRAVIS_PULL_REQUEST_SLUG || REPO_SLUG; const RANGE = process.env.TRAVIS_COMMIT_RANGE; -const IS_PR = process.env.TRAVIS_EVENT_TYPE === 'pull_request'; +const IS_PR = process.env.TRAVIS_EVENT_TYPE === "pull_request"; main().catch((err) => { - console.log(err); + console.error(err); process.exit(1); }); @@ -32,9 +38,10 @@ async function main() { // Make base and source available as dedicated remotes await Promise.all([ - () => fetch({name: 'base', url: `https://github.com/${REPO_SLUG}.git`}), + () => fetch({ name: "base", url: `https://github.com/${REPO_SLUG}.git` }), IS_PR - ? () => fetch({name: 'source', url: `https://github.com/${PR_SLUG}.git`}) + ? () => + fetch({ name: "source", url: `https://github.com/${PR_SLUG}.git` }) : () => Promise.resolve(), ]); @@ -45,43 +52,56 @@ async function main() { // Lint all commits in TRAVIS_COMMIT_RANGE if available if (IS_PR && RANGE) { - const [start, end] = RANGE.split('.').filter(Boolean); - await lint(['--from', start, '--to', end, ...args]); + const [start, end] = RANGE.split(".").filter(Boolean); + await lint(["--from", start, "--to", end, ...args]); } else { const input = await log(COMMIT); - await lint(args, {input}); + await lint(args, {}, input); } } -async function git(args: string[], options: execa.Options = {}) { - return execa(GIT, args, { - stdio: 'inherit', - ...options, +async function git(args: string[], nodeOptions: SpawnOptions = {}) { + return x(GIT, args, { + nodeOptions: { + stdio: "inherit", + ...nodeOptions, + }, }); } -async function fetch({name, url}: {name: string; url: string}) { - await git(['remote', 'add', name, url]); - await git(['fetch', name, '--quiet']); +async function fetch({ name, url }: { name: string; url: string }) { + await git(["remote", "add", name, url]); + await git(["fetch", name, "--quiet"]); } async function isClean() { - const result = await git(['status', '--porcelain'], { - stdio: ['pipe', 'pipe', 'pipe'], + const result = await git(["status", "--porcelain"], { + stdio: ["pipe", "pipe", "pipe"], }); return !(result.stdout && result.stdout.trim()); } -async function lint(args: string[], options: execa.Options = {}) { - return execa(COMMITLINT, args, { - stdio: ['pipe', 'inherit', 'inherit'], - ...options, +async function lint( + args: string[], + nodeOptions: SpawnOptions = {}, + input: string = "", +) { + const result = x(COMMITLINT, args, { + nodeOptions: { + stdio: ["pipe", "inherit", "inherit"], + ...nodeOptions, + }, }); + + result.process?.stdin?.write(input); + result.process?.stdin?.end(); + + return result; } async function log(hash: string) { - const result = await git(['log', '-n', '1', '--pretty=format:%B', hash], { - stdio: 'pipe', + const result = await git(["log", "-n", "1", "--pretty=format:%B", hash], { + stdio: "pipe", }); return result.stdout; } @@ -90,23 +110,23 @@ async function stash() { if (await isClean()) { return () => Promise.resolve(); } - await git(['stash', '-k', '-u', '--quiet']); - return () => git(['stash', 'pop', '--quiet']); + await git(["stash", "-k", "-u", "--quiet"]); + return () => git(["stash", "pop", "--quiet"]); } function validate() { - if (process.env.CI !== 'true' || process.env.TRAVIS !== 'true') { + if (process.env.CI !== "true" || process.env.TRAVIS !== "true") { throw new Error( - `@commitlint/travis-cli is intended to be used on Travis CI` + `@commitlint/travis-cli is intended to be used on Travis CI`, ); } const missing = REQUIRED.filter((envVar) => !(envVar in process.env)); if (missing.length > 0) { - const stanza = missing.length > 1 ? 'they were not' : 'it was not'; + const stanza = missing.length > 1 ? "they were not" : "it was not"; throw new Error( - `Expected ${missing.join(', ')} to be defined globally, ${stanza}.` + `Expected ${missing.join(", ")} to be defined globally, ${stanza}.`, ); } } diff --git a/@commitlint/travis-cli/tsconfig.json b/@commitlint/travis-cli/tsconfig.json index 2a6d93a0fa..12cd1d4571 100644 --- a/@commitlint/travis-cli/tsconfig.json +++ b/@commitlint/travis-cli/tsconfig.json @@ -7,5 +7,5 @@ }, "include": ["./src"], "exclude": ["./src/**/*.test.ts", "./lib/**/*"], - "references": [{"path": "../cli"}] + "references": [{ "path": "../cli" }] } diff --git a/@commitlint/types/CHANGELOG.md b/@commitlint/types/CHANGELOG.md index 2945f119e6..4063f69695 100644 --- a/@commitlint/types/CHANGELOG.md +++ b/@commitlint/types/CHANGELOG.md @@ -3,89 +3,132 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. -# [13.1.0](https://github.com/conventional-changelog/commitlint/compare/v13.0.0...v13.1.0) (2021-07-24) +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + +**Note:** Version bump only for package @commitlint/types + + + + + +## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) + +**Note:** Version bump only for package @commitlint/types + + + + + +# [19.8.0](https://github.com/conventional-changelog/commitlint/compare/v19.7.1...v19.8.0) (2025-03-07) + +**Note:** Version bump only for package @commitlint/types + + + + + +# [19.5.0](https://github.com/conventional-changelog/commitlint/compare/v19.4.1...v19.5.0) (2024-09-11) + +**Note:** Version bump only for package @commitlint/types + + + + + +## [19.0.3](https://github.com/conventional-changelog/commitlint/compare/v19.0.2...v19.0.3) (2024-02-28) ### Bug Fixes -* **types:** adds TargetCaseType[] for CaseRuleConfig ([c3bef38](https://github.com/conventional-changelog/commitlint/commit/c3bef384ff1a3ec428ba7c86bc778c50a9e6eead)) +* mark `@types/conventional-commits-parser` as dep for `@commitlint/types` ([#3944](https://github.com/conventional-changelog/commitlint/issues/3944)) ([5a01f59](https://github.com/conventional-changelog/commitlint/commit/5a01f59661f0b908802728389631965eb8b49d47)), closes [#3929](https://github.com/conventional-changelog/commitlint/issues/3929) [#3942](https://github.com/conventional-changelog/commitlint/issues/3942) -# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) +# [19.0.0](https://github.com/conventional-changelog/commitlint/compare/v18.6.2...v19.0.0) (2024-02-27) -### Features +* feat!: migrate to pure ESM (#3850) ([3423735](https://github.com/conventional-changelog/commitlint/commit/342373559bdf7c783c4ef37ff05dc38a5f681159)), closes [#3850](https://github.com/conventional-changelog/commitlint/issues/3850) -* **rules:** add `trailer-exists` rule ([#2578](https://github.com/conventional-changelog/commitlint/issues/2578)) ([cd3816d](https://github.com/conventional-changelog/commitlint/commit/cd3816d553762eae99e088689395c55afce0c6cc)) +### Reverts -* chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) +* Revert "chore!: minimum node version v20" ([2816783](https://github.com/conventional-changelog/commitlint/commit/2816783d00e7eb967de3ac9347c2fc43dc8b94fa)) ### BREAKING CHANGES -* minimum node version is 12 +* migrate to pure ESM +* feat: migrate to pure ESM +* chore: update snapshot +* fix: load `parserPreset` with another `await` +* test: migrate to vitest -## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) +* test: remove no replacement `--runInBand` test-ci script -**Note:** Version bump only for package @commitlint/types +* chore: fix code reviews +* refactor(load): rewrite resolve logic +* fix(config-nx-scopes): fix syntax error +* feat(resolve-extends): add resolveFrom and loadParserPreset +* feat(load): use resolveFrom and loadParserPreset from resolve-extends -## [12.1.2](https://github.com/conventional-changelog/commitlint/compare/v12.1.1...v12.1.2) (2021-04-29) +* test: include only @commitlint/* packages src in coverage +* test: explicit import vitest utilities -### Bug Fixes +* test: remove @jest/globals from dependencies -* **rules:** fix subject-full-stop rule config value type ([#2534](https://github.com/conventional-changelog/commitlint/issues/2534)) ([2ab3c57](https://github.com/conventional-changelog/commitlint/commit/2ab3c57b709ddad3fc98d768309ac4fdac8cb68a)) -* **types:** update chalk import ([#2535](https://github.com/conventional-changelog/commitlint/issues/2535)) ([89f9a6d](https://github.com/conventional-changelog/commitlint/commit/89f9a6d759f7296438e184a93c1f766aba1443ca)) +* fix(resolve-extends): `resolveFrom` output should be platform aware +* test: restore NO_COLOR to test script +* chore: fix linting issues +* fix: should use fileURLToPath instead of pathname for Windows compatibility +* Apply suggestions from code review -## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) +* fix: should reuse `cli` instead call `yargs()` -**Note:** Version bump only for package @commitlint/types +* feat(cli): set terminalWidth as wrap to avoid work break on help +* Update .eslintrc.cjs +* feat: migrate @commitlint/config-conventional to pure ESM -## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) -### Bug Fixes +## [18.6.1](https://github.com/conventional-changelog/commitlint/compare/v18.6.0...v18.6.1) (2024-02-13) -* **load:** use `Rule | AsyncRule | SyncRule` as rule value type in `Plugin` ([#2146](https://github.com/conventional-changelog/commitlint/issues/2146)) ([75b67b8](https://github.com/conventional-changelog/commitlint/commit/75b67b8fb7fc4df21267b98f0c9daeeb1130b824)) -* **types:** correct chalkColor type ([#2420](https://github.com/conventional-changelog/commitlint/issues/2420)) ([ef8bdad](https://github.com/conventional-changelog/commitlint/commit/ef8bdad96c9ee7c3ad67f8280818c7f49c1df1fe)) +**Note:** Version bump only for package @commitlint/types -# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) +# [18.6.0](https://github.com/conventional-changelog/commitlint/compare/v18.5.1...v18.6.0) (2024-01-25) ### Features -* **load:** allow specifying helpUrl via config ([#2180](https://github.com/conventional-changelog/commitlint/issues/2180)) ([d6795a3](https://github.com/conventional-changelog/commitlint/commit/d6795a3c4633ba6efd7a0fcff48339dc291cd832)) -* **rules:** add body-full-stop rule ([#2144](https://github.com/conventional-changelog/commitlint/issues/2144)) ([7767ca2](https://github.com/conventional-changelog/commitlint/commit/7767ca2591d10207c4abe7f3e5e6de503ac12a25)) +* **rules:** add header-trim rule ([#3199](https://github.com/conventional-changelog/commitlint/issues/3199)) ([#3871](https://github.com/conventional-changelog/commitlint/issues/3871)) ([331579a](https://github.com/conventional-changelog/commitlint/commit/331579a8796af901b5e5103c44fedf1cb3a2f661)) -# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) +## [18.4.4](https://github.com/conventional-changelog/commitlint/compare/v18.4.3...v18.4.4) (2024-01-04) **Note:** Version bump only for package @commitlint/types @@ -93,29 +136,61 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) +## [18.4.3](https://github.com/conventional-changelog/commitlint/compare/v18.4.2...v18.4.3) (2023-11-21) + +**Note:** Version bump only for package @commitlint/types + + + + + +# [18.4.0](https://github.com/conventional-changelog/commitlint/compare/v18.3.0...v18.4.0) (2023-11-10) + +**Note:** Version bump only for package @commitlint/types + + + + + +# [18.1.0](https://github.com/conventional-changelog/commitlint/compare/v18.0.0...v18.1.0) (2023-10-25) + +**Note:** Version bump only for package @commitlint/types + + + + +# [18.0.0](https://github.com/conventional-changelog/commitlint/compare/v17.8.1...v18.0.0) (2023-10-20) -* refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) + +* chore!: minimum node version v18 (#3644) ([5b4aeaf](https://github.com/conventional-changelog/commitlint/commit/5b4aeaf4f01c2726a7bc8631a23bb34c849baad2)), closes [#3644](https://github.com/conventional-changelog/commitlint/issues/3644) ### BREAKING CHANGES -* remove node 8 from circle-ci checks +* drop node v14 and v16 support -also remove node 13 because we do not support experimental versions +* chore: remove unused types -* docs: update node v10 to latest LTS 10 version +* docs: prepare node update and new release -Co-authored-by: Cedric van Putten <me@bycedric.com> +* chore!: minimum TS version v5 +* drop TS v4 support -Co-authored-by: Cedric van Putten <me@bycedric.com> +* ci: remove node v14/16 checks +* chore: adjust node types to minimal supported version +* chore!: further major versions of other deps +* upgrade conventional-changelog-conventionalcommits, conventional-commits-parser, conventional-changelog-atom, + +* docs: simplify releases and remove roadmap -## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) + + +## [17.8.1](https://github.com/conventional-changelog/commitlint/compare/v17.8.0...v17.8.1) (2023-10-20) **Note:** Version bump only for package @commitlint/types @@ -123,36 +198,161 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) +## [17.4.4](https://github.com/conventional-changelog/commitlint/compare/v17.4.3...v17.4.4) (2023-02-17) + + +### Bug Fixes + +* **parse:** allow setting fieldPattern in parserOpts ([#3538](https://github.com/conventional-changelog/commitlint/issues/3538)) ([ea23c65](https://github.com/conventional-changelog/commitlint/commit/ea23c65702d619b92e338e9f589a147d62e48ffc)) + + + + + +# [17.4.0](https://github.com/conventional-changelog/commitlint/compare/v17.3.0...v17.4.0) (2023-01-04) **Note:** Version bump only for package @commitlint/types +# [17.0.0](https://github.com/conventional-changelog/commitlint/compare/v16.3.0...v17.0.0) (2022-05-16) +- chore!: minimum node version v14 (#3128) ([ac5f9b4](https://github.com/conventional-changelog/commitlint/commit/ac5f9b47a9e3cd5c9d58b14da0feb426f06b1ef9)), closes [#3128](https://github.com/conventional-changelog/commitlint/issues/3128) +### BREAKING CHANGES +- drop node v12 support -# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) +- chore: rename circleci windows job + +node version is not defned by the name anyways (i think) +## [16.2.1](https://github.com/conventional-changelog/commitlint/compare/v16.2.0...v16.2.1) (2022-02-13) + +**Note:** Version bump only for package @commitlint/types + +# [16.0.0](https://github.com/conventional-changelog/commitlint/compare/v15.0.0...v16.0.0) (2021-12-26) ### Features -* add local plugins support ([#1692](https://github.com/conventional-changelog/commitlint/issues/1692)) ([7b29c48](https://github.com/conventional-changelog/commitlint/commit/7b29c48321b513e091849fbb2cc2bf0e6ebb94a6)) +- **cz-commitlint:** support select scope with radio list by setting disableMultipleScopes ([#2911](https://github.com/conventional-changelog/commitlint/issues/2911)) ([9d8d73f](https://github.com/conventional-changelog/commitlint/commit/9d8d73f36e0c62c8cd9e3e913b66a5ca46ebf622)), closes [#2782](https://github.com/conventional-changelog/commitlint/issues/2782) +- config validation ([#2412](https://github.com/conventional-changelog/commitlint/issues/2412)) ([c717202](https://github.com/conventional-changelog/commitlint/commit/c7172022097b11f46b33617e4a94d751243c1049)), closes [#327](https://github.com/conventional-changelog/commitlint/issues/327) +### BREAKING CHANGES +- **cz-commitlint:** users who is using multiple scopes need to set enableMultipleScopes to true +# [15.0.0](https://github.com/conventional-changelog/commitlint/compare/v14.2.0...v15.0.0) (2021-11-17) +### Bug Fixes -## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) +- **types:** fix signature of QualifiedRuleConfig for async configurations ([#2868](https://github.com/conventional-changelog/commitlint/issues/2868)) ([#2869](https://github.com/conventional-changelog/commitlint/issues/2869)) ([c7f355b](https://github.com/conventional-changelog/commitlint/commit/c7f355b25e5baddab0b9559892f5ce4112e4f93a)) + +### Features + +- simplify config resolution ([#2398](https://github.com/conventional-changelog/commitlint/issues/2398)) ([8a8384f](https://github.com/conventional-changelog/commitlint/commit/8a8384f3c18954447cb633e76a573e1db71a1440)), closes [#327](https://github.com/conventional-changelog/commitlint/issues/327) + +# [14.0.0](https://github.com/conventional-changelog/commitlint/compare/v13.2.1...v14.0.0) (2021-10-26) + +- support multiple scopes and multiple cases & fix sentence-case is not consistent with commitlint/cli (#2806) ([2c71a7e](https://github.com/conventional-changelog/commitlint/commit/2c71a7e2965a2beff805982d37243b79a48c9360)), closes [#2806](https://github.com/conventional-changelog/commitlint/issues/2806) [#2782](https://github.com/conventional-changelog/commitlint/issues/2782) + +### BREAKING CHANGES + +- add prompt.settings configuration + +# [13.2.0](https://github.com/conventional-changelog/commitlint/compare/v13.1.0...v13.2.0) (2021-09-28) + +### Bug Fixes + +- **types:** prompt messages key ([4825a52](https://github.com/conventional-changelog/commitlint/commit/4825a521e2c74d63a11920b48094fddc79001b3c)) +- **types:** prompt messages props optional ([0bd0592](https://github.com/conventional-changelog/commitlint/commit/0bd0592148ab4266fd76816b19d352e2cf947f8c)) +- **types:** user config prompt ([6d7a1c4](https://github.com/conventional-changelog/commitlint/commit/6d7a1c40e2f8a8ff22595e0e17f71f3702b0699c)) + +# [13.1.0](https://github.com/conventional-changelog/commitlint/compare/v13.0.0...v13.1.0) (2021-07-24) + +### Bug Fixes + +- **types:** adds TargetCaseType[] for CaseRuleConfig ([c3bef38](https://github.com/conventional-changelog/commitlint/commit/c3bef384ff1a3ec428ba7c86bc778c50a9e6eead)) + +# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) + +### Features + +- **rules:** add `trailer-exists` rule ([#2578](https://github.com/conventional-changelog/commitlint/issues/2578)) ([cd3816d](https://github.com/conventional-changelog/commitlint/commit/cd3816d553762eae99e088689395c55afce0c6cc)) + +- chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) + +### BREAKING CHANGES + +- minimum node version is 12 + +## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) **Note:** Version bump only for package @commitlint/types +## [12.1.2](https://github.com/conventional-changelog/commitlint/compare/v12.1.1...v12.1.2) (2021-04-29) + +### Bug Fixes + +- **rules:** fix subject-full-stop rule config value type ([#2534](https://github.com/conventional-changelog/commitlint/issues/2534)) ([2ab3c57](https://github.com/conventional-changelog/commitlint/commit/2ab3c57b709ddad3fc98d768309ac4fdac8cb68a)) +- **types:** update chalk import ([#2535](https://github.com/conventional-changelog/commitlint/issues/2535)) ([89f9a6d](https://github.com/conventional-changelog/commitlint/commit/89f9a6d759f7296438e184a93c1f766aba1443ca)) +## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) +**Note:** Version bump only for package @commitlint/types +## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) -# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) +### Bug Fixes + +- **load:** use `Rule | AsyncRule | SyncRule` as rule value type in `Plugin` ([#2146](https://github.com/conventional-changelog/commitlint/issues/2146)) ([75b67b8](https://github.com/conventional-changelog/commitlint/commit/75b67b8fb7fc4df21267b98f0c9daeeb1130b824)) +- **types:** correct chalkColor type ([#2420](https://github.com/conventional-changelog/commitlint/issues/2420)) ([ef8bdad](https://github.com/conventional-changelog/commitlint/commit/ef8bdad96c9ee7c3ad67f8280818c7f49c1df1fe)) + +# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) + +### Features + +- **load:** allow specifying helpUrl via config ([#2180](https://github.com/conventional-changelog/commitlint/issues/2180)) ([d6795a3](https://github.com/conventional-changelog/commitlint/commit/d6795a3c4633ba6efd7a0fcff48339dc291cd832)) +- **rules:** add body-full-stop rule ([#2144](https://github.com/conventional-changelog/commitlint/issues/2144)) ([7767ca2](https://github.com/conventional-changelog/commitlint/commit/7767ca2591d10207c4abe7f3e5e6de503ac12a25)) + +# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) + +**Note:** Version bump only for package @commitlint/types + +# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) + +- refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) + +### BREAKING CHANGES + +- remove node 8 from circle-ci checks + +also remove node 13 because we do not support experimental versions + +- docs: update node v10 to latest LTS 10 version + +Co-authored-by: Cedric van Putten <me@bycedric.com> + +Co-authored-by: Cedric van Putten <me@bycedric.com> + +## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) + +**Note:** Version bump only for package @commitlint/types + +## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) + +**Note:** Version bump only for package @commitlint/types +# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) + +### Features + +- add local plugins support ([#1692](https://github.com/conventional-changelog/commitlint/issues/1692)) ([7b29c48](https://github.com/conventional-changelog/commitlint/commit/7b29c48321b513e091849fbb2cc2bf0e6ebb94a6)) + +## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) + +**Note:** Version bump only for package @commitlint/types + +# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) ### Features -* add async promise based rules methods into lint ([#976](https://github.com/conventional-changelog/commitlint/issues/976)) ([4443062](https://github.com/conventional-changelog/commitlint/commit/444306249b8a3d04524538f61edca8f6cc10d75f)) +- add async promise based rules methods into lint ([#976](https://github.com/conventional-changelog/commitlint/issues/976)) ([4443062](https://github.com/conventional-changelog/commitlint/commit/444306249b8a3d04524538f61edca8f6cc10d75f)) diff --git a/@commitlint/types/package.json b/@commitlint/types/package.json index 203abbe6fd..7388a48dd6 100644 --- a/@commitlint/types/package.json +++ b/@commitlint/types/package.json @@ -1,6 +1,7 @@ { "name": "@commitlint/types", - "version": "13.1.0", + "type": "module", + "version": "20.0.0", "description": "Shared types for commitlint packages", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -11,26 +12,28 @@ "pkg": "pkg-check" }, "engines": { - "node": ">=v12" + "node": ">=v18" }, "repository": { "type": "git", - "url": "https://github.com/conventional-changelog/commitlint.git" + "url": "https://github.com/conventional-changelog/commitlint.git", + "directory": "@commitlint/types" }, "bugs": { "url": "https://github.com/conventional-changelog/commitlint/issues" }, - "homepage": "https://github.com/conventional-changelog/commitlint#readme", + "homepage": "https://commitlint.js.org/", "author": { "name": "Mario Nebl", "email": "hello@herebecode.com" }, "license": "MIT", "dependencies": { - "chalk": "^4.0.0" + "@types/conventional-commits-parser": "^5.0.0", + "chalk": "^5.3.0" }, "devDependencies": { - "@commitlint/utils": "^13.0.0" + "@commitlint/utils": "^20.0.0" }, - "gitHead": "d829bf6260304ca8d6811f329fcdd1b6c50e9749" + "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" } diff --git a/@commitlint/types/src/ensure.ts b/@commitlint/types/src/ensure.ts index 9d7be804af..309271e0a3 100644 --- a/@commitlint/types/src/ensure.ts +++ b/@commitlint/types/src/ensure.ts @@ -1,13 +1,13 @@ export type TargetCaseType = - | 'camel-case' - | 'kebab-case' - | 'snake-case' - | 'pascal-case' - | 'start-case' - | 'upper-case' - | 'uppercase' - | 'sentence-case' - | 'sentencecase' - | 'lower-case' - | 'lowercase' - | 'lowerCase'; + | "camel-case" + | "kebab-case" + | "snake-case" + | "pascal-case" + | "start-case" + | "upper-case" + | "uppercase" + | "sentence-case" + | "sentencecase" + | "lower-case" + | "lowercase" + | "lowerCase"; diff --git a/@commitlint/types/src/format.ts b/@commitlint/types/src/format.ts index 7180cb3b82..2ae1030d1f 100644 --- a/@commitlint/types/src/format.ts +++ b/@commitlint/types/src/format.ts @@ -1,10 +1,11 @@ -import * as chalk from 'chalk'; -import {QualifiedRules} from './load'; -import {RuleConfigSeverity} from './rules'; +import type { ColorName, ModifierName } from "chalk"; + +import { QualifiedRules } from "./load.js"; +import { RuleConfigSeverity } from "./rules.js"; export type Formatter = ( report: FormattableReport, - options: FormatOptions + options: FormatOptions, ) => string; export interface FormattableProblem { @@ -26,7 +27,7 @@ export interface FormattableReport { results?: (FormattableResult & WithInput)[]; } -export type ChalkColor = typeof chalk.Color | typeof chalk.Modifiers; +export type ChalkColor = ColorName | ModifierName; export interface FormatOptions { color?: boolean; diff --git a/@commitlint/types/src/index.ts b/@commitlint/types/src/index.ts index 40de3d4299..aa363ca5ae 100644 --- a/@commitlint/types/src/index.ts +++ b/@commitlint/types/src/index.ts @@ -1,8 +1,8 @@ -export * from './ensure'; -export * from './format'; -export * from './is-ignored'; -export * from './lint'; -export * from './load'; -export * from './parse'; -export * from './prompt'; -export * from './rules'; +export * from "./ensure.js"; +export * from "./format.js"; +export * from "./is-ignored.js"; +export * from "./lint.js"; +export * from "./load.js"; +export * from "./parse.js"; +export * from "./prompt.js"; +export * from "./rules.js"; diff --git a/@commitlint/types/src/lint.ts b/@commitlint/types/src/lint.ts index 60f0a9456c..f2cc02b002 100644 --- a/@commitlint/types/src/lint.ts +++ b/@commitlint/types/src/lint.ts @@ -1,7 +1,7 @@ -import {IsIgnoredOptions} from './is-ignored'; -import {PluginRecords} from './load'; -import {ParserOptions} from './parse'; -import {RuleConfigSeverity, RuleConfigTuple} from './rules'; +import type { Options } from "conventional-commits-parser"; +import { IsIgnoredOptions } from "./is-ignored.js"; +import { PluginRecords } from "./load.js"; +import { RuleConfigSeverity, RuleConfigTuple } from "./rules.js"; export type LintRuleConfig = Record< string, @@ -12,11 +12,11 @@ export type LintRuleConfig = Record< export interface LintOptions { /** If it should ignore the default commit messages (defaults to `true`) */ - defaultIgnores?: IsIgnoredOptions['defaults']; + defaultIgnores?: IsIgnoredOptions["defaults"]; /** Additional commits to ignore, defined by ignore matchers */ - ignores?: IsIgnoredOptions['ignores']; + ignores?: IsIgnoredOptions["ignores"]; /** The parser configuration to use when linting the commit */ - parserOpts?: ParserOptions; + parserOpts?: Options; plugins?: PluginRecords; helpUrl?: string; diff --git a/@commitlint/types/src/load.ts b/@commitlint/types/src/load.ts index b46b49b0ff..e095387fe2 100644 --- a/@commitlint/types/src/load.ts +++ b/@commitlint/types/src/load.ts @@ -1,11 +1,11 @@ -import {PromptConfig, UserPromptConfig} from './prompt'; +import { UserPromptConfig } from "./prompt.js"; import { AsyncRule, Rule, RuleConfigQuality, RulesConfig, SyncRule, -} from './rules'; +} from "./rules.js"; export type PluginRecords = Record<string, Plugin>; @@ -21,26 +21,16 @@ export interface LoadOptions { } export interface UserConfig { - extends?: string[]; + extends?: string | string[]; formatter?: string; rules?: Partial<RulesConfig>; - parserPreset?: string | ParserPreset; + parserPreset?: string | ParserPreset | Promise<ParserPreset>; ignores?: ((commit: string) => boolean)[]; defaultIgnores?: boolean; plugins?: (string | Plugin)[]; helpUrl?: string; - prompt?: PromptConfig; -} - -export interface UserPreset { - extends?: string[]; - formatter?: string; - rules?: Partial<RulesConfig>; - parserPreset?: string | ParserPreset; - ignores?: ((commit: string) => boolean)[]; - defaultIgnores?: boolean; - plugins: PluginRecords; - prompt?: PromptConfig; + prompt?: UserPromptConfig; + [key: string]: unknown; } export type QualifiedRules = Partial<RulesConfig<RuleConfigQuality.Qualified>>; @@ -49,16 +39,16 @@ export interface QualifiedConfig { extends: string[]; formatter: string; rules: QualifiedRules; - parserPreset: ParserPreset; - ignores: ((commit: string) => boolean)[]; - defaultIgnores: boolean; + parserPreset?: ParserPreset; + ignores?: ((commit: string) => boolean)[]; + defaultIgnores?: boolean; plugins: PluginRecords; helpUrl: string; prompt: UserPromptConfig; } export interface ParserPreset { - name: string; - path: string; + name?: string; + path?: string; parserOpts?: unknown; } diff --git a/@commitlint/types/src/parse.ts b/@commitlint/types/src/parse.ts index 2654086d66..c162098b5e 100644 --- a/@commitlint/types/src/parse.ts +++ b/@commitlint/types/src/parse.ts @@ -1,45 +1,3 @@ -export interface Commit { - raw: string; - header: string; - type: string | null; - scope: string | null; - subject: string | null; - body: string | null; - footer: string | null; - mentions: string[]; - notes: CommitNote[]; - references: CommitReference[]; - revert: any; - merge: any; -} +import type { Commit, Options } from "conventional-commits-parser"; -export interface CommitNote { - title: string; - text: string; -} - -export interface CommitReference { - raw: string; - prefix: string; - action: string | null; - owner: string | null; - repository: string | null; - issue: string | null; -} - -export type Parser = ( - message: string, - options: ParserOptions -) => Omit<Commit, 'raw'>; - -export interface ParserOptions { - commentChar?: string; - headerCorrespondence?: string[]; - headerPattern?: RegExp; - issuePrefixes?: string[]; - mergeCorrespondence?: string[]; - mergePattern?: RegExp; - noteKeywords?: string[]; - revertCorrespondence?: string[]; - revertPattern?: RegExp; -} +export type Parser = (message: string, options: Options) => Omit<Commit, "raw">; diff --git a/@commitlint/types/src/prompt.ts b/@commitlint/types/src/prompt.ts index 28bea77b1b..c426434d13 100644 --- a/@commitlint/types/src/prompt.ts +++ b/@commitlint/types/src/prompt.ts @@ -1,28 +1,32 @@ export type RuleField = - | 'header' - | 'type' - | 'scope' - | 'subject' - | 'body' - | 'footer'; + | "header" + | "type" + | "scope" + | "subject" + | "body" + | "footer"; export type PromptName = | RuleField - | 'isBreaking' - | 'breakingBody' - | 'breaking' - | 'isIssueAffected' - | 'issuesBody' - | 'issues'; + | "isBreaking" + | "breakingBody" + | "breaking" + | "isIssueAffected" + | "issuesBody" + | "issues"; export type PromptConfig = { + settings: { + scopeEnumSeparator: string; + enableMultipleScopes: boolean; + }; messages: PromptMessages; questions: Partial< Record< PromptName, { description?: string; - messages?: {[K: string]: string}; + messages?: { [K: string]: string }; enum?: { [enumName: string]: { description?: string; @@ -30,6 +34,7 @@ export type PromptConfig = { emoji?: string; }; }; + emojiInHeader?: boolean; } > >; diff --git a/@commitlint/types/src/rules.ts b/@commitlint/types/src/rules.ts index 739c1f61ab..533e5416df 100644 --- a/@commitlint/types/src/rules.ts +++ b/@commitlint/types/src/rules.ts @@ -1,5 +1,6 @@ -import {TargetCaseType} from './ensure'; -import {Commit} from './parse'; +import type { Commit } from "conventional-commits-parser"; + +import { TargetCaseType } from "./ensure.js"; /** * Rules match the input either as successful or failed. @@ -12,23 +13,23 @@ export type RuleOutcome = Readonly<[boolean, string?]>; * Rules receive a parsed commit, condition, and possible additional settings through value. * All rules should provide the most sensible rule condition and value. */ -export type RuleType = 'async' | 'sync' | 'either'; +export type RuleType = "async" | "sync" | "either"; -export type BaseRule<Value = never, Type extends RuleType = 'either'> = ( +export type BaseRule<Value = never, Type extends RuleType = "either"> = ( parsed: Commit, when?: RuleConfigCondition, - value?: Value -) => Type extends 'either' + value?: Value, +) => Type extends "either" ? RuleOutcome | Promise<RuleOutcome> - : Type extends 'async' - ? Promise<RuleOutcome> - : Type extends 'sync' - ? RuleOutcome - : never; + : Type extends "async" + ? Promise<RuleOutcome> + : Type extends "sync" + ? RuleOutcome + : never; -export type Rule<Value = never> = BaseRule<Value, 'either'>; -export type AsyncRule<Value = never> = BaseRule<Value, 'async'>; -export type SyncRule<Value = never> = BaseRule<Value, 'sync'>; +export type Rule<Value = never> = BaseRule<Value, "either">; +export type AsyncRule<Value = never> = BaseRule<Value, "async">; +export type SyncRule<Value = never> = BaseRule<Value, "sync">; /** * Rules always have a severity. @@ -48,7 +49,7 @@ export enum RuleConfigSeverity { * It can be either "always" (as tested), or "never" (as tested). * For example, `header-full-stop` can be enforced as "always" or "never". */ -export type RuleConfigCondition = 'always' | 'never'; +export type RuleConfigCondition = "always" | "never"; export type RuleConfigTuple<T> = T extends void ? @@ -65,12 +66,12 @@ export enum RuleConfigQuality { export type QualifiedRuleConfig<T> = | (() => RuleConfigTuple<T>) - | (() => RuleConfigTuple<Promise<T>>) + | (() => Promise<RuleConfigTuple<T>>) | RuleConfigTuple<T>; export type RuleConfig< V = RuleConfigQuality.Qualified, - T = void + T = void, > = V extends RuleConfigQuality.Qualified ? RuleConfigTuple<T> : QualifiedRuleConfig<T>; @@ -89,40 +90,42 @@ export type EnumRuleConfig<V = RuleConfigQuality.User> = RuleConfig< >; export type RulesConfig<V = RuleConfigQuality.User> = { - 'body-case': CaseRuleConfig<V>; - 'body-empty': RuleConfig<V>; - 'body-full-stop': RuleConfig<V, string>; - 'body-leading-blank': RuleConfig<V>; - 'body-max-length': LengthRuleConfig<V>; - 'body-max-line-length': LengthRuleConfig<V>; - 'body-min-length': LengthRuleConfig<V>; - 'footer-empty': RuleConfig<V>; - 'footer-leading-blank': RuleConfig<V>; - 'footer-max-length': LengthRuleConfig<V>; - 'footer-max-line-length': LengthRuleConfig<V>; - 'footer-min-length': LengthRuleConfig<V>; - 'header-case': CaseRuleConfig<V>; - 'header-full-stop': RuleConfig<V, string>; - 'header-max-length': LengthRuleConfig<V>; - 'header-min-length': LengthRuleConfig<V>; - 'references-empty': RuleConfig<V>; - 'scope-case': CaseRuleConfig<V>; - 'scope-empty': RuleConfig<V>; - 'scope-enum': EnumRuleConfig<V>; - 'scope-max-length': LengthRuleConfig<V>; - 'scope-min-length': LengthRuleConfig<V>; - 'signed-off-by': RuleConfig<V, string>; - 'subject-case': CaseRuleConfig<V>; - 'subject-empty': RuleConfig<V>; - 'subject-full-stop': RuleConfig<V, string>; - 'subject-max-length': LengthRuleConfig<V>; - 'subject-min-length': LengthRuleConfig<V>; - 'trailer-exists': RuleConfig<V, string>; - 'type-case': CaseRuleConfig<V>; - 'type-empty': RuleConfig<V>; - 'type-enum': EnumRuleConfig<V>; - 'type-max-length': LengthRuleConfig<V>; - 'type-min-length': LengthRuleConfig<V>; + "body-case": CaseRuleConfig<V>; + "body-empty": RuleConfig<V>; + "body-full-stop": RuleConfig<V, string>; + "body-leading-blank": RuleConfig<V>; + "body-max-length": LengthRuleConfig<V>; + "body-max-line-length": LengthRuleConfig<V>; + "body-min-length": LengthRuleConfig<V>; + "breaking-change-exclamation-mark": CaseRuleConfig<V>; + "footer-empty": RuleConfig<V>; + "footer-leading-blank": RuleConfig<V>; + "footer-max-length": LengthRuleConfig<V>; + "footer-max-line-length": LengthRuleConfig<V>; + "footer-min-length": LengthRuleConfig<V>; + "header-case": CaseRuleConfig<V>; + "header-full-stop": RuleConfig<V, string>; + "header-max-length": LengthRuleConfig<V>; + "header-min-length": LengthRuleConfig<V>; + "header-trim": RuleConfig<V>; + "references-empty": RuleConfig<V>; + "scope-case": CaseRuleConfig<V>; + "scope-empty": RuleConfig<V>; + "scope-enum": EnumRuleConfig<V>; + "scope-max-length": LengthRuleConfig<V>; + "scope-min-length": LengthRuleConfig<V>; + "signed-off-by": RuleConfig<V, string>; + "subject-case": CaseRuleConfig<V>; + "subject-empty": RuleConfig<V>; + "subject-full-stop": RuleConfig<V, string>; + "subject-max-length": LengthRuleConfig<V>; + "subject-min-length": LengthRuleConfig<V>; + "trailer-exists": RuleConfig<V, string>; + "type-case": CaseRuleConfig<V>; + "type-empty": RuleConfig<V>; + "type-enum": EnumRuleConfig<V>; + "type-max-length": LengthRuleConfig<V>; + "type-min-length": LengthRuleConfig<V>; // Plugins may add their custom rules [key: string]: AnyRuleConfig<V>; }; diff --git a/@packages/test-environment/CHANGELOG.md b/@packages/test-environment/CHANGELOG.md index b25e2cbd5d..5a0b754738 100644 --- a/@packages/test-environment/CHANGELOG.md +++ b/@packages/test-environment/CHANGELOG.md @@ -3,6 +3,192 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + +**Note:** Version bump only for package vitest-environment-commitlint + + + + + +# [19.9.0](https://github.com/conventional-changelog/commitlint/compare/v19.8.1...v19.9.0) (2025-08-26) + + +### Bug Fixes + +* update dependency jest-environment-node to v30 ([#4448](https://github.com/conventional-changelog/commitlint/issues/4448)) ([42ca849](https://github.com/conventional-changelog/commitlint/commit/42ca849db3581bb5b7f1bbbcd0dfeda912566e5d)) + + + + + +## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) + +**Note:** Version bump only for package vitest-environment-commitlint + + + + + +# [19.0.0](https://github.com/conventional-changelog/commitlint/compare/v18.6.2...v19.0.0) (2024-02-27) + + +* feat!: migrate to pure ESM (#3850) ([3423735](https://github.com/conventional-changelog/commitlint/commit/342373559bdf7c783c4ef37ff05dc38a5f681159)), closes [#3850](https://github.com/conventional-changelog/commitlint/issues/3850) + + +### Reverts + +* Revert "chore!: minimum node version v20" ([2816783](https://github.com/conventional-changelog/commitlint/commit/2816783d00e7eb967de3ac9347c2fc43dc8b94fa)) + + +### BREAKING CHANGES + +* migrate to pure ESM + +* feat: migrate to pure ESM + +* chore: update snapshot + +* fix: load `parserPreset` with another `await` + +* test: migrate to vitest + +* test: remove no replacement `--runInBand` test-ci script + +* chore: fix code reviews + +* refactor(load): rewrite resolve logic + +* fix(config-nx-scopes): fix syntax error + +* feat(resolve-extends): add resolveFrom and loadParserPreset + +* feat(load): use resolveFrom and loadParserPreset from resolve-extends + +* test: include only @commitlint/* packages src in coverage + +* test: explicit import vitest utilities + +* test: remove @jest/globals from dependencies + +* fix(resolve-extends): `resolveFrom` output should be platform aware + +* test: restore NO_COLOR to test script + +* chore: fix linting issues + +* fix: should use fileURLToPath instead of pathname for Windows compatibility + +* Apply suggestions from code review + +* fix: should reuse `cli` instead call `yargs()` + +* feat(cli): set terminalWidth as wrap to avoid work break on help + +* Update .eslintrc.cjs + +* feat: migrate @commitlint/config-conventional to pure ESM + + + + + +# [18.0.0](https://github.com/conventional-changelog/commitlint/compare/v17.8.1...v18.0.0) (2023-10-20) + + +* chore!: minimum node version v18 (#3644) ([5b4aeaf](https://github.com/conventional-changelog/commitlint/commit/5b4aeaf4f01c2726a7bc8631a23bb34c849baad2)), closes [#3644](https://github.com/conventional-changelog/commitlint/issues/3644) + + +### BREAKING CHANGES + +* drop node v14 and v16 support + +* chore: remove unused types + +* docs: prepare node update and new release + +* chore!: minimum TS version v5 +* drop TS v4 support + +* ci: remove node v14/16 checks + +* chore: adjust node types to minimal supported version + +* chore!: further major versions of other deps +* upgrade conventional-changelog-conventionalcommits, conventional-commits-parser, conventional-changelog-atom, + +* docs: simplify releases and remove roadmap + + + + + +## [17.8.1](https://github.com/conventional-changelog/commitlint/compare/v17.8.0...v17.8.1) (2023-10-20) + +**Note:** Version bump only for package @commitlint/test-environment + + + + + +# [17.7.0](https://github.com/conventional-changelog/commitlint/compare/v17.6.7...v17.7.0) (2023-08-09) + +**Note:** Version bump only for package @commitlint/test-environment + + + + + +# [17.1.0](https://github.com/conventional-changelog/commitlint/compare/v17.0.3...v17.1.0) (2022-08-27) + +**Note:** Version bump only for package @commitlint/test-environment + + + + + +# [17.0.0](https://github.com/conventional-changelog/commitlint/compare/v16.3.0...v17.0.0) (2022-05-16) + + +* chore!: minimum node version v14 (#3128) ([ac5f9b4](https://github.com/conventional-changelog/commitlint/commit/ac5f9b47a9e3cd5c9d58b14da0feb426f06b1ef9)), closes [#3128](https://github.com/conventional-changelog/commitlint/issues/3128) + + +### BREAKING CHANGES + +* drop node v12 support + +* chore: rename circleci windows job + +node version is not defned by the name anyways (i think) + + + + + +# [16.0.0](https://github.com/conventional-changelog/commitlint/compare/v15.0.0...v16.0.0) (2021-12-26) + +**Note:** Version bump only for package @commitlint/test-environment + + + + + +# [15.0.0](https://github.com/conventional-changelog/commitlint/compare/v14.2.0...v15.0.0) (2021-11-17) + +**Note:** Version bump only for package @commitlint/test-environment + + + + + +# [14.0.0](https://github.com/conventional-changelog/commitlint/compare/v13.2.1...v14.0.0) (2021-10-26) + +**Note:** Version bump only for package @commitlint/test-environment + + + + + # [13.1.0](https://github.com/conventional-changelog/commitlint/compare/v13.0.0...v13.1.0) (2021-07-24) **Note:** Version bump only for package @commitlint/test-environment diff --git a/@packages/test-environment/package.json b/@packages/test-environment/package.json index 47281bb256..75d6d66b4b 100644 --- a/@packages/test-environment/package.json +++ b/@packages/test-environment/package.json @@ -1,6 +1,7 @@ { - "name": "@commitlint/test-environment", - "version": "13.1.0", + "name": "vitest-environment-commitlint", + "type": "module", + "version": "20.0.0", "description": "test environment for @commitlint", "private": true, "main": "lib/test-environment.js", @@ -9,16 +10,17 @@ "lib/" ], "engines": { - "node": ">=v12" + "node": ">=v18" }, "repository": { "type": "git", - "url": "https://github.com/conventional-changelog/commitlint.git" + "url": "https://github.com/conventional-changelog/commitlint.git", + "directory": "@packages/test-environment" }, "bugs": { "url": "https://github.com/conventional-changelog/commitlint/issues" }, - "homepage": "https://github.com/conventional-changelog/commitlint#readme", + "homepage": "https://commitlint.js.org/", "keywords": [ "conventional-changelog", "commitlint", @@ -27,9 +29,9 @@ ], "license": "MIT", "dependencies": { - "@types/tmp": "^0.2.0", - "jest-environment-node": "^27.0.0", - "tmp": "0.2.1" + "@types/tmp": "^0.2.5", + "tmp": "^0.2.1", + "vitest": "^3.0.0" }, "gitHead": "71f0194f33943954a8dac1c458be47e5049717cd" } diff --git a/@packages/test-environment/src/test-environment.ts b/@packages/test-environment/src/test-environment.ts index b314a06e5d..448bf7f73e 100644 --- a/@packages/test-environment/src/test-environment.ts +++ b/@packages/test-environment/src/test-environment.ts @@ -1,15 +1,24 @@ // https://github.com/raszi/node-tmp/issues/229 -import NodeEnvironment from 'jest-environment-node'; -import tmp from 'tmp'; -class TestEnvironment extends NodeEnvironment { - async setup() { - await super.setup(); +import type { Environment } from "vitest"; +import { builtinEnvironments } from "vitest/environments"; +import tmp from "tmp"; - tmp.setGracefulCleanup(); +const nodeEnv = builtinEnvironments.node; - this.global.tmp = tmp; - } -} +const env: Environment = { + ...nodeEnv, + name: "commitlint", + async setup(global: object, options: Record<string, unknown>) { + const setupEnv = await nodeEnv.setup(global, options); + return { + ...setupEnv, + teardown(global: unknown) { + tmp.setGracefulCleanup(); + return setupEnv.teardown(global); + }, + }; + }, +}; -export default TestEnvironment; +export default env; diff --git a/@packages/test/CHANGELOG.md b/@packages/test/CHANGELOG.md index 216e7fbb89..229303a1d4 100644 --- a/@packages/test/CHANGELOG.md +++ b/@packages/test/CHANGELOG.md @@ -3,32 +3,37 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. -# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) +**Note:** Version bump only for package @commitlint/test -* chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) -### BREAKING CHANGES -* minimum node version is 12 +## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) +### Bug Fixes +* update dependency tinyexec to v1 ([#4332](https://github.com/conventional-changelog/commitlint/issues/4332)) ([e49449f](https://github.com/conventional-changelog/commitlint/commit/e49449fa9452069cdbf194f94d536194d362a299)) -## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) -### Bug Fixes -* update dependency fs-extra to v10 ([#2575](https://github.com/conventional-changelog/commitlint/issues/2575)) ([d47d2b5](https://github.com/conventional-changelog/commitlint/commit/d47d2b595b980adadd4fb8ff198c1914caeff18f)) +# [19.8.0](https://github.com/conventional-changelog/commitlint/compare/v19.7.1...v19.8.0) (2025-03-07) +### Performance Improvements + +* use `node:` prefix to bypass require.cache call for builtins ([#4302](https://github.com/conventional-changelog/commitlint/issues/4302)) ([0cd8f41](https://github.com/conventional-changelog/commitlint/commit/0cd8f410573fe11383f788b1ceb7e0946143591d)) + -# [12.1.0](https://github.com/conventional-changelog/commitlint/compare/v12.0.1...v12.1.0) (2021-03-06) + + +# [19.5.0](https://github.com/conventional-changelog/commitlint/compare/v19.4.1...v19.5.0) (2024-09-11) **Note:** Version bump only for package @commitlint/test @@ -36,300 +41,393 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline -## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) +# [19.0.0](https://github.com/conventional-changelog/commitlint/compare/v18.6.2...v19.0.0) (2024-02-27) -**Note:** Version bump only for package @commitlint/test +* feat!: migrate to pure ESM (#3850) ([3423735](https://github.com/conventional-changelog/commitlint/commit/342373559bdf7c783c4ef37ff05dc38a5f681159)), closes [#3850](https://github.com/conventional-changelog/commitlint/issues/3850) +### Reverts +* Revert "chore!: minimum node version v20" ([2816783](https://github.com/conventional-changelog/commitlint/commit/2816783d00e7eb967de3ac9347c2fc43dc8b94fa)) -# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) +### BREAKING CHANGES -### Bug Fixes +* migrate to pure ESM -* update dependency execa to v5 ([#2341](https://github.com/conventional-changelog/commitlint/issues/2341)) ([f349df9](https://github.com/conventional-changelog/commitlint/commit/f349df90f08096a9bcad46b5e55b411aac327a24)) -* update dependency pkg-dir to v5 ([#2168](https://github.com/conventional-changelog/commitlint/issues/2168)) ([b9d1c84](https://github.com/conventional-changelog/commitlint/commit/b9d1c8462950303a7695f248849dd9f6a58b5a9a)) +* feat: migrate to pure ESM +* chore: update snapshot +* fix: load `parserPreset` with another `await` +* test: migrate to vitest +* test: remove no replacement `--runInBand` test-ci script -# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) +* chore: fix code reviews +* refactor(load): rewrite resolve logic -* refactor!: drop support for lerna v2 ([59667b3](https://github.com/conventional-changelog/commitlint/commit/59667b376118323b1312d3d1084b9178918f3d23)) +* fix(config-nx-scopes): fix syntax error +* feat(resolve-extends): add resolveFrom and loadParserPreset -### Bug Fixes +* feat(load): use resolveFrom and loadParserPreset from resolve-extends -* update dependency @types/fs-extra to ^9.0.1 ([#2088](https://github.com/conventional-changelog/commitlint/issues/2088)) ([cb1028e](https://github.com/conventional-changelog/commitlint/commit/cb1028ef2700d86991c69a1e2ad391bc1bdc9d90)) +* test: include only @commitlint/* packages src in coverage +* test: explicit import vitest utilities -### BREAKING CHANGES +* test: remove @jest/globals from dependencies -* remove lerna v2 support and tests +* fix(resolve-extends): `resolveFrom` output should be platform aware +* test: restore NO_COLOR to test script +* chore: fix linting issues +* fix: should use fileURLToPath instead of pathname for Windows compatibility +* Apply suggestions from code review -# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) +* fix: should reuse `cli` instead call `yargs()` +* feat(cli): set terminalWidth as wrap to avoid work break on help -### Bug Fixes +* Update .eslintrc.cjs -* update dependency execa to v4 ([#1936](https://github.com/conventional-changelog/commitlint/issues/1936)) ([8efb441](https://github.com/conventional-changelog/commitlint/commit/8efb44193058d286f7325327a6d33936b273ec91)) -* update dependency fs-extra to v9 ([#1018](https://github.com/conventional-changelog/commitlint/issues/1018)) ([2df49fa](https://github.com/conventional-changelog/commitlint/commit/2df49fac907993ae78199a1012e918b0e2ff5621)) +* feat: migrate @commitlint/config-conventional to pure ESM -* refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) -### BREAKING CHANGES -* remove node 8 from circle-ci checks +# [18.0.0](https://github.com/conventional-changelog/commitlint/compare/v17.8.1...v18.0.0) (2023-10-20) -also remove node 13 because we do not support experimental versions -* docs: update node v10 to latest LTS 10 version +* chore!: minimum node version v18 (#3644) ([5b4aeaf](https://github.com/conventional-changelog/commitlint/commit/5b4aeaf4f01c2726a7bc8631a23bb34c849baad2)), closes [#3644](https://github.com/conventional-changelog/commitlint/issues/3644) -Co-authored-by: Cedric van Putten <me@bycedric.com> -Co-authored-by: Cedric van Putten <me@bycedric.com> +### BREAKING CHANGES +* drop node v14 and v16 support +* chore: remove unused types +* docs: prepare node update and new release +* chore!: minimum TS version v5 +* drop TS v4 support -## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) +* ci: remove node v14/16 checks -**Note:** Version bump only for package @commitlint/test +* chore: adjust node types to minimal supported version +* chore!: further major versions of other deps +* upgrade conventional-changelog-conventionalcommits, conventional-commits-parser, conventional-changelog-atom, +* docs: simplify releases and remove roadmap -## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) -### Bug Fixes +## [17.8.1](https://github.com/conventional-changelog/commitlint/compare/v17.8.0...v17.8.1) (2023-10-20) -* mark internal packages as private [#972](https://github.com/conventional-changelog/commitlint/issues/972) ([#1970](https://github.com/conventional-changelog/commitlint/issues/1970)) ([2351124](https://github.com/conventional-changelog/commitlint/commit/23511248b2b4020ee87d04a838c7ce31e094c128)) +**Note:** Version bump only for package @commitlint/test -# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) +## [17.4.2](https://github.com/conventional-changelog/commitlint/compare/v17.4.1...v17.4.2) (2023-01-12) ### Bug Fixes -* update dependency tmp to v0.2.1 ([#1817](https://github.com/conventional-changelog/commitlint/issues/1817)) ([0ff72f4](https://github.com/conventional-changelog/commitlint/commit/0ff72f41bd48b3dd37f881f6fb11477d8f643735)) +* update dependency @types/fs-extra to v11 ([#3494](https://github.com/conventional-changelog/commitlint/issues/3494)) ([8f553c7](https://github.com/conventional-changelog/commitlint/commit/8f553c7603e3ee0f435d878e396eec899a213de8)) -## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) +# [17.4.0](https://github.com/conventional-changelog/commitlint/compare/v17.3.0...v17.4.0) (2023-01-04) + +### Bug Fixes + +- update dependency fs-extra to v11 ([#3460](https://github.com/conventional-changelog/commitlint/issues/3460)) ([a437923](https://github.com/conventional-changelog/commitlint/commit/a43792388e0d9707da770b26592c5e31553384a1)) + +# [17.2.0](https://github.com/conventional-changelog/commitlint/compare/v17.1.2...v17.2.0) (2022-10-31) **Note:** Version bump only for package @commitlint/test +# [17.0.0](https://github.com/conventional-changelog/commitlint/compare/v16.3.0...v17.0.0) (2022-05-16) + +- chore!: minimum node version v14 (#3128) ([ac5f9b4](https://github.com/conventional-changelog/commitlint/commit/ac5f9b47a9e3cd5c9d58b14da0feb426f06b1ef9)), closes [#3128](https://github.com/conventional-changelog/commitlint/issues/3128) +### BREAKING CHANGES +- drop node v12 support +- chore: rename circleci windows job -# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) +node version is not defned by the name anyways (i think) + +# [16.0.0](https://github.com/conventional-changelog/commitlint/compare/v15.0.0...v16.0.0) (2021-12-26) **Note:** Version bump only for package @commitlint/test +# [15.0.0](https://github.com/conventional-changelog/commitlint/compare/v14.2.0...v15.0.0) (2021-11-17) +### Tests +- **config-lerna-scopes:** reuse npm bootstrap to simplify tests ([#2479](https://github.com/conventional-changelog/commitlint/issues/2479)) ([9a7a43a](https://github.com/conventional-changelog/commitlint/commit/9a7a43aa8a7eca18f2fe05c78d27dcb1a128930c)), closes [#2447](https://github.com/conventional-changelog/commitlint/issues/2447) +### BREAKING CHANGES -# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) +- **config-lerna-scopes:** upgrade to lerna v4 -**Note:** Version bump only for package @commitlint/test +Co-authored-by: Renovate Bot <bot@renovateapp.com> +Co-authored-by: escapedcat <github@htmlcss.de> +- test(config-lerna-scopes): reuse npm bootstrap to simplify tests +- test(config-lerna-scopes): reuse npm bootstrap to simplify tests +- test: fix issue after merge +- test: one more fix after merge -# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) +Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> +Co-authored-by: Renovate Bot <bot@renovateapp.com> +Co-authored-by: escapedcat <github@htmlcss.de> + +# [14.0.0](https://github.com/conventional-changelog/commitlint/compare/v13.2.1...v14.0.0) (2021-10-26) **Note:** Version bump only for package @commitlint/test +# [13.2.0](https://github.com/conventional-changelog/commitlint/compare/v13.1.0...v13.2.0) (2021-09-28) +**Note:** Version bump only for package @commitlint/test +# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) +- chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) -<a name="7.5.0"></a> -# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) +### BREAKING CHANGES + +- minimum node version is 12 +## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) ### Bug Fixes -* replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) +- update dependency fs-extra to v10 ([#2575](https://github.com/conventional-changelog/commitlint/issues/2575)) ([d47d2b5](https://github.com/conventional-changelog/commitlint/commit/d47d2b595b980adadd4fb8ff198c1914caeff18f)) +# [12.1.0](https://github.com/conventional-changelog/commitlint/compare/v12.0.1...v12.1.0) (2021-03-06) +**Note:** Version bump only for package @commitlint/test +## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) -<a name="7.3.1"></a> -## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) +**Note:** Version bump only for package @commitlint/test +# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) +### Bug Fixes +- update dependency execa to v5 ([#2341](https://github.com/conventional-changelog/commitlint/issues/2341)) ([f349df9](https://github.com/conventional-changelog/commitlint/commit/f349df90f08096a9bcad46b5e55b411aac327a24)) +- update dependency pkg-dir to v5 ([#2168](https://github.com/conventional-changelog/commitlint/issues/2168)) ([b9d1c84](https://github.com/conventional-changelog/commitlint/commit/b9d1c8462950303a7695f248849dd9f6a58b5a9a)) -**Note:** Version bump only for package @commitlint/test +# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) -<a name="7.3.0"></a> -# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) +- refactor!: drop support for lerna v2 ([59667b3](https://github.com/conventional-changelog/commitlint/commit/59667b376118323b1312d3d1084b9178918f3d23)) +### Bug Fixes +- update dependency @types/fs-extra to ^9.0.1 ([#2088](https://github.com/conventional-changelog/commitlint/issues/2088)) ([cb1028e](https://github.com/conventional-changelog/commitlint/commit/cb1028ef2700d86991c69a1e2ad391bc1bdc9d90)) +### BREAKING CHANGES -**Note:** Version bump only for package @commitlint/test +- remove lerna v2 support and tests -<a name="7.1.2"></a> -## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) +# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) +### Bug Fixes +- update dependency execa to v4 ([#1936](https://github.com/conventional-changelog/commitlint/issues/1936)) ([8efb441](https://github.com/conventional-changelog/commitlint/commit/8efb44193058d286f7325327a6d33936b273ec91)) +- update dependency fs-extra to v9 ([#1018](https://github.com/conventional-changelog/commitlint/issues/1018)) ([2df49fa](https://github.com/conventional-changelog/commitlint/commit/2df49fac907993ae78199a1012e918b0e2ff5621)) +- refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) -**Note:** Version bump only for package @commitlint/test +### BREAKING CHANGES -<a name="6.1.1"></a> -## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) +- remove node 8 from circle-ci checks +also remove node 13 because we do not support experimental versions +- docs: update node v10 to latest LTS 10 version +Co-authored-by: Cedric van Putten <me@bycedric.com> -**Note:** Version bump only for package @commitlint/test +Co-authored-by: Cedric van Putten <me@bycedric.com> -<a name="6.1.0"></a> -# [6.1.0](https://github.com/conventional-changelog/commitlint/compare/v6.0.5...v6.1.0) (2018-02-03) +## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) +**Note:** Version bump only for package @commitlint/test +## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) +### Bug Fixes -**Note:** Version bump only for package @commitlint/test +- mark internal packages as private [#972](https://github.com/conventional-changelog/commitlint/issues/972) ([#1970](https://github.com/conventional-changelog/commitlint/issues/1970)) ([2351124](https://github.com/conventional-changelog/commitlint/commit/23511248b2b4020ee87d04a838c7ce31e094c128)) -<a name="6.0.4"></a> -## [6.0.4](https://github.com/conventional-changelog/commitlint/compare/v6.0.3...v6.0.4) (2018-01-31) +# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) +### Bug Fixes +- update dependency tmp to v0.2.1 ([#1817](https://github.com/conventional-changelog/commitlint/issues/1817)) ([0ff72f4](https://github.com/conventional-changelog/commitlint/commit/0ff72f41bd48b3dd37f881f6fb11477d8f643735)) +## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) **Note:** Version bump only for package @commitlint/test -<a name="6.0.3"></a> -## [6.0.3](https://github.com/conventional-changelog/commitlint/compare/v6.0.2...v6.0.3) (2018-01-31) +# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) + +**Note:** Version bump only for package @commitlint/test +# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) +**Note:** Version bump only for package @commitlint/test +# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) **Note:** Version bump only for package @commitlint/test -<a name="6.0.2"></a> -## [6.0.2](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.2) (2018-01-12) +<a name="7.5.0"></a> +# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) +### Bug Fixes +- replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) -**Note:** Version bump only for package @commitlint/test +<a name="7.3.1"></a> -<a name="6.0.0"></a> -# [6.0.0](https://github.com/conventional-changelog/commitlint/compare/v5.2.6...v6.0.0) (2018-01-09) +## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) +**Note:** Version bump only for package @commitlint/test +<a name="7.3.0"></a> +# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) **Note:** Version bump only for package @commitlint/test -<a name="5.2.6"></a> -## [5.2.6](https://github.com/conventional-changelog/commitlint/compare/v5.2.5...v5.2.6) (2017-12-21) +<a name="7.1.2"></a> +## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) +**Note:** Version bump only for package @commitlint/test +<a name="6.1.1"></a> + +## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) **Note:** Version bump only for package @commitlint/test -<a name="5.2.0"></a> -# [5.2.0](https://github.com/conventional-changelog/commitlint/compare/v5.1.3...v5.2.0) (2017-11-30) +<a name="6.1.0"></a> + +# [6.1.0](https://github.com/conventional-changelog/commitlint/compare/v6.0.5...v6.1.0) (2018-02-03) +**Note:** Version bump only for package @commitlint/test +<a name="6.0.4"></a> +## [6.0.4](https://github.com/conventional-changelog/commitlint/compare/v6.0.3...v6.0.4) (2018-01-31) **Note:** Version bump only for package @commitlint/test -<a name="5.1.1"></a> -## [5.1.1](https://github.com/conventional-changelog/commitlint/compare/v5.1.0...v5.1.1) (2017-11-24) +<a name="6.0.3"></a> +## [6.0.3](https://github.com/conventional-changelog/commitlint/compare/v6.0.2...v6.0.3) (2018-01-31) +**Note:** Version bump only for package @commitlint/test + +<a name="6.0.2"></a> +## [6.0.2](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.2) (2018-01-12) **Note:** Version bump only for package @commitlint/test -<a name="5.1.0"></a> -# [5.1.0](https://github.com/conventional-changelog/commitlint/compare/v5.0.2...v5.1.0) (2017-11-24) +<a name="6.0.0"></a> +# [6.0.0](https://github.com/conventional-changelog/commitlint/compare/v5.2.6...v6.0.0) (2018-01-09) -### Bug Fixes +**Note:** Version bump only for package @commitlint/test -* update dependency concurrently to v3.5.1 ([#147](https://github.com/conventional-changelog/commitlint/issues/147)) ([a809d0f](https://github.com/conventional-changelog/commitlint/commit/a809d0f)) +<a name="5.2.6"></a> +## [5.2.6](https://github.com/conventional-changelog/commitlint/compare/v5.2.5...v5.2.6) (2017-12-21) -### Features +**Note:** Version bump only for package @commitlint/test -* **travis-cli:** add reusable travis command line interface ([3e6e6a8](https://github.com/conventional-changelog/commitlint/commit/3e6e6a8)) +<a name="5.2.0"></a> +# [5.2.0](https://github.com/conventional-changelog/commitlint/compare/v5.1.3...v5.2.0) (2017-11-30) +**Note:** Version bump only for package @commitlint/test +<a name="5.1.1"></a> -<a name="5.0.1"></a> -## [5.0.1](https://github.com/conventional-changelog/commitlint/compare/v5.0.0...v5.0.1) (2017-11-19) +## [5.1.1](https://github.com/conventional-changelog/commitlint/compare/v5.1.0...v5.1.1) (2017-11-24) +**Note:** Version bump only for package @commitlint/test + +<a name="5.1.0"></a> + +# [5.1.0](https://github.com/conventional-changelog/commitlint/compare/v5.0.2...v5.1.0) (2017-11-24) ### Bug Fixes -* **core:** fall back to globally installed config if available ([#127](https://github.com/conventional-changelog/commitlint/issues/127)) ([8612eb3](https://github.com/conventional-changelog/commitlint/commit/8612eb3)) +- update dependency concurrently to v3.5.1 ([#147](https://github.com/conventional-changelog/commitlint/issues/147)) ([a809d0f](https://github.com/conventional-changelog/commitlint/commit/a809d0f)) +### Features +- **travis-cli:** add reusable travis command line interface ([3e6e6a8](https://github.com/conventional-changelog/commitlint/commit/3e6e6a8)) +<a name="5.0.1"></a> -<a name="4.3.0"></a> -# [4.3.0](https://github.com/conventional-changelog/commitlint/compare/v4.2.2...v4.3.0) (2017-11-08) +## [5.0.1](https://github.com/conventional-changelog/commitlint/compare/v5.0.0...v5.0.1) (2017-11-19) +### Bug Fixes +- **core:** fall back to globally installed config if available ([#127](https://github.com/conventional-changelog/commitlint/issues/127)) ([8612eb3](https://github.com/conventional-changelog/commitlint/commit/8612eb3)) +<a name="4.3.0"></a> + +# [4.3.0](https://github.com/conventional-changelog/commitlint/compare/v4.2.2...v4.3.0) (2017-11-08) **Note:** Version bump only for package @commitlint/test <a name="4.2.1"></a> -## [4.2.1](https://github.com/conventional-changelog/commitlint/compare/v4.2.0...v4.2.1) (2017-10-18) +## [4.2.1](https://github.com/conventional-changelog/commitlint/compare/v4.2.0...v4.2.1) (2017-10-18) ### Bug Fixes -* **core:** consider config outside of current git repo ([f7234b6](https://github.com/conventional-changelog/commitlint/commit/f7234b6)) - - - +- **core:** consider config outside of current git repo ([f7234b6](https://github.com/conventional-changelog/commitlint/commit/f7234b6)) <a name="4.2.0"></a> -# [4.2.0](https://github.com/conventional-changelog/commitlint/compare/v4.1.1...v4.2.0) (2017-10-14) - - +# [4.2.0](https://github.com/conventional-changelog/commitlint/compare/v4.1.1...v4.2.0) (2017-10-14) **Note:** Version bump only for package @commitlint/test <a name="4.1.1"></a> -## [4.1.1](https://github.com/conventional-changelog/commitlint/compare/v4.1.0...v4.1.1) (2017-10-09) - - +## [4.1.1](https://github.com/conventional-changelog/commitlint/compare/v4.1.0...v4.1.1) (2017-10-09) **Note:** Version bump only for package @commitlint/test diff --git a/@packages/test/package.json b/@packages/test/package.json index 9fb1b09b48..629771d7b5 100644 --- a/@packages/test/package.json +++ b/@packages/test/package.json @@ -1,6 +1,7 @@ { "name": "@commitlint/test", - "version": "13.0.0", + "type": "module", + "version": "20.0.0", "description": "test utilities for @commitlint", "private": true, "main": "lib/index.js", @@ -9,16 +10,17 @@ "lib/" ], "engines": { - "node": ">=v12" + "node": ">=v18" }, "repository": { "type": "git", - "url": "https://github.com/conventional-changelog/commitlint.git" + "url": "https://github.com/conventional-changelog/commitlint.git", + "directory": "@packages/test" }, "bugs": { "url": "https://github.com/conventional-changelog/commitlint/issues" }, - "homepage": "https://github.com/conventional-changelog/commitlint#readme", + "homepage": "https://commitlint.js.org/", "keywords": [ "conventional-changelog", "commitlint", @@ -30,13 +32,13 @@ }, "license": "MIT", "dependencies": { - "@types/fs-extra": "^9.0.1", - "@types/tmp": "^0.2.0", - "execa": "^5.0.0", - "fs-extra": "^10.0.0", - "pkg-dir": "5.0.0", - "resolve-pkg": "2.0.0", - "tmp": "0.2.1" + "@types/fs-extra": "^11.0.3", + "@types/tmp": "^0.2.5", + "fs-extra": "^11.0.0", + "pkg-dir": "^8.0.0", + "resolve-pkg": "^2.0.0", + "tinyexec": "^1.0.0", + "tmp": "^0.2.1" }, "gitHead": "71f0194f33943954a8dac1c458be47e5049717cd" } diff --git a/@packages/test/src/fix.ts b/@packages/test/src/fix.ts index 553fdc27ad..eca5fd03f8 100644 --- a/@packages/test/src/fix.ts +++ b/@packages/test/src/fix.ts @@ -1,10 +1,8 @@ -import fs from 'fs-extra'; -import path from 'path'; -import pkgDir from 'pkg-dir'; +import path from "node:path"; -declare global { - var tmp: typeof import('tmp'); -} +import fs from "fs-extra"; +import { packageDirectory as pkgDir } from "pkg-dir"; +import tmp from "tmp"; export async function bootstrap(fixture?: string, directory?: string) { const tmpDir = tmp.dirSync({ @@ -12,8 +10,8 @@ export async function bootstrap(fixture?: string, directory?: string) { unsafeCleanup: true, }); - if (typeof fixture !== 'undefined') { - const packageDir = await pkgDir(directory); + if (typeof fixture !== "undefined") { + const packageDir = await pkgDir({ cwd: directory }); if (!packageDir) { throw new Error(`ENOENT, no such file or directory '${packageDir}'`); } diff --git a/@packages/test/src/git.ts b/@packages/test/src/git.ts index dca1023f8a..04ea365aae 100644 --- a/@packages/test/src/git.ts +++ b/@packages/test/src/git.ts @@ -1,6 +1,6 @@ -import execa from 'execa'; +import { x } from "tinyexec"; -import * as fix from './fix'; +import * as fix from "./fix.js"; export async function bootstrap(fixture?: string, directory?: string) { const cwd = await fix.bootstrap(fixture, directory); @@ -13,29 +13,37 @@ export async function clone( source: string, args: string[], directory?: string, - gitCommand = 'git' + gitCommand = "git", ) { const cwd = await fix.bootstrap(undefined, directory); - await execa(gitCommand, ['clone', ...args, source, cwd]); + await x(gitCommand, ["clone", ...args, source, cwd]); await setup(cwd, gitCommand); return cwd; } export async function init(cwd: string) { - await execa('git', ['init', cwd]); + await x("git", ["init", cwd]); await setup(cwd); return cwd; } -async function setup(cwd: string, gitCommand = 'git') { +async function setup(cwd: string, gitCommand = "git") { try { - await execa(gitCommand, ['config', 'user.name', 'ava'], {cwd}); - await execa(gitCommand, ['config', 'user.email', 'test@example.com'], { - cwd, + await x(gitCommand, ["config", "user.name", "ava"], { + nodeOptions: { cwd }, }); - await execa(gitCommand, ['config', 'commit.gpgsign', 'false'], {cwd}); - } catch (err) { - console.warn(`git config in ${cwd} failed`, err.message); + await x(gitCommand, ["config", "user.email", "test@example.com"], { + nodeOptions: { cwd }, + }); + await x(gitCommand, ["config", "commit.gpgsign", "false"], { + nodeOptions: { cwd }, + }); + } catch (err: any) { + if (typeof err === "object" && typeof err.message === "object") { + console.warn(`git config in ${cwd} failed`, err.message); + } else { + console.error("An unknown error occurred setting up the git environment"); + } } } diff --git a/@packages/test/src/index.test.ts b/@packages/test/src/index.test.ts index 1865e8b1e6..0202eeeeb5 100644 --- a/@packages/test/src/index.test.ts +++ b/@packages/test/src/index.test.ts @@ -1,32 +1,34 @@ -import * as u from '.'; -import os from 'os'; -import path from 'path'; -import fs from 'fs-extra'; +import { test, expect } from "vitest"; +import os from "node:os"; +import path from "node:path"; +import fs from "fs-extra"; -test('exports a git namespace', () => { - expect(typeof u.git).toBe('object'); +import * as u from "./index.js"; + +test("exports a git namespace", () => { + expect(typeof u.git).toBe("object"); }); -test('git namespace has bootstrap', () => { - expect(typeof u.git.bootstrap).toBe('function'); +test("git namespace has bootstrap", () => { + expect(typeof u.git.bootstrap).toBe("function"); }); -test('git namespace has clone', () => { - expect(typeof u.git.clone).toBe('function'); +test("git namespace has clone", () => { + expect(typeof u.git.clone).toBe("function"); }); -test('expect to create tmp directory', async () => { +test("expect to create tmp directory", async () => { const directory = await u.git.bootstrap(); - expect(directory).toContain('tmp-'); + expect(directory).toContain("tmp-"); expect(directory).toContain(os.tmpdir()); }); -test('expect to create tmp from directory from src', async () => { - const directory = await u.git.bootstrap('.github'); - expect(directory).toContain('tmp-'); +test("expect to create tmp from directory from src", async () => { + const directory = await u.git.bootstrap(".github"); + expect(directory).toContain("tmp-"); expect(directory).toContain(os.tmpdir()); expect(fs.existsSync(directory)).toBeTruthy(); - const indexFile = path.join(directory, 'ISSUE_TEMPLATE.md'); + const indexFile = path.join(directory, "PULL_REQUEST_TEMPLATE.md"); expect(fs.existsSync(indexFile)).toBeTruthy(); }); diff --git a/@packages/test/src/index.ts b/@packages/test/src/index.ts index 4c28118d53..fb1c9a26a6 100644 --- a/@packages/test/src/index.ts +++ b/@packages/test/src/index.ts @@ -1,6 +1,5 @@ -import * as fix from './fix'; -import * as git from './git'; -import * as lerna from './lerna'; -import * as npm from './npm'; +import * as fix from "./fix.js"; +import * as git from "./git.js"; +import * as npm from "./npm.js"; -export {fix, git, lerna, npm}; +export { fix, git, npm }; diff --git a/@packages/test/src/lerna.ts b/@packages/test/src/lerna.ts deleted file mode 100644 index a6d7325da0..0000000000 --- a/@packages/test/src/lerna.ts +++ /dev/null @@ -1,21 +0,0 @@ -import fs from 'fs-extra'; -import path from 'path'; -import resolvePkg from 'resolve-pkg'; -import * as fix from './fix'; - -export type LernaFixture = 'basic' | 'empty' | 'scoped'; - -export async function bootstrap( - fixture: string, - directory: string -): Promise<string> { - const cwd = await fix.bootstrap(`fixtures/${fixture}`, directory); - const lerna = 'lerna'; - await fs.mkdirp(path.join(cwd, 'node_modules', '@lerna')); - await fs.symlink( - resolvePkg('@lerna/project')!, - path.join(cwd, 'node_modules', '@lerna', 'project') - ); - await fs.symlink(resolvePkg(lerna)!, path.join(cwd, 'node_modules', 'lerna')); - return cwd; -} diff --git a/@packages/test/src/npm.ts b/@packages/test/src/npm.ts index 5e7da3a4ee..2c31e5520b 100644 --- a/@packages/test/src/npm.ts +++ b/@packages/test/src/npm.ts @@ -1,18 +1,18 @@ -import path from 'path'; -import fs from 'fs-extra'; -import resolvePkg from 'resolve-pkg'; +import path from "node:path"; -import * as git from './git'; +import fs from "fs-extra"; +import resolvePkg from "resolve-pkg"; + +import * as git from "./git.js"; export async function installModules(cwd: string) { - const manifestPath = path.join(cwd, 'package.json'); - const targetModulesPath = path.join(cwd, 'node_modules'); + const manifestPath = path.join(cwd, "package.json"); + const targetModulesPath = path.join(cwd, "node_modules"); if (await fs.pathExists(manifestPath)) { - const {dependencies = {}, devDependencies = {}} = await fs.readJson( - manifestPath - ); - const deps = Object.keys({...dependencies, ...devDependencies}); + const { dependencies = {}, devDependencies = {} } = + await fs.readJson(manifestPath); + const deps = Object.keys({ ...dependencies, ...devDependencies }); await Promise.all( deps.map(async (dependency: any) => { const sourcePath = resolvePkg(dependency); @@ -21,7 +21,7 @@ export async function installModules(cwd: string) { throw new Error(`Could not resolve dependency ${dependency}`); } - const sourceModulesPath = findParentPath(sourcePath, 'node_modules'); + const sourceModulesPath = findParentPath(sourcePath, "node_modules"); if (!sourceModulesPath) { throw new Error(`Could not determine node_modules for ${sourcePath}`); @@ -30,9 +30,9 @@ export async function installModules(cwd: string) { const relativePath = path.relative(sourceModulesPath, sourcePath); const targetPath = path.join(targetModulesPath, relativePath); - await fs.mkdirp(path.join(targetPath, '..')); + await fs.mkdirp(path.join(targetPath, "..")); await fs.symlink(sourcePath, targetPath); - }) + }), ); } } @@ -45,23 +45,23 @@ export async function bootstrap(fixture: string, directory?: string) { function findParentPath( parentPath: string, - dirname: string + dirname: string, ): string | undefined { const rawFragments = parentPath.split(path.sep); - const {matched, fragments} = rawFragments.reduceRight( - ({fragments, matched}, item) => { + const { matched, fragments } = rawFragments.reduceRight( + ({ fragments, matched }, item) => { if (item === dirname && !matched) { - return {fragments, matched: true}; + return { fragments, matched: true }; } if (!matched && fragments.length > 0) { fragments.pop(); } - return {fragments, matched}; + return { fragments, matched }; }, - {fragments: rawFragments, matched: false} + { fragments: rawFragments, matched: false }, ); return matched ? fragments.join(path.sep) : undefined; diff --git a/@packages/utils/CHANGELOG.md b/@packages/utils/CHANGELOG.md index 145d488d1e..3ccd55a0b5 100644 --- a/@packages/utils/CHANGELOG.md +++ b/@packages/utils/CHANGELOG.md @@ -3,170 +3,194 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. -# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) +**Note:** Version bump only for package @commitlint/utils -* chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) -### BREAKING CHANGES -* minimum node version is 12 +## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) +### Bug Fixes +* update dependency tinyexec to v1 ([#4332](https://github.com/conventional-changelog/commitlint/issues/4332)) ([e49449f](https://github.com/conventional-changelog/commitlint/commit/e49449fa9452069cdbf194f94d536194d362a299)) -## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) -### Bug Fixes -* update dependency fs-extra to v10 ([#2575](https://github.com/conventional-changelog/commitlint/issues/2575)) ([d47d2b5](https://github.com/conventional-changelog/commitlint/commit/d47d2b595b980adadd4fb8ff198c1914caeff18f)) -* update dependency yargs to v17 ([#2574](https://github.com/conventional-changelog/commitlint/issues/2574)) ([81c38dd](https://github.com/conventional-changelog/commitlint/commit/81c38ddf15f239b525f673b26b2ee6606f2ee8f6)) +# [19.8.0](https://github.com/conventional-changelog/commitlint/compare/v19.7.1...v19.8.0) (2025-03-07) +### Performance Improvements +* use `node:` prefix to bypass require.cache call for builtins ([#4302](https://github.com/conventional-changelog/commitlint/issues/4302)) ([0cd8f41](https://github.com/conventional-changelog/commitlint/commit/0cd8f410573fe11383f788b1ceb7e0946143591d)) -## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) -### Bug Fixes -* update dependency read-pkg to v6 ([#2530](https://github.com/conventional-changelog/commitlint/issues/2530)) ([d38a2ad](https://github.com/conventional-changelog/commitlint/commit/d38a2adc07f4cd6dad48aadbb73f2f1d3740e689)) +# [19.5.0](https://github.com/conventional-changelog/commitlint/compare/v19.4.1...v19.5.0) (2024-09-11) +**Note:** Version bump only for package @commitlint/utils -## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) -**Note:** Version bump only for package @commitlint/utils +# [19.0.0](https://github.com/conventional-changelog/commitlint/compare/v18.6.2...v19.0.0) (2024-02-27) +* feat!: migrate to pure ESM (#3850) ([3423735](https://github.com/conventional-changelog/commitlint/commit/342373559bdf7c783c4ef37ff05dc38a5f681159)), closes [#3850](https://github.com/conventional-changelog/commitlint/issues/3850) -# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) +### Reverts +* Revert "chore!: minimum node version v20" ([2816783](https://github.com/conventional-changelog/commitlint/commit/2816783d00e7eb967de3ac9347c2fc43dc8b94fa)) -### Bug Fixes -* **utils:** update code to allow it to be executed ([#982](https://github.com/conventional-changelog/commitlint/issues/982)) ([52696d0](https://github.com/conventional-changelog/commitlint/commit/52696d048317944aa0d638b8702df78f8756d44b)) -* update dependency execa to v5 ([#2341](https://github.com/conventional-changelog/commitlint/issues/2341)) ([f349df9](https://github.com/conventional-changelog/commitlint/commit/f349df90f08096a9bcad46b5e55b411aac327a24)) -* update dependency meow to v8 ([#2245](https://github.com/conventional-changelog/commitlint/issues/2245)) ([890961b](https://github.com/conventional-changelog/commitlint/commit/890961b52b1552c1bb2798db02915e28686983f0)) -* update dependency meow to v8.1.0 ([#2380](https://github.com/conventional-changelog/commitlint/issues/2380)) ([0fbadcf](https://github.com/conventional-changelog/commitlint/commit/0fbadcf1d45c2e97f1da9938b3b80c0b45eba18c)) -* update dependency tar-fs to v2.1.1 ([#2261](https://github.com/conventional-changelog/commitlint/issues/2261)) ([a04f24f](https://github.com/conventional-changelog/commitlint/commit/a04f24f00873209d6d96cd894450d17fdfe9ca58)) +### BREAKING CHANGES +* migrate to pure ESM +* feat: migrate to pure ESM +* chore: update snapshot +* fix: load `parserPreset` with another `await` -# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) +* test: migrate to vitest -**Note:** Version bump only for package @commitlint/utils +* test: remove no replacement `--runInBand` test-ci script +* chore: fix code reviews +* refactor(load): rewrite resolve logic +* fix(config-nx-scopes): fix syntax error +* feat(resolve-extends): add resolveFrom and loadParserPreset -# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) +* feat(load): use resolveFrom and loadParserPreset from resolve-extends +* test: include only @commitlint/* packages src in coverage -### Bug Fixes +* test: explicit import vitest utilities -* update dependency execa to v4 ([#1936](https://github.com/conventional-changelog/commitlint/issues/1936)) ([8efb441](https://github.com/conventional-changelog/commitlint/commit/8efb44193058d286f7325327a6d33936b273ec91)) +* test: remove @jest/globals from dependencies +* fix(resolve-extends): `resolveFrom` output should be platform aware -* refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) +* test: restore NO_COLOR to test script +* chore: fix linting issues -### BREAKING CHANGES +* fix: should use fileURLToPath instead of pathname for Windows compatibility -* remove node 8 from circle-ci checks +* Apply suggestions from code review -also remove node 13 because we do not support experimental versions +* fix: should reuse `cli` instead call `yargs()` -* docs: update node v10 to latest LTS 10 version +* feat(cli): set terminalWidth as wrap to avoid work break on help -Co-authored-by: Cedric van Putten <me@bycedric.com> +* Update .eslintrc.cjs -Co-authored-by: Cedric van Putten <me@bycedric.com> +* feat: migrate @commitlint/config-conventional to pure ESM -## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) +## [18.6.1](https://github.com/conventional-changelog/commitlint/compare/v18.6.0...v18.6.1) (2024-02-13) -**Note:** Version bump only for package @commitlint/utils +### Bug Fixes + +* update dependency tar-fs to v3.0.5 ([#3903](https://github.com/conventional-changelog/commitlint/issues/3903)) ([79d77c9](https://github.com/conventional-changelog/commitlint/commit/79d77c9ef8de5046106027fc7d80dfd77faeb3e5)) -## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) + +## [18.4.4](https://github.com/conventional-changelog/commitlint/compare/v18.4.3...v18.4.4) (2024-01-04) ### Bug Fixes -* mark internal packages as private [#972](https://github.com/conventional-changelog/commitlint/issues/972) ([#1970](https://github.com/conventional-changelog/commitlint/issues/1970)) ([2351124](https://github.com/conventional-changelog/commitlint/commit/23511248b2b4020ee87d04a838c7ce31e094c128)) +* **utils:** remove fs-extra usage ([#3804](https://github.com/conventional-changelog/commitlint/issues/3804)) ([92f2237](https://github.com/conventional-changelog/commitlint/commit/92f2237d66950d9cb92430bc082a86a5dbc86d3f)) -# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) +## [18.4.3](https://github.com/conventional-changelog/commitlint/compare/v18.4.2...v18.4.3) (2023-11-21) ### Bug Fixes -* update dependency tar-fs to v2.1.0 ([#1103](https://github.com/conventional-changelog/commitlint/issues/1103)) ([7882036](https://github.com/conventional-changelog/commitlint/commit/788203689ebf51343ccf2e6eab530e19f4faf122)) +* update dependency read-pkg to v9.0.1 ([#3777](https://github.com/conventional-changelog/commitlint/issues/3777)) ([88c4b8a](https://github.com/conventional-changelog/commitlint/commit/88c4b8a33dc2ebb63715018b3a0945d94cdfceeb)) -## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) +# [18.4.0](https://github.com/conventional-changelog/commitlint/compare/v18.3.0...v18.4.0) (2023-11-10) -**Note:** Version bump only for package @commitlint/utils +### Bug Fixes +* update dependency read-pkg to v9 ([#3734](https://github.com/conventional-changelog/commitlint/issues/3734)) ([722f518](https://github.com/conventional-changelog/commitlint/commit/722f5183e91186aa7e3912e8f3d0d7069f05ce8f)) +* update dependency tar-fs to v3 ([#3718](https://github.com/conventional-changelog/commitlint/issues/3718)) ([afb04dd](https://github.com/conventional-changelog/commitlint/commit/afb04dd0dc4d42094ae01f0733600c2f9d3abdfd)) -# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) + + +# [18.1.0](https://github.com/conventional-changelog/commitlint/compare/v18.0.0...v18.1.0) (2023-10-25) ### Bug Fixes -* [#840](https://github.com/conventional-changelog/commitlint/issues/840) add caret to lodash versions ([#843](https://github.com/conventional-changelog/commitlint/issues/843)) ([ffc0bac](https://github.com/conventional-changelog/commitlint/commit/ffc0bac26993acb2ab6a8fa51065f93c92b0d644)) +* update dependency read-pkg to v8 ([#3717](https://github.com/conventional-changelog/commitlint/issues/3717)) ([326f497](https://github.com/conventional-changelog/commitlint/commit/326f4975dbc2f06dbe490ca04732441ad062e063)) -## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) +# [18.0.0](https://github.com/conventional-changelog/commitlint/compare/v17.8.1...v18.0.0) (2023-10-20) -### Bug Fixes +* chore!: minimum node version v18 (#3644) ([5b4aeaf](https://github.com/conventional-changelog/commitlint/commit/5b4aeaf4f01c2726a7bc8631a23bb34c849baad2)), closes [#3644](https://github.com/conventional-changelog/commitlint/issues/3644) -* **commitlint:** use new read pkg syntax ([#888](https://github.com/conventional-changelog/commitlint/issues/888)) ([6b3b9a9](https://github.com/conventional-changelog/commitlint/commit/6b3b9a9)) +### BREAKING CHANGES +* drop node v14 and v16 support +* chore: remove unused types +* docs: prepare node update and new release -# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) +* chore!: minimum TS version v5 +* drop TS v4 support -**Note:** Version bump only for package @commitlint/utils +* ci: remove node v14/16 checks +* chore: adjust node types to minimal supported version +* chore!: further major versions of other deps +* upgrade conventional-changelog-conventionalcommits, conventional-commits-parser, conventional-changelog-atom, +* docs: simplify releases and remove roadmap -# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) + + + +## [17.8.1](https://github.com/conventional-changelog/commitlint/compare/v17.8.0...v17.8.1) (2023-10-20) **Note:** Version bump only for package @commitlint/utils @@ -174,189 +198,280 @@ Co-authored-by: Cedric van Putten <me@bycedric.com> -# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) +# [17.4.0](https://github.com/conventional-changelog/commitlint/compare/v17.3.0...v17.4.0) (2023-01-04) -**Note:** Version bump only for package @commitlint/utils +### Bug Fixes +- update dependency fs-extra to v11 ([#3460](https://github.com/conventional-changelog/commitlint/issues/3460)) ([a437923](https://github.com/conventional-changelog/commitlint/commit/a43792388e0d9707da770b26592c5e31553384a1)) +# [17.0.0](https://github.com/conventional-changelog/commitlint/compare/v16.3.0...v17.0.0) (2022-05-16) +- chore!: minimum node version v14 (#3128) ([ac5f9b4](https://github.com/conventional-changelog/commitlint/commit/ac5f9b47a9e3cd5c9d58b14da0feb426f06b1ef9)), closes [#3128](https://github.com/conventional-changelog/commitlint/issues/3128) +### BREAKING CHANGES -# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) +- drop node v12 support -**Note:** Version bump only for package @commitlint/utils +- chore: rename circleci windows job +node version is not defned by the name anyways (i think) +## [16.2.1](https://github.com/conventional-changelog/commitlint/compare/v16.2.0...v16.2.1) (2022-02-13) +### Bug Fixes +- update dependency read-pkg to v7.1.0 ([#3015](https://github.com/conventional-changelog/commitlint/issues/3015)) ([3b7b680](https://github.com/conventional-changelog/commitlint/commit/3b7b680ce4f5341d8816f3db036170b0cb28d33f)) -<a name="7.5.0"></a> -# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) +# [16.0.0](https://github.com/conventional-changelog/commitlint/compare/v15.0.0...v16.0.0) (2021-12-26) +**Note:** Version bump only for package @commitlint/utils -### Bug Fixes +# [15.0.0](https://github.com/conventional-changelog/commitlint/compare/v14.2.0...v15.0.0) (2021-11-17) -* replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) -* store concatenated array to problems variable ([#551](https://github.com/conventional-changelog/commitlint/issues/551)) ([434a70f](https://github.com/conventional-changelog/commitlint/commit/434a70f)) +**Note:** Version bump only for package @commitlint/utils +# [14.0.0](https://github.com/conventional-changelog/commitlint/compare/v13.2.1...v14.0.0) (2021-10-26) +**Note:** Version bump only for package @commitlint/utils +# [13.2.0](https://github.com/conventional-changelog/commitlint/compare/v13.1.0...v13.2.0) (2021-09-28) -<a name="7.3.1"></a> -## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) +### Bug Fixes +- update dependency read-pkg to v7 ([#2721](https://github.com/conventional-changelog/commitlint/issues/2721)) ([7d9a3b1](https://github.com/conventional-changelog/commitlint/commit/7d9a3b1f2ab41c598f4d23d96805f86a4d41ae09)) +# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) +- chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) -**Note:** Version bump only for package @commitlint/utils +### BREAKING CHANGES -<a name="7.3.0"></a> -# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) +- minimum node version is 12 +## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) ### Bug Fixes -* update to security-patched dependency versions ([97c033b](https://github.com/conventional-changelog/commitlint/commit/97c033b)) +- update dependency fs-extra to v10 ([#2575](https://github.com/conventional-changelog/commitlint/issues/2575)) ([d47d2b5](https://github.com/conventional-changelog/commitlint/commit/d47d2b595b980adadd4fb8ff198c1914caeff18f)) +- update dependency yargs to v17 ([#2574](https://github.com/conventional-changelog/commitlint/issues/2574)) ([81c38dd](https://github.com/conventional-changelog/commitlint/commit/81c38ddf15f239b525f673b26b2ee6606f2ee8f6)) +## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) +### Bug Fixes +- update dependency read-pkg to v6 ([#2530](https://github.com/conventional-changelog/commitlint/issues/2530)) ([d38a2ad](https://github.com/conventional-changelog/commitlint/commit/d38a2adc07f4cd6dad48aadbb73f2f1d3740e689)) -<a name="7.1.2"></a> -## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) +## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) + +**Note:** Version bump only for package @commitlint/utils +# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) +### Bug Fixes +- **utils:** update code to allow it to be executed ([#982](https://github.com/conventional-changelog/commitlint/issues/982)) ([52696d0](https://github.com/conventional-changelog/commitlint/commit/52696d048317944aa0d638b8702df78f8756d44b)) +- update dependency execa to v5 ([#2341](https://github.com/conventional-changelog/commitlint/issues/2341)) ([f349df9](https://github.com/conventional-changelog/commitlint/commit/f349df90f08096a9bcad46b5e55b411aac327a24)) +- update dependency meow to v8 ([#2245](https://github.com/conventional-changelog/commitlint/issues/2245)) ([890961b](https://github.com/conventional-changelog/commitlint/commit/890961b52b1552c1bb2798db02915e28686983f0)) +- update dependency meow to v8.1.0 ([#2380](https://github.com/conventional-changelog/commitlint/issues/2380)) ([0fbadcf](https://github.com/conventional-changelog/commitlint/commit/0fbadcf1d45c2e97f1da9938b3b80c0b45eba18c)) +- update dependency tar-fs to v2.1.1 ([#2261](https://github.com/conventional-changelog/commitlint/issues/2261)) ([a04f24f](https://github.com/conventional-changelog/commitlint/commit/a04f24f00873209d6d96cd894450d17fdfe9ca58)) + +# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) **Note:** Version bump only for package @commitlint/utils -<a name="6.1.1"></a> -## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) +# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) + +### Bug Fixes +- update dependency execa to v4 ([#1936](https://github.com/conventional-changelog/commitlint/issues/1936)) ([8efb441](https://github.com/conventional-changelog/commitlint/commit/8efb44193058d286f7325327a6d33936b273ec91)) +- refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) +### BREAKING CHANGES -**Note:** Version bump only for package @commitlint/utils +- remove node 8 from circle-ci checks -<a name="6.1.0"></a> -# [6.1.0](https://github.com/conventional-changelog/commitlint/compare/v6.0.5...v6.1.0) (2018-02-03) +also remove node 13 because we do not support experimental versions +- docs: update node v10 to latest LTS 10 version +Co-authored-by: Cedric van Putten <me@bycedric.com> + +Co-authored-by: Cedric van Putten <me@bycedric.com> +## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) **Note:** Version bump only for package @commitlint/utils -<a name="6.0.4"></a> -## [6.0.4](https://github.com/conventional-changelog/commitlint/compare/v6.0.3...v6.0.4) (2018-01-31) +## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) + +### Bug Fixes +- mark internal packages as private [#972](https://github.com/conventional-changelog/commitlint/issues/972) ([#1970](https://github.com/conventional-changelog/commitlint/issues/1970)) ([2351124](https://github.com/conventional-changelog/commitlint/commit/23511248b2b4020ee87d04a838c7ce31e094c128)) + +# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) ### Bug Fixes -* remove faulty bin entry [#259](https://github.com/conventional-changelog/commitlint/issues/259) ([beafbc6](https://github.com/conventional-changelog/commitlint/commit/beafbc6)) +- update dependency tar-fs to v2.1.0 ([#1103](https://github.com/conventional-changelog/commitlint/issues/1103)) ([7882036](https://github.com/conventional-changelog/commitlint/commit/788203689ebf51343ccf2e6eab530e19f4faf122)) +## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) +**Note:** Version bump only for package @commitlint/utils +# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) -<a name="6.0.3"></a> -## [6.0.3](https://github.com/conventional-changelog/commitlint/compare/v6.0.2...v6.0.3) (2018-01-31) +### Bug Fixes +- [#840](https://github.com/conventional-changelog/commitlint/issues/840) add caret to lodash versions ([#843](https://github.com/conventional-changelog/commitlint/issues/843)) ([ffc0bac](https://github.com/conventional-changelog/commitlint/commit/ffc0bac26993acb2ab6a8fa51065f93c92b0d644)) +## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) +### Bug Fixes + +- **commitlint:** use new read pkg syntax ([#888](https://github.com/conventional-changelog/commitlint/issues/888)) ([6b3b9a9](https://github.com/conventional-changelog/commitlint/commit/6b3b9a9)) + +# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) **Note:** Version bump only for package @commitlint/utils -<a name="6.0.2"></a> -## [6.0.2](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.2) (2018-01-12) +# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) +**Note:** Version bump only for package @commitlint/utils + +# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) +**Note:** Version bump only for package @commitlint/utils +# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) **Note:** Version bump only for package @commitlint/utils -<a name="5.1.1"></a> -## [5.1.1](https://github.com/conventional-changelog/commitlint/compare/v5.1.0...v5.1.1) (2017-11-24) +<a name="7.5.0"></a> + +# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) +### Bug Fixes +- replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) +- store concatenated array to problems variable ([#551](https://github.com/conventional-changelog/commitlint/issues/551)) ([434a70f](https://github.com/conventional-changelog/commitlint/commit/434a70f)) +<a name="7.3.1"></a> + +## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) **Note:** Version bump only for package @commitlint/utils -<a name="5.1.0"></a> -# [5.1.0](https://github.com/conventional-changelog/commitlint/compare/v5.0.2...v5.1.0) (2017-11-24) +<a name="7.3.0"></a> +# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) -### Features +### Bug Fixes -* **travis-cli:** add reusable travis command line interface ([3e6e6a8](https://github.com/conventional-changelog/commitlint/commit/3e6e6a8)) +- update to security-patched dependency versions ([97c033b](https://github.com/conventional-changelog/commitlint/commit/97c033b)) +<a name="7.1.2"></a> +## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) +**Note:** Version bump only for package @commitlint/utils -<a name="5.0.1"></a> -## [5.0.1](https://github.com/conventional-changelog/commitlint/compare/v5.0.0...v5.0.1) (2017-11-19) +<a name="6.1.1"></a> + +## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) +**Note:** Version bump only for package @commitlint/utils +<a name="6.1.0"></a> +# [6.1.0](https://github.com/conventional-changelog/commitlint/compare/v6.0.5...v6.1.0) (2018-02-03) **Note:** Version bump only for package @commitlint/utils -<a name="4.2.1"></a> -## [4.2.1](https://github.com/conventional-changelog/commitlint/compare/v4.2.0...v4.2.1) (2017-10-18) +<a name="6.0.4"></a> + +## [6.0.4](https://github.com/conventional-changelog/commitlint/compare/v6.0.3...v6.0.4) (2018-01-31) +### Bug Fixes + +- remove faulty bin entry [#259](https://github.com/conventional-changelog/commitlint/issues/259) ([beafbc6](https://github.com/conventional-changelog/commitlint/commit/beafbc6)) +<a name="6.0.3"></a> +## [6.0.3](https://github.com/conventional-changelog/commitlint/compare/v6.0.2...v6.0.3) (2018-01-31) **Note:** Version bump only for package @commitlint/utils -<a name="4.2.0"></a> -# [4.2.0](https://github.com/conventional-changelog/commitlint/compare/v4.1.1...v4.2.0) (2017-10-14) +<a name="6.0.2"></a> +## [6.0.2](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.2) (2018-01-12) + +**Note:** Version bump only for package @commitlint/utils +<a name="5.1.1"></a> +## [5.1.1](https://github.com/conventional-changelog/commitlint/compare/v5.1.0...v5.1.1) (2017-11-24) **Note:** Version bump only for package @commitlint/utils -<a name="3.0.3"></a> -## 3.0.3 (2017-07-16) +<a name="5.1.0"></a> +# [5.1.0](https://github.com/conventional-changelog/commitlint/compare/v5.0.2...v5.1.0) (2017-11-24) +### Features -<a name="3.0.2"></a> -## 3.0.2 (2017-07-11) +- **travis-cli:** add reusable travis command line interface ([3e6e6a8](https://github.com/conventional-changelog/commitlint/commit/3e6e6a8)) +<a name="5.0.1"></a> -### Bug Fixes +## [5.0.1](https://github.com/conventional-changelog/commitlint/compare/v5.0.0...v5.0.1) (2017-11-19) -* **utils:** better cross-version support ([856f3da](https://github.com/conventional-changelog/commitlint/commit/856f3da)) +**Note:** Version bump only for package @commitlint/utils +<a name="4.2.1"></a> +## [4.2.1](https://github.com/conventional-changelog/commitlint/compare/v4.2.0...v4.2.1) (2017-10-18) +**Note:** Version bump only for package @commitlint/utils -<a name="3.0.2"></a> -## 3.0.2 (2017-07-11) +<a name="4.2.0"></a> +# [4.2.0](https://github.com/conventional-changelog/commitlint/compare/v4.1.1...v4.2.0) (2017-10-14) -### Bug Fixes +**Note:** Version bump only for package @commitlint/utils -* **utils:** better cross-version support ([856f3da](https://github.com/conventional-changelog/commitlint/commit/856f3da)) +<a name="3.0.3"></a> +## 3.0.3 (2017-07-16) +<a name="3.0.2"></a> +## 3.0.2 (2017-07-11) -<a name="3.0.1"></a> -## 3.0.1 (2017-07-11) +### Bug Fixes + +- **utils:** better cross-version support ([856f3da](https://github.com/conventional-changelog/commitlint/commit/856f3da)) +<a name="3.0.2"></a> + +## 3.0.2 (2017-07-11) ### Bug Fixes -* **utils:** better cross-version support ([856f3da](https://github.com/conventional-changelog/commitlint/commit/856f3da)) +- **utils:** better cross-version support ([856f3da](https://github.com/conventional-changelog/commitlint/commit/856f3da)) +<a name="3.0.1"></a> + +## 3.0.1 (2017-07-11) +### Bug Fixes +- **utils:** better cross-version support ([856f3da](https://github.com/conventional-changelog/commitlint/commit/856f3da)) <a name="3.0.0"></a> -# 3.0.0 (2017-07-10) +# 3.0.0 (2017-07-10) ### Bug Fixes -* **utils:** better cross-version support ([bc460c8](https://github.com/conventional-changelog/commitlint/commit/bc460c8)) +- **utils:** better cross-version support ([bc460c8](https://github.com/conventional-changelog/commitlint/commit/bc460c8)) diff --git a/@packages/utils/dep-check.js b/@packages/utils/dep-check.js index fb9f8125b4..8f96322333 100755 --- a/@packages/utils/dep-check.js +++ b/@packages/utils/dep-check.js @@ -1,26 +1,26 @@ #!/usr/bin/env node -const path = require('path'); -const execa = require('execa'); +import path from "node:path"; +import { x } from "tinyexec"; const cwd = process.cwd(); function main() { return Promise.all([ - check(['--missing', '--no-dev', '.']), - check(['--extra', '--no-dev', '.']), + check(["--missing", "--no-dev", "."]), + check(["--extra", "--no-dev", "."]), ]) - .then((tasks) => [null, tasks.map((t) => t.stdout).join('\n')]) + .then((tasks) => [null, tasks.map((t) => t.stdout).join("\n")]) .catch((err) => [err]); } function check(args) { - return execa('dependency-check', args, {cwd}); + return x("dependency-check", args, { nodeOptions: { cwd } }); } main().then((args) => { const err = args[0]; const out = args[1]; - console.log(`Checking dependencies ${path.join(cwd, 'package.json')}`); + console.log(`Checking dependencies ${path.join(cwd, "package.json")}`); if (err) { console.error(err.stderr); process.exit(err.exitCode); diff --git a/@packages/utils/package.json b/@packages/utils/package.json index 7a9e693ba2..7c26083e6c 100644 --- a/@packages/utils/package.json +++ b/@packages/utils/package.json @@ -1,6 +1,7 @@ { "name": "@commitlint/utils", - "version": "13.0.0", + "type": "module", + "version": "20.0.0", "description": "Development utilities for @commitlint", "private": true, "files": [ @@ -16,16 +17,17 @@ "pkg": "node pkg-check.js --skip-main" }, "engines": { - "node": ">=v12" + "node": ">=v18" }, "repository": { "type": "git", - "url": "https://github.com/conventional-changelog/commitlint.git" + "url": "https://github.com/conventional-changelog/commitlint.git", + "directory": "@packages/utils" }, "bugs": { "url": "https://github.com/conventional-changelog/commitlint/issues" }, - "homepage": "https://github.com/conventional-changelog/commitlint#readme", + "homepage": "https://commitlint.js.org/", "keywords": [ "conventional-changelog", "commitlint", @@ -37,15 +39,16 @@ }, "license": "MIT", "devDependencies": { - "@types/yargs": "^17.0.0" + "@types/require-from-string": "^1.2.3", + "@types/tar-fs": "^2.0.4", + "@types/yargs": "^17.0.29" }, "dependencies": { - "execa": "^5.0.0", - "fs-extra": "^10.0.0", - "read-pkg": "6.0.0", - "require-from-string": "2.0.2", - "tar-fs": "2.1.1", - "tmp": "0.2.1", + "read-pkg": "^9.0.1", + "require-from-string": "^2.0.2", + "tar-fs": "^3.0.5", + "tinyexec": "^1.0.0", + "tmp": "^0.2.1", "yargs": "^17.0.0" }, "gitHead": "71f0194f33943954a8dac1c458be47e5049717cd" diff --git a/@packages/utils/pkg-check.js b/@packages/utils/pkg-check.js index a9d5ccdeb6..4f360df846 100755 --- a/@packages/utils/pkg-check.js +++ b/@packages/utils/pkg-check.js @@ -1,19 +1,19 @@ #!/usr/bin/env node -const path = require('path'); -const fs = require('fs-extra'); -const zlib = require('zlib'); +import path from "node:path"; +import fs from "node:fs"; -const execa = require('execa'); -const yargs = require('yargs'); -const readPkg = require('read-pkg'); -const requireFromString = require('require-from-string'); -const tar = require('tar-fs'); -const tmp = require('tmp'); +import readPkg from "read-pkg"; +import requireFromString from "require-from-string"; +import tar from "tar-fs"; +import { x } from "tinyexec"; +import tmp from "tmp"; +import yargs from "yargs"; +import zlib from "node:zlib"; tmp.setGracefulCleanup(); const PRELUDE = ` -var Module = require('module'); +var Module = require('node:module'); var originalLoader = Module._load Module._load = function(path, parent) { @@ -32,16 +32,16 @@ Module._load = function(path, parent) { function main(flags) { if (!Proxy) { console - .warn('Skipping pkg-check, detected missing Proxy support') + .warn("Skipping pkg-check, detected missing Proxy support") .process.exit(0); } const cwd = flags.cwd || process.cwd(); const skipImport = - typeof flags.skipImport === 'boolean' ? flags.skipImport : false; + typeof flags.skipImport === "boolean" ? flags.skipImport : false; - return readPkg({cwd}).then((pkg) => { - return getTarballFiles(cwd, {write: !skipImport}).then((tarball) => { + return readPkg({ cwd }).then((pkg) => { + return getTarballFiles(cwd, { write: !skipImport }).then((tarball) => { return getPackageFiles(cwd).then((pkgFiles) => { let problems = []; @@ -50,16 +50,16 @@ function main(flags) { pkgFiles.bin .filter((binFile) => tarball.files.indexOf(binFile) === -1) .map((binFile) => ({ - type: 'bin', + type: "bin", file: binFile, message: `Required bin file ${binFile} not found for ${pkg.name}`, - })) + })), ); } if (!flags.skipMain && tarball.files.indexOf(pkgFiles.main) === -1) { problems.push({ - type: 'main', + type: "main", file: pkgFiles.main, message: `Required main file ${pkgFiles.main} not found for ${pkg.name}`, }); @@ -67,11 +67,11 @@ function main(flags) { if (!flags.skipImport && !flags.skipMain) { const importable = fileImportable( - path.join(tarball.dirname, pkgFiles.main) + path.join(tarball.dirname, pkgFiles.main), ); if (!importable[1]) { problems.push({ - type: 'import', + type: "import", file: pkgFiles.main, message: `Error while importing ${pkgFiles.main}: ${importable[0].message}`, }); @@ -93,37 +93,37 @@ main( yargs .options({ cwd: { - description: 'directory to execute in', - type: 'string', + description: "directory to execute in", + type: "string", }, skipMain: { default: false, - type: 'boolean', - description: 'Skip main checks', + type: "boolean", + description: "Skip main checks", }, skipBin: { default: false, - type: 'boolean', - description: 'Skip bin checks', + type: "boolean", + description: "Skip bin checks", }, skipImport: { default: false, - type: 'boolean', - description: 'Skip import smoke test', + type: "boolean", + description: "Skip import smoke test", }, }) - .scriptName('pkg-check') - .usage('pkg-check\n') - .usage('Check if a package creates valid tarballs') - .example('$0', '') + .scriptName("pkg-check") + .usage("pkg-check\n") + .usage("Check if a package creates valid tarballs") + .example("$0", "") .help() .version() - .strict().argv + .strict().argv, ) .then((report) => { if (report.problems.length > 0) { console.log( - `Found ${report.problems.length} problems while checking tarball for ${report.pkg.name}:` + `Found ${report.problems.length} problems while checking tarball for ${report.pkg.name}:`, ); report.problems.forEach((problem) => { @@ -145,14 +145,16 @@ async function getTarballFiles(source, options) { unsafeCleanup: true, }); const cwd = tmpDir.name; - const tarball = path.join(cwd, 'test-archive.tgz'); - await execa('yarn', ['pack', '--filename', tarball], {cwd: source}); + const tarball = path.join(cwd, "test-archive.tgz"); + await x("yarn", ["pack", "--filename", tarball], { + nodeOptions: { cwd: source }, + }); return getArchiveFiles(tarball, options); } function getArchiveFiles(filePath, options) { - const write = typeof options.write === 'boolean' ? options.write : true; + const write = typeof options.write === "boolean" ? options.write : true; return new Promise((resolve, reject) => { const files = []; @@ -161,17 +163,17 @@ function getArchiveFiles(filePath, options) { .pipe( tar.extract(path.dirname(filePath), { ignore(_, header) { - files.push(path.relative('package', header.name)); + files.push(path.relative("package", header.name)); return !write; }, - }) + }), ) - .once('error', (err) => reject(err)) - .once('finish', () => + .once("error", (err) => reject(err)) + .once("finish", () => resolve({ - dirname: path.join(path.dirname(filePath), 'package'), + dirname: path.join(path.dirname(filePath), "package"), files: files, - }) + }), ); }); } @@ -179,7 +181,7 @@ function getArchiveFiles(filePath, options) { function getPackageFiles(source) { return readPkg(source).then((pkg) => { return { - main: normalizeMainPath(pkg.main || './index.js'), + main: normalizeMainPath(pkg.main || "./index.js"), bin: getPkgBinFiles(pkg.bin), }; }); @@ -198,11 +200,11 @@ function getPkgBinFiles(bin) { return []; } - if (typeof bin === 'string') { + if (typeof bin === "string") { return [path.normalize(bin)]; } - if (typeof bin === 'object') { + if (typeof bin === "object") { return Object.values(bin).map((b) => path.normalize(b)); } } @@ -214,7 +216,7 @@ function fileImportable(file) { ${PRELUDE} ${fs.readFileSync(file)} `, - file + file, ); return [null, true]; } catch (err) { diff --git a/CHANGELOG.md b/CHANGELOG.md index 85581a9a3e..27d8b8092c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,882 +3,1789 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. -# [13.1.0](https://github.com/conventional-changelog/commitlint/compare/v13.0.0...v13.1.0) (2021-07-24) +# [20.1.0](https://github.com/conventional-changelog/commitlint/compare/v20.0.0...v20.1.0) (2025-09-30) ### Bug Fixes -* **cz-commitlint:** fix minor formatting issues ([99d8881](https://github.com/conventional-changelog/commitlint/commit/99d8881d0d951deded6d9e31bbb279d04101549b)) -* **types:** adds TargetCaseType[] for CaseRuleConfig ([c3bef38](https://github.com/conventional-changelog/commitlint/commit/c3bef384ff1a3ec428ba7c86bc778c50a9e6eead)) -* update dependency import-from to v4 ([#2629](https://github.com/conventional-changelog/commitlint/issues/2629)) ([5bcb604](https://github.com/conventional-changelog/commitlint/commit/5bcb60456cd9d4c8f0f0bae21ca7c3d1c73943ca)) -* **cli:** remove hard coded comment char with linting `COMMIT_EDIT_MSG` ([#2618](https://github.com/conventional-changelog/commitlint/issues/2618)) ([5badf6d](https://github.com/conventional-changelog/commitlint/commit/5badf6dc08116ed3557e6c780e55764b4f07ca67)), closes [#2351](https://github.com/conventional-changelog/commitlint/issues/2351) +* **resolve-extends:** add import attribute for JSON config files ([#4551](https://github.com/conventional-changelog/commitlint/issues/4551)) ([82936c9](https://github.com/conventional-changelog/commitlint/commit/82936c90a2845b4f5721eef3c71d6183416d5b78)) ### Features -* **rules:** allow body-case to accept an array of cases ([5383c9e](https://github.com/conventional-changelog/commitlint/commit/5383c9edcd9a351ea1c33ed49f47afed9b1cde6b)), closes [#2631](https://github.com/conventional-changelog/commitlint/issues/2631) +* **config-pnpm-scopes:** allow global scope ([#4553](https://github.com/conventional-changelog/commitlint/issues/4553)) ([e571970](https://github.com/conventional-changelog/commitlint/commit/e57197061447eb9ea74b8d81ab003ad3b4652be6)) -# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) ### Bug Fixes -* update dependency chalk to v4.1.1 ([#2608](https://github.com/conventional-changelog/commitlint/issues/2608)) ([f41b123](https://github.com/conventional-changelog/commitlint/commit/f41b1237c7f7b2ff23b87643939569276d77b304)) -* update dependency yargs to v17.0.1 ([#2609](https://github.com/conventional-changelog/commitlint/issues/2609)) ([afbfd10](https://github.com/conventional-changelog/commitlint/commit/afbfd10592579c544d8e2c313f2c2baef68990f8)) +* update dependency tar-fs to v3.1.1 [security] ([#4550](https://github.com/conventional-changelog/commitlint/issues/4550)) ([273a43e](https://github.com/conventional-changelog/commitlint/commit/273a43e359fc04b7b8f4b4949ec7ecc07718b786)) -### Features +* feat(rules)!: make body-max-line-length ignore lines with URLs (#4486) ([2f37a88](https://github.com/conventional-changelog/commitlint/commit/2f37a886be4b07bcd8e1126cc6a13256e7b6cc37)), closes [#4486](https://github.com/conventional-changelog/commitlint/issues/4486) + -* add subject-exclamation-mark rule to improve error messages ([#2593](https://github.com/conventional-changelog/commitlint/issues/2593)) ([be701bd](https://github.com/conventional-changelog/commitlint/commit/be701bdb1de4e667b7a872767244285c4fa4fda4)) -* **rules:** add `trailer-exists` rule ([#2578](https://github.com/conventional-changelog/commitlint/issues/2578)) ([cd3816d](https://github.com/conventional-changelog/commitlint/commit/cd3816d553762eae99e088689395c55afce0c6cc)) +### BREAKING CHANGES +* when lines contain URLs exceeding the maximum +line length `body-max-line-length` will be ignored -* chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) -### BREAKING CHANGES -* minimum node version is 12 +## [19.9.1](https://github.com/conventional-changelog/commitlint/compare/v19.9.0...v19.9.1) (2025-08-29) +### Bug Fixes +* add TypeScript support and configuration for pnpm scopes ([#4544](https://github.com/conventional-changelog/commitlint/issues/4544)) ([ea75778](https://github.com/conventional-changelog/commitlint/commit/ea75778e8d32c932d85062902456cd821e471fdd)) -## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) + + + + +# [19.9.0](https://github.com/conventional-changelog/commitlint/compare/v19.8.1...v19.9.0) (2025-08-26) ### Bug Fixes -* update dependency fs-extra to v10 ([#2575](https://github.com/conventional-changelog/commitlint/issues/2575)) ([d47d2b5](https://github.com/conventional-changelog/commitlint/commit/d47d2b595b980adadd4fb8ff198c1914caeff18f)) -* update dependency yargs to v17 ([#2574](https://github.com/conventional-changelog/commitlint/issues/2574)) ([81c38dd](https://github.com/conventional-changelog/commitlint/commit/81c38ddf15f239b525f673b26b2ee6606f2ee8f6)) +* update dependency jest-environment-node to v30 ([#4448](https://github.com/conventional-changelog/commitlint/issues/4448)) ([42ca849](https://github.com/conventional-changelog/commitlint/commit/42ca849db3581bb5b7f1bbbcd0dfeda912566e5d)) +* update dependency jest-environment-node to v30.0.2 ([#4469](https://github.com/conventional-changelog/commitlint/issues/4469)) ([4da7e43](https://github.com/conventional-changelog/commitlint/commit/4da7e43be4134cbc01f847f82ef438fdfcc6dda9)) +* update dependency tar-fs to v3.0.10 ([#4461](https://github.com/conventional-changelog/commitlint/issues/4461)) ([f02c47c](https://github.com/conventional-changelog/commitlint/commit/f02c47c669055f3ce6f0f4ba553d4a5ed4e1ee57)) +* update dependency tar-fs to v3.0.9 ([#4421](https://github.com/conventional-changelog/commitlint/issues/4421)) ([0650e03](https://github.com/conventional-changelog/commitlint/commit/0650e03d960eb904c40a3faf4c8d24415807bbdd)) +* update dependency tar-fs to v3.1.0 ([#4496](https://github.com/conventional-changelog/commitlint/issues/4496)) ([31b4f72](https://github.com/conventional-changelog/commitlint/commit/31b4f72d2fdca5094b1325bdac7bcd5c5693c423)) +### Features +* **config-pnpm-scopes:** migrate package to TypeScript ([#4541](https://github.com/conventional-changelog/commitlint/issues/4541)) ([6ae36ea](https://github.com/conventional-changelog/commitlint/commit/6ae36ea5a55d7736024461ec6af94a14b821acc4)) -## [12.1.2](https://github.com/conventional-changelog/commitlint/compare/v12.1.1...v12.1.2) (2021-04-29) +### Reverts + +* Revert "chore: update dependency cross-env to v10 (#4528)" (#4529) ([b5bfd12](https://github.com/conventional-changelog/commitlint/commit/b5bfd125140c5a7a6bcdefb9c3d22b7c13e3ea17)), closes [#4528](https://github.com/conventional-changelog/commitlint/issues/4528) [#4529](https://github.com/conventional-changelog/commitlint/issues/4529) + + + + + +## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) ### Bug Fixes -* **rules:** fix subject-full-stop rule config value type ([#2534](https://github.com/conventional-changelog/commitlint/issues/2534)) ([2ab3c57](https://github.com/conventional-changelog/commitlint/commit/2ab3c57b709ddad3fc98d768309ac4fdac8cb68a)) -* **types:** update chalk import ([#2535](https://github.com/conventional-changelog/commitlint/issues/2535)) ([89f9a6d](https://github.com/conventional-changelog/commitlint/commit/89f9a6d759f7296438e184a93c1f766aba1443ca)) +* update dependency tinyexec to v1 ([#4332](https://github.com/conventional-changelog/commitlint/issues/4332)) ([e49449f](https://github.com/conventional-changelog/commitlint/commit/e49449fa9452069cdbf194f94d536194d362a299)) +* update dependency tinyexec to v1.0.1 ([#4347](https://github.com/conventional-changelog/commitlint/issues/4347)) ([c1b26d1](https://github.com/conventional-changelog/commitlint/commit/c1b26d1579a5bc310a750f2c75143027129d2321)) +### Performance Improvements +* **rules:** optimize header-trim ([#4363](https://github.com/conventional-changelog/commitlint/issues/4363)) ([b7e404b](https://github.com/conventional-changelog/commitlint/commit/b7e404bc036dbd3cbdffa38e85c833d10e52d68b)) -## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) + + + +# [19.8.0](https://github.com/conventional-changelog/commitlint/compare/v19.7.1...v19.8.0) (2025-03-07) ### Bug Fixes -* update dependency read-pkg to v6 ([#2530](https://github.com/conventional-changelog/commitlint/issues/2530)) ([d38a2ad](https://github.com/conventional-changelog/commitlint/commit/d38a2adc07f4cd6dad48aadbb73f2f1d3740e689)) -* **config-lerna-scopes:** ignore packages without names ([#2514](https://github.com/conventional-changelog/commitlint/issues/2514)) ([df3bf71](https://github.com/conventional-changelog/commitlint/commit/df3bf71ab36a085ef35a1491025c0d2e2b92ff77)) -* update dependency semver to v7.3.5 ([#2519](https://github.com/conventional-changelog/commitlint/issues/2519)) ([5113f22](https://github.com/conventional-changelog/commitlint/commit/5113f22c620e7b187fd558e5befa541b448ea18b)) -* **prompt:** modify the entry point to pass commitizen's function check ([#2501](https://github.com/conventional-changelog/commitlint/issues/2501)) ([0173fb7](https://github.com/conventional-changelog/commitlint/commit/0173fb7cc01dc8442ed88a0ab8feec20c955deee)), closes [/github.com/conventional-changelog/commitlint/issues/2486#issuecomment-791682272](https://github.com//github.com/conventional-changelog/commitlint/issues/2486/issues/issuecomment-791682272) [/github.com/conventional-changelog/commitlint/issues/2486#issuecomment-791682272](https://github.com//github.com/conventional-changelog/commitlint/issues/2486/issues/issuecomment-791682272) +* **config-lerna-scopes:** remove deprecated @lerna/project dependency ([#4284](https://github.com/conventional-changelog/commitlint/issues/4284)) ([f2f78f1](https://github.com/conventional-changelog/commitlint/commit/f2f78f105a32d040d8eb7e340f59a1d50fad9ac0)) +* update dependency semver to v7.7.1 ([#4272](https://github.com/conventional-changelog/commitlint/issues/4272)) ([6148587](https://github.com/conventional-changelog/commitlint/commit/6148587400b7f4c041183e3b2e5f1cfadbe2d6b0)) +### Features +* **config-workspace-scopes:** add config preset for npm and yarn workspaces ([#4269](https://github.com/conventional-changelog/commitlint/issues/4269)) ([67ff9e8](https://github.com/conventional-changelog/commitlint/commit/67ff9e82c10898757052df1d4233566b0b2cb433)) -# [12.1.0](https://github.com/conventional-changelog/commitlint/compare/v12.0.1...v12.1.0) (2021-03-06) +### Performance Improvements +* use `node:` prefix to bypass require.cache call for builtins ([#4302](https://github.com/conventional-changelog/commitlint/issues/4302)) ([0cd8f41](https://github.com/conventional-changelog/commitlint/commit/0cd8f410573fe11383f788b1ceb7e0946143591d)) -### Features -* **config-lerna-scopes:** keep supporting lerna v3 ([51b0f4a](https://github.com/conventional-changelog/commitlint/commit/51b0f4a56f111c61419247755b1404b4e20d3a09)) +### Reverts +* Revert "fix: improve security validation regex in is-ignored function (#4258)" (#4314) ([b27024a](https://github.com/conventional-changelog/commitlint/commit/b27024a5ae509d1df9373ed712f2279d0bc39170)), closes [#4258](https://github.com/conventional-changelog/commitlint/issues/4258) [#4314](https://github.com/conventional-changelog/commitlint/issues/4314) -## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) + +## [19.7.1](https://github.com/conventional-changelog/commitlint/compare/v19.7.0...v19.7.1) (2025-02-02) ### Bug Fixes -* update dependency conventional-commits-parser to v3.2.1 ([#2459](https://github.com/conventional-changelog/commitlint/issues/2459)) ([8bcc4f0](https://github.com/conventional-changelog/commitlint/commit/8bcc4f0b5ff8e0e2ae8ce960ccd1a4021c8e6cbb)) -* **load:** use `Rule | AsyncRule | SyncRule` as rule value type in `Plugin` ([#2146](https://github.com/conventional-changelog/commitlint/issues/2146)) ([75b67b8](https://github.com/conventional-changelog/commitlint/commit/75b67b8fb7fc4df21267b98f0c9daeeb1130b824)) -* **types:** correct chalkColor type ([#2420](https://github.com/conventional-changelog/commitlint/issues/2420)) ([ef8bdad](https://github.com/conventional-changelog/commitlint/commit/ef8bdad96c9ee7c3ad67f8280818c7f49c1df1fe)) -* update dependency throat to v6 ([#2417](https://github.com/conventional-changelog/commitlint/issues/2417)) ([6f7db1b](https://github.com/conventional-changelog/commitlint/commit/6f7db1b39c48561b84a4fce9623fb045c5467fe8)) +* **config-nx-scopes:** fix for projects without explicit targets ([#4261](https://github.com/conventional-changelog/commitlint/issues/4261)) ([25bb2cd](https://github.com/conventional-changelog/commitlint/commit/25bb2cd8c70353637f77d471e39f4e4b17fa4cae)) +* improve security validation regex in is-ignored function ([#4258](https://github.com/conventional-changelog/commitlint/issues/4258)) ([7403d63](https://github.com/conventional-changelog/commitlint/commit/7403d6382cc2fb1f066a47d7229593eefe528561)) +* update dependency fast-glob to v3.3.3 ([#4235](https://github.com/conventional-changelog/commitlint/issues/4235)) ([c286237](https://github.com/conventional-changelog/commitlint/commit/c28623733351f2920d32e27169a27e127f900985)) +* update dependency fs-extra to v11.3.0 ([#4249](https://github.com/conventional-changelog/commitlint/issues/4249)) ([39acfe4](https://github.com/conventional-changelog/commitlint/commit/39acfe4a3d88863d126a6a9661a80246a7df9428)) +* update dependency tar-fs to v3.0.7 ([#4243](https://github.com/conventional-changelog/commitlint/issues/4243)) ([708320f](https://github.com/conventional-changelog/commitlint/commit/708320f0403684d2f76a20eb8a83deb84c0c808e)) +* update dependency tar-fs to v3.0.8 ([#4247](https://github.com/conventional-changelog/commitlint/issues/4247)) ([ecb5d3a](https://github.com/conventional-changelog/commitlint/commit/ecb5d3a1c5be5713ccdbb4f4e863390a80d8d917)) -# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) +# [19.7.0](https://github.com/conventional-changelog/commitlint/compare/v19.6.1...v19.7.0) (2025-01-04) ### Bug Fixes -* remove unnecessary react babel transforms ([#2399](https://github.com/conventional-changelog/commitlint/issues/2399)) ([78f02fd](https://github.com/conventional-changelog/commitlint/commit/78f02fdb69c811b5ac38a7d018502aeeb785be04)) -* **utils:** update code to allow it to be executed ([#982](https://github.com/conventional-changelog/commitlint/issues/982)) ([52696d0](https://github.com/conventional-changelog/commitlint/commit/52696d048317944aa0d638b8702df78f8756d44b)) -* update dependency @types/fs-extra to v9.0.2 ([#2250](https://github.com/conventional-changelog/commitlint/issues/2250)) ([a10fa0b](https://github.com/conventional-changelog/commitlint/commit/a10fa0b580bdb09fd713beac78721cc5d579c67c)) -* update dependency @types/fs-extra to v9.0.5 ([#2360](https://github.com/conventional-changelog/commitlint/issues/2360)) ([3266712](https://github.com/conventional-changelog/commitlint/commit/3266712039e7ad6a13ed2d3097c28902b73cb701)) -* update dependency conventional-changelog-angular to v5.0.12 ([#2361](https://github.com/conventional-changelog/commitlint/issues/2361)) ([5766b39](https://github.com/conventional-changelog/commitlint/commit/5766b39b4ffb22452259827f131a2e7871637205)) -* update dependency conventional-changelog-conventionalcommits to v4.4.0 ([#2115](https://github.com/conventional-changelog/commitlint/issues/2115)) ([bccc9f5](https://github.com/conventional-changelog/commitlint/commit/bccc9f53df26b98bf51e4183d54ca66c45a51857)) -* update dependency conventional-changelog-conventionalcommits to v4.5.0 ([#2362](https://github.com/conventional-changelog/commitlint/issues/2362)) ([01c78bf](https://github.com/conventional-changelog/commitlint/commit/01c78bff6451befbc52294047c665326bc4eb9b9)) -* update dependency execa to v4.1.0 ([#2251](https://github.com/conventional-changelog/commitlint/issues/2251)) ([b5743dd](https://github.com/conventional-changelog/commitlint/commit/b5743dd1e49bbe7eac03f34bc38c59df5fbaf2a0)) -* update dependency execa to v5 ([#2341](https://github.com/conventional-changelog/commitlint/issues/2341)) ([f349df9](https://github.com/conventional-changelog/commitlint/commit/f349df90f08096a9bcad46b5e55b411aac327a24)) -* update dependency git-raw-commits to v2.0.7 ([#2116](https://github.com/conventional-changelog/commitlint/issues/2116)) ([ef969f3](https://github.com/conventional-changelog/commitlint/commit/ef969f375df170d6bdaadad205333352e01bb24d)) -* update dependency git-raw-commits to v2.0.8 ([#2364](https://github.com/conventional-changelog/commitlint/issues/2364)) ([3371715](https://github.com/conventional-changelog/commitlint/commit/3371715871d0381190635bd392780b16dd55e0c7)) -* update dependency meow to v8 ([#2245](https://github.com/conventional-changelog/commitlint/issues/2245)) ([890961b](https://github.com/conventional-changelog/commitlint/commit/890961b52b1552c1bb2798db02915e28686983f0)) -* update dependency meow to v8.1.0 ([#2380](https://github.com/conventional-changelog/commitlint/issues/2380)) ([0fbadcf](https://github.com/conventional-changelog/commitlint/commit/0fbadcf1d45c2e97f1da9938b3b80c0b45eba18c)) -* update dependency pkg-dir to v5 ([#2168](https://github.com/conventional-changelog/commitlint/issues/2168)) ([b9d1c84](https://github.com/conventional-changelog/commitlint/commit/b9d1c8462950303a7695f248849dd9f6a58b5a9a)) -* update dependency semver to v7.3.4 ([#2336](https://github.com/conventional-changelog/commitlint/issues/2336)) ([790b61a](https://github.com/conventional-changelog/commitlint/commit/790b61afa668d0eab80bbe49db58d3d5d29bb16e)) -* update dependency tar-fs to v2.1.1 ([#2261](https://github.com/conventional-changelog/commitlint/issues/2261)) ([a04f24f](https://github.com/conventional-changelog/commitlint/commit/a04f24f00873209d6d96cd894450d17fdfe9ca58)) -* **is-ignored:** ignore azure devops messages ([#2230](https://github.com/conventional-changelog/commitlint/issues/2230)) ([fe29ce7](https://github.com/conventional-changelog/commitlint/commit/fe29ce76bd87d5b42048228fbf0f47cc8d5411ec)) -* update dependency yargs to v16 ([204f36d](https://github.com/conventional-changelog/commitlint/commit/204f36d0a522afaf3a88739b401aea15ffa0b891)) -* update dependency yargs to v16.1.0 ([#2252](https://github.com/conventional-changelog/commitlint/issues/2252)) ([6478d07](https://github.com/conventional-changelog/commitlint/commit/6478d07afe0fe1736cf1aef1618c7d90d60d9117)) -* **resolve-extends:** `extends` field should be resolved from left to right ([#2070](https://github.com/conventional-changelog/commitlint/issues/2070)) ([c0a86f5](https://github.com/conventional-changelog/commitlint/commit/c0a86f5b5ed6ef071acef4baf38e7fc549fbec37)) +* update dependency chalk to v5.4.1 ([#4228](https://github.com/conventional-changelog/commitlint/issues/4228)) ([0b11176](https://github.com/conventional-changelog/commitlint/commit/0b111767fa6700eab82c7a4804273c0f6275a3d3)) +* update dependency tinyexec to v0.3.2 ([#4229](https://github.com/conventional-changelog/commitlint/issues/4229)) ([dca0d97](https://github.com/conventional-changelog/commitlint/commit/dca0d97261977681b0366d9733dbbf227bb9a9b1)) ### Features -* **cli:** implement print-config cli flag ([#2391](https://github.com/conventional-changelog/commitlint/issues/2391)) ([8626883](https://github.com/conventional-changelog/commitlint/commit/86268833946dea9dcf1c15459456cd4427d17835)) -* **config-lerna-scopes:** support yarn workspaces ([#2149](https://github.com/conventional-changelog/commitlint/issues/2149)) ([b244246](https://github.com/conventional-changelog/commitlint/commit/b2442469afe3b11c20b0101be7656ced43fab366)) -* **load:** allow specifying helpUrl via config ([#2180](https://github.com/conventional-changelog/commitlint/issues/2180)) ([d6795a3](https://github.com/conventional-changelog/commitlint/commit/d6795a3c4633ba6efd7a0fcff48339dc291cd832)) -* **rules:** add body-full-stop rule ([#2144](https://github.com/conventional-changelog/commitlint/issues/2144)) ([7767ca2](https://github.com/conventional-changelog/commitlint/commit/7767ca2591d10207c4abe7f3e5e6de503ac12a25)) +* support lerna 7 and 8 ([#4221](https://github.com/conventional-changelog/commitlint/issues/4221)) ([3b8da63](https://github.com/conventional-changelog/commitlint/commit/3b8da63f50f868555a3f026a76e96cd8d20638de)) + -### BREAKING CHANGES -* **resolve-extends:** The order of the `extends` resolution is changed from right-to-left to left-to-right +## [19.6.1](https://github.com/conventional-changelog/commitlint/compare/v19.6.0...v19.6.1) (2024-12-15) +### Bug Fixes +* force bump for container usage ([#4200](https://github.com/conventional-changelog/commitlint/issues/4200)) ([21858df](https://github.com/conventional-changelog/commitlint/commit/21858dfa25acb5a1f244cdcba7ff20735fa5903f)) -# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) -### Bug Fixes -* **cli:** remove default value from edit option [#2065](https://github.com/conventional-changelog/commitlint/issues/2065) ([3d4116d](https://github.com/conventional-changelog/commitlint/commit/3d4116d044a2f5149a9c9c1d9fa35abf5e232479)) -* **rules:** ignore comments in `signed-off-by` ([#2098](https://github.com/conventional-changelog/commitlint/issues/2098)) ([b610bcd](https://github.com/conventional-changelog/commitlint/commit/b610bcd15215cc5f14fb6de07914ed595cc3047b)) -* update dependency @types/fs-extra to ^9.0.1 ([#2088](https://github.com/conventional-changelog/commitlint/issues/2088)) ([cb1028e](https://github.com/conventional-changelog/commitlint/commit/cb1028ef2700d86991c69a1e2ad391bc1bdc9d90)) +# [19.6.0](https://github.com/conventional-changelog/commitlint/compare/v19.5.0...v19.6.0) (2024-11-19) -* refactor!: drop support for lerna v2 ([59667b3](https://github.com/conventional-changelog/commitlint/commit/59667b376118323b1312d3d1084b9178918f3d23)) +### Bug Fixes -### BREAKING CHANGES +* update dependency inquirer to v9.3.7 ([#4167](https://github.com/conventional-changelog/commitlint/issues/4167)) ([610a8f2](https://github.com/conventional-changelog/commitlint/commit/610a8f212af3329d48663f20324b14140028dccc)) -* remove lerna v2 support and tests +### Features +* **is-ignored:** ignore reapply commits ([#4186](https://github.com/conventional-changelog/commitlint/issues/4186)) ([49ba56d](https://github.com/conventional-changelog/commitlint/commit/49ba56d9dd4c72e918005e6ca62f110a393b8f07)) +* support using delimiter in `scope-enum` ([#4161](https://github.com/conventional-changelog/commitlint/issues/4161)) ([f55521d](https://github.com/conventional-changelog/commitlint/commit/f55521dbb8ce0530ecb9557122689bba740fb2a5)) -# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) -### Bug Fixes +# [19.5.0](https://github.com/conventional-changelog/commitlint/compare/v19.4.1...v19.5.0) (2024-09-11) -* update dependency ([#1993](https://github.com/conventional-changelog/commitlint/issues/1993)) ([32667e8](https://github.com/conventional-changelog/commitlint/commit/32667e8aa665cf94fe669ba048ad7abaf6abac6e)) -* update dependency cosmiconfig to v7 ([#2044](https://github.com/conventional-changelog/commitlint/issues/2044)) ([f4db933](https://github.com/conventional-changelog/commitlint/commit/f4db93324698ea39528be0d2692151546c2b5517)) -* update dependency execa to v4 ([#1936](https://github.com/conventional-changelog/commitlint/issues/1936)) ([8efb441](https://github.com/conventional-changelog/commitlint/commit/8efb44193058d286f7325327a6d33936b273ec91)) -* update dependency find-up to v5 ([#2060](https://github.com/conventional-changelog/commitlint/issues/2060)) ([25d42f4](https://github.com/conventional-changelog/commitlint/commit/25d42f4179396bdfbfc622a401d8ca8877102286)) -* update dependency fs-extra to v9 ([#1018](https://github.com/conventional-changelog/commitlint/issues/1018)) ([2df49fa](https://github.com/conventional-changelog/commitlint/commit/2df49fac907993ae78199a1012e918b0e2ff5621)) -* update dependency get-stdin to v8 ([#1938](https://github.com/conventional-changelog/commitlint/issues/1938)) ([f94a5c8](https://github.com/conventional-changelog/commitlint/commit/f94a5c82861523aa1cf407ffe062f99ecbbfb4e4)) +### Features -* refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) +* **cli:** use special errorCode for missing rules/config [#4142](https://github.com/conventional-changelog/commitlint/issues/4142) ([#4143](https://github.com/conventional-changelog/commitlint/issues/4143)) ([d7070d8](https://github.com/conventional-changelog/commitlint/commit/d7070d8a4905da7834a018825b37d52c2dd29f62)) -### BREAKING CHANGES -* remove node 8 from circle-ci checks -also remove node 13 because we do not support experimental versions -* docs: update node v10 to latest LTS 10 version +## [19.4.1](https://github.com/conventional-changelog/commitlint/compare/v19.4.0...v19.4.1) (2024-08-28) -Co-authored-by: Cedric van Putten <me@bycedric.com> -Co-authored-by: Cedric van Putten <me@bycedric.com> +### Bug Fixes +* **rules:** handle blank commit message in signed-off-by check ([#4124](https://github.com/conventional-changelog/commitlint/issues/4124)) ([7ab4bab](https://github.com/conventional-changelog/commitlint/commit/7ab4bab31f4b19ddedd850e435398037437007b6)) -## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) -**Note:** Version bump only for package @commitlint/root +# [19.4.0](https://github.com/conventional-changelog/commitlint/compare/v19.3.1...v19.4.0) (2024-08-07) +### Features + +* support command line options from a file ([#4109](https://github.com/conventional-changelog/commitlint/issues/4109)) ([a20e890](https://github.com/conventional-changelog/commitlint/commit/a20e890f6b6c8bacdc511d40cb41f29415bdd044)) +* support linting from the last tag ([#4110](https://github.com/conventional-changelog/commitlint/issues/4110)) ([4b204ec](https://github.com/conventional-changelog/commitlint/commit/4b204ecfb43dd6a00e24b51111aadbd78f9d58e1)) + -## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) + +## [19.3.1](https://github.com/conventional-changelog/commitlint/compare/v19.3.0...v19.3.1) (2024-05-13) ### Bug Fixes -* **load:** resolve plugins from extended configs ([#1976](https://github.com/conventional-changelog/commitlint/issues/1976)) ([d0f0eb9](https://github.com/conventional-changelog/commitlint/commit/d0f0eb9fde7efc2dff7a3aad190ded14303d3079)) -* mark internal packages as private [#972](https://github.com/conventional-changelog/commitlint/issues/972) ([#1970](https://github.com/conventional-changelog/commitlint/issues/1970)) ([2351124](https://github.com/conventional-changelog/commitlint/commit/23511248b2b4020ee87d04a838c7ce31e094c128)) +* **prompt:** prompt does not respect [body-leading-blank] setting ([#4066](https://github.com/conventional-changelog/commitlint/issues/4066)) ([3f1f44d](https://github.com/conventional-changelog/commitlint/commit/3f1f44d9cbb93438d01cfd79f9b71659411e126d)) +* update dependency ajv to v8.13.0 ([#4057](https://github.com/conventional-changelog/commitlint/issues/4057)) ([4e5957f](https://github.com/conventional-changelog/commitlint/commit/4e5957fcb120fbf31c2bdc5c5affe35eb556d3dc)) +* update dependency import-meta-resolve to v4.1.0 ([#4055](https://github.com/conventional-changelog/commitlint/issues/4055)) ([6cd9d76](https://github.com/conventional-changelog/commitlint/commit/6cd9d76b4f7d867c6085a5f99eab9b6ad15ab789)) +* update dependency inquirer to v9.2.20 ([#4047](https://github.com/conventional-changelog/commitlint/issues/4047)) ([b2a75c8](https://github.com/conventional-changelog/commitlint/commit/b2a75c881b8fa69501d93c4d29118aeaf0c989cd)) +* update dependency semver to v7.6.2 ([#4080](https://github.com/conventional-changelog/commitlint/issues/4080)) ([de28f20](https://github.com/conventional-changelog/commitlint/commit/de28f209db4d8aba4eb6e57e9f1fc0517143398d)) +* update dependency tar-fs to v3.0.6 ([#4048](https://github.com/conventional-changelog/commitlint/issues/4048)) ([4003205](https://github.com/conventional-changelog/commitlint/commit/40032050570e4f5a8c8ab4f390cee7611a92935e)) + +### Features +* **container:** add arm64 build ([#4049](https://github.com/conventional-changelog/commitlint/issues/4049)) ([28bed3f](https://github.com/conventional-changelog/commitlint/commit/28bed3f8453bf12062b938aa0247e24d56f183d6)), closes [#3926](https://github.com/conventional-changelog/commitlint/issues/3926) -# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) + + +# [19.3.0](https://github.com/conventional-changelog/commitlint/compare/v19.2.2...v19.3.0) (2024-04-23) ### Bug Fixes -* update dependency chalk to v4 ([#1275](https://github.com/conventional-changelog/commitlint/issues/1275)) ([a5d8fa1](https://github.com/conventional-changelog/commitlint/commit/a5d8fa118e8221361f14f5fd2b21d7aaad008a27)) -* update dependency conventional-changelog-conventionalcommits to v4.3.0 ([#1816](https://github.com/conventional-changelog/commitlint/issues/1816)) ([f99aeda](https://github.com/conventional-changelog/commitlint/commit/f99aeda068aabdb250e2c9819da7229a695154b9)) -* update dependency regenerator-runtime to v0.13.5 ([#1017](https://github.com/conventional-changelog/commitlint/issues/1017)) ([9c4fdf1](https://github.com/conventional-changelog/commitlint/commit/9c4fdf1b5f42677422532dad655af9aed9b43881)) -* update dependency semver to v7.3.2 ([#1369](https://github.com/conventional-changelog/commitlint/issues/1369)) ([3c09722](https://github.com/conventional-changelog/commitlint/commit/3c09722d2db85a94cd1f4bf25c6b4251b2c41bbb)) -* update dependency tar-fs to v2.1.0 ([#1103](https://github.com/conventional-changelog/commitlint/issues/1103)) ([7882036](https://github.com/conventional-changelog/commitlint/commit/788203689ebf51343ccf2e6eab530e19f4faf122)) -* update dependency tmp to v0.2.1 ([#1817](https://github.com/conventional-changelog/commitlint/issues/1817)) ([0ff72f4](https://github.com/conventional-changelog/commitlint/commit/0ff72f41bd48b3dd37f881f6fb11477d8f643735)) +* update dependency inquirer to v9.2.19 ([#4031](https://github.com/conventional-changelog/commitlint/issues/4031)) ([84126c1](https://github.com/conventional-changelog/commitlint/commit/84126c131a119b0704e0da5ae1707404fc6947b5)) ### Features -* add local plugins support ([#1692](https://github.com/conventional-changelog/commitlint/issues/1692)) ([7b29c48](https://github.com/conventional-changelog/commitlint/commit/7b29c48321b513e091849fbb2cc2bf0e6ebb94a6)) -* enable multiple scopes in scope-enum and scope-case rules ([#901](https://github.com/conventional-changelog/commitlint/issues/901)) ([73632ce](https://github.com/conventional-changelog/commitlint/commit/73632cec299d5c3a980d07037c08633c843a8555)) +* **container:** added @commitlint/config-nx-scopes for nx monorepos ([#3913](https://github.com/conventional-changelog/commitlint/issues/3913)) ([aa4df36](https://github.com/conventional-changelog/commitlint/commit/aa4df36b1d07e56230ff569aec5af727f1144aae)) +* **format:** print full commit message for valid commits if -V ([#4026](https://github.com/conventional-changelog/commitlint/issues/4026)) ([a7bbc49](https://github.com/conventional-changelog/commitlint/commit/a7bbc494e34885aba3f4b0c03b37d18ef2b8fbff)) -## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) +## [19.2.2](https://github.com/conventional-changelog/commitlint/compare/v19.2.1...v19.2.2) (2024-04-14) ### Bug Fixes -* add missing @babel/runtime dep [#1738](https://github.com/conventional-changelog/commitlint/issues/1738) ([#1754](https://github.com/conventional-changelog/commitlint/issues/1754)) ([09afcd6](https://github.com/conventional-changelog/commitlint/commit/09afcd647a2c1d00538cf1c970e3790d936111f8)) +* **is-ignored:** ignore "amend!" commits ([#4024](https://github.com/conventional-changelog/commitlint/issues/4024)) ([90078f6](https://github.com/conventional-changelog/commitlint/commit/90078f6a58523e0bde386b9b6aa3c05e8b916653)) +* update dependency inquirer to v9.2.17 ([#3996](https://github.com/conventional-changelog/commitlint/issues/3996)) ([44d0fcc](https://github.com/conventional-changelog/commitlint/commit/44d0fccf0e40962e6dceaee92b23333d9746904b)) +* update dependency inquirer to v9.2.18 ([#4025](https://github.com/conventional-changelog/commitlint/issues/4025)) ([52d7edc](https://github.com/conventional-changelog/commitlint/commit/52d7edcbbb68e99542777067b2cc5fa33a848762)) -# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) +## [19.2.1](https://github.com/conventional-changelog/commitlint/compare/v19.2.0...v19.2.1) (2024-03-19) ### Bug Fixes -* **cli:** add missing regenerator-runtime to dependencies ([#919](https://github.com/conventional-changelog/commitlint/issues/919)) ([ee5eac9](https://github.com/conventional-changelog/commitlint/commit/ee5eac98fa97ba5ba17030c8d2705aee5c7f3a3a)) -* [#840](https://github.com/conventional-changelog/commitlint/issues/840) add caret to lodash versions ([#843](https://github.com/conventional-changelog/commitlint/issues/843)) ([ffc0bac](https://github.com/conventional-changelog/commitlint/commit/ffc0bac26993acb2ab6a8fa51065f93c92b0d644)) -* drop support for 'improvement' type ([#899](https://github.com/conventional-changelog/commitlint/issues/899)) ([b27ab08](https://github.com/conventional-changelog/commitlint/commit/b27ab08544373cfb72a4808756e2e8126ea96a97)) -* **config-lerna-scopes:** correct lerna in peerDependencies ([#980](https://github.com/conventional-changelog/commitlint/issues/980)) ([f88f00d](https://github.com/conventional-changelog/commitlint/commit/f88f00d5d3d0a247b5635b50248bbb942b1ec962)) -* ignore empty commit messages [#615](https://github.com/conventional-changelog/commitlint/issues/615) ([#676](https://github.com/conventional-changelog/commitlint/issues/676)) ([c3eb1a7](https://github.com/conventional-changelog/commitlint/commit/c3eb1a76e08213d7ce1f200e35f8d5d6de18982a)) -* incorrect use of when in getForcedCaseFn ([#993](https://github.com/conventional-changelog/commitlint/issues/993)) ([34c11b8](https://github.com/conventional-changelog/commitlint/commit/34c11b8f3f233eca51866274a10d35231e8eb3d4)) -* update dependency semver to v7.1.3 ([#995](https://github.com/conventional-changelog/commitlint/issues/995)) ([4ee307a](https://github.com/conventional-changelog/commitlint/commit/4ee307a1f8c861ae5d8a038560d166c5d00ea8ba)) +* **config-nx-scopes:** include file extension in nx imports ([#3979](https://github.com/conventional-changelog/commitlint/issues/3979)) ([583250b](https://github.com/conventional-changelog/commitlint/commit/583250b919cf1eb338de3e3f5c848fff611a6212)) -### Features -* add async promise based rules methods into lint ([#976](https://github.com/conventional-changelog/commitlint/issues/976)) ([4443062](https://github.com/conventional-changelog/commitlint/commit/444306249b8a3d04524538f61edca8f6cc10d75f)) -* add possibility to extend from string ([#865](https://github.com/conventional-changelog/commitlint/issues/865)) ([056c6fe](https://github.com/conventional-changelog/commitlint/commit/056c6fef346b4e84f8b1f93038a9461a7cbd9beb)) -* passdown argv to lint command ([#891](https://github.com/conventional-changelog/commitlint/issues/891)) ([c49a57c](https://github.com/conventional-changelog/commitlint/commit/c49a57c77767b8213d565df3a8bbcd7369f36641)) -* **config-conventional:** footer/body-max-line ([#436](https://github.com/conventional-changelog/commitlint/issues/436)) ([8b394c9](https://github.com/conventional-changelog/commitlint/commit/8b394c94ffe37322d734bd4944add4a6cb2a4689)) -* **config-conventional:** increase header-max-length to 100 ([#860](https://github.com/conventional-changelog/commitlint/issues/860)) ([ff11998](https://github.com/conventional-changelog/commitlint/commit/ff11998e0cf6fcd4f03bc18ab27b1bdd6bf21906)), closes [#859](https://github.com/conventional-changelog/commitlint/issues/859) -### BREAKING CHANGES +# [19.2.0](https://github.com/conventional-changelog/commitlint/compare/v19.1.0...v19.2.0) (2024-03-15) -* 'improvement' type will now be rejected by this config. +### Bug Fixes +* update dependency inquirer to v9.2.16 ([#3972](https://github.com/conventional-changelog/commitlint/issues/3972)) ([ea1ab9c](https://github.com/conventional-changelog/commitlint/commit/ea1ab9cc8048a2b715473c878641d1e189daaf1c)) +### Features -## [8.3.5](https://github.com/conventional-changelog/commitlint/compare/v8.3.4...v8.3.5) (2020-01-15) +* **cli:** introduce new --last flag, to stop recommending HEAD~1 ([#3916](https://github.com/conventional-changelog/commitlint/issues/3916)) ([99f4f3f](https://github.com/conventional-changelog/commitlint/commit/99f4f3f4839190a2758083df7ba20b988e7b68a6)) +* **load:** update cosmiconfig to v9 to add support for `package.yaml` config ([#3976](https://github.com/conventional-changelog/commitlint/issues/3976)) ([94eab40](https://github.com/conventional-changelog/commitlint/commit/94eab40798e0c8d3945aa2b1e629669b231d8468)) -### Bug Fixes -* **is-ignored:** move types to dev dependencies ([#897](https://github.com/conventional-changelog/commitlint/issues/897)) ([aabc549](https://github.com/conventional-changelog/commitlint/commit/aabc549)) -* **resolve-extends:** move node types to dev dependencies ([#883](https://github.com/conventional-changelog/commitlint/issues/883)) ([b131a18](https://github.com/conventional-changelog/commitlint/commit/b131a18)), closes [#874](https://github.com/conventional-changelog/commitlint/issues/874) +# [19.1.0](https://github.com/conventional-changelog/commitlint/compare/v19.0.3...v19.1.0) (2024-03-12) +### Bug Fixes -## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) +* add `main` and `types` keys in package.json ([#3953](https://github.com/conventional-changelog/commitlint/issues/3953)) ([7ddaad4](https://github.com/conventional-changelog/commitlint/commit/7ddaad4bc4e71afe89f25cc02d3e19beba1ce6cd)) +* add missing `conditions` param for `moduleResolve` ([#3962](https://github.com/conventional-changelog/commitlint/issues/3962)) ([67baff9](https://github.com/conventional-changelog/commitlint/commit/67baff9182854bbe184b6cf71f977920a05c27a3)) +* add missing cjs entry in package ([#3967](https://github.com/conventional-changelog/commitlint/issues/3967)) ([9cea6fd](https://github.com/conventional-changelog/commitlint/commit/9cea6fdb7b1bf7cfc9a86e882e2742379b4b6aec)) +* update dependency @pnpm/read-project-manifest to v5.0.11 ([#3932](https://github.com/conventional-changelog/commitlint/issues/3932)) ([2525d14](https://github.com/conventional-changelog/commitlint/commit/2525d14b8c0bad0ed155863059fa3549e76dd7d3)) +* update dependency tmp to v0.2.3 ([#3945](https://github.com/conventional-changelog/commitlint/issues/3945)) ([25bab59](https://github.com/conventional-changelog/commitlint/commit/25bab594ed04dbe2cc3cc5020b70d98d1d4e0f53)) -### Bug Fixes +### Features -* **commitlint:** use new read pkg syntax ([#888](https://github.com/conventional-changelog/commitlint/issues/888)) ([6b3b9a9](https://github.com/conventional-changelog/commitlint/commit/6b3b9a9)) +* add CJS export for cz-commitlint ([#3963](https://github.com/conventional-changelog/commitlint/issues/3963)) ([6ae3c6a](https://github.com/conventional-changelog/commitlint/commit/6ae3c6a827de8622d827146ffb0984a9e62fe505)), closes [/github.com/conventional-changelog/commitlint/pull/3850#issuecomment-1984932236](https://github.com//github.com/conventional-changelog/commitlint/pull/3850/issues/issuecomment-1984932236) [#3949](https://github.com/conventional-changelog/commitlint/issues/3949) -## [8.3.1](https://github.com/conventional-changelog/commitlint/compare/v8.3.0...v8.3.1) (2019-10-16) +## [19.0.3](https://github.com/conventional-changelog/commitlint/compare/v19.0.2...v19.0.3) (2024-02-28) ### Bug Fixes -* **load:** resolve nested parser preset factories ([#831](https://github.com/conventional-changelog/commitlint/issues/831)) ([73a7df7](https://github.com/conventional-changelog/commitlint/commit/73a7df7)) +* mark `@types/conventional-commits-parser` as dep for `@commitlint/types` ([#3944](https://github.com/conventional-changelog/commitlint/issues/3944)) ([5a01f59](https://github.com/conventional-changelog/commitlint/commit/5a01f59661f0b908802728389631965eb8b49d47)), closes [#3929](https://github.com/conventional-changelog/commitlint/issues/3929) [#3942](https://github.com/conventional-changelog/commitlint/issues/3942) -# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) +## [19.0.2](https://github.com/conventional-changelog/commitlint/compare/v19.0.1...v19.0.2) (2024-02-28) -### Features +### Bug Fixes -* **cli:** add helpurl flag ([#789](https://github.com/conventional-changelog/commitlint/issues/789)) ([75cef4e](https://github.com/conventional-changelog/commitlint/commit/75cef4e)) -* **config-conventional:** use parser with short breaking change support ([#821](https://github.com/conventional-changelog/commitlint/issues/821)) ([4b5300a](https://github.com/conventional-changelog/commitlint/commit/4b5300a)) -* **resolve-extends:** accept absolute path in extends ([#825](https://github.com/conventional-changelog/commitlint/issues/825)) ([ecac29f](https://github.com/conventional-changelog/commitlint/commit/ecac29f)) +* fallback to `resolve-from` for Yarn P'n'P ([#3941](https://github.com/conventional-changelog/commitlint/issues/3941)) ([1eb9b5f](https://github.com/conventional-changelog/commitlint/commit/1eb9b5f29979d35f5840141523850a7402633378)), closes [#3936](https://github.com/conventional-changelog/commitlint/issues/3936) -# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) +## [19.0.1](https://github.com/conventional-changelog/commitlint/compare/v19.0.0...v19.0.1) (2024-02-27) -This release is versioned as minor change because some of the core components are rewritten to TypeScript. It's part of the full port to TypeScript, currently in progress at [#659](https://github.com/conventional-changelog/commitlint/issues/659). ### Bug Fixes -* pass defaultIgnores from configuration in @commitlint/cli ([#771](https://github.com/conventional-changelog/commitlint/issues/771)) ([a259014](https://github.com/conventional-changelog/commitlint/commit/a259014)) +* drop `resolve-from`, `resolve-global` and `import-fresh`, resolve global packages correctly ([#3939](https://github.com/conventional-changelog/commitlint/issues/3939)) ([8793c63](https://github.com/conventional-changelog/commitlint/commit/8793c639c083c33714da0a29429b338776813d0c)), closes [#3938](https://github.com/conventional-changelog/commitlint/issues/3938) -# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) +# [19.0.0](https://github.com/conventional-changelog/commitlint/compare/v18.6.2...v19.0.0) (2024-02-27) -This release is versioned as minor change because some of the core components are rewritten to TypeScript. It's part of the full port to TypeScript, currently in progress at [#659](https://github.com/conventional-changelog/commitlint/issues/659). -### Bug Fixes +* feat!: migrate to pure ESM (#3850) ([3423735](https://github.com/conventional-changelog/commitlint/commit/342373559bdf7c783c4ef37ff05dc38a5f681159)), closes [#3850](https://github.com/conventional-changelog/commitlint/issues/3850) + -* add explicit dependency on chalk ([#687](https://github.com/conventional-changelog/commitlint/issues/687)) ([9075844](https://github.com/conventional-changelog/commitlint/commit/9075844)) -* pass ignores from configuration in @commitlint/cli ([#668](https://github.com/conventional-changelog/commitlint/issues/668)) ([da99aaa](https://github.com/conventional-changelog/commitlint/commit/da99aaa)) +### Reverts +* Revert "chore: update tools version to v20" ([53fc619](https://github.com/conventional-changelog/commitlint/commit/53fc6196b8d23b347a342a23c6757d757f547878)) +* Revert "chore!: minimum node version v20" ([2816783](https://github.com/conventional-changelog/commitlint/commit/2816783d00e7eb967de3ac9347c2fc43dc8b94fa)) +* Revert "ci: add codeQuality job to run lint and format tasks (#3922)" ([8bb94ca](https://github.com/conventional-changelog/commitlint/commit/8bb94ca7552b70a3c6d185a1ee8e87d745799e75)), closes [#3922](https://github.com/conventional-changelog/commitlint/issues/3922) +* Revert "ci: update node version to v20" ([8a24546](https://github.com/conventional-changelog/commitlint/commit/8a2454661569890ee1dbe918fca3da758722fd38)) +### BREAKING CHANGES +* migrate to pure ESM -# [8.0.0](https://github.com/conventional-changelog/commitlint/compare/v7.6.2...v8.0.0) +* feat: migrate to pure ESM -### Breaking Changes +* chore: update snapshot -* fix: avoid excessive help text #606 (#637) - The commitlint default formatter is now silent for reports without warnings or errors. - Scripts relying on the success output of commitlint can restore the former output by specifying the --verbose flag. +* fix: load `parserPreset` with another `await` +* test: migrate to vitest -## [7.6.2](https://github.com/conventional-changelog/commitlint/compare/v7.6.0...v7.6.2) +* test: remove no replacement `--runInBand` test-ci script -* Republish packages with out of sync artifacts +* chore: fix code reviews -## [7.6.1](https://github.com/conventional-changelog/commitlint/compare/v7.6.0...v7.6.1) (2019-05-09) +* refactor(load): rewrite resolve logic +* fix(config-nx-scopes): fix syntax error -### Bug Fixes +* feat(resolve-extends): add resolveFrom and loadParserPreset -* ensure format() is available as commonjs default export [#645](https://github.com/conventional-changelog/commitlint/issues/645) ([ec3da92](https://github.com/conventional-changelog/commitlint/commit/ec3da92)) -* handle absolute config paths correctly [#647](https://github.com/conventional-changelog/commitlint/issues/647) ([49b3a77](https://github.com/conventional-changelog/commitlint/commit/49b3a77)) +* feat(load): use resolveFrom and loadParserPreset from resolve-extends +* test: include only @commitlint/* packages src in coverage -# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) +* test: explicit import vitest utilities +* test: remove @jest/globals from dependencies -### Bug Fixes +* fix(resolve-extends): `resolveFrom` output should be platform aware -* add @lerna/project to repository dependencies ([#598](https://github.com/conventional-changelog/commitlint/issues/598)) ([56f03ee](https://github.com/conventional-changelog/commitlint/commit/56f03ee)) -* address security warnings for dev dependencies ([3e0d824](https://github.com/conventional-changelog/commitlint/commit/3e0d824)) -* avoid excessive help text [#606](https://github.com/conventional-changelog/commitlint/issues/606) ([#637](https://github.com/conventional-changelog/commitlint/issues/637)) ([8f3c3b1](https://github.com/conventional-changelog/commitlint/commit/8f3c3b1)) -* don't merge array properties with custom opts ([#616](https://github.com/conventional-changelog/commitlint/issues/616)) ([f321647](https://github.com/conventional-changelog/commitlint/commit/f321647)), closes [#594](https://github.com/conventional-changelog/commitlint/issues/594) -* remove unneeded dev dependency ([6ccaf79](https://github.com/conventional-changelog/commitlint/commit/6ccaf79)) -* update cosmiconfig to safe >=5 [#599](https://github.com/conventional-changelog/commitlint/issues/599) ([f186fcb](https://github.com/conventional-changelog/commitlint/commit/f186fcb)) -* use sander.readFile correctly ([#448](https://github.com/conventional-changelog/commitlint/issues/448)) ([#630](https://github.com/conventional-changelog/commitlint/issues/630)) ([8e47985](https://github.com/conventional-changelog/commitlint/commit/8e47985)) +* test: restore NO_COLOR to test script +* chore: fix linting issues -### Features +* fix: should use fileURLToPath instead of pathname for Windows compatibility -* **resolve-extends:** accept short scoped package names in extends ([#597](https://github.com/conventional-changelog/commitlint/issues/597)) ([ba90e8e](https://github.com/conventional-changelog/commitlint/commit/ba90e8e)) -* adds support for plugins ([#228](https://github.com/conventional-changelog/commitlint/issues/228)) ([#588](https://github.com/conventional-changelog/commitlint/issues/588)) ([cea4564](https://github.com/conventional-changelog/commitlint/commit/cea4564)) -* config based is-ignored overrides ([#595](https://github.com/conventional-changelog/commitlint/issues/595)) ([2434d71](https://github.com/conventional-changelog/commitlint/commit/2434d71)) +* Apply suggestions from code review +* fix: should reuse `cli` instead call `yargs()` +* feat(cli): set terminalWidth as wrap to avoid work break on help +* Update .eslintrc.cjs +* feat: migrate @commitlint/config-conventional to pure ESM -## [7.5.2](https://github.com/conventional-changelog/commitlint/compare/v7.5.1...v7.5.2) (2019-02-11) + + + + +## [18.6.3](https://github.com/conventional-changelog/commitlint/compare/v18.6.2...v18.6.3) (2024-03-11) ### Bug Fixes -* failing sentence-case for subjects with slashes ([#574](https://github.com/conventional-changelog/commitlint/issues/574)) ([48a8602](https://github.com/conventional-changelog/commitlint/commit/48a8602)) -* **cli:** replace old links with new organisation links ([#578](https://github.com/conventional-changelog/commitlint/issues/578)) ([4075903](https://github.com/conventional-changelog/commitlint/commit/4075903)) +* add missing entry `wrapper.mjs` ([#3966](https://github.com/conventional-changelog/commitlint/issues/3966)) ([c2c3c7c](https://github.com/conventional-changelog/commitlint/commit/c2c3c7cdc05c07c185cc2c2635a06835352c4504)), closes [#3958](https://github.com/conventional-changelog/commitlint/issues/3958) -## [7.5.1](https://github.com/conventional-changelog/commitlint/compare/v7.5.0...v7.5.1) (2019-02-09) +## [18.6.2](https://github.com/conventional-changelog/commitlint/compare/v18.6.1...v18.6.2) (2024-02-14) ### Bug Fixes -* **is-ignored:** ignore bitbuckets automatic merge ([#573](https://github.com/conventional-changelog/commitlint/issues/573)) ([e5bdc5c](https://github.com/conventional-changelog/commitlint/commit/e5bdc5c)) +* **config-conventional:** use default export ([#3911](https://github.com/conventional-changelog/commitlint/issues/3911)) ([bc48408](https://github.com/conventional-changelog/commitlint/commit/bc4840832f9484186d3281d13ab5e0b4f9f63113)) -<a name="7.5.0"></a> -# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) +## [18.6.1](https://github.com/conventional-changelog/commitlint/compare/v18.6.0...v18.6.1) (2024-02-13) ### Bug Fixes -* `sentence-case` allow upper-case characters in first word ([#531](https://github.com/conventional-changelog/commitlint/issues/531)) ([5a6a4a8](https://github.com/conventional-changelog/commitlint/commit/5a6a4a8)), closes [#211](https://github.com/conventional-changelog/commitlint/issues/211) -* **resolve-extends:** override array on extending rules ([#470](https://github.com/conventional-changelog/commitlint/issues/470)) ([#539](https://github.com/conventional-changelog/commitlint/issues/539)) ([b35000c](https://github.com/conventional-changelog/commitlint/commit/b35000c)) -* all broken website references ([#564](https://github.com/conventional-changelog/commitlint/issues/564)) ([82eeb5a](https://github.com/conventional-changelog/commitlint/commit/82eeb5a)) -* cleanup message for input with no config ([#519](https://github.com/conventional-changelog/commitlint/issues/519)) ([7d9e760](https://github.com/conventional-changelog/commitlint/commit/7d9e760)) -* **cli:** avoid linebreak in empty input ([#523](https://github.com/conventional-changelog/commitlint/issues/523)) ([3141882](https://github.com/conventional-changelog/commitlint/commit/3141882)) -* mark optional parameter with undefined ([#553](https://github.com/conventional-changelog/commitlint/issues/553)) ([6720284](https://github.com/conventional-changelog/commitlint/commit/6720284)) -* replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) -* replace all website references with conventional changelog ([#563](https://github.com/conventional-changelog/commitlint/issues/563)) ([6b86fb1](https://github.com/conventional-changelog/commitlint/commit/6b86fb1)) -* replace old require-uncached with import-fresh ([#533](https://github.com/conventional-changelog/commitlint/issues/533)) ([b636e8c](https://github.com/conventional-changelog/commitlint/commit/b636e8c)) -* resolve path to commit message for git submodules ([83b1a47](https://github.com/conventional-changelog/commitlint/commit/83b1a47)) -* slash in scope [#291](https://github.com/conventional-changelog/commitlint/issues/291) ([#529](https://github.com/conventional-changelog/commitlint/issues/529)) ([b2b63e5](https://github.com/conventional-changelog/commitlint/commit/b2b63e5)) -* store concatenated array to problems variable ([#551](https://github.com/conventional-changelog/commitlint/issues/551)) ([434a70f](https://github.com/conventional-changelog/commitlint/commit/434a70f)) +* update dependency semver to v7.6.0 ([#3900](https://github.com/conventional-changelog/commitlint/issues/3900)) ([df33003](https://github.com/conventional-changelog/commitlint/commit/df33003dce77bc5ff48678cddf9401dffedaeb57)) +* update dependency tar-fs to v3.0.5 ([#3903](https://github.com/conventional-changelog/commitlint/issues/3903)) ([79d77c9](https://github.com/conventional-changelog/commitlint/commit/79d77c9ef8de5046106027fc7d80dfd77faeb3e5)) + + + + + +# [18.6.0](https://github.com/conventional-changelog/commitlint/compare/v18.5.1...v18.6.0) (2024-01-25) ### Features -* add support for git submodules ([cc575fa](https://github.com/conventional-changelog/commitlint/commit/cc575fa)) -* **rule-header-length:** show current header length ([6d61c4f](https://github.com/conventional-changelog/commitlint/commit/6d61c4f)) +* **rules:** add header-trim rule ([#3199](https://github.com/conventional-changelog/commitlint/issues/3199)) ([#3871](https://github.com/conventional-changelog/commitlint/issues/3871)) ([331579a](https://github.com/conventional-changelog/commitlint/commit/331579a8796af901b5e5103c44fedf1cb3a2f661)) -<a name="7.4.0"></a> -# [7.4.0](https://github.com/conventional-changelog/commitlint/compare/v7.3.2...v7.4.0) (2019-01-27) + +## [18.5.1](https://github.com/conventional-changelog/commitlint/compare/v18.5.0...v18.5.1) (2024-01-22) + + +### Bug Fixes + +* **config-nx-scopes:** replace import with require ([#3865](https://github.com/conventional-changelog/commitlint/issues/3865)) ([#3867](https://github.com/conventional-changelog/commitlint/issues/3867)) ([3ede3e0](https://github.com/conventional-changelog/commitlint/commit/3ede3e0e9d5af1302fff896aba049b487b90c0bf)) + + + + + +# [18.5.0](https://github.com/conventional-changelog/commitlint/compare/v18.4.4...v18.5.0) (2024-01-22) ### Bug Fixes -* correction to need help link ([#540](https://github.com/conventional-changelog/commitlint/issues/540)) ([fa6168a](https://github.com/conventional-changelog/commitlint/commit/fa6168a)) +* **config-nx-scopes:** restore compatibility with nx 17.2.0 and higher ([#3855](https://github.com/conventional-changelog/commitlint/issues/3855)) ([1e08a17](https://github.com/conventional-changelog/commitlint/commit/1e08a17eb354b40776be814e8d787eee44d5df2c)), closes [#3820](https://github.com/conventional-changelog/commitlint/issues/3820) ### Features -* **rules:** create header-case and header-full-stop rules ([#547](https://github.com/conventional-changelog/commitlint/issues/547)) ([4c36cbd](https://github.com/conventional-changelog/commitlint/commit/4c36cbd)) +* **cli:** print-config now can be configured to print a json in stdout ([#3863](https://github.com/conventional-changelog/commitlint/issues/3863)) ([6381a2d](https://github.com/conventional-changelog/commitlint/commit/6381a2daa0d5d89ab2195998d63a9690a533d3f2)), closes [#3819](https://github.com/conventional-changelog/commitlint/issues/3819) -<a name="7.3.2"></a> -## [7.3.2](https://github.com/conventional-changelog/commitlint/compare/v7.3.1...v7.3.2) (2019-01-15) + +## [18.4.4](https://github.com/conventional-changelog/commitlint/compare/v18.4.3...v18.4.4) (2024-01-04) ### Bug Fixes -* move loadsh to dependencies ([1bb66a4](https://github.com/conventional-changelog/commitlint/commit/1bb66a4)) +* **@commitlint/load:** Remove unused `@types/node` dependency ([#3801](https://github.com/conventional-changelog/commitlint/issues/3801)) ([7b3f8b3](https://github.com/conventional-changelog/commitlint/commit/7b3f8b3fe106311682a2e8ad281dd9a4e42443c6)) +* **read:** remove fs-extra usage and use fs/promises ([#3803](https://github.com/conventional-changelog/commitlint/issues/3803)) ([714be66](https://github.com/conventional-changelog/commitlint/commit/714be668c104c554c66e866e53addd04944544f6)) +* subject-full-stop false positive when using ellipsis ([#3839](https://github.com/conventional-changelog/commitlint/issues/3839)) ([b4246d6](https://github.com/conventional-changelog/commitlint/commit/b4246d6428399177d43296dc8bec6714e664d037)) +* update dependency fs-extra to v11.2.0 ([#3799](https://github.com/conventional-changelog/commitlint/issues/3799)) ([abb4da2](https://github.com/conventional-changelog/commitlint/commit/abb4da2a389ad00800562194db1b6ba588623df4)) +* **utils:** remove fs-extra usage ([#3804](https://github.com/conventional-changelog/commitlint/issues/3804)) ([92f2237](https://github.com/conventional-changelog/commitlint/commit/92f2237d66950d9cb92430bc082a86a5dbc86d3f)) -<a name="7.3.1"></a> -## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) +## [18.4.3](https://github.com/conventional-changelog/commitlint/compare/v18.4.2...v18.4.3) (2023-11-21) +### Bug Fixes -**Note:** Version bump only for package @commitlint/root +* update dependency read-pkg to v9.0.1 ([#3777](https://github.com/conventional-changelog/commitlint/issues/3777)) ([88c4b8a](https://github.com/conventional-changelog/commitlint/commit/88c4b8a33dc2ebb63715018b3a0945d94cdfceeb)) -<a name="7.3.0"></a> -# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) -### Bug Fixes -* **format:** add new line to result ([#518](https://github.com/conventional-changelog/commitlint/issues/518)) ([f1d443b](https://github.com/conventional-changelog/commitlint/commit/f1d443b)), closes [#504](https://github.com/conventional-changelog/commitlint/issues/504) -* add fallback with husky git params to deprecation handling ([#498](https://github.com/conventional-changelog/commitlint/issues/498)) ([5a34b8c](https://github.com/conventional-changelog/commitlint/commit/5a34b8c)) -* avoid truncated output on macOS ([#503](https://github.com/conventional-changelog/commitlint/issues/503)) ([3192368](https://github.com/conventional-changelog/commitlint/commit/3192368)) -* fall back to conventional commit-parser settings for missing keys ([#496](https://github.com/conventional-changelog/commitlint/issues/496)) ([831a141](https://github.com/conventional-changelog/commitlint/commit/831a141)), closes [#399](https://github.com/conventional-changelog/commitlint/issues/399) -* respect String.protoype.repeat API contract ([f27e7ac](https://github.com/conventional-changelog/commitlint/commit/f27e7ac)) -* update to security-patched dependency versions ([97c033b](https://github.com/conventional-changelog/commitlint/commit/97c033b)) -* use correct label for failing empty subjects ([#481](https://github.com/conventional-changelog/commitlint/issues/481)) ([2e7e34d](https://github.com/conventional-changelog/commitlint/commit/2e7e34d)), closes [#476](https://github.com/conventional-changelog/commitlint/issues/476) +## [18.4.2](https://github.com/conventional-changelog/commitlint/compare/v18.4.1...v18.4.2) (2023-11-16) -### Features -* check stage before entering prompt ([#495](https://github.com/conventional-changelog/commitlint/issues/495)) ([3b3667a](https://github.com/conventional-changelog/commitlint/commit/3b3667a)), closes [#51](https://github.com/conventional-changelog/commitlint/issues/51) [#51](https://github.com/conventional-changelog/commitlint/issues/51) -* warn on empty config ([#491](https://github.com/conventional-changelog/commitlint/issues/491)) ([b6bd36e](https://github.com/conventional-changelog/commitlint/commit/b6bd36e)), closes [#107](https://github.com/conventional-changelog/commitlint/issues/107) [#107](https://github.com/conventional-changelog/commitlint/issues/107) +### Bug Fixes + +* update dependency @types/fs-extra to v11.0.4 ([#3767](https://github.com/conventional-changelog/commitlint/issues/3767)) ([f6c4696](https://github.com/conventional-changelog/commitlint/commit/f6c46962a7c77f86953f3a2285427caeeedc2472)) +* update dependency @types/tmp to v0.2.6 ([#3769](https://github.com/conventional-changelog/commitlint/issues/3769)) ([bc849bc](https://github.com/conventional-changelog/commitlint/commit/bc849bc0b123ec4a70e08449b7d010fdc6bcfdd7)) -<a name="7.2.1"></a> -## [7.2.1](https://github.com/conventional-changelog/commitlint/compare/v7.2.0...v7.2.1) (2018-10-11) + +## [18.4.1](https://github.com/conventional-changelog/commitlint/compare/v18.4.0...v18.4.1) (2023-11-12) ### Bug Fixes -* improve format module resolving ([#464](https://github.com/conventional-changelog/commitlint/issues/464)) ([baed8b1](https://github.com/conventional-changelog/commitlint/commit/baed8b1)) +* update cosmiconfig to specific version ([#3755](https://github.com/conventional-changelog/commitlint/issues/3755)) ([636b8b1](https://github.com/conventional-changelog/commitlint/commit/636b8b1338835b239ab0585e062bfe305fca4424)) -<a name="7.2.0"></a> -# [7.2.0](https://github.com/conventional-changelog/commitlint/compare/v7.1.2...v7.2.0) (2018-10-05) + +# [18.4.0](https://github.com/conventional-changelog/commitlint/compare/v18.3.0...v18.4.0) (2023-11-10) ### Bug Fixes -* **rules:** include possible body offset in footer leading blank ([ff0111a](https://github.com/conventional-changelog/commitlint/commit/ff0111a)) -* handle case rules for numerics correctly ([cadcfed](https://github.com/conventional-changelog/commitlint/commit/cadcfed)) -* ignore merge messages with text after newline ([b32bc93](https://github.com/conventional-changelog/commitlint/commit/b32bc93)) -* use grouped regex to ignore merge commits ([#439](https://github.com/conventional-changelog/commitlint/issues/439)) ([905e9d5](https://github.com/conventional-changelog/commitlint/commit/905e9d5)) +* update dependency fast-glob to v3.3.2 ([#3740](https://github.com/conventional-changelog/commitlint/issues/3740)) ([b3bf1f2](https://github.com/conventional-changelog/commitlint/commit/b3bf1f294bd8d3ee16950595a15c4467b75959bb)) +* update dependency read-pkg to v9 ([#3734](https://github.com/conventional-changelog/commitlint/issues/3734)) ([722f518](https://github.com/conventional-changelog/commitlint/commit/722f5183e91186aa7e3912e8f3d0d7069f05ce8f)) +* update dependency tar-fs to v3 ([#3718](https://github.com/conventional-changelog/commitlint/issues/3718)) ([afb04dd](https://github.com/conventional-changelog/commitlint/commit/afb04dd0dc4d42094ae01f0733600c2f9d3abdfd)) ### Features -* **cli:** add format option for report output ([1ecf097](https://github.com/conventional-changelog/commitlint/commit/1ecf097)) -* **load:** add formatter option with default value ([b0e63d9](https://github.com/conventional-changelog/commitlint/commit/b0e63d9)) - +* bump cosmiconfig version and conditionally support mjs config ([#3747](https://github.com/conventional-changelog/commitlint/issues/3747)) ([a2b65fc](https://github.com/conventional-changelog/commitlint/commit/a2b65fc0cfee2259e197c291ea40ef2d076ab837)) -<a name="7.1.2"></a> -## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) +# [18.3.0](https://github.com/conventional-changelog/commitlint/compare/v18.2.0...v18.3.0) (2023-10-26) -**Note:** Version bump only for package @commitlint/root +### Bug Fixes -<a name="7.1.0"></a> -# [7.1.0](https://github.com/conventional-changelog/commitlint/compare/v7.0.1...v7.1.0) (2018-08-29) +* update dependency @types/node to v18.18.7 ([#3726](https://github.com/conventional-changelog/commitlint/issues/3726)) ([dcc0424](https://github.com/conventional-changelog/commitlint/commit/dcc0424259d32874e4f97de768ec1b50028a90a6)) ### Features -* **wildcards:** add new wildcard patterns [#315](https://github.com/conventional-changelog/commitlint/issues/315) ([e9ea17f](https://github.com/conventional-changelog/commitlint/commit/e9ea17f)) -* add max line length to body/footer ([542f50e](https://github.com/conventional-changelog/commitlint/commit/542f50e)) +* **config-nx-scopes:** support latest nx version ([#3728](https://github.com/conventional-changelog/commitlint/issues/3728)) ([22e6f74](https://github.com/conventional-changelog/commitlint/commit/22e6f74e3cae74497162c8ae8f5d3888e3b19f6e)) -<a name="6.2.0"></a> -# [6.2.0](https://github.com/conventional-changelog/commitlint/compare/v6.1.3...v6.2.0) (2018-05-01) + +# [18.2.0](https://github.com/conventional-changelog/commitlint/compare/v18.1.0...v18.2.0) (2023-10-26) ### Features -* print commit message when the message is invalid ([86c34f1](https://github.com/conventional-changelog/commitlint/commit/86c34f1)), closes [#222](https://github.com/conventional-changelog/commitlint/issues/222) -* **rules:** support array for scope-case and type-case ([#312](https://github.com/conventional-changelog/commitlint/issues/312)) ([1f46b9f](https://github.com/conventional-changelog/commitlint/commit/1f46b9f)), closes [#307](https://github.com/conventional-changelog/commitlint/issues/307) +* **load:** use cosmiconfig-typescript-loader v5 to remove ts-node dependency for @commitlint/load ([#3722](https://github.com/conventional-changelog/commitlint/issues/3722)) ([1ff49ea](https://github.com/conventional-changelog/commitlint/commit/1ff49ea14adb180eb54ec3d7479990b66ba26720)) -<a name="6.1.1"></a> -## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) + +# [18.1.0](https://github.com/conventional-changelog/commitlint/compare/v18.0.0...v18.1.0) (2023-10-25) ### Bug Fixes -* **ensure:** ignore word delimiters for case matching [#291](https://github.com/conventional-changelog/commitlint/issues/291) ([fa69299](https://github.com/conventional-changelog/commitlint/commit/fa69299)) +* update dependency read-pkg to v8 ([#3717](https://github.com/conventional-changelog/commitlint/issues/3717)) ([326f497](https://github.com/conventional-changelog/commitlint/commit/326f4975dbc2f06dbe490ca04732441ad062e063)) +### Features +* [scope-enum] [scope-case] allow space after comma as scope delimiter ([#3577](https://github.com/conventional-changelog/commitlint/issues/3577)) ([13c4bfc](https://github.com/conventional-changelog/commitlint/commit/13c4bfc637dd6c66477fa1c8da821ed46af28c44)), closes [#3576](https://github.com/conventional-changelog/commitlint/issues/3576) -<a name="6.1.0"></a> -# [6.1.0](https://github.com/conventional-changelog/commitlint/compare/v6.0.5...v6.1.0) (2018-02-03) -### Bug Fixes -* **parse:** default to angular preset for empty parserOpts ([#265](https://github.com/conventional-changelog/commitlint/issues/265)) ([ccb03b4](https://github.com/conventional-changelog/commitlint/commit/ccb03b4)), closes [#262](https://github.com/conventional-changelog/commitlint/issues/262) +# [18.0.0](https://github.com/conventional-changelog/commitlint/compare/v17.8.1...v18.0.0) (2023-10-20) -### Features -* add "--config" option ([#261](https://github.com/conventional-changelog/commitlint/issues/261)) ([2c03ec6](https://github.com/conventional-changelog/commitlint/commit/2c03ec6)) +* chore!: minimum node version v18 (#3644) ([5b4aeaf](https://github.com/conventional-changelog/commitlint/commit/5b4aeaf4f01c2726a7bc8631a23bb34c849baad2)), closes [#3644](https://github.com/conventional-changelog/commitlint/issues/3644) +### BREAKING CHANGES +* drop node v14 and v16 support -<a name="6.0.5"></a> -## [6.0.5](https://github.com/conventional-changelog/commitlint/compare/v6.0.4...v6.0.5) (2018-01-31) +* chore: remove unused types +* docs: prepare node update and new release -### Bug Fixes +* chore!: minimum TS version v5 +* drop TS v4 support -* remove utils from prod dependencies ([4fb858a](https://github.com/conventional-changelog/commitlint/commit/4fb858a)) +* ci: remove node v14/16 checks +* chore: adjust node types to minimal supported version +* chore!: further major versions of other deps +* upgrade conventional-changelog-conventionalcommits, conventional-commits-parser, conventional-changelog-atom, +* docs: simplify releases and remove roadmap -<a name="6.0.4"></a> -## [6.0.4](https://github.com/conventional-changelog/commitlint/compare/v6.0.3...v6.0.4) (2018-01-31) -### Bug Fixes -* remove faulty bin entry [#259](https://github.com/conventional-changelog/commitlint/issues/259) ([beafbc6](https://github.com/conventional-changelog/commitlint/commit/beafbc6)) +## [17.8.1](https://github.com/conventional-changelog/commitlint/compare/v17.8.0...v17.8.1) (2023-10-20) + +**Note:** Version bump only for package @commitlint/root -<a name="6.0.3"></a> -## [6.0.3](https://github.com/conventional-changelog/commitlint/compare/v6.0.2...v6.0.3) (2018-01-31) + + +# [17.8.0](https://github.com/conventional-changelog/commitlint/compare/v17.7.2...v17.8.0) (2023-10-14) ### Bug Fixes -* update dependency cosmiconfig to ^4.0.0 ([#234](https://github.com/conventional-changelog/commitlint/issues/234)) ([7f94ac5](https://github.com/conventional-changelog/commitlint/commit/7f94ac5)) -* update dependency semver to v5.5.0 ([#236](https://github.com/conventional-changelog/commitlint/issues/236)) ([6c52bd9](https://github.com/conventional-changelog/commitlint/commit/6c52bd9)) +* chore(container): add pullrequest event to container build workflow trigger ([8e30bec](https://github.com/conventional-changelog/commitlint/commit/8e30bec280d1c4ed8c1c5a69a36ea72aa4bc46ec)) +* update dependency @types/fs-extra to v11.0.2 ([#3681](https://github.com/conventional-changelog/commitlint/issues/3681)) ([5c6f087](https://github.com/conventional-changelog/commitlint/commit/5c6f0873554546fcfff070dcd83f3f7b5080be3f)) +* update dependency @types/tmp to v0.2.4 ([#3682](https://github.com/conventional-changelog/commitlint/issues/3682)) ([f9d7029](https://github.com/conventional-changelog/commitlint/commit/f9d702907c45e262c169bb85b6102604a96b95e9)) +* update dependency cosmiconfig-typescript-loader to v4.4.0 ([#3688](https://github.com/conventional-changelog/commitlint/issues/3688)) ([4bcb0c6](https://github.com/conventional-changelog/commitlint/commit/4bcb0c665243ffae65aa6616b4b0ee2d65d91aec)) + + +### Features + +* lazy load cosmiconfig-typescript-loader ([#3694](https://github.com/conventional-changelog/commitlint/issues/3694)) ([b058c7c](https://github.com/conventional-changelog/commitlint/commit/b058c7cc49333e7898402fa55467ec097801ce25)) -<a name="6.0.2"></a> -## [6.0.2](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.2) (2018-01-12) + +## [17.7.2](https://github.com/conventional-changelog/commitlint/compare/v17.7.1...v17.7.2) (2023-09-28) ### Bug Fixes -* ignore branch merges with multiple newlines ([#227](https://github.com/conventional-changelog/commitlint/issues/227)) ([1f0c5ca](https://github.com/conventional-changelog/commitlint/commit/1f0c5ca)) -* remove typo in error message of type-case ([cb577cb](https://github.com/conventional-changelog/commitlint/commit/cb577cb)) +* update dependency @types/node to v20.5.1 ([#3653](https://github.com/conventional-changelog/commitlint/issues/3653)) ([cd8b775](https://github.com/conventional-changelog/commitlint/commit/cd8b7750d3a15fbfd96e20196d53df064df6e138)) -<a name="6.0.1"></a> -## [6.0.1](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.1) (2018-01-09) +## [17.7.1](https://github.com/conventional-changelog/commitlint/compare/v17.7.0...v17.7.1) (2023-08-10) +### Reverts -**Note:** Version bump only for package @commitlint/root +* Revert "feat(load): use cosmiconfig-typescript-loader v5 to remove ts-node dependency for @commitlint/load (#3633)" ([8e41897](https://github.com/conventional-changelog/commitlint/commit/8e41897a42c45988ff8c25576c4f13bb11d84c4e)), closes [#3633](https://github.com/conventional-changelog/commitlint/issues/3633) -<a name="6.0.0"></a> -# [6.0.0](https://github.com/conventional-changelog/commitlint/compare/v5.2.6...v6.0.0) (2018-01-09) -### Bug Fixes -* allow [0] shorthand ([84cf938](https://github.com/conventional-changelog/commitlint/commit/84cf938)) -* correctly resolve parserOpts [#115](https://github.com/conventional-changelog/commitlint/issues/115) [#95](https://github.com/conventional-changelog/commitlint/issues/95) ([1353dd5](https://github.com/conventional-changelog/commitlint/commit/1353dd5)) -* ignore branch merges with newlines ([#214](https://github.com/conventional-changelog/commitlint/issues/214)) ([c94c4dc](https://github.com/conventional-changelog/commitlint/commit/c94c4dc)) -* sanitize ensure.case [#211](https://github.com/conventional-changelog/commitlint/issues/211) ([#217](https://github.com/conventional-changelog/commitlint/issues/217)) ([03aeefc](https://github.com/conventional-changelog/commitlint/commit/03aeefc)) +# [17.7.0](https://github.com/conventional-changelog/commitlint/compare/v17.6.7...v17.7.0) (2023-08-09) -### Styles -* validate rule configuration ([edf7187](https://github.com/conventional-changelog/commitlint/commit/edf7187)) +### Features +* **load:** use cosmiconfig-typescript-loader v5 to remove ts-node dependency for @commitlint/load ([#3633](https://github.com/conventional-changelog/commitlint/issues/3633)) ([4aa46d7](https://github.com/conventional-changelog/commitlint/commit/4aa46d796ad74958f5569d3346b60a1f92c33892)) -### BREAKING CHANGES -* Due to additional validation while reading -commitlint config, previously ignored rule -settings are now considered critical errors -when starting the CLI. The new behaviour is -designed to help developers find issues with -their configuration quicker. +### Reverts +* eslint-config-prettier to v8 ([f279ff7](https://github.com/conventional-changelog/commitlint/commit/f279ff787bd908372813a04b756629467506f51e)) +* prettier to v2 to not break lerna v6 publish ([cd854cb](https://github.com/conventional-changelog/commitlint/commit/cd854cb73d93396c166bdfef442bc92b1833cc72)) -<a name="5.2.6"></a> -## [5.2.6](https://github.com/conventional-changelog/commitlint/compare/v5.2.5...v5.2.6) (2017-12-21) -### Bug Fixes +## [17.6.7](https://github.com/conventional-changelog/commitlint/compare/v17.6.6...v17.6.7) (2023-07-19) -* ignore semver commits with chore type ([cdbb085](https://github.com/conventional-changelog/commitlint/commit/cdbb085)), closes [#198](https://github.com/conventional-changelog/commitlint/issues/198) +**Note:** Version bump only for package @commitlint/root -<a name="5.2.5"></a> -## [5.2.5](https://github.com/conventional-changelog/commitlint/compare/v5.2.4...v5.2.5) (2017-12-08) +## [17.6.6](https://github.com/conventional-changelog/commitlint/compare/v17.6.5...v17.6.6) (2023-06-24) -### Bug Fixes +**Note:** Version bump only for package @commitlint/root -* **core:** use correct report message [#192](https://github.com/conventional-changelog/commitlint/issues/192) ([e3a78bc](https://github.com/conventional-changelog/commitlint/commit/e3a78bc)) -<a name="5.2.4"></a> -## [5.2.4](https://github.com/conventional-changelog/commitlint/compare/v5.2.3...v5.2.4) (2017-12-08) +## [17.6.5](https://github.com/conventional-changelog/commitlint/compare/v17.6.4...v17.6.5) (2023-05-30) +### Bug Fixes +* add named export to @commitlint/parse ([#3614](https://github.com/conventional-changelog/commitlint/issues/3614)) ([2cd236b](https://github.com/conventional-changelog/commitlint/commit/2cd236b3065c69303c56833d120eb04c6fefc2c3)) -**Note:** Version bump only for package @commitlint/root -<a name="5.2.3"></a> -## [5.2.3](https://github.com/conventional-changelog/commitlint/compare/v5.2.2...v5.2.3) (2017-12-05) -### Bug Fixes -* **cli:** add support for GIT_PARAMS on windows ([c62bd41](https://github.com/conventional-changelog/commitlint/commit/c62bd41)), closes [#103](https://github.com/conventional-changelog/commitlint/issues/103) [#175](https://github.com/conventional-changelog/commitlint/issues/175) +## [17.6.4](https://github.com/conventional-changelog/commitlint/compare/v17.6.3...v17.6.4) (2023-05-07) +**Note:** Version bump only for package @commitlint/root -<a name="5.2.2"></a> -## [5.2.2](https://github.com/conventional-changelog/commitlint/compare/v5.2.1...v5.2.2) (2017-11-30) + + +## [17.6.3](https://github.com/conventional-changelog/commitlint/compare/v17.6.2...v17.6.3) (2023-05-04) ### Bug Fixes -* **travis-cli:** read push commits directly ([9bc56c6](https://github.com/conventional-changelog/commitlint/commit/9bc56c6)) +* **config-lerna-scopes:** add missing dependency ([#3607](https://github.com/conventional-changelog/commitlint/issues/3607)) ([2fff094](https://github.com/conventional-changelog/commitlint/commit/2fff0943899161b2159a4acddc9237c6ab60c7a5)) +* update dependency semver to v7.5.0 ([#3604](https://github.com/conventional-changelog/commitlint/issues/3604)) ([01e35e0](https://github.com/conventional-changelog/commitlint/commit/01e35e06cf9123a0c367e0d0ac79988ec4334e6a)) +* update dependency yargs to v17.7.2 ([#3602](https://github.com/conventional-changelog/commitlint/issues/3602)) ([c1c7338](https://github.com/conventional-changelog/commitlint/commit/c1c73380710908f6e095f045c78c50928d56acdd)) -<a name="5.2.1"></a> -## [5.2.1](https://github.com/conventional-changelog/commitlint/compare/v5.2.0...v5.2.1) (2017-11-30) + +## [17.6.2](https://github.com/conventional-changelog/commitlint/compare/v17.6.1...v17.6.2) (2023-05-03) ### Bug Fixes -* **travis-cli:** lint ranges only for pr builds ([85b201f](https://github.com/conventional-changelog/commitlint/commit/85b201f)) +* lerna package.json resolution ([#3600](https://github.com/conventional-changelog/commitlint/issues/3600)) ([6c5cd53](https://github.com/conventional-changelog/commitlint/commit/6c5cd535679ac9448a127a57e309276e699cebb9)) +* update dependency cosmiconfig to v8.1.3 ([#3591](https://github.com/conventional-changelog/commitlint/issues/3591)) ([44b57a5](https://github.com/conventional-changelog/commitlint/commit/44b57a5022ede545a4d27146fd1a41110767c963)) +* update dependency fs-extra to v11.1.1 ([#3592](https://github.com/conventional-changelog/commitlint/issues/3592)) ([d6ec0d9](https://github.com/conventional-changelog/commitlint/commit/d6ec0d9295c66b51786e210e63dda2a5fa6b9d91)) -<a name="5.2.0"></a> -# [5.2.0](https://github.com/conventional-changelog/commitlint/compare/v5.1.3...v5.2.0) (2017-11-30) + +## [17.6.1](https://github.com/conventional-changelog/commitlint/compare/v17.6.0...v17.6.1) (2023-04-14) ### Bug Fixes -* consider pull requests from forks ([4653c2c](https://github.com/conventional-changelog/commitlint/commit/4653c2c)) +* **rules:** avoid processing strings with case-less Letter category symbols in `subject-case` ([#3586](https://github.com/conventional-changelog/commitlint/issues/3586)) ([70a4450](https://github.com/conventional-changelog/commitlint/commit/70a44501ac8459f0c1d2b200608b024585964637)), closes [#3585](https://github.com/conventional-changelog/commitlint/issues/3585) + + + + + +# [17.6.0](https://github.com/conventional-changelog/commitlint/compare/v17.5.1...v17.6.0) (2023-04-13) ### Features -* **babel-preset-commitlint:** add jsx tranform ([#163](https://github.com/conventional-changelog/commitlint/issues/163)) ([5190241](https://github.com/conventional-changelog/commitlint/commit/5190241)) +* **rules:** expand Latin-only characters limitation for `subject-case` with Unicode support ([#3575](https://github.com/conventional-changelog/commitlint/issues/3575)) ([5f83423](https://github.com/conventional-changelog/commitlint/commit/5f8342355a856e5be7b8a7b851e1519d62678465)) -<a name="5.1.3"></a> -## [5.1.3](https://github.com/conventional-changelog/commitlint/compare/v5.1.2...v5.1.3) (2017-11-24) +## [17.5.1](https://github.com/conventional-changelog/commitlint/compare/v17.5.0...v17.5.1) (2023-03-28) -### Bug Fixes +**Note:** Version bump only for package @commitlint/root -* **config-conventional:** add missing applicable attribute to type-enum ([a8db0b1](https://github.com/conventional-changelog/commitlint/commit/a8db0b1)) -<a name="5.1.2"></a> -## [5.1.2](https://github.com/conventional-changelog/commitlint/compare/v5.1.1...v5.1.2) (2017-11-24) +# [17.5.0](https://github.com/conventional-changelog/commitlint/compare/v17.4.4...v17.5.0) (2023-03-22) ### Bug Fixes -* **prompt:** apply forced cases properly ([3a569a7](https://github.com/conventional-changelog/commitlint/commit/3a569a7)), closes [#145](https://github.com/conventional-changelog/commitlint/issues/145) +* **config-pnpm-scopes:** refactor to remove peer dependencies ([#3564](https://github.com/conventional-changelog/commitlint/issues/3564)) ([f1f3bd5](https://github.com/conventional-changelog/commitlint/commit/f1f3bd5b7f33f7198719ed4aead3417e894a10ec)), closes [#3556](https://github.com/conventional-changelog/commitlint/issues/3556) +* update dependency cosmiconfig to v8.1.0 ([#3548](https://github.com/conventional-changelog/commitlint/issues/3548)) ([7d01b2e](https://github.com/conventional-changelog/commitlint/commit/7d01b2e1801e1e409ce0c98c3388521804cc9b3d)) +* update dependency yargs to v17.7.0 ([#3542](https://github.com/conventional-changelog/commitlint/issues/3542)) ([f14990f](https://github.com/conventional-changelog/commitlint/commit/f14990f626f5a2713ac4aa508133cf1072993449)) +* update dependency yargs to v17.7.1 ([#3546](https://github.com/conventional-changelog/commitlint/issues/3546)) ([9f37c11](https://github.com/conventional-changelog/commitlint/commit/9f37c119ffb3d93d9cd3c473c4da8f23731be4d5)) + +### Features + +* **GitHubCI:** add ([#3549](https://github.com/conventional-changelog/commitlint/issues/3549)) ([d973611](https://github.com/conventional-changelog/commitlint/commit/d9736110ac2558ca22719093cb0282899a2c1254)) +* support typescript 5.0 ([#3566](https://github.com/conventional-changelog/commitlint/issues/3566)) ([c0a27ff](https://github.com/conventional-changelog/commitlint/commit/c0a27ffa3dcaef296ef58ce37bd8ca0a9d315d6e)) -<a name="5.1.1"></a> -## [5.1.1](https://github.com/conventional-changelog/commitlint/compare/v5.1.0...v5.1.1) (2017-11-24) + + +## [17.4.4](https://github.com/conventional-changelog/commitlint/compare/v17.4.3...v17.4.4) (2023-02-17) ### Bug Fixes -* set access for npm ([8aeaec2](https://github.com/conventional-changelog/commitlint/commit/8aeaec2)) +* **parse:** allow setting fieldPattern in parserOpts ([#3538](https://github.com/conventional-changelog/commitlint/issues/3538)) ([ea23c65](https://github.com/conventional-changelog/commitlint/commit/ea23c65702d619b92e338e9f589a147d62e48ffc)) -<a name="5.1.0"></a> -# [5.1.0](https://github.com/conventional-changelog/commitlint/compare/v5.0.2...v5.1.0) (2017-11-24) + +## [17.4.3](https://github.com/conventional-changelog/commitlint/compare/v17.4.2...v17.4.3) (2023-02-13) ### Bug Fixes -* update dependency concurrently to v3.5.1 ([#147](https://github.com/conventional-changelog/commitlint/issues/147)) ([a809d0f](https://github.com/conventional-changelog/commitlint/commit/a809d0f)) -* **config-conventional:** remove unneeded dependency ([d0e62fd](https://github.com/conventional-changelog/commitlint/commit/d0e62fd)) +* subject-full-stop rule bugfix ([#3531](https://github.com/conventional-changelog/commitlint/issues/3531)) ([5d3d529](https://github.com/conventional-changelog/commitlint/commit/5d3d529a6a57baee1bfdaaf3f0c503dee009e152)) +* update dependency minimist to v1.2.8 ([#3532](https://github.com/conventional-changelog/commitlint/issues/3532)) ([1f57f98](https://github.com/conventional-changelog/commitlint/commit/1f57f98dfc5005c6e0f7c2bc3d44e387d26eba57)) -### Features -* **prompt:** add description for build, ci and revert ([#148](https://github.com/conventional-changelog/commitlint/issues/148)) ([ee6ec6e](https://github.com/conventional-changelog/commitlint/commit/ee6ec6e)) -* **travis-cli:** add reusable travis command line interface ([3e6e6a8](https://github.com/conventional-changelog/commitlint/commit/3e6e6a8)) -* add conventional-changelog package ([8bb0a85](https://github.com/conventional-changelog/commitlint/commit/8bb0a85)) +## [17.4.2](https://github.com/conventional-changelog/commitlint/compare/v17.4.1...v17.4.2) (2023-01-12) -<a name="5.0.1"></a> -## [5.0.1](https://github.com/conventional-changelog/commitlint/compare/v5.0.0...v5.0.1) (2017-11-19) +### Bug Fixes +* **load:** fixes a bug when a ts commitlint config is compiled twice ([#3499](https://github.com/conventional-changelog/commitlint/issues/3499)) ([dc2c899](https://github.com/conventional-changelog/commitlint/commit/dc2c899b5d7e4e7a7be79901b28e46da9f519211)) +* update dependency @types/fs-extra to v11 ([#3494](https://github.com/conventional-changelog/commitlint/issues/3494)) ([8f553c7](https://github.com/conventional-changelog/commitlint/commit/8f553c7603e3ee0f435d878e396eec899a213de8)) +* update dependency @types/fs-extra to v11.0.1 ([#3496](https://github.com/conventional-changelog/commitlint/issues/3496)) ([f9a013c](https://github.com/conventional-changelog/commitlint/commit/f9a013c89f5644d4917fb3ce94755a2600073ca4)) -### Bug Fixes -* **core:** fall back to globally installed config if available ([#127](https://github.com/conventional-changelog/commitlint/issues/127)) ([8612eb3](https://github.com/conventional-changelog/commitlint/commit/8612eb3)) +## [17.4.1](https://github.com/conventional-changelog/commitlint/compare/v17.4.0...v17.4.1) (2023-01-09) -<a name="5.0.0"></a> -# [5.0.0](https://github.com/conventional-changelog/commitlint/compare/v4.3.0...v5.0.0) (2017-11-18) +**Note:** Version bump only for package @commitlint/root -### Bug fixes -* core: interprets array values for subject-case correctly -### Features -* config-angular: disallow subject with uppercase first character, #114 -* config-angular-type-enum: remove chore type +# [17.4.0](https://github.com/conventional-changelog/commitlint/compare/v17.3.0...v17.4.0) (2023-01-04) -BREAKING CHANGE +### Bug Fixes -TL;DR -* chore is no longer a valid commit type -* subject with leading capitalized letter are forbidden now +- stop truncating the body in presence of dashes ([#3476](https://github.com/conventional-changelog/commitlint/issues/3476)) ([02a61be](https://github.com/conventional-changelog/commitlint/commit/02a61befad13a348866fce30b15caa67a8360d9c)) +- update dependency ajv to v8.11.2 ([#3440](https://github.com/conventional-changelog/commitlint/issues/3440)) ([7829151](https://github.com/conventional-changelog/commitlint/commit/78291515d5083341946c600edfb9302f3409cdce)) +- update dependency ajv to v8.12.0 ([#3482](https://github.com/conventional-changelog/commitlint/issues/3482)) ([0a53d97](https://github.com/conventional-changelog/commitlint/commit/0a53d97005c1a6d49e8b1dc0993633569bbd191c)) +- update dependency cosmiconfig to v8 ([#3459](https://github.com/conventional-changelog/commitlint/issues/3459)) ([ee732fe](https://github.com/conventional-changelog/commitlint/commit/ee732fe0ef2057bdae93b7c368392934ac0de3af)) +- update dependency cosmiconfig-typescript-loader to v4.3.0 ([#3448](https://github.com/conventional-changelog/commitlint/issues/3448)) ([86b632e](https://github.com/conventional-changelog/commitlint/commit/86b632e74ceffacc980737840ce75e0ccd308e2a)) +- update dependency fs-extra to v11 ([#3460](https://github.com/conventional-changelog/commitlint/issues/3460)) ([a437923](https://github.com/conventional-changelog/commitlint/commit/a43792388e0d9707da770b26592c5e31553384a1)) +- update dependency semver to v7.3.8 ([#3441](https://github.com/conventional-changelog/commitlint/issues/3441)) ([7599ad6](https://github.com/conventional-changelog/commitlint/commit/7599ad6ab622ecbb6efa9ddba7acc3bbf66db5b5)) +- update dependency typescript to v4.9.4 ([#3449](https://github.com/conventional-changelog/commitlint/issues/3449)) ([bf86c7d](https://github.com/conventional-changelog/commitlint/commit/bf86c7dddc34c70d552decc040b30049a002d6a2)) +- update dependency yargs to v17.6.2 ([#3450](https://github.com/conventional-changelog/commitlint/issues/3450)) ([8a43a05](https://github.com/conventional-changelog/commitlint/commit/8a43a05080340227cbaf85b00c8dbe64038d476b)) -Angular has removed the chore type from their -conventions as of January 2017 +### Features -See [angular/angular@dff6ee](https://github.com/angular/angular/commit/dff6ee32725197bdb81f3f63c5bd9805f2ed22bb#diff-6a3371457528722a734f3c51d9238c13L204) -for reference +- support config .cts extension ([#3461](https://github.com/conventional-changelog/commitlint/issues/3461)) ([85ad18b](https://github.com/conventional-changelog/commitlint/commit/85ad18b8990567df516effcacbf04edbcbb6b6d7)) -This removes the previous chore type from the list -of allowed types. +# [17.3.0](https://github.com/conventional-changelog/commitlint/compare/v17.2.1...v17.3.0) (2022-11-21) -Projects using the Angular commit convention will identify commits with chore type as faulty. +### Features -Also, formerly working commit messages are now considered problems: +- **config-pnpm-scopes:** implement config-pnpm-scopes ([#3427](https://github.com/conventional-changelog/commitlint/issues/3427)) ([ca3ae8b](https://github.com/conventional-changelog/commitlint/commit/ca3ae8b14271c62910d228a622bec20b1be8ed63)) -* type: SOME MESSAGE -* type: SomeMessage -* type: Some Message +## [17.2.1](https://github.com/conventional-changelog/commitlint/compare/v17.2.0...v17.2.1) (2022-11-01) -<a name="4.3.0"></a> -# [4.3.0](https://github.com/conventional-changelog/commitlint/compare/v4.2.2...v4.3.0) (2017-11-08) +**Note:** Version bump only for package @commitlint/root +# [17.2.0](https://github.com/conventional-changelog/commitlint/compare/v17.1.2...v17.2.0) (2022-10-31) ### Bug Fixes -* **core:** deprecate nlp rules ([bbab1d8](https://github.com/conventional-changelog/commitlint/commit/bbab1d8)), closes [#54](https://github.com/conventional-changelog/commitlint/issues/54) -* **core:** ignore comments ([f3beda1](https://github.com/conventional-changelog/commitlint/commit/f3beda1)), closes [#78](https://github.com/conventional-changelog/commitlint/issues/78) +- update dependency cosmiconfig-typescript-loader to v4.1.0 ([#3386](https://github.com/conventional-changelog/commitlint/issues/3386)) ([9abd75f](https://github.com/conventional-changelog/commitlint/commit/9abd75f83df6e5187b75a63200c5b68100a1cd6e)) + +### Features + +- **cli:** add strict mode ([#3384](https://github.com/conventional-changelog/commitlint/issues/3384)) ([#3385](https://github.com/conventional-changelog/commitlint/issues/3385)) ([fdff2be](https://github.com/conventional-changelog/commitlint/commit/fdff2bee2d688698555de1cab904d0f5038075b1)) +- **config-nx-scopes:** add nx version ^15.0.0 as peerDependency ([#3416](https://github.com/conventional-changelog/commitlint/issues/3416)) ([f529a3f](https://github.com/conventional-changelog/commitlint/commit/f529a3f58e03d633bbd3949d397a38d9c993579b)) + +## [17.1.2](https://github.com/conventional-changelog/commitlint/compare/v17.1.1...v17.1.2) (2022-08-29) + +### Bug Fixes + +- **load:** add ts-node as direct dependency ([#3351](https://github.com/conventional-changelog/commitlint/issues/3351)) ([3b66891](https://github.com/conventional-changelog/commitlint/commit/3b668911d8f9fd93e0f613842d5c0b7c3f24360a)) +- update dependency cosmiconfig-typescript-loader to v4 ([#3346](https://github.com/conventional-changelog/commitlint/issues/3346)) ([5a9d80f](https://github.com/conventional-changelog/commitlint/commit/5a9d80fba352deae1c2855792be4f8458a973431)) + +## [17.1.1](https://github.com/conventional-changelog/commitlint/compare/v17.1.0...v17.1.1) (2022-08-27) + +### Bug Fixes + +- **load:** peer-dep version [#3345](https://github.com/conventional-changelog/commitlint/issues/3345) ([2dd7b50](https://github.com/conventional-changelog/commitlint/commit/2dd7b50c983e2720ad25c368e5a0f13b80ab7927)) + +# [17.1.0](https://github.com/conventional-changelog/commitlint/compare/v17.0.3...v17.1.0) (2022-08-27) + +### Bug Fixes + +- update dependency cosmiconfig-typescript-loader to v3 ([#3253](https://github.com/conventional-changelog/commitlint/issues/3253)) ([4e87d14](https://github.com/conventional-changelog/commitlint/commit/4e87d1431df6d39990e5f56a579604b1b3268ce6)) +- update dependency cosmiconfig-typescript-loader to v3.1.1 ([#3282](https://github.com/conventional-changelog/commitlint/issues/3282)) ([550ab3d](https://github.com/conventional-changelog/commitlint/commit/550ab3d9a311378c2d4860778e9ff5c6cf239cad)) +- update dependency cosmiconfig-typescript-loader to v3.1.2 ([#3343](https://github.com/conventional-changelog/commitlint/issues/3343)) ([4213e9c](https://github.com/conventional-changelog/commitlint/commit/4213e9c4ed87dfb1997d03bbf22f4f2cd6fc4e2f)) + +### Features + +- **commitlint:** add additional git log args ([#3334](https://github.com/conventional-changelog/commitlint/issues/3334)) ([229c65b](https://github.com/conventional-changelog/commitlint/commit/229c65b60f15c15da5f5b11deb555d1f557c673a)) + +## [17.0.3](https://github.com/conventional-changelog/commitlint/compare/v17.0.2...v17.0.3) (2022-06-25) + +### Bug Fixes + +- update dependency cosmiconfig-typescript-loader to v2.0.2 ([#3250](https://github.com/conventional-changelog/commitlint/issues/3250)) ([dfe69b0](https://github.com/conventional-changelog/commitlint/commit/dfe69b0bfa0da2c6201630f043b97983b0111d14)) + +## [17.0.2](https://github.com/conventional-changelog/commitlint/compare/v17.0.1...v17.0.2) (2022-06-01) + +### Bug Fixes + +- update dependency conventional-changelog-conventionalcommits to v5 ([#3201](https://github.com/conventional-changelog/commitlint/issues/3201)) ([c20fd19](https://github.com/conventional-changelog/commitlint/commit/c20fd1952ed02df987165d96e4cef650c7fbaa4b)) +- update dependency cosmiconfig-typescript-loader to v2.0.1 ([#3202](https://github.com/conventional-changelog/commitlint/issues/3202)) ([9cf4b71](https://github.com/conventional-changelog/commitlint/commit/9cf4b71fc8785165c189de91d46eb5e2667bd1d4)) + +## [17.0.1](https://github.com/conventional-changelog/commitlint/compare/v17.0.0...v17.0.1) (2022-05-25) + +### Bug Fixes + +- **cli:** use `core.commentChar` from git config with `--edit` flag ([#3191](https://github.com/conventional-changelog/commitlint/issues/3191)) ([e5fee05](https://github.com/conventional-changelog/commitlint/commit/e5fee05301ab7441b6091e4ee6fc095d26bbd589)), closes [#3190](https://github.com/conventional-changelog/commitlint/issues/3190) [#3190](https://github.com/conventional-changelog/commitlint/issues/3190) [#3190](https://github.com/conventional-changelog/commitlint/issues/3190) + +# [17.0.0](https://github.com/conventional-changelog/commitlint/compare/v16.3.0...v17.0.0) (2022-05-16) + +### Bug Fixes + +- update dependency yargs to v17.5.1 ([#3183](https://github.com/conventional-changelog/commitlint/issues/3183)) ([8db72f0](https://github.com/conventional-changelog/commitlint/commit/8db72f09e5e4e6a82e43246322cbd42d82d10bb6)) + +- chore!: minimum node version v14 (#3128) ([ac5f9b4](https://github.com/conventional-changelog/commitlint/commit/ac5f9b47a9e3cd5c9d58b14da0feb426f06b1ef9)), closes [#3128](https://github.com/conventional-changelog/commitlint/issues/3128) + +### BREAKING CHANGES + +- drop node v12 support + +- chore: rename circleci windows job + +node version is not defned by the name anyways (i think) + +# [16.3.0](https://github.com/conventional-changelog/commitlint/compare/v16.2.4...v16.3.0) (2022-05-14) + +### Bug Fixes + +- update dependency cosmiconfig-typescript-loader to v2 ([#3154](https://github.com/conventional-changelog/commitlint/issues/3154)) ([20122e8](https://github.com/conventional-changelog/commitlint/commit/20122e8d6e999b74eab3bab08a6d52cda3f13e37)) +- update dependency yargs to v17.5.0 ([#3171](https://github.com/conventional-changelog/commitlint/issues/3171)) ([0e6542b](https://github.com/conventional-changelog/commitlint/commit/0e6542bd0a0d193d0080809fc23031ad83b8e2d9)) + +### Features + +- add ability to filter Nx projects in @commitlint/config-nx-scopes ([#3155](https://github.com/conventional-changelog/commitlint/issues/3155)) ([e595693](https://github.com/conventional-changelog/commitlint/commit/e595693eb9be51a874cff01580b883982083ba0e)), closes [#3152](https://github.com/conventional-changelog/commitlint/issues/3152) + +## [16.2.4](https://github.com/conventional-changelog/commitlint/compare/v16.2.3...v16.2.4) (2022-04-28) + +### Bug Fixes + +- **rules:** footer-leading-blank should work with body comments ([#3139](https://github.com/conventional-changelog/commitlint/issues/3139)) ([7dd88c9](https://github.com/conventional-changelog/commitlint/commit/7dd88c913cba9f444acc587c77210cb718c928c9)) +- update dependency cosmiconfig to v7.0.1 ([#3138](https://github.com/conventional-changelog/commitlint/issues/3138)) ([407837d](https://github.com/conventional-changelog/commitlint/commit/407837df9e5cfe3af06158a4684f95ff590000cb)) +- update dependency cosmiconfig-typescript-loader to v1.0.7 ([#3102](https://github.com/conventional-changelog/commitlint/issues/3102)) ([d0f2b3f](https://github.com/conventional-changelog/commitlint/commit/d0f2b3fe0f4b3bd2658efdde6d728bdacbc79557)) +- update dependency cosmiconfig-typescript-loader to v1.0.9 ([#3106](https://github.com/conventional-changelog/commitlint/issues/3106)) ([d91e70d](https://github.com/conventional-changelog/commitlint/commit/d91e70db61554e906851c66de1b4cb867eccb916)) +- update dependency fs-extra to v10.1.0 ([#3124](https://github.com/conventional-changelog/commitlint/issues/3124)) ([482613f](https://github.com/conventional-changelog/commitlint/commit/482613f4bf0de1d81a5ecda4ea9965165cd78120)) +- update dependency semver to v7.3.6 ([#3112](https://github.com/conventional-changelog/commitlint/issues/3112)) ([ad886fd](https://github.com/conventional-changelog/commitlint/commit/ad886fd7ea46bc2df346099f9d4f10defd51fe75)) +- update dependency semver to v7.3.7 ([#3119](https://github.com/conventional-changelog/commitlint/issues/3119)) ([c9c49b2](https://github.com/conventional-changelog/commitlint/commit/c9c49b2de935528d84a817de750cd65b8f765c48)) +- update dependency yargs to v17.4.0 ([#3080](https://github.com/conventional-changelog/commitlint/issues/3080)) ([1477d7c](https://github.com/conventional-changelog/commitlint/commit/1477d7c0de15000f0881329f177476082fee2067)) +- update dependency yargs to v17.4.1 ([#3116](https://github.com/conventional-changelog/commitlint/issues/3116)) ([69bf135](https://github.com/conventional-changelog/commitlint/commit/69bf135d69abb0e871ae7d1b6c76a5f343899edc)) + +## [16.2.3](https://github.com/conventional-changelog/commitlint/compare/v16.2.2...v16.2.3) (2022-03-16) + +### Bug Fixes + +- update dependency @types/fs-extra to v9.0.13 ([#3054](https://github.com/conventional-changelog/commitlint/issues/3054)) ([4c7dd7c](https://github.com/conventional-changelog/commitlint/commit/4c7dd7c32f89f3187f9f655c8170d35b6be8f90a)) +- update dependency cosmiconfig-typescript-loader to v1.0.6 ([#3059](https://github.com/conventional-changelog/commitlint/issues/3059)) ([256e194](https://github.com/conventional-changelog/commitlint/commit/256e194cbe8ed773ed9d966fa06f9531a6bc4d37)) +- update dependency fs-extra to v10.0.1 ([#3041](https://github.com/conventional-changelog/commitlint/issues/3041)) ([1236c83](https://github.com/conventional-changelog/commitlint/commit/1236c8388bb9b684cdfe41577b90cc5eaa852a47)) +- update dependency git-raw-commits to v2.0.11 ([#3055](https://github.com/conventional-changelog/commitlint/issues/3055)) ([d5089f1](https://github.com/conventional-changelog/commitlint/commit/d5089f1ce211592bc9315c03ad79183f142b7f1b)) + +## [16.2.2](https://github.com/conventional-changelog/commitlint/compare/v16.2.1...v16.2.2) (2022-02-14) + +**Note:** Version bump only for package @commitlint/root + +## [16.2.1](https://github.com/conventional-changelog/commitlint/compare/v16.2.0...v16.2.1) (2022-02-13) + +### Bug Fixes + +- update dependency cosmiconfig-typescript-loader to v1.0.5 ([#3020](https://github.com/conventional-changelog/commitlint/issues/3020)) ([2d431a6](https://github.com/conventional-changelog/commitlint/commit/2d431a60942fd615b4cce8f18a237c3fb6712223)) +- update dependency jest-environment-node to v27.5.0 ([#3012](https://github.com/conventional-changelog/commitlint/issues/3012)) ([a546128](https://github.com/conventional-changelog/commitlint/commit/a5461289cff8a7927bab9153af681afa7a039977)) +- update dependency jest-environment-node to v27.5.1 ([#3018](https://github.com/conventional-changelog/commitlint/issues/3018)) ([0cbf652](https://github.com/conventional-changelog/commitlint/commit/0cbf65269c1ca70b7a27c8bdee7e397ac6dba9b7)) +- update dependency read-pkg to v7.1.0 ([#3015](https://github.com/conventional-changelog/commitlint/issues/3015)) ([3b7b680](https://github.com/conventional-changelog/commitlint/commit/3b7b680ce4f5341d8816f3db036170b0cb28d33f)) +- **load:** satisfy @types/node peer dependency for cosmiconfig-loader-typescript ([#3008](https://github.com/conventional-changelog/commitlint/issues/3008)) ([338180c](https://github.com/conventional-changelog/commitlint/commit/338180c7174625cddd7a0ea2b9d2786fee375756)), closes [#3007](https://github.com/conventional-changelog/commitlint/issues/3007) + +# [16.2.0](https://github.com/conventional-changelog/commitlint/compare/v16.1.0...v16.2.0) (2022-01-25) + +### Bug Fixes + +- update dependency cosmiconfig-typescript-loader to v1.0.4 ([#2991](https://github.com/conventional-changelog/commitlint/issues/2991)) ([043a059](https://github.com/conventional-changelog/commitlint/commit/043a05922fb8139b57c78eb5034b77823b2139ba)) + +### Features + +- add support for Nx monorepos via @commitlint/config-nx-scopes ([#2995](https://github.com/conventional-changelog/commitlint/issues/2995)) ([11879ad](https://github.com/conventional-changelog/commitlint/commit/11879adacbef3c939311b1ff597a7b894fcca0dc)) + +# [16.1.0](https://github.com/conventional-changelog/commitlint/compare/v16.0.3...v16.1.0) (2022-01-20) + +### Features + +- **load:** accept functions as parser presets ([#2982](https://github.com/conventional-changelog/commitlint/issues/2982)) ([420e8d6](https://github.com/conventional-changelog/commitlint/commit/420e8d6a4d5663ade953272275a9e0fa7c5ddff0)), closes [#2964](https://github.com/conventional-changelog/commitlint/issues/2964) [#2964](https://github.com/conventional-changelog/commitlint/issues/2964) + +## [16.0.3](https://github.com/conventional-changelog/commitlint/compare/v16.0.2...v16.0.3) (2022-01-19) + +### Bug Fixes + +- commit body should be empty by default ([#2980](https://github.com/conventional-changelog/commitlint/issues/2980)) ([e6582e0](https://github.com/conventional-changelog/commitlint/commit/e6582e03608621e46f617a097b4880750ae85021)) + +## [16.0.2](https://github.com/conventional-changelog/commitlint/compare/v16.0.1...v16.0.2) (2022-01-09) + +### Bug Fixes + +- update dependency conventional-changelog-conventionalcommits to v4.6.3 ([#2938](https://github.com/conventional-changelog/commitlint/issues/2938)) ([0231f4b](https://github.com/conventional-changelog/commitlint/commit/0231f4bd74d9c5a691ba3e25e92947127359528c)) +- update dependency conventional-commits-parser to v3.2.4 ([#2939](https://github.com/conventional-changelog/commitlint/issues/2939)) ([a484a9a](https://github.com/conventional-changelog/commitlint/commit/a484a9a65259861114deb2b37ee0b30d0058be2a)) +- update dependency cosmiconfig-typescript-loader to v1.0.3 ([#2956](https://github.com/conventional-changelog/commitlint/issues/2956)) ([cc6e6cd](https://github.com/conventional-changelog/commitlint/commit/cc6e6cdd53a4b609c8e0514a2035ce4f4a46a317)) +- update dependency jest-environment-node to v27.4.6 ([#2957](https://github.com/conventional-changelog/commitlint/issues/2957)) ([62a0867](https://github.com/conventional-changelog/commitlint/commit/62a0867ddbc771bf92395ccfd0d1f75ff9ea24ec)) + +## [16.0.1](https://github.com/conventional-changelog/commitlint/compare/v16.0.0...v16.0.1) (2021-12-28) + +### Bug Fixes + +- update dependency @types/tmp to v0.2.3 ([#2928](https://github.com/conventional-changelog/commitlint/issues/2928)) ([8eeb1f4](https://github.com/conventional-changelog/commitlint/commit/8eeb1f436a91550295f5bc671e0d75fef7eedbd7)) +- update dependency conventional-changelog-conventionalcommits to v4.6.2 ([#2934](https://github.com/conventional-changelog/commitlint/issues/2934)) ([a239b9e](https://github.com/conventional-changelog/commitlint/commit/a239b9e7c4078d335182c9568e348680ca5fc569)) +- update dependency cosmiconfig-typescript-loader to v1.0.2 ([#2929](https://github.com/conventional-changelog/commitlint/issues/2929)) ([04cc88c](https://github.com/conventional-changelog/commitlint/commit/04cc88c0d985b5f03a2d1bdc7a1a94f4ef5c7019)) +- update dependency yargs to v17.3.1 ([#2935](https://github.com/conventional-changelog/commitlint/issues/2935)) ([8e099af](https://github.com/conventional-changelog/commitlint/commit/8e099afd794c8fc44c64b4cb817f197d2e80b12e)) + +# [16.0.0](https://github.com/conventional-changelog/commitlint/compare/v15.0.0...v16.0.0) (2021-12-26) + +### Bug Fixes + +- **is-ignored:** ignore merge tag commit messages ([#2920](https://github.com/conventional-changelog/commitlint/issues/2920)) ([914782a](https://github.com/conventional-changelog/commitlint/commit/914782aad70d353baf4d9fbbf9824c0211241484)) +- update dependency @types/tmp to v0.2.2 ([#2903](https://github.com/conventional-changelog/commitlint/issues/2903)) ([d2f146c](https://github.com/conventional-changelog/commitlint/commit/d2f146c6d8bcafa96d13341433aebaa2712a2feb)) +- update dependency conventional-commits-parser to v3.2.3 ([#2904](https://github.com/conventional-changelog/commitlint/issues/2904)) ([3a98d3c](https://github.com/conventional-changelog/commitlint/commit/3a98d3c49eae1001ed25bcadaa209f8a4cb32e91)) +- **cz-commitlint:** combine commit body with issuesBody/breakingBody when body has an empty string ([#2915](https://github.com/conventional-changelog/commitlint/issues/2915)) ([a038b41](https://github.com/conventional-changelog/commitlint/commit/a038b419f7f1d2073977ec1e6fe59ffcbba38931)) +- **docs:** minor changes to guides ([#2913](https://github.com/conventional-changelog/commitlint/issues/2913)) ([499efd1](https://github.com/conventional-changelog/commitlint/commit/499efd17927ca26e9dcdae58e4cc0772b45bbea8)) +- update dependency conventional-changelog-conventionalcommits to v4.6.1 ([#2906](https://github.com/conventional-changelog/commitlint/issues/2906)) ([1d1ccfa](https://github.com/conventional-changelog/commitlint/commit/1d1ccfab358b7dbd6448f8d74d0ae39eaddb3189)) +- update dependency cosmiconfig to v7.0.1 ([#2905](https://github.com/conventional-changelog/commitlint/issues/2905)) ([2c33c98](https://github.com/conventional-changelog/commitlint/commit/2c33c98693627888f2246b34e00941417c6ef932)) +- update dependency jest-environment-node to v27.4.2 ([#2907](https://github.com/conventional-changelog/commitlint/issues/2907)) ([c3b29ba](https://github.com/conventional-changelog/commitlint/commit/c3b29ba15a13fa3f2510a8bb153a1f90ee8ee583)) +- update dependency yargs to v17.3.0 ([#2908](https://github.com/conventional-changelog/commitlint/issues/2908)) ([a387494](https://github.com/conventional-changelog/commitlint/commit/a38749443130400b9d289d3d50042271bff44a28)) + +### Features + +- **config-rush-scopes:** add config for rush monorepo ([#2878](https://github.com/conventional-changelog/commitlint/issues/2878)) ([befa677](https://github.com/conventional-changelog/commitlint/commit/befa677c3c2bed38085a62da161366784d971906)) +- **cz-commitlint:** support select scope with radio list by setting disableMultipleScopes ([#2911](https://github.com/conventional-changelog/commitlint/issues/2911)) ([9d8d73f](https://github.com/conventional-changelog/commitlint/commit/9d8d73f36e0c62c8cd9e3e913b66a5ca46ebf622)), closes [#2782](https://github.com/conventional-changelog/commitlint/issues/2782) +- config validation ([#2412](https://github.com/conventional-changelog/commitlint/issues/2412)) ([c717202](https://github.com/conventional-changelog/commitlint/commit/c7172022097b11f46b33617e4a94d751243c1049)), closes [#327](https://github.com/conventional-changelog/commitlint/issues/327) + +### BREAKING CHANGES + +- **cz-commitlint:** users who is using multiple scopes need to set enableMultipleScopes to true + +# [15.0.0](https://github.com/conventional-changelog/commitlint/compare/v14.2.0...v15.0.0) (2021-11-17) + +### Bug Fixes + +- **prompt:** correct import kind in prompt package ([#2852](https://github.com/conventional-changelog/commitlint/issues/2852)) ([45bf394](https://github.com/conventional-changelog/commitlint/commit/45bf394b34cef78011c2e0a1a7d0cc0d2bab41ae)) +- **prompt:** correct version of internal dependencies in prompt package [#2697](https://github.com/conventional-changelog/commitlint/issues/2697) ([#2851](https://github.com/conventional-changelog/commitlint/issues/2851)) ([b1155ca](https://github.com/conventional-changelog/commitlint/commit/b1155cae766aba7e93bc42c69c9ea7f47c1c16d4)) +- **types:** fix signature of QualifiedRuleConfig for async configurations ([#2868](https://github.com/conventional-changelog/commitlint/issues/2868)) ([#2869](https://github.com/conventional-changelog/commitlint/issues/2869)) ([c7f355b](https://github.com/conventional-changelog/commitlint/commit/c7f355b25e5baddab0b9559892f5ce4112e4f93a)) + +### Features + +- simplify config resolution ([#2398](https://github.com/conventional-changelog/commitlint/issues/2398)) ([8a8384f](https://github.com/conventional-changelog/commitlint/commit/8a8384f3c18954447cb633e76a573e1db71a1440)), closes [#327](https://github.com/conventional-changelog/commitlint/issues/327) + +### Tests + +- **config-lerna-scopes:** reuse npm bootstrap to simplify tests ([#2479](https://github.com/conventional-changelog/commitlint/issues/2479)) ([9a7a43a](https://github.com/conventional-changelog/commitlint/commit/9a7a43aa8a7eca18f2fe05c78d27dcb1a128930c)), closes [#2447](https://github.com/conventional-changelog/commitlint/issues/2447) + +### BREAKING CHANGES + +- **config-lerna-scopes:** upgrade to lerna v4 + +Co-authored-by: Renovate Bot <bot@renovateapp.com> +Co-authored-by: escapedcat <github@htmlcss.de> + +- test(config-lerna-scopes): reuse npm bootstrap to simplify tests + +- test(config-lerna-scopes): reuse npm bootstrap to simplify tests + +- test: fix issue after merge + +- test: one more fix after merge + +Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> +Co-authored-by: Renovate Bot <bot@renovateapp.com> +Co-authored-by: escapedcat <github@htmlcss.de> + +## [8.3.6](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v8.3.6) (2021-11-17) + +**Note:** Version bump only for package @commitlint/root + +chore: update lodash to 4.17.21 +SECURITY: CVE-2021-23337 in package lodash https://nvd.nist.gov/vuln/detail/CVE-2021-23337 + +# [14.2.0](https://github.com/conventional-changelog/commitlint/compare/v14.1.0...v14.2.0) (2021-11-06) + +### Features + +- **prompt:** rewrite codebase to use inquirer - UPDATED with current master ([#2697](https://github.com/conventional-changelog/commitlint/issues/2697)) ([5105f43](https://github.com/conventional-changelog/commitlint/commit/5105f43ea8093bce82fe4703c4c14a8210721924)) + +# [14.1.0](https://github.com/conventional-changelog/commitlint/compare/v14.0.0...v14.1.0) (2021-11-01) + +### Features + +- extend helpUrl from shareable config ([#2846](https://github.com/conventional-changelog/commitlint/issues/2846)) ([d7e2e2b](https://github.com/conventional-changelog/commitlint/commit/d7e2e2b943be383f99f4000b6b6bed0eab03bfcf)) +- **load:** add support for `.commitlintrc.cjs` and `commitlint.config.cjs` files ([#2797](https://github.com/conventional-changelog/commitlint/issues/2797)) ([fabb495](https://github.com/conventional-changelog/commitlint/commit/fabb49509730609276ff9ef6357536c95a1f6bb1)) + +# [14.0.0](https://github.com/conventional-changelog/commitlint/compare/v13.2.1...v14.0.0) (2021-10-26) + +- support multiple scopes and multiple cases & fix sentence-case is not consistent with commitlint/cli (#2806) ([2c71a7e](https://github.com/conventional-changelog/commitlint/commit/2c71a7e2965a2beff805982d37243b79a48c9360)), closes [#2806](https://github.com/conventional-changelog/commitlint/issues/2806) [#2782](https://github.com/conventional-changelog/commitlint/issues/2782) + +### BREAKING CHANGES + +- add prompt.settings configuration + +## [13.2.1](https://github.com/conventional-changelog/commitlint/compare/v13.2.0...v13.2.1) (2021-10-09) + +### Bug Fixes + +- **load:** added a direct dependency on typescript ([#2785](https://github.com/conventional-changelog/commitlint/issues/2785)) ([9c17f8d](https://github.com/conventional-changelog/commitlint/commit/9c17f8d423404b484f72df41358a18bd90014ecd)), closes [EndemolShineGroup/cosmiconfig-typescript-loader#147](https://github.com/EndemolShineGroup/cosmiconfig-typescript-loader/issues/147) [#2779](https://github.com/conventional-changelog/commitlint/issues/2779) + +# [13.2.0](https://github.com/conventional-changelog/commitlint/compare/v13.1.0...v13.2.0) (2021-09-28) + +### Bug Fixes + +- **parse:** enforce secure version of `conventional-commits-parser` ([#2776](https://github.com/conventional-changelog/commitlint/issues/2776)) ([a351801](https://github.com/conventional-changelog/commitlint/commit/a3518012ae11bc00a43a12b8ce935f3ffd2d04ef)) +- update dependency read-pkg to v7 ([#2721](https://github.com/conventional-changelog/commitlint/issues/2721)) ([7d9a3b1](https://github.com/conventional-changelog/commitlint/commit/7d9a3b1f2ab41c598f4d23d96805f86a4d41ae09)) +- **types:** prompt messages key ([4825a52](https://github.com/conventional-changelog/commitlint/commit/4825a521e2c74d63a11920b48094fddc79001b3c)) +- **types:** prompt messages props optional ([0bd0592](https://github.com/conventional-changelog/commitlint/commit/0bd0592148ab4266fd76816b19d352e2cf947f8c)) +- **types:** user config prompt ([6d7a1c4](https://github.com/conventional-changelog/commitlint/commit/6d7a1c40e2f8a8ff22595e0e17f71f3702b0699c)) + +### Features + +- **load:** add cosmiconfig typescript loader ([b65aced](https://github.com/conventional-changelog/commitlint/commit/b65acedc3334a859811762539ec8716de3e73f85)) + +# [13.1.0](https://github.com/conventional-changelog/commitlint/compare/v13.0.0...v13.1.0) (2021-07-24) + +### Bug Fixes + +- **cz-commitlint:** fix minor formatting issues ([99d8881](https://github.com/conventional-changelog/commitlint/commit/99d8881d0d951deded6d9e31bbb279d04101549b)) +- **types:** adds TargetCaseType[] for CaseRuleConfig ([c3bef38](https://github.com/conventional-changelog/commitlint/commit/c3bef384ff1a3ec428ba7c86bc778c50a9e6eead)) +- update dependency import-from to v4 ([#2629](https://github.com/conventional-changelog/commitlint/issues/2629)) ([5bcb604](https://github.com/conventional-changelog/commitlint/commit/5bcb60456cd9d4c8f0f0bae21ca7c3d1c73943ca)) +- **cli:** remove hard coded comment char with linting `COMMIT_EDIT_MSG` ([#2618](https://github.com/conventional-changelog/commitlint/issues/2618)) ([5badf6d](https://github.com/conventional-changelog/commitlint/commit/5badf6dc08116ed3557e6c780e55764b4f07ca67)), closes [#2351](https://github.com/conventional-changelog/commitlint/issues/2351) + +### Features + +- **rules:** allow body-case to accept an array of cases ([5383c9e](https://github.com/conventional-changelog/commitlint/commit/5383c9edcd9a351ea1c33ed49f47afed9b1cde6b)), closes [#2631](https://github.com/conventional-changelog/commitlint/issues/2631) + +# [13.0.0](https://github.com/conventional-changelog/commitlint/compare/v12.1.4...v13.0.0) (2021-05-24) + +### Bug Fixes + +- update dependency chalk to v4.1.1 ([#2608](https://github.com/conventional-changelog/commitlint/issues/2608)) ([f41b123](https://github.com/conventional-changelog/commitlint/commit/f41b1237c7f7b2ff23b87643939569276d77b304)) +- update dependency yargs to v17.0.1 ([#2609](https://github.com/conventional-changelog/commitlint/issues/2609)) ([afbfd10](https://github.com/conventional-changelog/commitlint/commit/afbfd10592579c544d8e2c313f2c2baef68990f8)) + +### Features + +- add subject-exclamation-mark rule to improve error messages ([#2593](https://github.com/conventional-changelog/commitlint/issues/2593)) ([be701bd](https://github.com/conventional-changelog/commitlint/commit/be701bdb1de4e667b7a872767244285c4fa4fda4)) +- **rules:** add `trailer-exists` rule ([#2578](https://github.com/conventional-changelog/commitlint/issues/2578)) ([cd3816d](https://github.com/conventional-changelog/commitlint/commit/cd3816d553762eae99e088689395c55afce0c6cc)) + +- chore!: remove node 10 support (#2596) ([4db4ba1](https://github.com/conventional-changelog/commitlint/commit/4db4ba1b0b312410a0f62100a93a80c246a6c410)), closes [#2596](https://github.com/conventional-changelog/commitlint/issues/2596) + +### BREAKING CHANGES + +- minimum node version is 12 + +## [12.1.3](https://github.com/conventional-changelog/commitlint/compare/v12.1.2...v12.1.3) (2021-05-12) + +### Bug Fixes + +- update dependency fs-extra to v10 ([#2575](https://github.com/conventional-changelog/commitlint/issues/2575)) ([d47d2b5](https://github.com/conventional-changelog/commitlint/commit/d47d2b595b980adadd4fb8ff198c1914caeff18f)) +- update dependency yargs to v17 ([#2574](https://github.com/conventional-changelog/commitlint/issues/2574)) ([81c38dd](https://github.com/conventional-changelog/commitlint/commit/81c38ddf15f239b525f673b26b2ee6606f2ee8f6)) + +## [12.1.2](https://github.com/conventional-changelog/commitlint/compare/v12.1.1...v12.1.2) (2021-04-29) + +### Bug Fixes + +- **rules:** fix subject-full-stop rule config value type ([#2534](https://github.com/conventional-changelog/commitlint/issues/2534)) ([2ab3c57](https://github.com/conventional-changelog/commitlint/commit/2ab3c57b709ddad3fc98d768309ac4fdac8cb68a)) +- **types:** update chalk import ([#2535](https://github.com/conventional-changelog/commitlint/issues/2535)) ([89f9a6d](https://github.com/conventional-changelog/commitlint/commit/89f9a6d759f7296438e184a93c1f766aba1443ca)) + +## [12.1.1](https://github.com/conventional-changelog/commitlint/compare/v12.1.0...v12.1.1) (2021-04-02) + +### Bug Fixes + +- update dependency read-pkg to v6 ([#2530](https://github.com/conventional-changelog/commitlint/issues/2530)) ([d38a2ad](https://github.com/conventional-changelog/commitlint/commit/d38a2adc07f4cd6dad48aadbb73f2f1d3740e689)) +- **config-lerna-scopes:** ignore packages without names ([#2514](https://github.com/conventional-changelog/commitlint/issues/2514)) ([df3bf71](https://github.com/conventional-changelog/commitlint/commit/df3bf71ab36a085ef35a1491025c0d2e2b92ff77)) +- update dependency semver to v7.3.5 ([#2519](https://github.com/conventional-changelog/commitlint/issues/2519)) ([5113f22](https://github.com/conventional-changelog/commitlint/commit/5113f22c620e7b187fd558e5befa541b448ea18b)) +- **prompt:** modify the entry point to pass commitizen's function check ([#2501](https://github.com/conventional-changelog/commitlint/issues/2501)) ([0173fb7](https://github.com/conventional-changelog/commitlint/commit/0173fb7cc01dc8442ed88a0ab8feec20c955deee)), closes [/github.com/conventional-changelog/commitlint/issues/2486#issuecomment-791682272](https://github.com//github.com/conventional-changelog/commitlint/issues/2486/issues/issuecomment-791682272) [/github.com/conventional-changelog/commitlint/issues/2486#issuecomment-791682272](https://github.com//github.com/conventional-changelog/commitlint/issues/2486/issues/issuecomment-791682272) + +# [12.1.0](https://github.com/conventional-changelog/commitlint/compare/v12.0.1...v12.1.0) (2021-03-06) + +### Features + +- **config-lerna-scopes:** keep supporting lerna v3 ([51b0f4a](https://github.com/conventional-changelog/commitlint/commit/51b0f4a56f111c61419247755b1404b4e20d3a09)) + +## [12.0.1](https://github.com/conventional-changelog/commitlint/compare/v12.0.0...v12.0.1) (2021-02-23) + +### Bug Fixes + +- update dependency conventional-commits-parser to v3.2.1 ([#2459](https://github.com/conventional-changelog/commitlint/issues/2459)) ([8bcc4f0](https://github.com/conventional-changelog/commitlint/commit/8bcc4f0b5ff8e0e2ae8ce960ccd1a4021c8e6cbb)) +- **load:** use `Rule | AsyncRule | SyncRule` as rule value type in `Plugin` ([#2146](https://github.com/conventional-changelog/commitlint/issues/2146)) ([75b67b8](https://github.com/conventional-changelog/commitlint/commit/75b67b8fb7fc4df21267b98f0c9daeeb1130b824)) +- **types:** correct chalkColor type ([#2420](https://github.com/conventional-changelog/commitlint/issues/2420)) ([ef8bdad](https://github.com/conventional-changelog/commitlint/commit/ef8bdad96c9ee7c3ad67f8280818c7f49c1df1fe)) +- update dependency throat to v6 ([#2417](https://github.com/conventional-changelog/commitlint/issues/2417)) ([6f7db1b](https://github.com/conventional-changelog/commitlint/commit/6f7db1b39c48561b84a4fce9623fb045c5467fe8)) + +# [12.0.0](https://github.com/conventional-changelog/commitlint/compare/v11.0.0...v12.0.0) (2021-01-18) + +### Bug Fixes + +- remove unnecessary react babel transforms ([#2399](https://github.com/conventional-changelog/commitlint/issues/2399)) ([78f02fd](https://github.com/conventional-changelog/commitlint/commit/78f02fdb69c811b5ac38a7d018502aeeb785be04)) +- **utils:** update code to allow it to be executed ([#982](https://github.com/conventional-changelog/commitlint/issues/982)) ([52696d0](https://github.com/conventional-changelog/commitlint/commit/52696d048317944aa0d638b8702df78f8756d44b)) +- update dependency @types/fs-extra to v9.0.2 ([#2250](https://github.com/conventional-changelog/commitlint/issues/2250)) ([a10fa0b](https://github.com/conventional-changelog/commitlint/commit/a10fa0b580bdb09fd713beac78721cc5d579c67c)) +- update dependency @types/fs-extra to v9.0.5 ([#2360](https://github.com/conventional-changelog/commitlint/issues/2360)) ([3266712](https://github.com/conventional-changelog/commitlint/commit/3266712039e7ad6a13ed2d3097c28902b73cb701)) +- update dependency conventional-changelog-angular to v5.0.12 ([#2361](https://github.com/conventional-changelog/commitlint/issues/2361)) ([5766b39](https://github.com/conventional-changelog/commitlint/commit/5766b39b4ffb22452259827f131a2e7871637205)) +- update dependency conventional-changelog-conventionalcommits to v4.4.0 ([#2115](https://github.com/conventional-changelog/commitlint/issues/2115)) ([bccc9f5](https://github.com/conventional-changelog/commitlint/commit/bccc9f53df26b98bf51e4183d54ca66c45a51857)) +- update dependency conventional-changelog-conventionalcommits to v4.5.0 ([#2362](https://github.com/conventional-changelog/commitlint/issues/2362)) ([01c78bf](https://github.com/conventional-changelog/commitlint/commit/01c78bff6451befbc52294047c665326bc4eb9b9)) +- update dependency execa to v4.1.0 ([#2251](https://github.com/conventional-changelog/commitlint/issues/2251)) ([b5743dd](https://github.com/conventional-changelog/commitlint/commit/b5743dd1e49bbe7eac03f34bc38c59df5fbaf2a0)) +- update dependency execa to v5 ([#2341](https://github.com/conventional-changelog/commitlint/issues/2341)) ([f349df9](https://github.com/conventional-changelog/commitlint/commit/f349df90f08096a9bcad46b5e55b411aac327a24)) +- update dependency git-raw-commits to v2.0.7 ([#2116](https://github.com/conventional-changelog/commitlint/issues/2116)) ([ef969f3](https://github.com/conventional-changelog/commitlint/commit/ef969f375df170d6bdaadad205333352e01bb24d)) +- update dependency git-raw-commits to v2.0.8 ([#2364](https://github.com/conventional-changelog/commitlint/issues/2364)) ([3371715](https://github.com/conventional-changelog/commitlint/commit/3371715871d0381190635bd392780b16dd55e0c7)) +- update dependency meow to v8 ([#2245](https://github.com/conventional-changelog/commitlint/issues/2245)) ([890961b](https://github.com/conventional-changelog/commitlint/commit/890961b52b1552c1bb2798db02915e28686983f0)) +- update dependency meow to v8.1.0 ([#2380](https://github.com/conventional-changelog/commitlint/issues/2380)) ([0fbadcf](https://github.com/conventional-changelog/commitlint/commit/0fbadcf1d45c2e97f1da9938b3b80c0b45eba18c)) +- update dependency pkg-dir to v5 ([#2168](https://github.com/conventional-changelog/commitlint/issues/2168)) ([b9d1c84](https://github.com/conventional-changelog/commitlint/commit/b9d1c8462950303a7695f248849dd9f6a58b5a9a)) +- update dependency semver to v7.3.4 ([#2336](https://github.com/conventional-changelog/commitlint/issues/2336)) ([790b61a](https://github.com/conventional-changelog/commitlint/commit/790b61afa668d0eab80bbe49db58d3d5d29bb16e)) +- update dependency tar-fs to v2.1.1 ([#2261](https://github.com/conventional-changelog/commitlint/issues/2261)) ([a04f24f](https://github.com/conventional-changelog/commitlint/commit/a04f24f00873209d6d96cd894450d17fdfe9ca58)) +- **is-ignored:** ignore azure devops messages ([#2230](https://github.com/conventional-changelog/commitlint/issues/2230)) ([fe29ce7](https://github.com/conventional-changelog/commitlint/commit/fe29ce76bd87d5b42048228fbf0f47cc8d5411ec)) +- update dependency yargs to v16 ([204f36d](https://github.com/conventional-changelog/commitlint/commit/204f36d0a522afaf3a88739b401aea15ffa0b891)) +- update dependency yargs to v16.1.0 ([#2252](https://github.com/conventional-changelog/commitlint/issues/2252)) ([6478d07](https://github.com/conventional-changelog/commitlint/commit/6478d07afe0fe1736cf1aef1618c7d90d60d9117)) +- **resolve-extends:** `extends` field should be resolved from left to right ([#2070](https://github.com/conventional-changelog/commitlint/issues/2070)) ([c0a86f5](https://github.com/conventional-changelog/commitlint/commit/c0a86f5b5ed6ef071acef4baf38e7fc549fbec37)) + +### Features + +- **cli:** implement print-config cli flag ([#2391](https://github.com/conventional-changelog/commitlint/issues/2391)) ([8626883](https://github.com/conventional-changelog/commitlint/commit/86268833946dea9dcf1c15459456cd4427d17835)) +- **config-lerna-scopes:** support yarn workspaces ([#2149](https://github.com/conventional-changelog/commitlint/issues/2149)) ([b244246](https://github.com/conventional-changelog/commitlint/commit/b2442469afe3b11c20b0101be7656ced43fab366)) +- **load:** allow specifying helpUrl via config ([#2180](https://github.com/conventional-changelog/commitlint/issues/2180)) ([d6795a3](https://github.com/conventional-changelog/commitlint/commit/d6795a3c4633ba6efd7a0fcff48339dc291cd832)) +- **rules:** add body-full-stop rule ([#2144](https://github.com/conventional-changelog/commitlint/issues/2144)) ([7767ca2](https://github.com/conventional-changelog/commitlint/commit/7767ca2591d10207c4abe7f3e5e6de503ac12a25)) + +### BREAKING CHANGES + +- **resolve-extends:** The order of the `extends` resolution is changed from right-to-left to left-to-right + +# [11.0.0](https://github.com/conventional-changelog/commitlint/compare/v10.0.0...v11.0.0) (2020-09-05) + +### Bug Fixes + +- **cli:** remove default value from edit option [#2065](https://github.com/conventional-changelog/commitlint/issues/2065) ([3d4116d](https://github.com/conventional-changelog/commitlint/commit/3d4116d044a2f5149a9c9c1d9fa35abf5e232479)) +- **rules:** ignore comments in `signed-off-by` ([#2098](https://github.com/conventional-changelog/commitlint/issues/2098)) ([b610bcd](https://github.com/conventional-changelog/commitlint/commit/b610bcd15215cc5f14fb6de07914ed595cc3047b)) +- update dependency @types/fs-extra to ^9.0.1 ([#2088](https://github.com/conventional-changelog/commitlint/issues/2088)) ([cb1028e](https://github.com/conventional-changelog/commitlint/commit/cb1028ef2700d86991c69a1e2ad391bc1bdc9d90)) + +- refactor!: drop support for lerna v2 ([59667b3](https://github.com/conventional-changelog/commitlint/commit/59667b376118323b1312d3d1084b9178918f3d23)) + +### BREAKING CHANGES + +- remove lerna v2 support and tests + +# [10.0.0](https://github.com/conventional-changelog/commitlint/compare/v9.1.2...v10.0.0) (2020-08-16) + +### Bug Fixes + +- update dependency ([#1993](https://github.com/conventional-changelog/commitlint/issues/1993)) ([32667e8](https://github.com/conventional-changelog/commitlint/commit/32667e8aa665cf94fe669ba048ad7abaf6abac6e)) +- update dependency cosmiconfig to v7 ([#2044](https://github.com/conventional-changelog/commitlint/issues/2044)) ([f4db933](https://github.com/conventional-changelog/commitlint/commit/f4db93324698ea39528be0d2692151546c2b5517)) +- update dependency execa to v4 ([#1936](https://github.com/conventional-changelog/commitlint/issues/1936)) ([8efb441](https://github.com/conventional-changelog/commitlint/commit/8efb44193058d286f7325327a6d33936b273ec91)) +- update dependency find-up to v5 ([#2060](https://github.com/conventional-changelog/commitlint/issues/2060)) ([25d42f4](https://github.com/conventional-changelog/commitlint/commit/25d42f4179396bdfbfc622a401d8ca8877102286)) +- update dependency fs-extra to v9 ([#1018](https://github.com/conventional-changelog/commitlint/issues/1018)) ([2df49fa](https://github.com/conventional-changelog/commitlint/commit/2df49fac907993ae78199a1012e918b0e2ff5621)) +- update dependency get-stdin to v8 ([#1938](https://github.com/conventional-changelog/commitlint/issues/1938)) ([f94a5c8](https://github.com/conventional-changelog/commitlint/commit/f94a5c82861523aa1cf407ffe062f99ecbbfb4e4)) + +- refactor!: drop support for node 8 (#1999) ([751f39f](https://github.com/conventional-changelog/commitlint/commit/751f39f284ef232574a176c3c11b1982ee544166)), closes [#1999](https://github.com/conventional-changelog/commitlint/issues/1999) + +### BREAKING CHANGES + +- remove node 8 from circle-ci checks + +also remove node 13 because we do not support experimental versions + +- docs: update node v10 to latest LTS 10 version + +Co-authored-by: Cedric van Putten <me@bycedric.com> + +Co-authored-by: Cedric van Putten <me@bycedric.com> + +## [9.1.2](https://github.com/conventional-changelog/commitlint/compare/v9.1.1...v9.1.2) (2020-07-13) + +**Note:** Version bump only for package @commitlint/root + +## [9.1.1](https://github.com/conventional-changelog/commitlint/compare/v9.1.0...v9.1.1) (2020-06-30) + +### Bug Fixes + +- **load:** resolve plugins from extended configs ([#1976](https://github.com/conventional-changelog/commitlint/issues/1976)) ([d0f0eb9](https://github.com/conventional-changelog/commitlint/commit/d0f0eb9fde7efc2dff7a3aad190ded14303d3079)) +- mark internal packages as private [#972](https://github.com/conventional-changelog/commitlint/issues/972) ([#1970](https://github.com/conventional-changelog/commitlint/issues/1970)) ([2351124](https://github.com/conventional-changelog/commitlint/commit/23511248b2b4020ee87d04a838c7ce31e094c128)) + +# [9.1.0](https://github.com/conventional-changelog/commitlint/compare/v9.0.1...v9.1.0) (2020-06-21) + +### Bug Fixes + +- update dependency chalk to v4 ([#1275](https://github.com/conventional-changelog/commitlint/issues/1275)) ([a5d8fa1](https://github.com/conventional-changelog/commitlint/commit/a5d8fa118e8221361f14f5fd2b21d7aaad008a27)) +- update dependency conventional-changelog-conventionalcommits to v4.3.0 ([#1816](https://github.com/conventional-changelog/commitlint/issues/1816)) ([f99aeda](https://github.com/conventional-changelog/commitlint/commit/f99aeda068aabdb250e2c9819da7229a695154b9)) +- update dependency regenerator-runtime to v0.13.5 ([#1017](https://github.com/conventional-changelog/commitlint/issues/1017)) ([9c4fdf1](https://github.com/conventional-changelog/commitlint/commit/9c4fdf1b5f42677422532dad655af9aed9b43881)) +- update dependency semver to v7.3.2 ([#1369](https://github.com/conventional-changelog/commitlint/issues/1369)) ([3c09722](https://github.com/conventional-changelog/commitlint/commit/3c09722d2db85a94cd1f4bf25c6b4251b2c41bbb)) +- update dependency tar-fs to v2.1.0 ([#1103](https://github.com/conventional-changelog/commitlint/issues/1103)) ([7882036](https://github.com/conventional-changelog/commitlint/commit/788203689ebf51343ccf2e6eab530e19f4faf122)) +- update dependency tmp to v0.2.1 ([#1817](https://github.com/conventional-changelog/commitlint/issues/1817)) ([0ff72f4](https://github.com/conventional-changelog/commitlint/commit/0ff72f41bd48b3dd37f881f6fb11477d8f643735)) + +### Features + +- add local plugins support ([#1692](https://github.com/conventional-changelog/commitlint/issues/1692)) ([7b29c48](https://github.com/conventional-changelog/commitlint/commit/7b29c48321b513e091849fbb2cc2bf0e6ebb94a6)) +- enable multiple scopes in scope-enum and scope-case rules ([#901](https://github.com/conventional-changelog/commitlint/issues/901)) ([73632ce](https://github.com/conventional-changelog/commitlint/commit/73632cec299d5c3a980d07037c08633c843a8555)) + +## [9.0.1](https://github.com/conventional-changelog/commitlint/compare/v9.0.0...v9.0.1) (2020-05-26) + +### Bug Fixes + +- add missing @babel/runtime dep [#1738](https://github.com/conventional-changelog/commitlint/issues/1738) ([#1754](https://github.com/conventional-changelog/commitlint/issues/1754)) ([09afcd6](https://github.com/conventional-changelog/commitlint/commit/09afcd647a2c1d00538cf1c970e3790d936111f8)) + +# [9.0.0](https://github.com/conventional-changelog/commitlint/compare/v8.3.5...v9.0.0) (2020-05-21) + +### Bug Fixes + +- **cli:** add missing regenerator-runtime to dependencies ([#919](https://github.com/conventional-changelog/commitlint/issues/919)) ([ee5eac9](https://github.com/conventional-changelog/commitlint/commit/ee5eac98fa97ba5ba17030c8d2705aee5c7f3a3a)) +- [#840](https://github.com/conventional-changelog/commitlint/issues/840) add caret to lodash versions ([#843](https://github.com/conventional-changelog/commitlint/issues/843)) ([ffc0bac](https://github.com/conventional-changelog/commitlint/commit/ffc0bac26993acb2ab6a8fa51065f93c92b0d644)) +- drop support for 'improvement' type ([#899](https://github.com/conventional-changelog/commitlint/issues/899)) ([b27ab08](https://github.com/conventional-changelog/commitlint/commit/b27ab08544373cfb72a4808756e2e8126ea96a97)) +- **config-lerna-scopes:** correct lerna in peerDependencies ([#980](https://github.com/conventional-changelog/commitlint/issues/980)) ([f88f00d](https://github.com/conventional-changelog/commitlint/commit/f88f00d5d3d0a247b5635b50248bbb942b1ec962)) +- ignore empty commit messages [#615](https://github.com/conventional-changelog/commitlint/issues/615) ([#676](https://github.com/conventional-changelog/commitlint/issues/676)) ([c3eb1a7](https://github.com/conventional-changelog/commitlint/commit/c3eb1a76e08213d7ce1f200e35f8d5d6de18982a)) +- incorrect use of when in getForcedCaseFn ([#993](https://github.com/conventional-changelog/commitlint/issues/993)) ([34c11b8](https://github.com/conventional-changelog/commitlint/commit/34c11b8f3f233eca51866274a10d35231e8eb3d4)) +- update dependency semver to v7.1.3 ([#995](https://github.com/conventional-changelog/commitlint/issues/995)) ([4ee307a](https://github.com/conventional-changelog/commitlint/commit/4ee307a1f8c861ae5d8a038560d166c5d00ea8ba)) + +### Features + +- add async promise based rules methods into lint ([#976](https://github.com/conventional-changelog/commitlint/issues/976)) ([4443062](https://github.com/conventional-changelog/commitlint/commit/444306249b8a3d04524538f61edca8f6cc10d75f)) +- add possibility to extend from string ([#865](https://github.com/conventional-changelog/commitlint/issues/865)) ([056c6fe](https://github.com/conventional-changelog/commitlint/commit/056c6fef346b4e84f8b1f93038a9461a7cbd9beb)) +- passdown argv to lint command ([#891](https://github.com/conventional-changelog/commitlint/issues/891)) ([c49a57c](https://github.com/conventional-changelog/commitlint/commit/c49a57c77767b8213d565df3a8bbcd7369f36641)) +- **config-conventional:** footer/body-max-line ([#436](https://github.com/conventional-changelog/commitlint/issues/436)) ([8b394c9](https://github.com/conventional-changelog/commitlint/commit/8b394c94ffe37322d734bd4944add4a6cb2a4689)) +- **config-conventional:** increase header-max-length to 100 ([#860](https://github.com/conventional-changelog/commitlint/issues/860)) ([ff11998](https://github.com/conventional-changelog/commitlint/commit/ff11998e0cf6fcd4f03bc18ab27b1bdd6bf21906)), closes [#859](https://github.com/conventional-changelog/commitlint/issues/859) + +### BREAKING CHANGES + +- 'improvement' type will now be rejected by this config. + +## [8.3.5](https://github.com/conventional-changelog/commitlint/compare/v8.3.4...v8.3.5) (2020-01-15) + +### Bug Fixes + +- **is-ignored:** move types to dev dependencies ([#897](https://github.com/conventional-changelog/commitlint/issues/897)) ([aabc549](https://github.com/conventional-changelog/commitlint/commit/aabc549)) +- **resolve-extends:** move node types to dev dependencies ([#883](https://github.com/conventional-changelog/commitlint/issues/883)) ([b131a18](https://github.com/conventional-changelog/commitlint/commit/b131a18)), closes [#874](https://github.com/conventional-changelog/commitlint/issues/874) + +## [8.3.4](https://github.com/conventional-changelog/commitlint/compare/v8.3.3...v8.3.4) (2020-01-03) + +### Bug Fixes + +- **commitlint:** use new read pkg syntax ([#888](https://github.com/conventional-changelog/commitlint/issues/888)) ([6b3b9a9](https://github.com/conventional-changelog/commitlint/commit/6b3b9a9)) + +## [8.3.1](https://github.com/conventional-changelog/commitlint/compare/v8.3.0...v8.3.1) (2019-10-16) + +### Bug Fixes + +- **load:** resolve nested parser preset factories ([#831](https://github.com/conventional-changelog/commitlint/issues/831)) ([73a7df7](https://github.com/conventional-changelog/commitlint/commit/73a7df7)) + +# [8.3.0](https://github.com/conventional-changelog/commitlint/compare/v8.2.0...v8.3.0) (2019-10-16) + +### Features + +- **cli:** add helpurl flag ([#789](https://github.com/conventional-changelog/commitlint/issues/789)) ([75cef4e](https://github.com/conventional-changelog/commitlint/commit/75cef4e)) +- **config-conventional:** use parser with short breaking change support ([#821](https://github.com/conventional-changelog/commitlint/issues/821)) ([4b5300a](https://github.com/conventional-changelog/commitlint/commit/4b5300a)) +- **resolve-extends:** accept absolute path in extends ([#825](https://github.com/conventional-changelog/commitlint/issues/825)) ([ecac29f](https://github.com/conventional-changelog/commitlint/commit/ecac29f)) + +# [8.2.0](https://github.com/conventional-changelog/commitlint/compare/v8.1.0...v8.2.0) (2019-09-16) + +This release is versioned as minor change because some of the core components are rewritten to TypeScript. It's part of the full port to TypeScript, currently in progress at [#659](https://github.com/conventional-changelog/commitlint/issues/659). + +### Bug Fixes + +- pass defaultIgnores from configuration in @commitlint/cli ([#771](https://github.com/conventional-changelog/commitlint/issues/771)) ([a259014](https://github.com/conventional-changelog/commitlint/commit/a259014)) + +# [8.1.0](https://github.com/conventional-changelog/commitlint/compare/v8.0.0...v8.1.0) (2019-07-15) + +This release is versioned as minor change because some of the core components are rewritten to TypeScript. It's part of the full port to TypeScript, currently in progress at [#659](https://github.com/conventional-changelog/commitlint/issues/659). + +### Bug Fixes + +- add explicit dependency on chalk ([#687](https://github.com/conventional-changelog/commitlint/issues/687)) ([9075844](https://github.com/conventional-changelog/commitlint/commit/9075844)) +- pass ignores from configuration in @commitlint/cli ([#668](https://github.com/conventional-changelog/commitlint/issues/668)) ([da99aaa](https://github.com/conventional-changelog/commitlint/commit/da99aaa)) + +# [8.0.0](https://github.com/conventional-changelog/commitlint/compare/v7.6.2...v8.0.0) + +### Breaking Changes + +- fix: avoid excessive help text #606 (#637) + The commitlint default formatter is now silent for reports without warnings or errors. + Scripts relying on the success output of commitlint can restore the former output by specifying the --verbose flag. + +## [7.6.2](https://github.com/conventional-changelog/commitlint/compare/v7.6.0...v7.6.2) + +- Republish packages with out of sync artifacts + +## [7.6.1](https://github.com/conventional-changelog/commitlint/compare/v7.6.0...v7.6.1) (2019-05-09) + +### Bug Fixes + +- ensure format() is available as commonjs default export [#645](https://github.com/conventional-changelog/commitlint/issues/645) ([ec3da92](https://github.com/conventional-changelog/commitlint/commit/ec3da92)) +- handle absolute config paths correctly [#647](https://github.com/conventional-changelog/commitlint/issues/647) ([49b3a77](https://github.com/conventional-changelog/commitlint/commit/49b3a77)) + +# [7.6.0](https://github.com/conventional-changelog/commitlint/compare/v7.5.2...v7.6.0) (2019-05-06) + +### Bug Fixes + +- add @lerna/project to repository dependencies ([#598](https://github.com/conventional-changelog/commitlint/issues/598)) ([56f03ee](https://github.com/conventional-changelog/commitlint/commit/56f03ee)) +- address security warnings for dev dependencies ([3e0d824](https://github.com/conventional-changelog/commitlint/commit/3e0d824)) +- avoid excessive help text [#606](https://github.com/conventional-changelog/commitlint/issues/606) ([#637](https://github.com/conventional-changelog/commitlint/issues/637)) ([8f3c3b1](https://github.com/conventional-changelog/commitlint/commit/8f3c3b1)) +- don't merge array properties with custom opts ([#616](https://github.com/conventional-changelog/commitlint/issues/616)) ([f321647](https://github.com/conventional-changelog/commitlint/commit/f321647)), closes [#594](https://github.com/conventional-changelog/commitlint/issues/594) +- remove unneeded dev dependency ([6ccaf79](https://github.com/conventional-changelog/commitlint/commit/6ccaf79)) +- update cosmiconfig to safe >=5 [#599](https://github.com/conventional-changelog/commitlint/issues/599) ([f186fcb](https://github.com/conventional-changelog/commitlint/commit/f186fcb)) +- use sander.readFile correctly ([#448](https://github.com/conventional-changelog/commitlint/issues/448)) ([#630](https://github.com/conventional-changelog/commitlint/issues/630)) ([8e47985](https://github.com/conventional-changelog/commitlint/commit/8e47985)) + +### Features + +- **resolve-extends:** accept short scoped package names in extends ([#597](https://github.com/conventional-changelog/commitlint/issues/597)) ([ba90e8e](https://github.com/conventional-changelog/commitlint/commit/ba90e8e)) +- adds support for plugins ([#228](https://github.com/conventional-changelog/commitlint/issues/228)) ([#588](https://github.com/conventional-changelog/commitlint/issues/588)) ([cea4564](https://github.com/conventional-changelog/commitlint/commit/cea4564)) +- config based is-ignored overrides ([#595](https://github.com/conventional-changelog/commitlint/issues/595)) ([2434d71](https://github.com/conventional-changelog/commitlint/commit/2434d71)) + +## [7.5.2](https://github.com/conventional-changelog/commitlint/compare/v7.5.1...v7.5.2) (2019-02-11) + +### Bug Fixes + +- failing sentence-case for subjects with slashes ([#574](https://github.com/conventional-changelog/commitlint/issues/574)) ([48a8602](https://github.com/conventional-changelog/commitlint/commit/48a8602)) +- **cli:** replace old links with new organisation links ([#578](https://github.com/conventional-changelog/commitlint/issues/578)) ([4075903](https://github.com/conventional-changelog/commitlint/commit/4075903)) + +## [7.5.1](https://github.com/conventional-changelog/commitlint/compare/v7.5.0...v7.5.1) (2019-02-09) + +### Bug Fixes + +- **is-ignored:** ignore bitbuckets automatic merge ([#573](https://github.com/conventional-changelog/commitlint/issues/573)) ([e5bdc5c](https://github.com/conventional-changelog/commitlint/commit/e5bdc5c)) + +<a name="7.5.0"></a> + +# [7.5.0](https://github.com/conventional-changelog/commitlint/compare/v7.4.0...v7.5.0) (2019-01-31) + +### Bug Fixes + +- `sentence-case` allow upper-case characters in first word ([#531](https://github.com/conventional-changelog/commitlint/issues/531)) ([5a6a4a8](https://github.com/conventional-changelog/commitlint/commit/5a6a4a8)), closes [#211](https://github.com/conventional-changelog/commitlint/issues/211) +- **resolve-extends:** override array on extending rules ([#470](https://github.com/conventional-changelog/commitlint/issues/470)) ([#539](https://github.com/conventional-changelog/commitlint/issues/539)) ([b35000c](https://github.com/conventional-changelog/commitlint/commit/b35000c)) +- all broken website references ([#564](https://github.com/conventional-changelog/commitlint/issues/564)) ([82eeb5a](https://github.com/conventional-changelog/commitlint/commit/82eeb5a)) +- cleanup message for input with no config ([#519](https://github.com/conventional-changelog/commitlint/issues/519)) ([7d9e760](https://github.com/conventional-changelog/commitlint/commit/7d9e760)) +- **cli:** avoid linebreak in empty input ([#523](https://github.com/conventional-changelog/commitlint/issues/523)) ([3141882](https://github.com/conventional-changelog/commitlint/commit/3141882)) +- mark optional parameter with undefined ([#553](https://github.com/conventional-changelog/commitlint/issues/553)) ([6720284](https://github.com/conventional-changelog/commitlint/commit/6720284)) +- replace all repository references with conventional changelog ([#561](https://github.com/conventional-changelog/commitlint/issues/561)) ([6c3afcd](https://github.com/conventional-changelog/commitlint/commit/6c3afcd)) +- replace all website references with conventional changelog ([#563](https://github.com/conventional-changelog/commitlint/issues/563)) ([6b86fb1](https://github.com/conventional-changelog/commitlint/commit/6b86fb1)) +- replace old require-uncached with import-fresh ([#533](https://github.com/conventional-changelog/commitlint/issues/533)) ([b636e8c](https://github.com/conventional-changelog/commitlint/commit/b636e8c)) +- resolve path to commit message for git submodules ([83b1a47](https://github.com/conventional-changelog/commitlint/commit/83b1a47)) +- slash in scope [#291](https://github.com/conventional-changelog/commitlint/issues/291) ([#529](https://github.com/conventional-changelog/commitlint/issues/529)) ([b2b63e5](https://github.com/conventional-changelog/commitlint/commit/b2b63e5)) +- store concatenated array to problems variable ([#551](https://github.com/conventional-changelog/commitlint/issues/551)) ([434a70f](https://github.com/conventional-changelog/commitlint/commit/434a70f)) + +### Features + +- add support for git submodules ([cc575fa](https://github.com/conventional-changelog/commitlint/commit/cc575fa)) +- **rule-header-length:** show current header length ([6d61c4f](https://github.com/conventional-changelog/commitlint/commit/6d61c4f)) + +<a name="7.4.0"></a> + +# [7.4.0](https://github.com/conventional-changelog/commitlint/compare/v7.3.2...v7.4.0) (2019-01-27) + +### Bug Fixes + +- correction to need help link ([#540](https://github.com/conventional-changelog/commitlint/issues/540)) ([fa6168a](https://github.com/conventional-changelog/commitlint/commit/fa6168a)) + +### Features + +- **rules:** create header-case and header-full-stop rules ([#547](https://github.com/conventional-changelog/commitlint/issues/547)) ([4c36cbd](https://github.com/conventional-changelog/commitlint/commit/4c36cbd)) + +<a name="7.3.2"></a> + +## [7.3.2](https://github.com/conventional-changelog/commitlint/compare/v7.3.1...v7.3.2) (2019-01-15) + +### Bug Fixes + +- move loadsh to dependencies ([1bb66a4](https://github.com/conventional-changelog/commitlint/commit/1bb66a4)) + +<a name="7.3.1"></a> + +## [7.3.1](https://github.com/conventional-changelog/commitlint/compare/v7.3.0...v7.3.1) (2019-01-11) + +**Note:** Version bump only for package @commitlint/root + +<a name="7.3.0"></a> + +# [7.3.0](https://github.com/conventional-changelog/commitlint/compare/v7.2.1...v7.3.0) (2019-01-11) + +### Bug Fixes + +- **format:** add new line to result ([#518](https://github.com/conventional-changelog/commitlint/issues/518)) ([f1d443b](https://github.com/conventional-changelog/commitlint/commit/f1d443b)), closes [#504](https://github.com/conventional-changelog/commitlint/issues/504) +- add fallback with husky git params to deprecation handling ([#498](https://github.com/conventional-changelog/commitlint/issues/498)) ([5a34b8c](https://github.com/conventional-changelog/commitlint/commit/5a34b8c)) +- avoid truncated output on macOS ([#503](https://github.com/conventional-changelog/commitlint/issues/503)) ([3192368](https://github.com/conventional-changelog/commitlint/commit/3192368)) +- fall back to conventional commit-parser settings for missing keys ([#496](https://github.com/conventional-changelog/commitlint/issues/496)) ([831a141](https://github.com/conventional-changelog/commitlint/commit/831a141)), closes [#399](https://github.com/conventional-changelog/commitlint/issues/399) +- respect String.protoype.repeat API contract ([f27e7ac](https://github.com/conventional-changelog/commitlint/commit/f27e7ac)) +- update to security-patched dependency versions ([97c033b](https://github.com/conventional-changelog/commitlint/commit/97c033b)) +- use correct label for failing empty subjects ([#481](https://github.com/conventional-changelog/commitlint/issues/481)) ([2e7e34d](https://github.com/conventional-changelog/commitlint/commit/2e7e34d)), closes [#476](https://github.com/conventional-changelog/commitlint/issues/476) + +### Features + +- check stage before entering prompt ([#495](https://github.com/conventional-changelog/commitlint/issues/495)) ([3b3667a](https://github.com/conventional-changelog/commitlint/commit/3b3667a)), closes [#51](https://github.com/conventional-changelog/commitlint/issues/51) [#51](https://github.com/conventional-changelog/commitlint/issues/51) +- warn on empty config ([#491](https://github.com/conventional-changelog/commitlint/issues/491)) ([b6bd36e](https://github.com/conventional-changelog/commitlint/commit/b6bd36e)), closes [#107](https://github.com/conventional-changelog/commitlint/issues/107) [#107](https://github.com/conventional-changelog/commitlint/issues/107) + +<a name="7.2.1"></a> + +## [7.2.1](https://github.com/conventional-changelog/commitlint/compare/v7.2.0...v7.2.1) (2018-10-11) + +### Bug Fixes + +- improve format module resolving ([#464](https://github.com/conventional-changelog/commitlint/issues/464)) ([baed8b1](https://github.com/conventional-changelog/commitlint/commit/baed8b1)) + +<a name="7.2.0"></a> + +# [7.2.0](https://github.com/conventional-changelog/commitlint/compare/v7.1.2...v7.2.0) (2018-10-05) + +### Bug Fixes + +- **rules:** include possible body offset in footer leading blank ([ff0111a](https://github.com/conventional-changelog/commitlint/commit/ff0111a)) +- handle case rules for numerics correctly ([cadcfed](https://github.com/conventional-changelog/commitlint/commit/cadcfed)) +- ignore merge messages with text after newline ([b32bc93](https://github.com/conventional-changelog/commitlint/commit/b32bc93)) +- use grouped regex to ignore merge commits ([#439](https://github.com/conventional-changelog/commitlint/issues/439)) ([905e9d5](https://github.com/conventional-changelog/commitlint/commit/905e9d5)) + +### Features + +- **cli:** add format option for report output ([1ecf097](https://github.com/conventional-changelog/commitlint/commit/1ecf097)) +- **load:** add formatter option with default value ([b0e63d9](https://github.com/conventional-changelog/commitlint/commit/b0e63d9)) + +<a name="7.1.2"></a> + +## [7.1.2](https://github.com/conventional-changelog/commitlint/compare/v7.1.1...v7.1.2) (2018-09-04) + +**Note:** Version bump only for package @commitlint/root + +<a name="7.1.0"></a> + +# [7.1.0](https://github.com/conventional-changelog/commitlint/compare/v7.0.1...v7.1.0) (2018-08-29) + +### Features + +- **wildcards:** add new wildcard patterns [#315](https://github.com/conventional-changelog/commitlint/issues/315) ([e9ea17f](https://github.com/conventional-changelog/commitlint/commit/e9ea17f)) +- add max line length to body/footer ([542f50e](https://github.com/conventional-changelog/commitlint/commit/542f50e)) + +<a name="6.2.0"></a> + +# [6.2.0](https://github.com/conventional-changelog/commitlint/compare/v6.1.3...v6.2.0) (2018-05-01) + +### Features + +- print commit message when the message is invalid ([86c34f1](https://github.com/conventional-changelog/commitlint/commit/86c34f1)), closes [#222](https://github.com/conventional-changelog/commitlint/issues/222) +- **rules:** support array for scope-case and type-case ([#312](https://github.com/conventional-changelog/commitlint/issues/312)) ([1f46b9f](https://github.com/conventional-changelog/commitlint/commit/1f46b9f)), closes [#307](https://github.com/conventional-changelog/commitlint/issues/307) + +<a name="6.1.1"></a> + +## [6.1.1](https://github.com/conventional-changelog/commitlint/compare/v6.1.0...v6.1.1) (2018-02-22) + +### Bug Fixes + +- **ensure:** ignore word delimiters for case matching [#291](https://github.com/conventional-changelog/commitlint/issues/291) ([fa69299](https://github.com/conventional-changelog/commitlint/commit/fa69299)) + +<a name="6.1.0"></a> + +# [6.1.0](https://github.com/conventional-changelog/commitlint/compare/v6.0.5...v6.1.0) (2018-02-03) + +### Bug Fixes + +- **parse:** default to angular preset for empty parserOpts ([#265](https://github.com/conventional-changelog/commitlint/issues/265)) ([ccb03b4](https://github.com/conventional-changelog/commitlint/commit/ccb03b4)), closes [#262](https://github.com/conventional-changelog/commitlint/issues/262) + +### Features + +- add "--config" option ([#261](https://github.com/conventional-changelog/commitlint/issues/261)) ([2c03ec6](https://github.com/conventional-changelog/commitlint/commit/2c03ec6)) + +<a name="6.0.5"></a> + +## [6.0.5](https://github.com/conventional-changelog/commitlint/compare/v6.0.4...v6.0.5) (2018-01-31) + +### Bug Fixes + +- remove utils from prod dependencies ([4fb858a](https://github.com/conventional-changelog/commitlint/commit/4fb858a)) + +<a name="6.0.4"></a> + +## [6.0.4](https://github.com/conventional-changelog/commitlint/compare/v6.0.3...v6.0.4) (2018-01-31) + +### Bug Fixes + +- remove faulty bin entry [#259](https://github.com/conventional-changelog/commitlint/issues/259) ([beafbc6](https://github.com/conventional-changelog/commitlint/commit/beafbc6)) + +<a name="6.0.3"></a> + +## [6.0.3](https://github.com/conventional-changelog/commitlint/compare/v6.0.2...v6.0.3) (2018-01-31) + +### Bug Fixes + +- update dependency cosmiconfig to ^4.0.0 ([#234](https://github.com/conventional-changelog/commitlint/issues/234)) ([7f94ac5](https://github.com/conventional-changelog/commitlint/commit/7f94ac5)) +- update dependency semver to v5.5.0 ([#236](https://github.com/conventional-changelog/commitlint/issues/236)) ([6c52bd9](https://github.com/conventional-changelog/commitlint/commit/6c52bd9)) + +<a name="6.0.2"></a> + +## [6.0.2](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.2) (2018-01-12) + +### Bug Fixes + +- ignore branch merges with multiple newlines ([#227](https://github.com/conventional-changelog/commitlint/issues/227)) ([1f0c5ca](https://github.com/conventional-changelog/commitlint/commit/1f0c5ca)) +- remove typo in error message of type-case ([cb577cb](https://github.com/conventional-changelog/commitlint/commit/cb577cb)) + +<a name="6.0.1"></a> + +## [6.0.1](https://github.com/conventional-changelog/commitlint/compare/v6.0.0...v6.0.1) (2018-01-09) + +**Note:** Version bump only for package @commitlint/root + +<a name="6.0.0"></a> + +# [6.0.0](https://github.com/conventional-changelog/commitlint/compare/v5.2.6...v6.0.0) (2018-01-09) + +### Bug Fixes + +- allow [0] shorthand ([84cf938](https://github.com/conventional-changelog/commitlint/commit/84cf938)) +- correctly resolve parserOpts [#115](https://github.com/conventional-changelog/commitlint/issues/115) [#95](https://github.com/conventional-changelog/commitlint/issues/95) ([1353dd5](https://github.com/conventional-changelog/commitlint/commit/1353dd5)) +- ignore branch merges with newlines ([#214](https://github.com/conventional-changelog/commitlint/issues/214)) ([c94c4dc](https://github.com/conventional-changelog/commitlint/commit/c94c4dc)) +- sanitize ensure.case [#211](https://github.com/conventional-changelog/commitlint/issues/211) ([#217](https://github.com/conventional-changelog/commitlint/issues/217)) ([03aeefc](https://github.com/conventional-changelog/commitlint/commit/03aeefc)) + +### Styles + +- validate rule configuration ([edf7187](https://github.com/conventional-changelog/commitlint/commit/edf7187)) + +### BREAKING CHANGES + +- Due to additional validation while reading + commitlint config, previously ignored rule + settings are now considered critical errors + when starting the CLI. The new behaviour is + designed to help developers find issues with + their configuration quicker. + +<a name="5.2.6"></a> + +## [5.2.6](https://github.com/conventional-changelog/commitlint/compare/v5.2.5...v5.2.6) (2017-12-21) + +### Bug Fixes + +- ignore semver commits with chore type ([cdbb085](https://github.com/conventional-changelog/commitlint/commit/cdbb085)), closes [#198](https://github.com/conventional-changelog/commitlint/issues/198) + +<a name="5.2.5"></a> + +## [5.2.5](https://github.com/conventional-changelog/commitlint/compare/v5.2.4...v5.2.5) (2017-12-08) + +### Bug Fixes + +- **core:** use correct report message [#192](https://github.com/conventional-changelog/commitlint/issues/192) ([e3a78bc](https://github.com/conventional-changelog/commitlint/commit/e3a78bc)) + +<a name="5.2.4"></a> + +## [5.2.4](https://github.com/conventional-changelog/commitlint/compare/v5.2.3...v5.2.4) (2017-12-08) + +**Note:** Version bump only for package @commitlint/root + +<a name="5.2.3"></a> + +## [5.2.3](https://github.com/conventional-changelog/commitlint/compare/v5.2.2...v5.2.3) (2017-12-05) + +### Bug Fixes + +- **cli:** add support for GIT_PARAMS on windows ([c62bd41](https://github.com/conventional-changelog/commitlint/commit/c62bd41)), closes [#103](https://github.com/conventional-changelog/commitlint/issues/103) [#175](https://github.com/conventional-changelog/commitlint/issues/175) + +<a name="5.2.2"></a> + +## [5.2.2](https://github.com/conventional-changelog/commitlint/compare/v5.2.1...v5.2.2) (2017-11-30) + +### Bug Fixes + +- **travis-cli:** read push commits directly ([9bc56c6](https://github.com/conventional-changelog/commitlint/commit/9bc56c6)) + +<a name="5.2.1"></a> + +## [5.2.1](https://github.com/conventional-changelog/commitlint/compare/v5.2.0...v5.2.1) (2017-11-30) + +### Bug Fixes + +- **travis-cli:** lint ranges only for pr builds ([85b201f](https://github.com/conventional-changelog/commitlint/commit/85b201f)) + +<a name="5.2.0"></a> + +# [5.2.0](https://github.com/conventional-changelog/commitlint/compare/v5.1.3...v5.2.0) (2017-11-30) + +### Bug Fixes + +- consider pull requests from forks ([4653c2c](https://github.com/conventional-changelog/commitlint/commit/4653c2c)) + +### Features + +- **babel-preset-commitlint:** add jsx tranform ([#163](https://github.com/conventional-changelog/commitlint/issues/163)) ([5190241](https://github.com/conventional-changelog/commitlint/commit/5190241)) + +<a name="5.1.3"></a> + +## [5.1.3](https://github.com/conventional-changelog/commitlint/compare/v5.1.2...v5.1.3) (2017-11-24) + +### Bug Fixes + +- **config-conventional:** add missing applicable attribute to type-enum ([a8db0b1](https://github.com/conventional-changelog/commitlint/commit/a8db0b1)) + +<a name="5.1.2"></a> + +## [5.1.2](https://github.com/conventional-changelog/commitlint/compare/v5.1.1...v5.1.2) (2017-11-24) + +### Bug Fixes + +- **prompt:** apply forced cases properly ([3a569a7](https://github.com/conventional-changelog/commitlint/commit/3a569a7)), closes [#145](https://github.com/conventional-changelog/commitlint/issues/145) + +<a name="5.1.1"></a> + +## [5.1.1](https://github.com/conventional-changelog/commitlint/compare/v5.1.0...v5.1.1) (2017-11-24) + +### Bug Fixes + +- set access for npm ([8aeaec2](https://github.com/conventional-changelog/commitlint/commit/8aeaec2)) + +<a name="5.1.0"></a> + +# [5.1.0](https://github.com/conventional-changelog/commitlint/compare/v5.0.2...v5.1.0) (2017-11-24) + +### Bug Fixes + +- update dependency concurrently to v3.5.1 ([#147](https://github.com/conventional-changelog/commitlint/issues/147)) ([a809d0f](https://github.com/conventional-changelog/commitlint/commit/a809d0f)) +- **config-conventional:** remove unneeded dependency ([d0e62fd](https://github.com/conventional-changelog/commitlint/commit/d0e62fd)) + +### Features + +- **prompt:** add description for build, ci and revert ([#148](https://github.com/conventional-changelog/commitlint/issues/148)) ([ee6ec6e](https://github.com/conventional-changelog/commitlint/commit/ee6ec6e)) +- **travis-cli:** add reusable travis command line interface ([3e6e6a8](https://github.com/conventional-changelog/commitlint/commit/3e6e6a8)) +- add conventional-changelog package ([8bb0a85](https://github.com/conventional-changelog/commitlint/commit/8bb0a85)) + +<a name="5.0.1"></a> + +## [5.0.1](https://github.com/conventional-changelog/commitlint/compare/v5.0.0...v5.0.1) (2017-11-19) + +### Bug Fixes + +- **core:** fall back to globally installed config if available ([#127](https://github.com/conventional-changelog/commitlint/issues/127)) ([8612eb3](https://github.com/conventional-changelog/commitlint/commit/8612eb3)) + +<a name="5.0.0"></a> + +# [5.0.0](https://github.com/conventional-changelog/commitlint/compare/v4.3.0...v5.0.0) (2017-11-18) + +### Bug fixes + +- core: interprets array values for subject-case correctly + +### Features + +- config-angular: disallow subject with uppercase first character, #114 +- config-angular-type-enum: remove chore type + +BREAKING CHANGE + +TL;DR + +- chore is no longer a valid commit type +- subject with leading capitalized letter are forbidden now + +Angular has removed the chore type from their +conventions as of January 2017 + +See [angular/angular@dff6ee](https://github.com/angular/angular/commit/dff6ee32725197bdb81f3f63c5bd9805f2ed22bb#diff-6a3371457528722a734f3c51d9238c13L204) +for reference + +This removes the previous chore type from the list +of allowed types. + +Projects using the Angular commit convention will identify commits with chore type as faulty. + +Also, formerly working commit messages are now considered problems: + +- type: SOME MESSAGE +- type: SomeMessage +- type: Some Message + +<a name="4.3.0"></a> + +# [4.3.0](https://github.com/conventional-changelog/commitlint/compare/v4.2.2...v4.3.0) (2017-11-08) + +### Bug Fixes +- **core:** deprecate nlp rules ([bbab1d8](https://github.com/conventional-changelog/commitlint/commit/bbab1d8)), closes [#54](https://github.com/conventional-changelog/commitlint/issues/54) +- **core:** ignore comments ([f3beda1](https://github.com/conventional-changelog/commitlint/commit/f3beda1)), closes [#78](https://github.com/conventional-changelog/commitlint/issues/78) ### Features -* add references-empty rule ([4fc8d5d](https://github.com/conventional-changelog/commitlint/commit/4fc8d5d)) +- add references-empty rule ([4fc8d5d](https://github.com/conventional-changelog/commitlint/commit/4fc8d5d)) diff --git a/Dockerfile.ci b/Dockerfile.ci new file mode 100644 index 0000000000..3b9351355c --- /dev/null +++ b/Dockerfile.ci @@ -0,0 +1,37 @@ +# syntax=docker/dockerfile:1 +FROM docker.io/library/node:18-alpine AS builder +WORKDIR /src +COPY . ./ +RUN apk add --no-cache python3 py3-setuptools make g++ git +RUN yarn install --frozen-lockfile --network-timeout 100000 && \ + yarn run build && \ + # Commit lint CLI packages + npm pack @commitlint/cli && \ + npm pack @commitlint/config-validator && \ + npm pack @commitlint/config-pnpm-scopes && \ + npm pack @commitlint/config-nx-scopes && \ + npm pack @commitlint/ensure && \ + npm pack @commitlint/execute-rule && \ + npm pack @commitlint/format && \ + npm pack @commitlint/is-ignored && \ + npm pack @commitlint/lint && \ + npm pack @commitlint/load && \ + npm pack @commitlint/message && \ + npm pack @commitlint/parse && \ + npm pack @commitlint/read && \ + npm pack @commitlint/resolve-extends && \ + npm pack @commitlint/rules && \ + npm pack @commitlint/to-lines && \ + npm pack @commitlint/top-level && \ + npm pack @commitlint/types && \ + # Default commitlint config + npm pack @commitlint/config-conventional + +FROM docker.io/library/node:18-alpine +RUN apk add --no-cache git +COPY --from=builder /src/*.tgz ./ +RUN npm config set fetch-retry-mintimeout 20000 && \ + npm config set fetch-retry-maxtimeout 120000 && \ + npm install --no-audit -g *.tgz && \ + rm -rf *.tgz +ENTRYPOINT ["commitlint"] diff --git a/Dockerfile b/Dockerfile.dev similarity index 74% rename from Dockerfile rename to Dockerfile.dev index a85d53ac6f..a00826f979 100644 --- a/Dockerfile +++ b/Dockerfile.dev @@ -1,3 +1,4 @@ +# syntax=docker/dockerfile:1 FROM brainpower/node-cubicle WORKDIR /root/repo diff --git a/README.md b/README.md index 23fc792447..2219e7aa4a 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,16 @@ -# [Get Started](https://conventional-changelog.github.io/commitlint/#/?id=getting-started) | [Let's chat][12] ![slack][11] | [Website](https://conventional-changelog.github.io/commitlint) +# [Get Started](https://commitlint.js.org/guides/getting-started) | [Website](https://commitlint.js.org) > Lint commit messages <p align="center"> - <img width="600" src="docs/assets/commitlint.svg"> + <img width="600" src="docs/public/assets/commitlint.svg"> </p> > Demo generated with [svg-term-cli](https://github.com/marionebl/svg-term-cli) > -> `cat docs/assets/commitlint.json | svg-term --out docs/assets/commitlint.svg --frame --profile=Seti --height=20 --width=80` +> `cat docs/assets/commitlint.json | svg-term --out docs/public/assets/commitlint.svg --frame --profile=Seti --height=20 --width=80` -[![npm latest][2]][3] [![CircleCI][4]][5] <!-- [![TravisCI][6]][7] --> +[![npm latest][2]][3] [![node compatibility][13]][14] [![Github Actions][4]][5] - 🚓 Be a good `commitizen` - 📦 Share configuration via `npm` @@ -18,21 +18,24 @@ ## Contents -- [What is commitlint](#what-is-commitlint) - - [Benefits using commitlint](#benefits-using-commitlint) -- [Getting started](#getting-started) -- [CLI](#cli) -- [Config](#config) -- [Shared configuration](#shared-configuration) -- [API](#api) -- [Tools](#tools) -- [Roadmap](#roadmap) -- [Version Support](#version-support) -- [Related projects](#related-projects) -- [License](#license) -- [Development](#development) - - [Install and run](#install-and-run) - - [Publishing a release](#publishing-a-release) +- [Get Started | Website](#get-started--website) + - [Contents](#contents) + - [What is commitlint](#what-is-commitlint) + - [Benefits of using commitlint](#benefits-of-using-commitlint) + - [Getting started](#getting-started) + - [CLI](#cli) + - [Config](#config) + - [Shared configuration](#shared-configuration) + - [Documentation](#documentation) + - [API](#api) + - [Tools](#tools) + - [Roadmap](#roadmap) + - [Version Support and Releases](#version-support-and-releases) + - [Releases](#releases) + - [Related projects](#related-projects) + - [License](#license) + - [Development](#development) + - [Install and run](#install-and-run) --- @@ -48,23 +51,23 @@ type(scope?): subject #scope is optional; multiple scopes are supported (curren Real world examples can look like this: -``` +```text chore: run tests on travis ci ``` -``` +```text fix(server): send cors headers ``` -``` +```text feat(blog): add comment section ``` Common types according to [commitlint-config-conventional (based on the Angular convention)](https://github.com/conventional-changelog/commitlint/tree/master/@commitlint/config-conventional#type-enum) can be: - build -- ci - chore +- ci - docs - feat - fix @@ -76,46 +79,15 @@ Common types according to [commitlint-config-conventional (based on the Angular These can be modified by [your own configuration](#config). -### Benefits using commitlint +### Benefits of using commitlint - [Why Use Conventional Commits?](https://www.conventionalcommits.org/en/v1.0.0-beta.2/#why-use-conventional-commits) - ["The perks of committing with conventions" (Talk slides)](https://slides.com/marionebl/the-perks-of-committing-with-conventions#/) ## Getting started -```sh -# Install commitlint cli and conventional config -npm install --save-dev @commitlint/{config-conventional,cli} -# For Windows: -npm install --save-dev @commitlint/config-conventional @commitlint/cli - -# Configure commitlint to use conventional config -echo "module.exports = {extends: ['@commitlint/config-conventional']}" > commitlint.config.js -``` - -To lint commits before they are created you can use Husky's `commit-msg` hook: - -```sh -# Install Husky v6 -npm install husky --save-dev -# or -yarn add husky --dev - -# Activate hooks -npx husky install -# or -yarn husky install - -# Add hook -npx husky add .husky/commit-msg 'npx --no-install commitlint --edit "$1"' -``` - -Check the [husky documentation](https://typicode.github.io/husky/#/?id=manual) on how you can automatically have Git hooks enabled after install for different `yarn` versions. - -**Detailed Setup instructions** - -- [Local setup](https://conventional-changelog.github.io/commitlint/#/guides-local-setup) - Lint messages on commit with husky -- [CI setup](https://conventional-changelog.github.io/commitlint/#/guides-ci-setup) - Lint messages during CI builds +- [Local setup](https://commitlint.js.org/guides/local-setup) - Lint messages on commit with husky +- [CI setup](https://commitlint.js.org/guides/ci-setup) - Lint messages during CI builds ## CLI @@ -125,10 +97,33 @@ Check the [husky documentation](https://typicode.github.io/husky/#/?id=manual) o ## Config -- Configuration is picked up from `commitlint.config.js`, `.commitlintrc.js`, `.commitlintrc.json`, or `.commitlintrc.yml` file or a `commitlint` field in `package.json` +- Configuration is picked up from: + - `.commitlintrc` + - `.commitlintrc.json` + - `.commitlintrc.yaml` + - `.commitlintrc.yml` + - `.commitlintrc.js` + - `.commitlintrc.cjs` + - `.commitlintrc.mjs` + - `.commitlintrc.ts` + - `.commitlintrc.cts` + - `commitlint.config.js` + - `commitlint.config.cjs` + - `commitlint.config.mjs` + - `commitlint.config.ts` + - `commitlint.config.cts` + - `commitlint` field in `package.json` + - `commitlint` field in [`package.yaml`](https://github.com/pnpm/pnpm/pull/1799) - Packages: [cli](./@commitlint/cli), [core](./@commitlint/core) -- See [Rules](./docs/reference-rules.md) for a complete list of possible rules -- An example configuration can be found at [@commitlint/config-conventional](./@commitlint/config-conventional/index.js) +- See [Rules](./docs/reference/rules.md) for a complete list of possible rules +- An example configuration can be found at [@commitlint/config-conventional](./@commitlint/config-conventional/src/index.ts) + +### Important note about Node 24+ + +Node v24 changes the way that modules are loaded, and this includes the commitlint config file. If your project does not contain a `package.json`, commitlint may fail to load the config, resulting in a `Please add rules to your commitlint.config.js` error message. This can be fixed by doing either of the following: + +- Add a `package.json` file, declaring your project as an ES6 module. This can be done easily by running `npm init es6`. +- Rename the config file from `commitlint.config.js` to `commitlint.config.mjs`. ## Shared configuration @@ -137,13 +132,18 @@ A number of shared configurations are available to install and use with `commitl - [@commitlint/config-angular](./@commitlint/config-angular) - [@commitlint/config-conventional](./@commitlint/config-conventional) - [@commitlint/config-lerna-scopes](./@commitlint/config-lerna-scopes) +- [@commitlint/config-nx-scopes](./@commitlint/config-nx-scopes) - [@commitlint/config-patternplate](./@commitlint/config-patternplate) +- [@commitlint/config-workspace-scopes](./@commitlint/config-workspace-scopes) - [conventional-changelog-lint-config-atom](https://github.com/erikmueller/conventional-changelog-lint-config-atom) - [conventional-changelog-lint-config-canonical](https://github.com/gajus/conventional-changelog-lint-config-canonical) -- [commitlint-config-jira](https://github.com/Gherciu/commitlint-jira) > ⚠️ If you want to publish your own shareable config then make sure it has a name aligning with the pattern `commitlint-config-emoji-log` or `commitlint-config-your-config-name` — then in extend all you have to write is `emoji-log` or `your-config-name`. +## Documentation + +Check the [main website](https://commitlint.js.org/). + ## API - Alternative, programmatic way to interact with `commitlint` @@ -152,7 +152,7 @@ A number of shared configurations are available to install and use with `commitl - [lint](./@commitlint/lint) - Lint a string against commitlint rules - [load](./@commitlint/load) - Load shared commitlint configuration - [read](./@commitlint/read) - Read commit messages from a specified range or last edit -- See [API](./docs/reference-api.md) for a complete list of methods and examples +- See [API](./docs/api) for a complete list of methods and examples ## Tools @@ -161,31 +161,38 @@ A number of shared configurations are available to install and use with `commitl ## Roadmap +`commitlint` is considered stable and is used in various projects as a development tool. + > **Ideas**: [conventional-changelog/commitlint#94](https://github.com/conventional-changelog/commitlint/issues/94) -`commitlint` is considered stable and is used in various projects as development tool. +## Version Support and Releases -We identify **ease of adoption** and **developer experience** as fields where there -is room and need for improvement. The items on the roadmap should enhance `commitlint` regarding those aspects. +- Node.js [LTS](https://github.com/nodejs/LTS#lts-schedule) `>= 18` +- git `>= 2.13.2` -- [x] **Adoption**: Provide reusable Travis CI integration: `@commitlint/travis-cli` (https://github.com/conventional-changelog/commitlint/releases/tag/v5.1.0) -- [ ] **DX**: Support PR squash scenario via [ahmed-taj/commitlint-bot](https://github.com/ahmed-taj/commitlint-bot/) and `@commitlint/travis-cli` -- [ ] **Adoption**: Make [ahmed-taj/commitlint-bot](https://github.com/ahmed-taj/commitlint-bot/) configurable via `commitlint` configuration -- [ ] **Adoption**: Create `commitlint init` -- [ ] **DX**: Extend the configuration schema to allow for additional fields (descriptions, examples, fixes) on both the rule and value level -- [ ] **DX**: Incorporate an extended version of [lennym/commit-template](https://github.com/lennym/commit-template) deducing a template from commitlint configuration -- [ ] **DX**: Rewrite `@commitlint/prompt` for better usability (might involve a lot of yak-shaving) +### Releases -## Version Support +Security patches will be applied to versions which are not yet EOL.\ +Features will only be applied to the current main version. -- Node.js [LTS](https://github.com/nodejs/LTS#lts-schedule) `>= 12` -- git `>= 2.13.2` +| Release | Initial release | +| -------------------------------------------------------------------------------- | --------------- | +| [v19](https://github.com/conventional-changelog/commitlint/releases/tag/v19.0.0) | 02/2024 | +| [v18](https://github.com/conventional-changelog/commitlint/releases/tag/v18.0.0) | 10/2023 | + +EOL is usually after around a year. + +We're not a sponsored OSS project. Therefore we can't promise that we will release patch versions for older releases in a timely manner.\ +If you are stuck on an older version and need a security patch we're happy if you can provide a PR. ## Related projects -- [conventional-changelog](https://git.io/v18sw) – Generate a changelog from conventional commit history -- [commitizen](https://git.io/vwTym) – Simple commit conventions for internet citizens -- [create-semantic-module](https://git.io/vFjFg) – CLI for quickly integrating commitizen and commitlint in new or existing projects +- [conventional-changelog](https://github.com/conventional-changelog/conventional-changelog) + Generate a changelog from conventional commit history +- [commitizen](https://github.com/commitizen/cz-cli) + Simple commit conventions for internet citizens +- [create-semantic-module](https://github.com/jlegrone/create-semantic-module) + CLI for quickly integrating commitizen and commitlint in new or existing projects ## License @@ -203,80 +210,19 @@ cd commitlint yarn yarn run build # run build tasks yarn start # run tests, again on change +yarn run commitlint # run CLI ``` For more information on how to contribute please take a look at our [contribution guide](./.github/CONTRIBUTING.md). -### Package dependency overview - -![commitlint-dependencies](https://user-images.githubusercontent.com/4248851/58385093-34b79780-7feb-11e9-8f27-bffc4aca3eba.png) - -### Publishing a release - -Before publishing a release do a `yarn run publish --dry-run` to get the upcoming version and update the version -in the [`should print help` test](https://github.com/conventional-changelog/commitlint/blob/master/@commitlint/cli/src/cli.test.ts#L431). -Commit that change before creating the new version without `--dry-run`. - -```sh -npm login -``` - -```sh -yarn clean -yarn install -yarn run build -yarn test -yarn run publish --otp <one-time password> -``` - -#### Publish a `next` release - -```sh -npm login -``` - -```sh -yarn clean -yarn install -yarn run build -yarn test -npx lerna publish --conventional-commits --dist-tag next --otp <one-time password> -``` - -If for some reason this stops in between, you can manually publish missing packages like this: - -``` -npm publish <package-name> --tag next --otp <one-time password> -``` - -##### Move `next` to `latest` - -```sh -npm login -``` - -```sh -npx lerna exec --no-bail --no-private --no-sort --stream -- '[ -n "$(npm v . dist-tags.next)" ] && npm dist-tag add ${LERNA_PACKAGE_NAME}@$(npm v . dist-tags.next) latest --otp <one-time password>' -``` - -Remove next: - -```sh -npx lerna exec --no-bail --no-private --no-sort --stream -- '[ -n "$(npm v . dist-tags.next)" ] && npm dist-tag rm ${LERNA_PACKAGE_NAME} next --otp <one-time password>' -``` - [0]: https://img.shields.io/badge/stability-stable-green.svg?style=flat-square [1]: https://nodejs.org/api/documentation.html#documentation_stability_index [2]: https://img.shields.io/npm/v/@commitlint/cli.svg?style=flat-square [3]: https://npmjs.org/package/@commitlint/cli -[4]: https://img.shields.io/circleci/project/github/conventional-changelog/commitlint/master.svg?style=flat-square -[5]: https://circleci.com/gh/conventional-changelog/commitlint - -<!-- [6]: https://img.shields.io/appveyor/ci/conventional-changelog/commitlint/master.svg?style=flat-square -[7]: https://ci.appveyor.com/project/conventional-changelog/commitlint --> - +[4]: https://github.com/conventional-changelog/commitlint/actions/workflows/CI.yml/badge.svg +[5]: https://github.com/conventional-changelog/commitlint/actions/workflows/CI.yml [8]: https://img.shields.io/badge/stability-experimental-orange.svg?style=flat-square [9]: https://nodejs.org/api/documentation.html#documentation_stability_index [10]: https://img.shields.io/npm/v/@commitlint/cli/next.svg?style=flat-square -[11]: https://devtoolscommunity.herokuapp.com/badge.svg?style=flat-square -[12]: https://devtoolscommunity.herokuapp.com +[13]: https://img.shields.io/node/v/@commitlint/cli.svg +[14]: https://nodejs.org/en/about/previous-releases diff --git a/babel.config.js b/babel.config.js deleted file mode 100644 index 82fd0b7d59..0000000000 --- a/babel.config.js +++ /dev/null @@ -1,12 +0,0 @@ -// This file is required by babel-jest -module.exports = { - presets: [ - [ - '@babel/preset-env', - { - debug: process.env.DEBUG === 'true', - targets: {node: '12'}, - }, - ], - ], -}; diff --git a/docker-compose.yml b/compose.yaml similarity index 55% rename from docker-compose.yml rename to compose.yaml index 5e57122d7a..710f6a0bb9 100644 --- a/docker-compose.yml +++ b/compose.yaml @@ -1,13 +1,14 @@ -version: '3' services: commitlint: - build: . + build: + context: . + dockerfile: Dockerfile.dev image: marionebl/commitlint-cubicle ports: - - '8443:8443' + - "8443:8443" environment: - - SSH_AUTH_SOCK=/.ssh-agent/socket - - SSH_AUTH_PROXY_SOCK=/.ssh-agent/proxy-socket + SSH_AUTH_SOCK: /.ssh-agent/socket + SSH_AUTH_PROXY_SOCK: /.ssh-agent/proxy-socket volumes: - .:/root/repo - $SSH_AUTH_SOCK:/.ssh-agent/socket diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts new file mode 100644 index 0000000000..55de22edfd --- /dev/null +++ b/docs/.vitepress/config.ts @@ -0,0 +1,106 @@ +import { defineConfig } from "vitepress"; +import { tabsMarkdownPlugin } from "vitepress-plugin-tabs"; + +// https://vitepress.dev/reference/site-config +export default defineConfig({ + title: "commitlint", + description: "Lint commit messages", + + head: [ + ["link", { rel: "icon", type: "image/png", href: "/assets/icon.png" }], + ], + + themeConfig: { + // https://vitepress.dev/reference/default-theme-config + editLink: { + pattern: + "https://github.com/conventional-changelog/commitlint/edit/master/docs/:path", + }, + + logo: "/assets/icon.png", + + nav: [ + { text: "Home", link: "/" }, + { text: "Guides", link: "/guides/getting-started" }, + { text: "Reference", link: "/reference/configuration" }, + ], + + sidebar: [ + { + text: "Guides", + base: "/guides", + items: [ + { text: "Getting started", link: "/getting-started" }, + { text: "Local setup", link: "/local-setup" }, + { text: "CI setup", link: "/ci-setup" }, + { text: "Use prompt", link: "/use-prompt" }, + ], + }, + { + text: "Reference", + base: "/reference", + items: [ + { text: "CLI", link: "/cli" }, + { text: "Configuration", link: "/configuration" }, + { text: "Rules configuration", link: "/rules-configuration" }, + { text: "Rules", link: "/rules" }, + { text: "Plugins", link: "/plugins" }, + { text: "Prompt", link: "/prompt" }, + { text: "Examples", link: "/examples" }, + { text: "Community projects", link: "/community-projects" }, + ], + }, + { + text: "API", + base: "/api", + collapsed: true, + items: [ + { text: "@commitlint/load", link: "/load" }, + { text: "@commitlint/read", link: "/read" }, + { text: "@commitlint/lint", link: "/lint" }, + { text: "@commitlint/format", link: "/format" }, + ], + }, + { + text: "Concepts", + base: "/concepts", + collapsed: true, + items: [ + { text: "Commit-conventions", link: "/commit-conventions" }, + { text: "Shareable config", link: "/shareable-config" }, + ], + }, + { + text: "Support", + base: "/support", + collapsed: true, + items: [ + { text: "Troubleshooting", link: "/troubleshooting" }, + { text: "Releases", link: "/releases" }, + { text: "Upgrade commitlint", link: "/upgrade" }, + ], + }, + { + text: "Attributions", + link: "/attributions", + }, + ], + + socialLinks: [ + { + icon: "github", + link: "https://github.com/conventional-changelog/commitlint", + }, + ], + + search: { + provider: "local", + }, + }, + + markdown: { + config(md) { + md.use(tabsMarkdownPlugin); + }, + }, +}); diff --git a/docs/.vitepress/theme/index.ts b/docs/.vitepress/theme/index.ts new file mode 100644 index 0000000000..afe3923ee8 --- /dev/null +++ b/docs/.vitepress/theme/index.ts @@ -0,0 +1,11 @@ +// .vitepress/theme/index.ts +import type { Theme } from "vitepress"; +import DefaultTheme from "vitepress/theme"; +import { enhanceAppWithTabs } from "vitepress-plugin-tabs/client"; + +export default { + extends: DefaultTheme, + enhanceApp({ app }) { + enhanceAppWithTabs(app); + }, +} satisfies Theme; diff --git a/docs/README.md b/docs/README.md deleted file mode 100644 index 98fac07463..0000000000 --- a/docs/README.md +++ /dev/null @@ -1,74 +0,0 @@ -> Lint commit messages - -<div class="sequence"> - <img src="./assets/commitlint.svg"/> -</div> - -> Demo generated with [svg-term-cli](https://github.com/marionebl/svg-term-cli) - -# commitlint   [![slack][11]][12] - -[![npm latest][2]][3] [![CircleCI][4]][5] <!-- [![AppVeyor][6]][7] --> - -`commitlint` helps your team adhering to a commit convention. By supporting npm-installed configurations it makes sharing of commit conventions easy. - -# Getting started - -## Install - -```bash -npm install -g @commitlint/cli @commitlint/config-conventional -``` - -## Configure - -```bash -echo "module.exports = {extends: ['@commitlint/config-conventional']}" > commitlint.config.js -``` - -## Test - -```bash -# Lint from stdin -echo 'foo: bar' | commitlint -⧗ input: foo: bar -✖ type must be one of [build, chore, ci, docs, feat, fix, perf, refactor, revert, style, test] [type-enum] - -✖ found 1 problems, 0 warnings -ⓘ Get help: https://github.com/conventional-changelog/commitlint/#what-is-commitlint -``` - -```bash -# Lint last commit from history -commitlint --from=HEAD~1 -``` - -?> To get the most out of `commitlint` you'll want to automate it in your project lifecycle. See our [Local setup guide](./guides-local-setup.md?id=guides-local-setup) for next steps. - -## Documentation - -- **Guides** - Common use cases explained in a step-by-step pace -- **Concepts** - Overarching topics important to understand the use of `commitlint` -- **Reference** - Mostly technical documentation - -## Attributions - -- `commitlint` is possible because of the hard work of the folks of the `conventional-changelog` project -- Thanks [@markusoelhafen](https://github.com/markusoelhafen) for providing - the `commitlint` icon - -[0]: https://img.shields.io/badge/stability-stable-green.svg?style=flat-square -[1]: https://nodejs.org/api/documentation.html#documentation_stability_index -[2]: https://img.shields.io/npm/v/@commitlint/cli.svg?style=flat-square -[3]: https://npmjs.org/package/@commitlint/cli -[4]: https://img.shields.io/circleci/project/github/conventional-changelog/commitlint/master.svg?style=flat-square -[5]: https://circleci.com/gh/conventional-changelog/commitlint - -<!-- [6]: https://img.shields.io/appveyor/ci/conventional-changelog/commitlint/master.svg?style=flat-square -[7]: https://ci.appveyor.com/project/conventional-changelog/commitlint --> - -[8]: https://img.shields.io/badge/stability-experimental-orange.svg?style=flat-square -[9]: https://nodejs.org/api/documentation.html#documentation_stability_index -[10]: https://img.shields.io/npm/v/@commitlint/cli/next.svg?style=flat-square -[11]: http://devtoolscommunity.herokuapp.com/badge.svg?style=flat-square -[12]: http://devtoolscommunity.herokuapp.com diff --git a/docs/_navbar.md b/docs/_navbar.md deleted file mode 100644 index e5de6f9755..0000000000 --- a/docs/_navbar.md +++ /dev/null @@ -1,7 +0,0 @@ -<a href="https://github.com/conventional-changelog/commitlint" title="Contribute on GitHub" target="_blank" rel="nofollow"> - <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 512 499.36"><path d="M256,6.32c-141.36,0-256,114.61-256,256,0,113.09,73.34,209,175.08,242.9,12.8,2.35,17.47-5.56,17.47-12.34,0-6.08-.22-22.18-.35-43.54C121,464.83,106,415,106,415c-11.64-29.57-28.42-37.45-28.42-37.45C54.31,361.71,79.31,362,79.31,362c25.69,1.81,39.21,26.38,39.21,26.38,22.84,39.12,59.92,27.82,74.5,21.27,2.33-16.54,8.94-27.82,16.25-34.22C152.43,369,92.67,347,92.67,248.94c0-27.95,10-50.8,26.35-68.69-2.63-6.48-11.42-32.5,2.51-67.75,0,0,21.49-6.88,70.4,26.24a242.65,242.65,0,0,1,128.18,0c48.87-33.13,70.33-26.24,70.33-26.24,14,35.25,5.18,61.27,2.55,67.75,16.41,17.9,26.31,40.75,26.31,68.69,0,98.35-59.85,120-116.88,126.32,9.19,7.9,17.38,23.53,17.38,47.41,0,34.22-.31,61.83-.31,70.23,0,6.85,4.61,14.81,17.6,12.31C438.72,471.29,512,375.4,512,262.34,512,120.94,397.37,6.32,256,6.32Z" transform="translate(0 -6.32)" fill-rule="evenodd"></path></svg> -</a> -<a href="http://devtoolscommunity.herokuapp.com/" title="Reach us on Slack" target="_blank" rel="nofollow"> - <svg style="transform: scale(1.4); transform-origin: center;" xmlns="http://www.w3.org/2000/svg" width="45" height="45" x="0px" y="0px" viewBox="0 0 270 270"><rect x="128.5" y="127.3" transform="matrix(0.9482 -0.3176 0.3176 0.9482 -36.0197 50.6366)" width="17.6" height="17"/><rect x="128.5" y="127.3" transform="matrix(0.9482 -0.3176 0.3176 0.9482 -36.0197 50.6366)" width="17.6" height="17"/><path d="M194.6,118.5c-12.9-43-31.5-53-74.5-40.1s-53,31.5-40.1,74.5s31.5,53,74.5,40.1S207.5,161.5,194.6,118.5zM172.9,146.4l-8.1,2.7l2.8,8.4c1.1,3.4-0.7,7.1-4.1,8.2c-0.7,0.2-1.5,0.4-2.2,0.3c-2.6-0.1-5.1-1.8-6-4.4l-2.8-8.4l-16.7,5.6l2.8,8.4c1.1,3.4-0.7,7.1-4.1,8.2c-0.7,0.2-1.5,0.4-2.2,0.3c-2.6-0.1-5.1-1.8-6-4.4l-2.8-8.4l-8.1,2.7c-0.7,0.2-1.5,0.4-2.2,0.3c-2.6-0.1-5.1-1.8-6-4.4c-1.1-3.4,0.7-7.1,4.1-8.2l8.1-2.7l-5.4-16.1l-8.1,2.7c-0.7,0.2-1.5,0.4-2.2,0.3c-2.6-0.1-5.1-1.8-6-4.4c-1.1-3.4,0.7-7.1,4.1-8.2l8.1-2.7l-2.8-8.4c-1.1-3.4,0.7-7.1,4.1-8.2s7.1,0.7,8.2,4.1l2.8,8.4l16.7-5.6l-2.8-8.4c-1.1-3.4,0.7-7.1,4.1-8.2c3.4-1.1,7.1,0.7,8.2,4.1l2.8,8.4l8.1-2.7c3.4-1.1,7.1,0.7,8.2,4.1c1.1,3.4-0.7,7.1-4.1,8.2l-8.1,2.7l5.4,16.1l8.1-2.7c3.4-1.1,7.1,0.7,8.2,4.1C178.1,141.6,176.3,145.3,172.9,146.4z"/> - </svg> -</a> diff --git a/docs/_sidebar.md b/docs/_sidebar.md deleted file mode 100644 index a22194a7ad..0000000000 --- a/docs/_sidebar.md +++ /dev/null @@ -1,21 +0,0 @@ -- **Guides** - - - [Local setup](guides-local-setup.md) - - [CI setup](guides-ci-setup.md) - - [Use prompt](guides-use-prompt.md) - - [Upgrade commitlint](guides-upgrade.md) - -- **Concepts** - - - [Commit conventions](concepts-commit-conventions) - - [Shareable configuration](concepts-shareable-config.md) - -- **Reference** - - [CLI](reference-cli.md) - - [Configuration](reference-configuration.md) - - [Rules](reference-rules.md) - - [API](reference-api.md) - - [Plugins](reference-plugins.md) - - [Prompt](reference-prompt.md) - - [Examples](reference-examples.md) - - [Community projects](reference-community-projects.md) diff --git a/docs/api/format.md b/docs/api/format.md new file mode 100644 index 0000000000..55a8ead843 --- /dev/null +++ b/docs/api/format.md @@ -0,0 +1,128 @@ +# @commitlint/format + +Format commitlint reports + +## Install + +```sh +npm install --save @commitlint/format +``` + +## Signature + +```ts +type Problem = { + /* + * Level of the problem hint | warning | error + */ + level: 0 | 1 | 2; + /* + * Name of the problem to annotate the message with + */ + name: string; + /* + * Message to print + */ + message: string; +} + +type Report = { + results: ReportResult[]; +} + +type ReportResult = { + errors: Problem[]; + warnings: Problem[]; +} + +type formatOptions = { + /** + * Color the output + **/ + color: boolean = true; + + /** + * Signs to use as decoration for messages with severity 0, 1, 2 + **/ + signs: readonly [string; string; string] = [' ', '⚠', '✖']; + + /** + * Colors to use for messages with severity 0, 1, 2 + **/ + colors: readonly [string; string; string] = ['white', 'yellow', 'red']; + + /** + * Print summary and inputs for reports without problems + **/ + verbose: boolean = false; + + /** + * URL to print as help for reports with problems + **/ + helpUrl: string; +} + +format(report?: Report = {}, options?: formatOptions = {}) => string[]; +``` + +## Import + +```js +import format from "@commitlint/format"; +``` + +## Examples + +### Empty usage (no error founds with colors) + +```js +format(); +/* => +[ + '\u001b[1m\u001b[32m✔\u001b[39m found 0 problems, 0 warnings\u001b[22m' +] +*/ +``` + +### Without colors + +```js +format( + { + results: [ + { + warnings: [ + { + level: 0, + name: "some-hint", + message: "This will not show up as it has level 0", + }, + { + level: 1, + name: "some-warning", + message: "This will show up yellow as it has level 1", + }, + ], + errors: [ + { + level: 2, + name: "some-error", + message: "This will show up red as it has level 2", + }, + ], + }, + ], + }, + { + color: false, + }, +); +/* => +[ + '✖ This will show up red as it has level 2 [some-error]', + ' This will not show up as it has level 0 [some-hint]', + '⚠ This will show up yellow as it has level 1 [some-warning]', + '✖ found 1 problems, 2 warnings' +] +*/ +``` diff --git a/docs/api/lint.md b/docs/api/lint.md new file mode 100644 index 0000000000..dbd676563d --- /dev/null +++ b/docs/api/lint.md @@ -0,0 +1,172 @@ +# @commitlint/lint + +Lint a string against commitlint rules + +## Install + +```sh +npm install --save @commitlint/lint +``` + +## Signature + +```ts +type RuleLevel = 0 | 1 | 2; +type RuleCondition = 'always' | 'never'; +type RuleOption = any; +type PrimitiveRule = [RuleLevel, RuleCondition, RuleOption?]; +type AsyncRule = Promise<PrimitiveRule>; +type FunctionRule = () => PrimitiveRule; +type AsyncFunctionRule = () => Promise<PrimitiveRule>; +type Rule = PrimitiveRule | FunctionRule | AsyncFunctionRule; + +type Problem = { + level: number; + valid: boolean; + name: string; + message: string; +} + +type Report = { + valid: boolean; + errors: Problem[]; + warnings: Problem[]; +} + +type Options = { + parserOpts?: any; +}; + +lint(message: string, rules: {[ruleName: string]: Rule}, opts?: Options) => Promise<Report>; +``` + +## Basic Examples + +### Import + +```js +import lint from "@commitlint/lint"; +``` + +### Usage without config + +```js +const report = await lint("foo: bar"); +console.log(report); +// => { valid: true, errors: [], warnings: [] } +``` + +### Usage with type-enum rules and valid message + +```js +const report = await lint("foo: bar", { "type-enum": [1, "always", ["foo"]] }); +console.log(report); +// => { valid: true, errors: [], warnings: [] } +``` + +### Usage with type-enum rules and invalid message + +```js +const report = await lint("foo: bar", { "type-enum": [1, "always", ["bar"]] }); +console.log(report); +/* => +{ + valid: false, + errors: [], + warnings: [ + { + level: 1, + valid: false, + name: 'type-enum', + message: 'type must be one of [bar]' + } + ] +} +*/ +``` + +### Usage with custom parser options + +```js +const opts = { + parserOpts: { + headerPattern: /^(\w*)-(\w*)/, + headerCorrespondence: ["type", "scope"], + }, +}; + +const report = await lint( + "foo-bar", + { "type-enum": [2, "always", ["foo"]] }, + opts, +); +console.log(report); +// => { valid: true, errors: [], warnings: [] } +``` + +## Load configuration + +```js +import load from "@commitlint/load"; +import lint from "@commitlint/lint"; + +const CONFIG = { + extends: ["@commitlint/config-conventional"], +}; + +const opts = await load(CONFIG); +const report = await lint( + "foo: bar", + opts.rules, + opts.parserPreset ? { parserOpts: opts.parserPreset.parserOpts } : {}, +); +console.log(report); +/* => +{ + valid: false, + errors: [ + { + level: 2, + valid: false, + name: 'type-enum', + message: 'type must be one of [build, chore, ci, docs, feat, fix, perf, refactor, revert, style, test]' + } + ], + warnings: [] +} +*/ +``` + +## Read git history + +```js +import lint from "@commitlint/lint"; +import read from "@commitlint/read"; + +const RULES = { + "type-enum": [2, "always", ["foo"]], +}; + +const commits = await read({ to: "HEAD", from: "HEAD~2" }); + +console.info(commits.map((commit) => lint(commit, RULES))); +``` + +## Simplified last-commit checker + +```js +import load from "@commitlint/load"; +import read from "@commitlint/read"; +import lint from "@commitlint/lint"; + +const { rules, parserPreset } = load(); +const [commit] = await read({ from: "HEAD~1" }); + +const report = await lint( + commit, + rules, + parserPreset ? { parserOpts: parserPreset.parserOpts } : {}, +); + +console.log(JSON.stringify(result.valid)); +``` diff --git a/docs/api/load.md b/docs/api/load.md new file mode 100644 index 0000000000..87fa67a439 --- /dev/null +++ b/docs/api/load.md @@ -0,0 +1,191 @@ +# @commitlint/load + +Load shared commitlint configuration + +## Install + +```sh +npm install --save @commitlint/load +``` + +## Signature + +```ts +/** + * How to handle violation of rule + * 0 - ignore + * 1 - warn + * 2 - throw + */ +type RuleLevel = 0 | 1 | 2; + +/* + * Application of rule + * always - positive + * never - negative + */ +type RuleCondition = 'always' | 'never'; + +/* + * Additional, optional options to pass to rule + */ +type RuleOption = any; + +/** + * Basic complete rule definition + */ +type PrimitiveRule = [RuleLevel, RuleCondition, RuleOption?]; + +/* + * Async rules are resolved during config lookup. + * They can be used to set up linting rules based on e.g. the project fs + */ +type AsyncRule = Promise<PrimitiveRule>; + +/* + * Function rules are executed during config lookup. + * They can be used to set up linting rules based on e.g. the project fs + */ +type FunctionRule = () => PrimitiveRule; + +/* + * Async function rules are executed and awaited during config lookup. + * They can be used to set up linting rules based on e.g. the project fs + */ +type AsyncFunctionRule () => Promise<PrimitiveRule>; + +/* + * Polymorphic rule struct + */ +type Rule = PrimitiveRule | FunctionRule | AsyncFunctionRule; + +/* + * Parser preset for conventional commits + */ +type ParserPreset = { + name: string; + path: string; + opts: any; +}; + +type Seed = { + /* + * ids resolvable from cwd or configuration file. + * Imported and merged into configuration + * with increasing precedence, with top level config taking the highest. + */ + extends?: string[]; + /* + * id resolvable from cwd or configuration file. + * Imported and expanded to {ParserPreset}. + * Top level parserPresets override presets in extended configuration. + */ + parserPreset?: string; + /** + * Initial map of rules to check against + */ + rules?: {[ruleName: string]: Rule}; + /** + * URL to print as help for reports with problems + */ + helpUrl?: string; +}; + +type Config = { + /* + * Relatives path to all extended configurations. + */ + extends: string[]; + /* + * Expanded parser preset, if any + */ + parserPreset?: ParserPreset; + /* + * Merged map of rules to check against + */ + rules: {[ruleName: string]: Rule}; + /** + * URL to print as help for reports with problems + */ + helpUrl?: string; +}; + +type LoadOptions = { + /* + * Path to the config file to load. + */ + file?: string; + /* + * The cwd to use when loading config from file parameter. + */ + cwd: string; +}; + +load(seed: Seed = {}, options?: LoadOptions = {cwd: process.cwd()}) => Promise<Config>; +``` + +## Import + +```js +import load from "@commitlint/load"; +``` + +## Examples + +### Inline rules + +```js +const config = await load({ + rules: { + "body-leading-blank": [2, "always"], + }, +}); +console.log(config); +// => { extends: [], rules: { 'body-leading-blank': [ 2, 'always' ] } } +``` + +### Reference a file + +```js +const config = await load({ extends: ["./package"] }); +console.log(config); +// => { extends: ['./package', './package-b'], rules: {} } +``` + +### Inline `parserPreset` + +```js +const config = await load({ parserPreset: "./parser-preset.js" }); +console.log(config); +/* => +{ + extends: [], + rules: {}, + parserPreset: { + name: './parser-preset.js', + path: './parser-preset.js', + opts: {} + } +} +*/ +``` + +### Config file with with current working directory + +```js +const config = await load( + {}, + { file: ".commitlintrc.yml", cwd: process.cwd() }, +); +console.log(config); +/* => +{ + extends: [], + rules: { + 'body-leading-blank': [ 1, 'always' ] + }, + formatter: '@commitlint/format', + plugins: {} +} +*/ +``` diff --git a/docs/api/read.md b/docs/api/read.md new file mode 100644 index 0000000000..1c66452194 --- /dev/null +++ b/docs/api/read.md @@ -0,0 +1,69 @@ +# @commitlint/read + +Read commit messages from a specified range or disk + +## Install + +```sh +npm install --save @commitlint/read +``` + +## Signature + +```ts +type Range = { + /* Lower end of the commit range to read */ + from: string; + /* Upper end of the commit range to read */ + to: string; + /* Whether (boolean) to read from ./.git/COMMIT_EDITMSG or where to read from (string) */ + edit?: boolean | string; +}; + +read(range: Range) => Promise<string[]> +``` + +## Import + +```js +import read from "@commitlint/read"; +``` + +## Examples + +Consider to have a repository with two commits: + +1. Initial commit +2. I did something + +### Using `edit: true` + +```js +const result = await read({ edit: true }); +console.info(result); +// => ['I did something\n\n'] +``` + +### Read last two commits + +```js +const result = await read({ from: "HEAD~2" }); +console.info(result); +// => ['I did something\n\n', 'Initial commit\n\n'] +``` + +### Read commits within a range + +```js +const result = await read({ from: "HEAD~2", to: "HEAD~1" }); +console.info(result); +// => ['Initial commit\n\n'] +``` + +### Read commit message from git gui file + +```js +const result = await read({ edit: "./git/GITGUI_EDITMESSAGE" }); +console.info(result); +// => ['I did something via git gui\n\n'] +``` diff --git a/docs/assets/cz-commitlint.png b/docs/assets/cz-commitlint.png deleted file mode 100644 index 35098c26f1..0000000000 Binary files a/docs/assets/cz-commitlint.png and /dev/null differ diff --git a/docs/attributions.md b/docs/attributions.md new file mode 100644 index 0000000000..f46a3f9c51 --- /dev/null +++ b/docs/attributions.md @@ -0,0 +1,12 @@ +# Attributions + +`commitlint` is possible because of the hard work of the folks of the `conventional-changelog` project + +--- + +Thanks [@markusoelhafen](https://github.com/markusoelhafen) for providing +the `commitlint` icon + +--- + +Homepage SVG Demo generated with [svg-term-cli](https://github.com/marionebl/svg-term-cli) diff --git a/docs/concepts-commit-conventions.md b/docs/concepts/commit-conventions.md similarity index 98% rename from docs/concepts-commit-conventions.md rename to docs/concepts/commit-conventions.md index 4f6b85020a..a35a4a277c 100644 --- a/docs/concepts-commit-conventions.md +++ b/docs/concepts/commit-conventions.md @@ -10,7 +10,7 @@ With this additional information tools can derive useful human-readable informat The most common commit conventions follow this pattern: -``` +```text type(scope?): subject body? footer? diff --git a/docs/concepts-shareable-config.md b/docs/concepts/shareable-config.md similarity index 61% rename from docs/concepts-shareable-config.md rename to docs/concepts/shareable-config.md index e730e45bcd..c94748a456 100644 --- a/docs/concepts-shareable-config.md +++ b/docs/concepts/shareable-config.md @@ -3,16 +3,23 @@ Most commonly shareable configuration is delivered as npm package exporting an object containing `.rules` as default. To use shared configuration you specify it as item in the `.extends` array: -```js -// commitlint.config.js -module.exports = { - extends: ['example'], // => @commitlint-config-example +::: code-group + +```js [commitlint.config.js] +/** + * @type {import('@commitlint/types').UserConfig} + */ +export default { + extends: ["example"], // => commitlint-config-example }; ``` -This causes `commitlint` to pick up `commitlint-config-example`. Make it available by installing it. +::: -```bash +This causes `commitlint` to pick up `commitlint-config-example`. +Make it available by installing it. + +```sh npm install --save-dev commitlint-config-example ``` @@ -24,37 +31,49 @@ This works recursively, enabling shareable configuration to extend on an indefin You can also load local configuration by using a relative path to the file. -> This must always start with a `.` (dot). +::: warning +This must always start with a `.` (dot). +::: + +::: code-group -```js -// commitlint.config.js -module.exports = { - extends: ['./example'], // => ./example.js +```js [commitlint.config.js] +export default { + extends: ["./example"], // => ./example.js }; ``` +::: + ## Scoped packages When using scoped packages you have two options. You can provide the full path of the package like: -```js -// commitlint.config.js -module.exports = { - extends: ['@commitlint/config-conventional'], // => commitlint/config-conventional +::: code-group + +```js [commitlint.config.js] +export default { + extends: ["@commitlint/config-conventional"], // => @commitlint/config-conventional }; ``` +::: + Or just the scope/owner of the package. +> [!TIP] > Just like "normal" extends listed above, this will add `<scope>/commitlint-config`. -```js -// commitlint.config.js -module.exports = { - extends: ['@coolcompany'], // => coolcompany/commitlint-config +::: code-group + +```js [commitlint.config.js] +export default { + extends: ["@coolcompany"], // => @coolcompany/commitlint-config }; ``` +::: + If you don't use the exact `<scope>/commitlint-config` pattern, you have to provide the full name of the package. diff --git a/docs/guides-ci-setup.md b/docs/guides-ci-setup.md deleted file mode 100644 index ad40726bb7..0000000000 --- a/docs/guides-ci-setup.md +++ /dev/null @@ -1,78 +0,0 @@ -# Guide: CI Setup - -Enforce commit conventions with confidence by linting on your CI servers with `commitlint`. - -This guide assumes you have already configured `commitlint` for local usage. - -Follow the [Getting Started](./?id=getting-started) for basic installation and configuration instructions. - -## Travis - -```bash -# Install and configure if needed -npm install --save-dev @commitlint/travis-cli -``` - -```yml -# travis.yml -language: node_js -node_js: - - node -script: - - commitlint-travis -``` - -## CircleCI - -It's just a simple example of how CircleCI configuration file could look like to validate last commit message - -```yml -version: 2 -defaults: - working_directory: ~/project - docker: - - image: circleci/node:latest - -jobs: - setup: - <<: *defaults - steps: - - checkout - - restore_cache: - key: lock-{{ checksum "package-lock.json" }} - - run: - name: Install dependencies - command: npm install - - save_cache: - key: lock-{{ checksum "package-lock.json" }} - paths: - - node_modules - - persist_to_workspace: - root: ~/project - paths: - - node_modules - - lint_commit_message: - <<: *defaults - steps: - - checkout - - attach_workspace: - at: ~/project - - run: - name: Define environment variable with lastest commit's message - command: | - echo 'export COMMIT_MESSAGE=$(git log -1 --pretty=format:"%s")' >> $BASH_ENV - source $BASH_ENV - - run: - name: Lint commit message - command: echo "$COMMIT_MESSAGE" | npx commitlint - -workflows: - version: 2 - commit: - jobs: - - setup - - lint_commit_message: { requires: [setup] } -``` - -?> Help yourself adopting a commit convention by using an interactive commit prompt. Learn how to use `@commitlint/prompt-cli` in the [Use prompt guide](guides-use-prompt.md) diff --git a/docs/guides-local-setup.md b/docs/guides-local-setup.md deleted file mode 100644 index 70e50691d3..0000000000 --- a/docs/guides-local-setup.md +++ /dev/null @@ -1,83 +0,0 @@ -# Guide: Local setup - -Get high commit message quality and short feedback cycles by linting commit messages right when they are authored. - -This guide demonstrates how to achieve this via git hooks. - -## Install commitlint - -Install `commitlint` and a `commitlint-config-*` of your choice as devDependency and -configure `commitlint` to use it. - -```bash -# Install and configure if needed -npm install --save-dev @commitlint/{cli,config-conventional} -echo "module.exports = { extends: ['@commitlint/config-conventional'] };" > commitlint.config.js -``` - -Alternatively the configuration can be defined in `.commitlintrc.js`, `.commitlintrc.json`, or `.commitlintrc.yml` file or a `commitlint` field in `package.json`. - -## Install husky - -Install `husky` as devDependency, a handy git hook helper available on npm. - -```sh -# Install Husky v6 -npm install husky --save-dev -# or -yarn add husky --dev - -# Active hooks -npx husky install -# or -yarn husky install - -# Add hook -npx husky add .husky/commit-msg 'npx --no-install commitlint --edit $1' -# or -yarn husky add .husky/commit-msg 'yarn commitlint --edit $1' -``` - -**Please note that currently @commitlint/cli doesn't support yarn v2 Plug'n'Play (using yarn v2 with `nodeLinker: node-modules` in your .yarnrc.yml file may work sometimes)** -Check the [husky documentation](https://typicode.github.io/husky/#/?id=manual) on how you can automatically have Git hooks enabled after install for different `yarn` versions. - -## Test - -### Test simple usage - -For a first simple usage test of commlitlint you can do the following: - -```bash -npx commitlint -- --from HEAD~1 --to HEAD --verbose -``` - -This will check your last commit and return an error if invalid or a positive output if valid. - -### Test the hook - -You can test the hook by simply committing. You should see something like this if everything works. - -```bash -git commit -m "foo: this will fail" -husky > commit-msg (node v10.1.0) -No staged files match any of provided globs. -⧗ input: foo: this will fail -✖ type must be one of [build, chore, ci, docs, feat, fix, perf, refactor, revert, style, test] [type-enum] - -✖ found 1 problems, 0 warnings -ⓘ Get help: https://github.com/conventional-changelog/commitlint/#what-is-commitlint - -husky > commit-msg hook failed (add --no-verify to bypass) -``` - -Since [v8.0.0](https://github.com/conventional-changelog/commitlint/releases/tag/v8.0.0) `commitlint` won't output anything if there is not problem with your commit. -(You can use the `--verbose` flag to get positive output) - -```bash -git commit -m "chore: lint on commitmsg" -husky > pre-commit (node v10.1.0) -No staged files match any of provided globs. -husky > commit-msg (node v10.1.0) -``` - -?> Local linting is fine for fast feedback but can easily be tinkered with. To ensure all commits are linted you'll want to check commits on an automated CI Server too. Learn how to in the [CI Setup guide](guides-ci-setup.md). diff --git a/docs/guides-publish-config.md b/docs/guides-publish-config.md deleted file mode 100644 index 158e01fd03..0000000000 --- a/docs/guides-publish-config.md +++ /dev/null @@ -1 +0,0 @@ -# Guide: Publish a config diff --git a/docs/guides-use-prompt.md b/docs/guides-use-prompt.md deleted file mode 100644 index f32a947a30..0000000000 --- a/docs/guides-use-prompt.md +++ /dev/null @@ -1,46 +0,0 @@ -# Guide: Use prompt - -`@commitlint/prompt-cli` helps with fast authoring of commit messages and ensures they adhere to the commit convention configured in `commitlint.config.js`. - -## Install - -```bash -# Create a git repository if needed -git init - -# Create a package.json if needed -npm init - -# Install and configure if needed -npm install --save-dev @commitlint/{cli,config-conventional,prompt-cli} -echo "module.exports = {extends: ['@commitlint/config-conventional']};" > commitlint.config.js -``` - -## Provide a shortcut - -To make prompt-cli easy to use, add a npm run-script to your `package.json` - -```json -{ - "scripts": { - "commit": "commit" - } -} -``` - -Test the prompt by executing - -```bash -git add . -npm run commit -``` - -## An alternative to `@commitlint/prompt-cli`: commitizen - -Another way to author commit messages that adhere to the commit convention configured in `commitlint.config.js` is to use `commitizen`. -For more information, checkout their [official website](http://commitizen.github.io/cz-cli/). - -commitlint provides two adapters for `commitizen`: - -1. `@commitlint/prompt` provides a way to interact same as `@commitlint/prompt-cli` -2. `@commitlint/cz-commitlint` is inspired by [cz-conventional-changelog](https://github.com/commitizen/cz-conventional-changelog), it provides a more modern way to interact. diff --git a/docs/guides/ci-setup.md b/docs/guides/ci-setup.md new file mode 100644 index 0000000000..f05ac98022 --- /dev/null +++ b/docs/guides/ci-setup.md @@ -0,0 +1,255 @@ +# Guide: CI Setup + +Enforce commit conventions with confidence by linting on your CI servers with `commitlint`. + +This guide assumes you have already configured `commitlint` for local usage. + +Follow the [Getting Started](/guides/getting-started) for basic installation and configuration instructions. + +## GitHub Actions + +An example of how a GitHub Actions workflow could validate the last commit message or all commit messages inside a Pull Request: + +```yml +name: CI + +on: [push, pull_request] + +permissions: + contents: read + +jobs: + commitlint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Setup node + uses: actions/setup-node@v4 + with: + node-version: lts/* + cache: npm + - name: Install commitlint + run: npm install -D @commitlint/cli @commitlint/config-conventional + - name: Print versions + run: | + git --version + node --version + npm --version + npx commitlint --version + + - name: Validate current commit (last commit) with commitlint + if: github.event_name == 'push' + run: npx commitlint --last --verbose + + - name: Validate PR commits with commitlint + if: github.event_name == 'pull_request' + run: npx commitlint --from ${{ github.event.pull_request.base.sha }} --to ${{ github.event.pull_request.head.sha }} --verbose +``` + +## Travis + +```bash +# Install and configure if needed +npm install --save-dev @commitlint/travis-cli +``` + +```yml +# travis.yml +language: node_js +node_js: + - node +script: + - commitlint-travis +``` + +## CircleCI + +It's just a simple example of how CircleCI configuration file could look like to validate last commit message + +```yml +version: 2.1 + +executors: + my-executor: + docker: + - image: cimg/node:current + working_directory: ~/project + +jobs: + setup: + executor: my-executor + steps: + - checkout + - restore_cache: + key: lock-{{ checksum "package-lock.json" }} + - run: + name: Install dependencies + command: npm install + - save_cache: + key: lock-{{ checksum "package-lock.json" }} + paths: + - node_modules + - persist_to_workspace: + root: ~/project + paths: + - node_modules + + lint_commit_message: + executor: my-executor + steps: + - checkout + - attach_workspace: + at: ~/project + - run: + name: Define environment variable with latest commit's message + command: | + echo 'export COMMIT_MESSAGE=$(git log -1 --pretty=format:"%s")' >> $BASH_ENV + source $BASH_ENV + - run: + name: Lint commit message + command: echo "$COMMIT_MESSAGE" | npx commitlint + +workflows: + version: 2.1 + commit: + jobs: + - setup + - lint_commit_message: + requires: + - setup +``` + +## GitLab CI + +```yaml +lint:commit: + image: registry.hub.docker.com/library/node:alpine + variables: + GIT_DEPTH: 0 + before_script: + - apk add --no-cache git + - npm install --save-dev @commitlint/config-conventional @commitlint/cli + script: + - npx commitlint --from ${CI_MERGE_REQUEST_DIFF_BASE_SHA} --to ${CI_COMMIT_SHA} +``` + +GitLab limits `git clone` depth to +[20 commits by default](https://docs.gitlab.com/ee/ci/pipelines/settings.html#limit-the-number-of-changes-fetched-during-clone). +Setting `GIT_DEPTH: 0` removes this limitation, so `commitlint` can check larger MRs. + +## GitLab CI with pre-build container + +```yaml +stages: ["lint", "build", "test"] +lint:commit: + image: + name: registry.hub.docker.com/commitlint/commitlint:latest + entrypoint: [""] + stage: lint + script: + # Uncomment the next line if you are extending the @commitlint/config-nx-scopes in your commitlint configuration + #- npm i -g nx@$(node -pe "require('./package.json').devDependencies.nx") + - commitlint --from ${CI_MERGE_REQUEST_DIFF_BASE_SHA} --to ${CI_COMMIT_SHA} +``` + +## Jenkins X + +```yml +apiVersion: tekton.dev/v1beta1 +kind: PipelineRun +metadata: + name: pullrequest +spec: + pipelineSpec: + tasks: + - name: conventional-commits + taskSpec: + steps: + - name: lint-commit-messages + image: commitlint/commitlint + script: | + #!/usr/bin/env sh + . .jx/variables.sh + commitlint --extends '@commitlint/config-conventional' --from $PR_BASE_SHA --to $PR_HEAD_SHA + serviceAccountName: tekton-bot + timeout: 15m +``` + +## BitBucket + +Validate commits within a PR by leveraging [BitBucket`s default variables](https://support.atlassian.com/bitbucket-cloud/docs/variables-and-secrets/): + +```yml +image: node:18 + +pipelines: + pull-requests: + default: + - step: + name: Lint commit messages + script: + - npm install --save-dev @commitlint/config-conventional @commitlint/cli + - npx commitlint --from $BITBUCKET_COMMIT~$(git rev-list --count $BITBUCKET_BRANCH ^origin/$BITBUCKET_PR_DESTINATION_BRANCH) --to $BITBUCKET_COMMIT --verbose +``` + +BitBucket limits git clone depth to 20 commits by default. You can change this behaviour by [changing the `clone` option](https://support.atlassian.com/bitbucket-cloud/docs/git-clone-behavior/). + +## Azure Pipelines + +```yml +steps: + - checkout: self + fetchDepth: 0 + + - task: NodeTool@0 + inputs: + versionSpec: "20.x" + checkLatest: true + + - script: | + git --version + node --version + npm --version + npx commitlint --version + displayName: Print versions + + - script: | + npm install conventional-changelog-conventionalcommits + npm install commitlint@latest + displayName: Install commitlint + + - script: npx commitlint --last --verbose + condition: ne(variables['Build.Reason'], 'PullRequest') + displayName: Validate current commit (last commit) with commitlint + + - script: | + echo "Accessing Azure DevOps API..." + + response=$(curl -s -X GET -H "Cache-Control: no-cache" -H "Authorization: Bearer $(System.AccessToken)" $(System.TeamFoundationCollectionUri)$(System.TeamProject)/_apis/git/repositories/$(Build.Repository.Name)/pullRequests/$(System.PullRequest.PullRequestId)/commits?api-version=6.0) + numberOfCommits=$(echo "$response" | jq -r '.count') + + echo "$numberOfCommits commits to check" + + npx commitlint --from $(System.PullRequest.SourceCommitId)~${numberOfCommits} --to $(System.PullRequest.SourceCommitId) --verbose + condition: eq(variables['Build.Reason'], 'PullRequest') + displayName: Validate PR commits with commitlint +``` + +### 3rd party integrations + +#### [Codemagic](https://codemagic.io/) + +```yaml +#codemagic.yaml +workflows: + commitlint: + name: Lint commit message + scripts: + - npx commitlint --from=HEAD~1 +``` + +> [!TIP] +> Help yourself adopting a commit convention by using an interactive commit prompt. +> Learn how to use `@commitlint/prompt-cli` in the [Use prompt guide](/guides/use-prompt). diff --git a/docs/guides/getting-started.md b/docs/guides/getting-started.md new file mode 100644 index 0000000000..bf0404895a --- /dev/null +++ b/docs/guides/getting-started.md @@ -0,0 +1,45 @@ +# Getting started + +## Install + +Install `@commitlint/cli` and a `@commitlint/config-*` / `commitlint-config-*` of your choice as devDependency and configure `commitlint` to use it. + +::: code-group + +```sh [npm] +npm install -D @commitlint/cli @commitlint/config-conventional +``` + +```sh [yarn] +yarn add -D @commitlint/cli @commitlint/config-conventional +``` + +```sh [pnpm] +pnpm add -D @commitlint/cli @commitlint/config-conventional +``` + +```sh [bun] +bun add -d @commitlint/cli @commitlint/config-conventional +``` + +```sh [deno] +deno add -D npm:@commitlint/cli npm:@commitlint/config-conventional +``` + +::: + +## Configuration + +Configure commitlint to use conventional config + +```sh +echo "export default { extends: ['@commitlint/config-conventional'] };" > commitlint.config.js +``` + +> [!WARNING] +> Node v24 changes the way that modules are loaded, and this includes the commitlint config file. If your project does not contain a `package.json`, commitlint may fail to load the config, resulting in a `Please add rules to your commitlint.config.js` error message. This can be fixed by doing either of the following: +> +> - Add a `package.json` file, declaring your project as an ES6 module. This can be done easily by running `npm init es6`. +> - Rename the config file from `commitlint.config.js` to `commitlint.config.mjs`. + +Refer to [configuration documentation](/reference/configuration) for more information. diff --git a/docs/guides/local-setup.md b/docs/guides/local-setup.md new file mode 100644 index 0000000000..af597d7367 --- /dev/null +++ b/docs/guides/local-setup.md @@ -0,0 +1,203 @@ +# Guide: Local setup + +Get high commit message quality and short feedback cycles by linting commit messages right when they are authored. + +This guide demonstrates how to achieve this via git hooks. + +Follow the [Getting Started](/guides/getting-started) for basic installation and configuration instructions. + +## Add hook + +To use commitlint you need to setup `commit-msg` hook (currently `pre-commit` hook is not supported) + +### Using a git hooks manager + +To lint commits before they are created you can use [Husky](https://typicode.github.io/husky/)'s `commit-msg` hook. + +You can find complete setup instructions on the [official documentation](https://typicode.github.io/husky/get-started.html). + +> [!NOTE] +> The following instructions are meant to `husky@v9` if you are using a different version +> consult the official documentation of your version. + +> [!WARNING] +> For Windows users: ensure all `husky` files are `UTF-8` enconded. If any other format is used an error may be thrown at runtime such as [cannot execute binary file](https://github.com/typicode/husky/issues/1426). + +--- + +:::tabs +== npm + +```sh +npm install --save-dev husky + +# husky@v9 +npx husky init +# husky@v8 or lower +npx husky install + +# Add commit message linting to commit-msg hook +echo "npx --no -- commitlint --edit \$1" > .husky/commit-msg +# Windows users should use ` to escape dollar signs +echo "npx --no -- commitlint --edit `$1" > .husky/commit-msg +``` + +As an alternative you can create a script inside `package.json` + +```sh +npm pkg set scripts.commitlint="commitlint --edit" +echo "npm run commitlint \${1}" > .husky/commit-msg +``` + +== yarn + +```sh +yarn add --dev husky + +# husky@v9 +yarn husky init +# husky@v8 or lower +yarn husky install + +# Add commit message linting to commit-msg hook +echo "yarn commitlint --edit \$1" > .husky/commit-msg +# Windows users should use ` to escape dollar signs +echo "yarn commitlint --edit `$1" > .husky/commit-msg +``` + +As an alternative you can create a script inside `package.json` + +```sh +npm pkg set scripts.commitlint="commitlint --edit" +echo "yarn commitlint \${1}" > .husky/commit-msg +``` + +> [!WARNING] +> Please note that currently @commitlint/cli doesn't support yarn v2 Plug'n'Play (using yarn > v2 with `nodeLinker: node-modules` in your .yarnrc.yml file may work sometimes) + +== pnpm + +```sh +pnpm add --save-dev husky + +# husky@v9 +pnpm husky init +# husky@v8 or lower +pnpm husky install + +# Add commit message linting to commit-msg hook +echo "pnpm dlx commitlint --edit \$1" > .husky/commit-msg +# Windows users should use ` to escape dollar signs +echo "pnpm dlx commitlint --edit `$1" > .husky/commit-msg +``` + +As an alternative you can create a script inside `package.json` + +```sh +npm pkg set scripts.commitlint="commitlint --edit" +echo "pnpm commitlint \${1}" > .husky/commit-msg +``` + +== bun + +```sh +bun add --dev husky + +# husky@v9 +bunx husky init +# husky@v8 or lower +bunx husky install + +# Add commit message linting to commit-msg hook +echo "bunx commitlint --edit \$1" > .husky/commit-msg +# Windows users should use ` to escape dollar signs +echo "bunx commitlint --edit `$1" > .husky/commit-msg +``` + +== deno + +```sh +deno add --dev husky + +# husky@v9 +deno task --eval husky init +# husky@v8 or lower +deno task --eval husky install + +# Add commit message linting to commit-msg hook +echo "deno task --eval commitlint --edit \$1" > .husky/commit-msg +# Windows users should use ` to escape dollar signs +echo "deno task --eval commitlint --edit `$1" > .husky/commit-msg +``` + +::: + +--- + +### Using git hooks + +Info about git hooks can be found on [Git documentation](https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks). + +> [!WARNING] +> It's necessary that you use **commit-msg** as the name for hook file. + +## Test + +### Test simple usage + +For a first simple usage test of commitlint you can do the following: + +::: code-group + +```sh [npm] +npx commitlint --from HEAD~1 --to HEAD --verbose +``` + +```sh [yarn] +yarn commitlint --from HEAD~1 --to HEAD --verbose +``` + +```sh [pnpm] +pnpm commitlint --from HEAD~1 --to HEAD --verbose +``` + +```sh [bun] +bun commitlint --from HEAD~1 --to HEAD --verbose +``` + +```sh [deno] +deno task --eval commitlint --from HEAD~1 --to HEAD --verbose +``` + +::: + +This will check your last commit and return an error if invalid or a positive output if valid. + +### Test the hook + +You can test the hook by simply committing. You should see something like this if everything works. + +```bash +git commit -m "foo: this will fail" +# husky > commit-msg +No staged files match any of provided globs. +⧗ input: foo: this will fail +✖ type must be one of [build, chore, ci, docs, feat, fix, perf, refactor, revert, style, test] [type-enum] + +✖ found 1 problems, 0 warnings +ⓘ Get help: https://github.com/conventional-changelog/commitlint/#what-is-commitlint + +husky - commit-msg script failed (code 1) +``` + +Since [v8.0.0](https://github.com/conventional-changelog/commitlint/releases/tag/v8.0.0) `commitlint` won't output anything if there are no problems with your commit.\ +(You can use the `--verbose` flag to get positive output) + +```bash +git commit -m "chore: lint on commitmsg" +# husky > pre-commit +No staged files match any of provided globs. +# husky > commit-msg +``` + +Local linting is fine for fast feedback but can easily be tinkered with. To ensure all commits are linted you'll want to check commits on an automated CI Server too. Learn how to in the [CI Setup guide](/guides/ci-setup). diff --git a/docs/guides/use-prompt.md b/docs/guides/use-prompt.md new file mode 100644 index 0000000000..fcb86568db --- /dev/null +++ b/docs/guides/use-prompt.md @@ -0,0 +1,122 @@ +# Guide: Use prompt + +`@commitlint/prompt-cli` helps with fast authoring of commit messages and ensures they adhere to the commit convention configured in `commitlint.config.js`. + +## Install + +1. Create a git repository if needed + + ```sh + git init + ``` + +2. Create a package.json if needed + + ::: code-group + + ```sh [npm] + npm init + ``` + + ```sh [yarn] + yarn init + ``` + + ```sh [pnpm] + pnpm init + ``` + + ```sh [bun] + bun init + ``` + + ::: + +3. Install and configure if needed + + ::: code-group + + ```sh [npm] + npm install --save-dev @commitlint/cli @commitlint/config-conventional @commitlint/prompt-cli + + echo "export default { extends: ['@commitlint/config-conventional'] };" > commitlint.config.js + ``` + + ```sh [yarn] + yarn add --dev @commitlint/cli @commitlint/config-conventional @commitlint/prompt-cli + + echo "export default { extends: ['@commitlint/config-conventional'] };" > commitlint.config.js + ``` + + ```sh [pnpm] + pnpm add --save-dev @commitlint/cli @commitlint/config-conventional @commitlint/prompt-cli + + echo "export default { extends: ['@commitlint/config-conventional'] };" > commitlint.config.js + ``` + + ```sh [bun] + bun add --dev @commitlint/cli @commitlint/config-conventional @commitlint/prompt-cli + + echo "export default { extends: ['@commitlint/config-conventional'] };" > commitlint.config.js + ``` + + ```sh [deno] + deno add --dev npm:@commitlint/cli npm:@commitlint/config-conventional npm:@commitlint/prompt-cli + + echo "export default { extends: ['@commitlint/config-conventional'] };" > commitlint.config.js + ``` + + ::: + +## Provide a shortcut + +To make prompt-cli easy to use, add a npm run-script to your `package.json` + +```json:line-numbers {3} +{ + "scripts": { + "commit": "commit" + } +} +``` + +Test the prompt by executing + +::: code-group + +```sh [npm] +git add . +npm run commit +``` + +```sh [yarn] +git add . +yarn commit +``` + +```sh [pnpm] +git add . +pnpm commit +``` + +```sh [bun] +git add . +bun commit +``` + +```sh [deno] +git add . +deno task commit +``` + +::: + +## An alternative to `@commitlint/prompt-cli`: commitizen + +Another way to author commit messages that adhere to the commit convention configured in `commitlint.config.js` is to use `commitizen`. +For more information, checkout their [official website](http://commitizen.github.io/cz-cli/). + +commitlint provides two adapters for `commitizen`: + +1. `@commitlint/prompt` provides a way to interact same as `@commitlint/prompt-cli` +2. `@commitlint/cz-commitlint` is inspired by [cz-conventional-changelog](https://github.com/commitizen/cz-conventional-changelog), it provides a more modern way to interact. diff --git a/docs/index.html b/docs/index.html deleted file mode 100644 index 5a6e0e9a20..0000000000 --- a/docs/index.html +++ /dev/null @@ -1,140 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> - <head> - <meta charset="UTF-8" /> - <title>commitlint - Lint commit messages - - - - - - - - - -
- - - - - - - - - diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000000..2540412ec6 --- /dev/null +++ b/docs/index.md @@ -0,0 +1,43 @@ +--- +# https://vitepress.dev/reference/default-theme-home-page +layout: home + +hero: + name: commitlint + text: Lint commit messages + tagline: helps your team adhere to a commit convention + image: + src: ./assets/commitlint.svg + alt: commitlint on CLI + actions: + - theme: brand + text: Guides + link: /guides/getting-started + + - theme: alt + text: Reference + link: /reference/configuration + + - theme: alt + text: Concepts + link: /concepts/commit-conventions + +features: + - title: Shareable configs + details: By supporting npm-installed configurations it makes sharing of commit conventions easy. + icon: 🌏 + link: /concepts/shareable-config + linkText: Learn more + + - title: Easy setup + details: Get high commit message quality and short feedback cycles by linting commit messages right when they are authored. + icon: 🚀 + link: /guides/getting-started + linkText: Getting started + + - title: Easy to integrate with your CI + details: To get the most out of commitlint you'll want to automate it in your project lifecycle. + icon: ⚙️ + link: /guides/ci-setup + linkText: Learn more +--- diff --git a/docs/assets/commitlint.json b/docs/public/assets/commitlint.json similarity index 100% rename from docs/assets/commitlint.json rename to docs/public/assets/commitlint.json diff --git a/docs/assets/commitlint.svg b/docs/public/assets/commitlint.svg similarity index 100% rename from docs/assets/commitlint.svg rename to docs/public/assets/commitlint.svg diff --git a/docs/public/assets/cz-commitlint.png b/docs/public/assets/cz-commitlint.png new file mode 100644 index 0000000000..3c808656d7 Binary files /dev/null and b/docs/public/assets/cz-commitlint.png differ diff --git a/docs/assets/icon.png b/docs/public/assets/icon.png similarity index 100% rename from docs/assets/icon.png rename to docs/public/assets/icon.png diff --git a/docs/assets/icon.svg b/docs/public/assets/icon.svg similarity index 100% rename from docs/assets/icon.svg rename to docs/public/assets/icon.svg diff --git a/docs/public/assets/vs-code-commit-msg.png b/docs/public/assets/vs-code-commit-msg.png new file mode 100644 index 0000000000..2c93243238 Binary files /dev/null and b/docs/public/assets/vs-code-commit-msg.png differ diff --git a/docs/public/assets/vs-code-emoji.png b/docs/public/assets/vs-code-emoji.png new file mode 100644 index 0000000000..fbea05cd9a Binary files /dev/null and b/docs/public/assets/vs-code-emoji.png differ diff --git a/docs/reference-api.md b/docs/reference-api.md deleted file mode 100644 index 794ceb3315..0000000000 --- a/docs/reference-api.md +++ /dev/null @@ -1,466 +0,0 @@ -# API - -## @commitlint/format - -> Format commitlint reports - -### Install - -``` -npm install --save @commitlint/format -``` - -### Usage - -- **Signature** - -```ts -type Problem = { - /* - * Level of the problem hint | warning | error - */ - level: 0 | 1 | 2; - /* - * Name of the problem to annotate the message with - */ - name: string; - /* - * Message to print - */ - message: string; -} - -type Report = { - results: ReportResult[]; -} - -type ReportResult = { - errors: Problem[]; - warnings: Problem[]; -} - -type formatOptions = { - /** - * Color the output - **/ - color: boolean = true; - - /** - * Signs to use as decoration for messages with severy 0, 1, 2 - **/ - signs: readonly [string; string; string] = [' ', '⚠', '✖']; - - /** - * Colors to use for messages with severy 0, 1, 2 - **/ - colors: readonly [string; string; string] = ['white', 'yellow', 'red']; - - /** - * Print summary and inputs for reports without problems - **/ - verbose: boolean = false; - - /** - * URL to print as help for reports with problems - **/ - helpUrl: string; -} - -format(report?: Report = {}, options?: formatOptions = {}) => string[]; -``` - -- **Example** - -```js -const format = require('@commitlint/format').default; - -format(); // => [ '\u001b[1m\u001b[32m✔\u001b[39m found 0 problems, 0 warnings\u001b[22m' ] - -format( - { - results: [ - { - warnings: [ - { - level: 0, - name: 'some-hint', - message: 'This will not show up as it has level 0', - }, - { - level: 1, - name: 'some-warning', - message: 'This will show up yellow as it has level 1', - }, - ], - errors: [ - { - level: 2, - name: 'some-error', - message: 'This will show up red as it has level 2', - }, - ], - }, - ], - }, - { - color: false, - } -); -/* => [ - '✖ This will show up red as it has level 2 [some-error]', - ' This will not show up as it has level 0 [some-hint]', - '⚠ This will show up yellow as it has level 1 [some-warning]', - '✖ found 1 problems, 2 warnings' -] */ -``` - -## @commitlint/load - -> Load shared commitlint configuration - -### Install - -``` -npm install --save @commitlint/load -``` - -### Usage - -- **Signature** - -```ts -/** - * How to handle violation of rule - * 0 - ignore - * 1 - warn - * 2 - throw - */ -type RuleLevel = 0 | 1 | 2; - -/* - * Application of rule - * always - positive - * never - negative - */ -type RuleCondition = 'always' | 'never'; - -/* - * Additional, optional options to pass to rule - */ -type RuleOption = any; - -/** - * Basic complete rule definition - */ -type PrimitiveRule = [RuleLevel, RuleCondition, RuleOption?]; - -/* - * Async rules are resolved during config lookup. - * They can be used to set up linting rules based on e.g. the project fs - */ -type AsyncRule = Promise; - -/* - * Function rules are executed during config lookup. - * They can be used to set up linting rules based on e.g. the project fs - */ -type FunctionRule = () => PrimitiveRule; - -/* - * Async function rules are executed and awaited during config lookup. - * They can be used to set up linting rules based on e.g. the project fs - */ -type AsyncFunctionRule () => Promise; - -/* - * Polymorphic rule struct - */ -type Rule = PrimitiveRule | FunctionRule | AsyncFunctionRule; - -/* - * Parser preset for conventional commits - */ -type ParserPreset = { - name: string; - path: string; - opts: any; -}; - -type Seed = { - /* - * ids resolveable from cwd or configuration file. - * Imported and merged into configuration - * with increasing precedence, with top level config taking the highest. - */ - extends?: string[]; - /* - * id resolveable from cwd or configuration file. - * Imported and expanded to {ParserPreset}. - * Top level parserPresets override presets in extended configuration. - */ - parserPreset?: string; - /** - * Initial map of rules to check against - */ - rules?: {[ruleName: string]: Rule}; - /** - * URL to print as help for reports with problems - */ - helpUrl?: string; -}; - -type Config = { - /* - * Relatives path to all extendend configurations. - */ - extends: string[]; - /* - * Expanded parser preset, if any - */ - parserPreset?: ParserPreset; - /* - * Merged map of rules to check against - */ - rules: {[ruleName: string]: Rule}; - /** - * URL to print as help for reports with problems - */ - helpUrl?: string; -}; - -type LoadOptions = { - /* - * Path to the config file to load. - */ - file?: string; - /* - * The cwd to use when loading config from file parameter. - */ - cwd: string; -}; - -load(seed: Seed = {}, options?: LoadOptions = {cwd: process.cwd()}) => Promise; -``` - -- **Example** - -```js -const load = require('@commitlint/load').default; - -load({ - rules: { - 'body-leading-blank': [2, 'always'], - }, -}).then((config) => console.log(config)); -// => { extends: [], rules: { 'body-leading-blank': [ 2, 'always' ] } } - -load({extends: ['./package']}).then((config) => console.log(config)); -// => { extends: ['./package', './package-b'], rules: {} } - -load({parserPreset: './parser-preset.js'}).then((config) => - console.log(config) -); -// => { extends: [], rules: {}, parserPreset: {name: './parser-preset.js', path: './parser-preset.js', opts: {}}} - -load({}, {file: '.commitlintrc.yml', cwd: process.cwd()}).then((config) => - console.log(config) -); -// => { extends: [], rules: { 'body-leading-blank': [ 1, 'always' ] }, formatter: '@commitlint/format', plugins: {} } -``` - -### @commitlint/read - -> Read commit messages from a specified range or disk - -### Install - -``` -npm install --save @commitlint/read -``` - -### Usage - -- **Signature** - -```ts -type Range = { - /* Lower end of the commit range to read */ - from: string; - /* Upper end of the commit range to read */ - to: string; - /* Wether (boolean) to read from ./.git/COMMIT_EDITMSG or where to read from (string) */ - edit?: boolean | string; -}; - -read(range: Range) => Promise -``` - -- **Example** - -```js -// git commit -m "I did something" -const read = require('@commitlint/read').default; - -read({edit: true}).then((messages) => console.log(messages)); -// => ['I did something\n\n'] - -read({edit: './git/GITGUI_EDITMESSAGE'}).then((messages) => - console.log(messages) -); -// => ['I did something via git gui\n\n'] - -read({from: 'HEAD~2'}).then((messages) => console.log(messages)); -// => ['I did something\n\n', 'Initial commit\n\n'] - -read({from: 'HEAD~2', to: 'HEAD~1'}).then((messages) => console.log(messages)); -// => ['Initial commit\n\n'] -``` - -### lint - -> Lint a string against commitlint rules - -### Install - -``` -npm install --save @commitlint/lint -``` - -### Usage - -- **Signature** - -```ts -type RuleLevel = 0 | 1 | 2; -type RuleCondition = 'always' | 'never'; -type RuleOption = any; -type PrimitiveRule = [RuleLevel, RuleCondition, RuleOption?]; -type AsyncRule = Promise; -type FunctionRule = () => PrimitiveRule; -type AsyncFunctionRule () => Promise; -type Rule = PrimitiveRule | FunctionRule | AsyncFunctionRule; - -type Problem = { - level: number; - valid: boolean; - name: string; - message: string; -} - -type Report = { - valid: boolean; - errors: Problem[]; - warnings: Problem[]; -} - -type Options = { - parserOpts?: any; -}; - -lint(message: string, rules: {[ruleName: string]: Rule}, opts?: Options) => Promise; -``` - -- **Basic Example** - -```js -const lint = require('@commitlint/lint').default; - -lint('foo: bar').then((report) => console.log(report)); -// => { valid: true, errors: [], warnings: [] } - -lint('foo: bar', {'type-enum': [1, 'always', ['foo']]}).then((report) => - console.log(report) -); -// => { valid: true, errors: [], warnings: [] } - -lint('foo: bar', {'type-enum': [1, 'always', ['bar']]}).then((report) => - console.log(report) -); -/* => - { valid: true, - errors: [], - warnings: - [ { level: 1, - valid: false, - name: 'type-enum', - message: 'type must be one of [bar]' } ] } - */ - -const opts = { - parserOpts: { - headerPattern: /^(\w*)-(\w*)/, - headerCorrespondence: ['type', 'scope'], - }, -}; - -lint('foo-bar', {'type-enum': [2, 'always', ['foo']]}, opts).then((report) => - console.log(report) -); -// => { valid: true, errors: [], warnings: [] } -``` - -- **Load configuration** - -```js -const load = require('@commitlint/load').default; -const lint = require('@commitlint/lint').default; - -const CONFIG = { - extends: ['@commitlint/config-conventional'], -}; - -load(CONFIG) - .then((opts) => - lint( - 'foo: bar', - opts.rules, - opts.parserPreset ? {parserOpts: opts.parserPreset.parserOpts} : {} - ) - ) - .then((report) => console.log(report)); -/* => - { valid: false, - errors: - [ { level: 2, - valid: false, - name: 'type-enum', - message: 'type must be one of [build, chore, ci, docs, feat, fix, perf, refactor, revert, style, test]' } ], - warnings: [] } - */ -``` - -- **Read git history** - -```js -const lint = require('@commitlint/lint').default; -const read = require('@commitlint/read').default; - -const RULES = { - 'type-enum': [2, 'always', ['foo']], -}; - -const check = (commit) => lint(commit, RULES); - -read({to: 'HEAD', from: 'HEAD~2'}).then((commits) => - Promise.all(commits.map(check)) -); -``` - -- **Simplfied last-commit checker** - -```js -const load = require('@commitlint/load').default; -const read = require('@commitlint/read').default; -const lint = require('@commitlint/lint').default; - -Promise.all([load(), read({from: 'HEAD~1'})]) - .then((tasks) => { - const [{rules, parserPreset}, [commit]] = tasks; - return lint( - commit, - rules, - parserPreset ? {parserOpts: parserPreset.parserOpts} : {} - ); - }) - .then((report) => console.log(JSON.stringify(result.valid))); -``` diff --git a/docs/reference-configuration.md b/docs/reference-configuration.md deleted file mode 100644 index fa3f2a8b6a..0000000000 --- a/docs/reference-configuration.md +++ /dev/null @@ -1,235 +0,0 @@ -# Configuration - -`@commitlint/cli` picks up configuration from `./commitlint.config.js`. - -The file is expected - -- to contain valid JavaScript -- export a configuration object -- adhere to the schema outlined below - -## Config option CLI - -Add the path to the configuration file. Example: `commitlint --config commitlint.config.js` - -## Configuration object example - -### JavaScript - -```js -const Configuration = { - /* - * Resolve and load @commitlint/config-conventional from node_modules. - * Referenced packages must be installed - */ - extends: ['@commitlint/config-conventional'], - /* - * Resolve and load conventional-changelog-atom from node_modules. - * Referenced packages must be installed - */ - parserPreset: 'conventional-changelog-atom', - /* - * Resolve and load @commitlint/format from node_modules. - * Referenced package must be installed - */ - formatter: '@commitlint/format', - /* - * Any rules defined here will override rules from @commitlint/config-conventional - */ - rules: { - 'type-enum': [2, 'always', ['foo']], - }, - /* - * Functions that return true if commitlint should ignore the given message. - */ - ignores: [(commit) => commit === ''], - /* - * Whether commitlint uses the default ignore rules. - */ - defaultIgnores: true, - /* - * Custom URL to show upon failure - */ - helpUrl: - 'https://github.com/conventional-changelog/commitlint/#what-is-commitlint', - /* - * Custom prompt configs - */ - prompt: { - messages: {}, - questions: { - type: { - description: 'please input type:', - }, - }, - }, -}; - -module.exports = Configuration; -``` - -### TypeScript - -```ts -import type {UserConfig} from '@commitlint/types'; - -const Configuration: UserConfig = { - /* - * Resolve and load @commitlint/config-conventional from node_modules. - * Referenced packages must be installed - */ - extends: ['@commitlint/config-conventional'], - /* - * Resolve and load conventional-changelog-atom from node_modules. - * Referenced packages must be installed - */ - parserPreset: 'conventional-changelog-atom', - /* - * Resolve and load @commitlint/format from node_modules. - * Referenced package must be installed - */ - formatter: '@commitlint/format', - /* - * Any rules defined here will override rules from @commitlint/config-conventional - */ - rules: { - 'type-enum': [2, 'always', ['foo']], - }, - /* - * Functions that return true if commitlint should ignore the given message. - */ - ignores: [(commit) => commit === ''], - /* - * Whether commitlint uses the default ignore rules. - */ - defaultIgnores: true, - /* - * Custom URL to show upon failure - */ - helpUrl: - 'https://github.com/conventional-changelog/commitlint/#what-is-commitlint', - /* - * Custom prompt configs - */ - prompt: { - messages: {}, - questions: { - type: { - description: 'please input type:', - }, - }, - }, -}; - -module.exports = Configuration; -``` - -## Shareable configuration - -Every commitlint configuration can extend other commitlint configurations. -Specify configurations to extend via the `.extends` key, using ids -that can be resolved by the node resolve algorithm. - -This means installed npm packages and local files can be used. - -- npm - -``` -npm install --save-dev commitlint-config-lerna @commitlint/config-conventional -``` - -```js -// commitlint.config.js -module.exports = { - extends: [ - 'lerna' // prefixed with commitlint-config-*, - '@commitlint/config-conventional' // scoped packages are not prefixed - ] -} -``` - -- local - -```js -// commitlint.config.js -module.exports = { - extends: ['./commitlint.base.js', './commitlint.types.js'], -}; -``` - -```js -// commitlint.types.js, will be picked up by commitlint.config.js -module.exports = { - rules: { - 'type-enum': [2, 'always', ['foo']], - }, -}; -``` - -```js -// commitlint.base.js, will be picked up by commitlint.config.js -module.exports = { - extends: ['@commitlint/config-conventional'], // extends can be nested - parserPreset: 'conventional-changelog-atom', -}; -``` - -## Parser presets - -The parser preset used to parse commit messages can be configured. -Use ids resolveable by the node resolve algorithm. - -This means installed npm packages and local files can be used. - -- npm - -``` -npm install --save-dev conventional-changelog-atom -``` - -```js -// commitlint.config.js -module.exports = { - parserPreset: 'conventional-changelog-atom', -}; -``` - -- local - -```js -// commitlint.config.js -module.exports = { - parserPreset: './parser-preset', -}; -``` - -```js -// parser-preset.js -module.exports = { - parserOpts: { - headerPattern: /^(\w*)\((\w*)\)-(\w*)\s(.*)$/, - headerCorrespondence: ['type', 'scope', 'ticket', 'subject'], - }, -}; -``` - -## Formatter - -Commitlint can output the issues encountered in different formats, if necessary. -Use ids resolvable by the node resolve algorithm. - -```js -module.exports = { - formatter: '@commitlint/format', -}; -``` - -## Rules - -Refer to [Rules](reference-rules.md) for a complete list of available rules. - -## Prompt - -Config command-line submit interaction, works with `@commitlint/cz-commitlint`. - -Refer to [Prompt Config](reference-prompt.md) for details. diff --git a/docs/reference-examples.md b/docs/reference-examples.md deleted file mode 100644 index 42709982c0..0000000000 --- a/docs/reference-examples.md +++ /dev/null @@ -1,20 +0,0 @@ -# Examples - -These examples show common usages of how commitlint can be configured. - -## Validate for issue/ticket numbers - -In your `package.json` add: - -``` - commitlint: { - 'rules': { - 'references-empty': [2, 'never'], - }, - parserPreset: { - parserOpts: { - issuePrefixes: ['PROJ-'] - } - }, - } -``` diff --git a/docs/reference-rules.md b/docs/reference-rules.md deleted file mode 100644 index 9fbd605e01..0000000000 --- a/docs/reference-rules.md +++ /dev/null @@ -1,419 +0,0 @@ -# Rules - -Rules are made up by a name and a configuration array. The configuration array contains: - -- **Level** `[0..2]`: `0` disables the rule. For `1` it will be considered a warning for `2` an error. -- **Applicable** `always|never`: `never` inverts the rule. -- **Value**: value to use for this rule. - -Rule configurations are either of type `array` residing on a key with the rule's name as key on the rules `object` or of type function returning type `array` or `Promise`. This means all of the following notations are supported. - -**Plain array** - -``` - "rules": { - "header-max-length": [0, "always", 72], - } -``` - -**Function returning array** - -``` - "rules": { - "header-max-length": () => [0, "always", 72], - } -``` - -**Async function returning array** - -``` - "rules": { - "header-max-length": async () => [0, "always", 72], - } -``` - -**Function returning a promise resolving to array** - -``` - "rules": { - "header-max-length": () => Promise.resolve([0, "always", 72]), - } -``` - -### Available rules - -#### body-full-stop - -- **condition**: `body` ends with `value` -- **rule**: `never` -- **value** - -``` -'.' -``` - -#### body-leading-blank - -- **condition**: `body` begins with blank line -- **rule**: `always` - -#### body-empty - -- **condition**: `body` is empty -- **rule**: `never` - -#### body-max-length - -- **condition**: `body` has `value` or less characters -- **rule**: `always` -- **value** - -``` -Infinity -``` - -#### body-max-line-length - -- **condition**: `body` lines has `value` or less characters -- **rule**: `always` -- **value** - -``` -Infinity -``` - -#### body-min-length - -- **condition**: `body` has `value` or more characters -- **rule**: `always` -- **value** - -``` -0 -``` - -#### body-case - -- **condition**: `header` is in case `value` -- **rule**: `always` -- **value** - -``` -'lower-case' -``` - -- **possible values** - -``` -[ - 'lower-case', // default - 'upper-case', // UPPERCASE - 'camel-case', // camelCase - 'kebab-case', // kebab-case - 'pascal-case', // PascalCase - 'sentence-case', // Sentence case - 'snake-case', // snake_case - 'start-case' // Start Case -] -``` - -#### footer-leading-blank - -- **condition**: `footer` begins with blank line -- **rule**: `always` - -#### footer-empty - -- **condition**: `footer` is empty -- **rule**: `never` - -#### footer-max-length - -- **condition**: `footer` has `value` or less characters -- **rule**: `always` -- **value** - -``` -Infinity -``` - -#### footer-max-line-length - -- **condition**: `footer` lines has `value` or less characters -- **rule**: `always` -- **value** - -``` -Infinity -``` - -#### footer-min-length - -- **condition**: `footer` has `value` or more characters -- **rule**: `always` -- **value** - -``` -0 -``` - -#### header-case - -- **condition**: `header` is in case `value` -- **rule**: `always` -- **value** - -``` -'lower-case' -``` - -- **possible values** - -``` -[ - 'lower-case', // default - 'upper-case', // UPPERCASE - 'camel-case', // camelCase - 'kebab-case', // kebab-case - 'pascal-case', // PascalCase - 'sentence-case', // Sentence case - 'snake-case', // snake_case - 'start-case' // Start Case -] -``` - -#### header-full-stop - -- **condition**: `header` ends with `value` -- **rule**: `never` -- **value** - -``` -'.' -``` - -#### header-max-length - -- **condition**: `header` has `value` or less characters -- **rule**: `always` -- **value** - -``` -72 -``` - -#### header-min-length - -- **condition**: `header` has `value` or more characters -- **rule**: `always` -- **value** - -``` -0 -``` - -#### references-empty - -- **condition**: `references` has at least one entry -- **rule**: `never` - -#### scope-enum - -- **condition**: `scope` is found in value -- **rule**: `always` -- **value** - ``` - [] - ``` - -#### scope-case - -- **condition**: `scope` is in case `value` -- **rule**: `always` -- **value** - -``` -'lower-case' -``` - -- **possible values** - -``` -[ - 'lower-case', // default - 'upper-case', // UPPERCASE - 'camel-case', // camelCase - 'kebab-case', // kebab-case - 'pascal-case', // PascalCase - 'sentence-case', // Sentence case - 'snake-case', // snake_case - 'start-case' // Start Case -] -``` - -#### scope-empty - -- **condition**: `scope` is empty -- **rule**: `never` - -#### scope-max-length - -- **condition**: `scope` has `value` or less characters -- **rule**: `always` -- **value** - -``` -Infinity -``` - -#### scope-min-length - -- **condition**: `scope` has `value` or more characters -- **rule**: `always` -- **value** - -``` -0 -``` - -#### subject-case - -- **condition**: `subject` is in case `value` -- **rule**: `always` -- **value** - -``` -'lower-case' -``` - -- **possible values** - -``` -[ - 'lower-case', // default - 'upper-case', // UPPERCASE - 'camel-case', // camelCase - 'kebab-case', // kebab-case - 'pascal-case', // PascalCase - 'sentence-case', // Sentence case - 'snake-case', // snake_case - 'start-case' // Start Case -] -``` - -#### subject-empty - -- **condition**: `subject` is empty -- **rule**: `never` - -#### subject-full-stop - -- **condition**: `subject` ends with `value` -- **rule**: `never` -- **value** - -``` -'.' -``` - -#### subject-max-length - -- **condition**: `subject` has `value` or less characters -- **rule**: `always` -- **value** - -``` -Infinity -``` - -#### subject-min-length - -- **condition**: `subject` has `value` or more characters -- **rule**: `always` -- **value** - -``` -0 -``` - -#### subject-exclamation-mark - -- **condition**: `subject` has exclamation before the `:` marker -- **rule**: `never` - -#### type-enum - -- **condition**: `type` is found in value -- **rule**: `always` -- **value** - ``` - ['feat', 'fix', 'docs', 'style', 'refactor', 'test', 'revert'] - ``` - -#### type-case - -- **description**: `type` is in case `value` -- **rule**: `always` -- **value** - ``` - 'lower-case' - ``` -- **possible values** - -``` -[ - 'lower-case', // default - 'upper-case', // UPPERCASE - 'camel-case', // camelCase - 'kebab-case', // kebab-case - 'pascal-case', // PascalCase - 'sentence-case', // Sentence case - 'snake-case', // snake_case - 'start-case' // Start Case -]; -``` - -#### type-empty - -- **condition**: `type` is empty -- **rule**: `never` - -#### type-max-length - -- **condition**: `type` has `value` or less characters -- **rule**: `always` -- **value** - -``` -Infinity -``` - -#### type-min-length - -- **condition**: `type` has `value` or more characters -- **rule**: `always` -- **value** - -``` -0 -``` - -#### signed-off-by - -- **condition**: `message` has `value` -- **rule**: `always` -- **value** - -``` -'Signed-off-by:' -``` - -#### trailer-exists - -- **condition**: `message` has trailer `value` -- **rule**: `always` -- **value** - -``` -'Signed-off-by:' -``` diff --git a/docs/reference-cli.md b/docs/reference/cli.md similarity index 58% rename from docs/reference-cli.md rename to docs/reference/cli.md index e95ac8b10c..efc0656a62 100644 --- a/docs/reference-cli.md +++ b/docs/reference/cli.md @@ -1,16 +1,23 @@ + + # CLI -```bash +```sh-vue ❯ npx commitlint --help -@commitlint/cli@11.0.0 - Lint your commit messages +@commitlint/cli@{{ commitlintVersion }} - Lint your commit messages [input] reads from stdin if --edit, --env, --from and --to are omitted Options: -c, --color toggle colored output [boolean] [default: true] - -g, --config path to the config file [string] - --print-config print resolved config [boolean] [default: false] + -g, --config path to the config file; result code 9 if config is + missing [string] + --print-config print resolved config + [string] [choices: "", "text", "json"] -d, --cwd directory to execute in [string] [default: (Working Directory)] -e, --edit read last commit message from the specified file or @@ -21,6 +28,12 @@ Options: -H, --help-url help url in error message [string] -f, --from lower end of the commit range to lint; applies if edit=false [string] + --from-last-tag uses the last tag as the lower end of the commit range to + lint; applies if edit=false and from is not set [boolean] + --git-log-args additional git log arguments as space separated string, + example '--first-parent --cherry-pick' [string] + -l, --last just analyze the last commit; applies if edit=false + [boolean] -o, --format output format of the results [string] -p, --parser-preset configuration preset to use for conventional-commits-parser [string] @@ -29,6 +42,10 @@ Options: edit=false [string] -V, --verbose enable verbose output for reports without problems [boolean] + -s, --strict enable strict mode; result code 2 for warnings, 3 for + errors [boolean] + --options path to a JSON file or Common.js module containing CLI + options -v, --version display version information [boolean] -h, --help Show help [boolean] ``` diff --git a/docs/reference-community-projects.md b/docs/reference/community-projects.md similarity index 55% rename from docs/reference-community-projects.md rename to docs/reference/community-projects.md index 8092b3fe85..c68a2d9c3b 100644 --- a/docs/reference-community-projects.md +++ b/docs/reference/community-projects.md @@ -10,5 +10,8 @@ If you want to add a project to this list [open a pull request](https://github.c ## List of Projects -- [commitlint.io](https://github.com/tomasen/commitlintio) - helps your project to ensures nice and tidy commit messages without needing any download or installation +- [Gitmoji Commit Workflow](https://github.com/arvinxx/gitmoji-commit-workflow) +- [commitlint.io](https://github.com/tomasen/commitlintio) - helps your project to ensure nice and tidy commit messages without needing any download or installation - [commitlint plugin function rules](https://github.com/vidavidorra/commitlint-plugin-function-rules) - use functions as rule value to create rules based on commit messages, with regular expressions and more +- [commitlint-plugin-selective-scope](https://github.com/ridvanaltun/commitlint-plugin-selective-scope) - limit scopes per type with regular expressions and plain text +- [commitlint-gitlab-ci](https://gitlab.com/dmoonfire/commitlint-gitlab-ci/) - a small wrapper around `commitlint` for working with the quirks of Gitlab's CI without failing jobs diff --git a/docs/reference/configuration.md b/docs/reference/configuration.md new file mode 100644 index 0000000000..b9a332202c --- /dev/null +++ b/docs/reference/configuration.md @@ -0,0 +1,253 @@ +# Configuration + +## Config via file + +`@commitlint/cli` picks up configuration from the following files: + +- `.commitlintrc` +- `.commitlintrc.json` +- `.commitlintrc.yaml` +- `.commitlintrc.yml` +- `.commitlintrc.js` +- `.commitlintrc.cjs` +- `.commitlintrc.mjs` +- `.commitlintrc.ts` +- `.commitlintrc.cts` +- `commitlint.config.js` +- `commitlint.config.cjs` +- `commitlint.config.mjs` +- `commitlint.config.ts` +- `commitlint.config.cts` + +The file is expected + +- to contain valid JavaScript / TypeScript +- export a configuration object +- adhere to the schema outlined below + +Configuration files are resolved using [cosmiconfig](https://github.com/cosmiconfig/cosmiconfig). + +## Config via `package.json` + +You can add a `commitlint` field in `package.json` (or [`package.yaml`](https://github.com/pnpm/pnpm/pull/1799)) with an object that follows the below structure. + +## Config option CLI + +Add the path to the configuration file. Example: `commitlint --config commitlint.config.js` + +## Configuration object example + +```js +const Configuration = { + /* + * Resolve and load @commitlint/config-conventional from node_modules. + * Referenced packages must be installed + */ + extends: ["@commitlint/config-conventional"], + /* + * Resolve and load conventional-changelog-atom from node_modules. + * Referenced packages must be installed + */ + parserPreset: "conventional-changelog-atom", + /* + * Resolve and load @commitlint/format from node_modules. + * Referenced package must be installed + */ + formatter: "@commitlint/format", + /* + * Any rules defined here will override rules from @commitlint/config-conventional + */ + rules: { + "type-enum": [2, "always", ["foo"]], + }, + /* + * Array of functions that return true if commitlint should ignore the given message. + * Given array is merged with predefined functions, which consist of matchers like: + * + * - 'Merge pull request', 'Merge X into Y' or 'Merge branch X' + * - 'Revert X' + * - 'v1.2.3' (ie semver matcher) + * - 'Automatic merge X' or 'Auto-merged X into Y' + * + * To see full list, check https://github.com/conventional-changelog/commitlint/blob/master/%40commitlint/is-ignored/src/defaults.ts. + * To disable those ignores and run rules always, set `defaultIgnores: false` as shown below. + */ + ignores: [(commit) => commit === ""], + /* + * Whether commitlint uses the default ignore rules, see the description above. + */ + defaultIgnores: true, + /* + * Custom URL to show upon failure + */ + helpUrl: + "https://github.com/conventional-changelog/commitlint/#what-is-commitlint", + /* + * Custom prompt configs + */ + prompt: { + messages: {}, + questions: { + type: { + description: "please input type:", + }, + }, + }, +}; + +export default Configuration; +``` + +> [!NOTE] +> CJS format is supported as well: +> +> ```js +> module.exports = Configuration; +> ``` + +### TypeScript configuration + +Configuration can also be a TypeScript file. + +Relevant types and enums can be imported from `@commitlint/types`. + +Below you can see main changes from a standard js file: + +```ts +import type { UserConfig } from "@commitlint/types"; // [!code focus] +import { RuleConfigSeverity } from "@commitlint/types"; // [!code focus] + +const Configuration: UserConfig = { + // [!code focus] + extends: ["@commitlint/config-conventional"], + parserPreset: "conventional-changelog-atom", + formatter: "@commitlint/format", + rules: { + "type-enum": [RuleConfigSeverity.Error, "always", ["foo"]], // [!code focus] + }, + // ... +}; + +export default Configuration; +``` + +## Shareable configuration + +Every commitlint configuration can extend other commitlint configurations. +Specify configurations to extend via the `.extends` key, using ids +that can be resolved by the node resolve algorithm. + +This means installed npm packages and local files can be used. + +:::tabs +== npm + +```sh +npm install --save-dev commitlint-config-lerna @commitlint/config-conventional +``` + +::: code-group + +```js [commitlint.config.js] +export default { + extends: [ + 'lerna' // prefixed with commitlint-config-*, + '@commitlint/config-conventional' // scoped packages are not prefixed + ] +} +``` + +== local + +::: code-group + +```js [commitlint.config.js] +export default { + extends: ["./commitlint.base.js", "./commitlint.types.js"], +}; +``` + +```js [commitlint.types.js] +// will be picked up by commitlint.config.js +export default { + rules: { + "type-enum": [2, "always", ["foo"]], + }, +}; +``` + +```js [commitlint.base.js] +// will be picked up by commitlint.config.js +export default { + extends: ["@commitlint/config-conventional"], // extends can be nested + parserPreset: "conventional-changelog-atom", +}; +``` + +::: + +More information can be found in the [Concepts – shareable config section](/concepts/shareable-config). + +## Parser presets + +The parser preset used to parse commit messages can be configured. +Use ids resolvable by the node resolve algorithm. + +This means installed npm packages and local files can be used. + +:::tabs +== npm + +```sh +npm install --save-dev conventional-changelog-atom +``` + +::: code-group + +```js [commitlint.config.js] +export default { + parserPreset: "conventional-changelog-atom", +}; +``` + +== local + +::: code-group + +```js [commitlint.config.js] +export default { + parserPreset: "./parser-preset", +}; +``` + +```js [parser-preset.js] +export default { + parserOpts: { + headerPattern: /^(\w*)\((\w*)\)-(\w*)\s(.*)$/, + headerCorrespondence: ["type", "scope", "ticket", "subject"], + }, +}; +``` + +::: + +## Formatter + +Commitlint can output the issues encountered in different formats, if necessary. +Use ids resolvable by the node resolve algorithm. + +```js +export default { + formatter: "@commitlint/format", +}; +``` + +## Rules + +Refer to [Rules](/reference/rules.md) for a complete list of available rules. + +## Prompt + +Config command-line submit interaction, works with `@commitlint/cz-commitlint`. + +Refer to [Prompt Config](/reference/prompt.md) for details. diff --git a/docs/reference/examples.md b/docs/reference/examples.md new file mode 100644 index 0000000000..4d80227b88 --- /dev/null +++ b/docs/reference/examples.md @@ -0,0 +1,153 @@ +# Examples + +These examples show common usages of how commitlint can be configured. + +## Validate for issue/ticket numbers + +::: code-group + +```jsonc [package.json] +{ + // ... + "commitlint": { + "rules": { + "references-empty": [2, "never"], + }, + "parserPreset": { + "parserOpts": { + "issuePrefixes": ["PROJ-"], + }, + }, + }, + // ... +} +``` + +::: + +## Customizing Emojis and Alignment in VS Code + +Some terminals have trouble correctly calculating the width of Unicode emojis, which can cause a missing space after the emoji, leading to misaligned text in the commit prompt. + +![cz-commitlint questions](/assets/vs-code-emoji.png) + +To fix this issue in VS Code, you can specify an additional space after each emoji in your `commitlint.config.ts` file. + +::: code-group + +```ts [commitlint.config.ts] +import { type UserConfig } from "@commitlint/types"; + +export default { + // Use the conventional commit rules as a base. + extends: ["@commitlint/config-conventional"], + prompt: { + questions: { + type: { + enum: { + // Add a space to a few common types for better alignment. + build: { + emoji: "🛠️ ", // The extra space fixes the alignment. + }, + chore: { + emoji: "♻️ ", + }, + ci: { + emoji: "⚙️ ", + }, + revert: { + emoji: "🗑️ ", + }, + }, + }, + }, + }, +} satisfies UserConfig; +``` + +::: + +## Include Emojis in Commit Messages + +By default, emojis are only shown in the commit message prompt. To include them in the actual commit header, you need a custom parser and a setting to enable them. + +This configuration is based on the conventional commit rules and uses a _parser preset_ to validate commit headers that start with an emoji. + +::: code-group + +```ts [commitlint.config.ts] +import type { ParserPreset, UserConfig } from "@commitlint/types"; +import config from "@commitlint/config-conventional"; +import createPreset from "conventional-changelog-conventionalcommits"; +import { merge } from "lodash-es"; + +// A helper function to create the custom emoji parser preset. +async function createEmojiParser(): Promise { + // Generates the regex from the emojis defined in the conventional config. + const emojiRegexPart = Object.values(config.prompt.questions.type.enum) + .map((value) => value.emoji.trim()) + .join("|"); + + const parserOpts = { + // This regular expression validates commit headers with an emoji. + breakingHeaderPattern: new RegExp( + `^(?:${emojiRegexPart})\\s+(\\w*)(?:\\((.*)\\))?!:\\s+(.*)$`, + ), + headerPattern: new RegExp( + `^(?:${emojiRegexPart})\\s+(\\w*)(?:\\((.*)\\))?!?:\\s+(.*)$`, + ), + }; + + const emojiParser = merge({}, await createPreset(), { + conventionalChangelog: { parserOpts }, + parserOpts, + recommendedBumpOpts: { parserOpts }, + }); + + return emojiParser; +} + +const emojiParser = await createEmojiParser(); + +export default { + extends: ["@commitlint/config-conventional"], + parserPreset: emojiParser, + prompt: { + questions: { + type: { + enum: { + // Customize emojis and add the extra space for better alignment. + build: { emoji: "🛠️ " }, + chore: { emoji: "♻️ " }, + ci: { emoji: "⚙️ " }, + revert: { emoji: "🗑️ " }, + }, + // This setting includes the emoji in the final commit header. + headerWithEmoji: true, + }, + }, + }, +} satisfies UserConfig; +``` + +::: + +Although some emojis may appear without a trailing space in the terminal, the commit message itself is submitted with the correct formatting. + +![cz-commitlint questions](/assets/vs-code-commit-msg.png) + +You can verify this with `git log -4 --format=%B > commits.txt`. + +:::code-group + +```text [commits.txt] +⚙️ ci(scope): short + +🛠 build(scope): short + +🐛 fix(scope): short + +✨ feat(scope): short +``` + +::: diff --git a/docs/reference-plugins.md b/docs/reference/plugins.md similarity index 88% rename from docs/reference-plugins.md rename to docs/reference/plugins.md index 078f124684..251eeb65c3 100644 --- a/docs/reference-plugins.md +++ b/docs/reference/plugins.md @@ -3,14 +3,14 @@ Our plugin implementation is based off of [eslint's plugin implementation](https://github.com/eslint/eslint/blob/5018378131fd5190bbccca902c0cf4276ee1581a/lib/config/plugins.js); Each plugin is an npm module with a name in the format of `commitlint-plugin-`, such as `commitlint-plugin-jquery`. You can also use scoped packages in the format of `@/commitlint-plugin-` such as `@jquery/commitlint-plugin-jquery`. -### Rules in Plugins +## Rules in Plugins Plugins can expose additional rules for use in commitlint. To do so, the plugin must export a `rules` object containing a key-value mapping of rule ID to rule. The rule ID does not have to follow any naming convention (so it can just be `dollar-sign`, for instance). ```js -module.exports = { +export default { rules: { - 'dollar-sign': function (parsed, when, value) { + "dollar-sign": function (parsed, when, value) { // rule implementation ... }, }, @@ -19,7 +19,7 @@ module.exports = { To use the rule in commitlint, you would use the unprefixed plugin name, followed by a slash, followed by the rule name. So if this plugin were named `commitlint-plugin-myplugin`, then in your configuration you'd refer to the rule by the name `myplugin/dollar-sign`. Example: `"rules": {"myplugin/dollar-sign": 2}`. -### Peer Dependency +## Peer Dependency To make clear that the plugin requires commitlint to work correctly you have to declare commitlint as a `peerDependency` in your `package.json`. The plugin support was introduced in commitlint version `7.6.0`. Ensure the `peerDependency` points to @commitlint `7.6.0` or later. @@ -49,17 +49,18 @@ In case you want to develop your plugins locally without the need to publish to ### Usage Example -```js -// commitlint.config.js -module.exports = { +::: code-group + +```js [commitlint.config.js] +export default { rules: { - 'hello-world-rule': [2, 'always'], + "hello-world-rule": [2, "always"], }, plugins: [ { rules: { - 'hello-world-rule': ({subject}) => { - const HELLO_WORLD = 'Hello World'; + "hello-world-rule": ({ subject }) => { + const HELLO_WORLD = "Hello World"; return [ subject.includes(HELLO_WORLD), `Your subject should contain ${HELLO_WORLD} message`, @@ -71,7 +72,7 @@ module.exports = { }; ``` -### Usage Example +::: ```bash > echo "feat: random subject" | commitlint # fails diff --git a/docs/reference-prompt.md b/docs/reference/prompt.md similarity index 77% rename from docs/reference-prompt.md rename to docs/reference/prompt.md index 0c4794ffd7..48a2ec9540 100644 --- a/docs/reference-prompt.md +++ b/docs/reference/prompt.md @@ -2,47 +2,53 @@ Prompt Config is used by `@commitlint/cz-commitlint`. -There are two fields: `messages` and `questions` +There are three fields: `settings`, `messages` and `questions` + +## `settings` + +Set optional options. + +- `enableMultipleScopes`: `(boolean)` Enable multiple scopes, select scope with a radio list, disabled by default. +- `scopeEnumSeparator`: `(string)` Commitlint supports [multiple scopes](/concepts/commit-conventions#multiple-scopes), you can specify the delimiter. It is applied when `enableMultipleScopes` set true. ## `messages` Set hint contents, you can configure it to support localization. -- skip: The field can be skip by enter -- max: Maximum number of characters -- min: Minimum number of characters -- emptyWarning: The field can not be empty -- upperLimitWarning: The characters limit is exceeded -- lowerLimitWarning: The characters is less than lower limit +- `skip`: The field can be skipped by pressing enter +- `max`: Maximum number of characters +- `min`: Minimum number of characters +- `emptyWarning`: The field cannot be empty +- `upperLimitWarning`: The character limit is exceeded +- `lowerLimitWarning`: The characters are less than lower limit ## `questions` -Specify the interactive steps, Steps can only be configure in +Specify the interactive steps, Steps can only be configured in -- header -- type -- scope -- subject -- body -- footer -- isBreaking -- breaking -- breakingBody -- isIssueAffected -- issues -- issuesBody +- `header` +- `type` +- `scope` +- `subject` +- `body` +- `footer` +- `isBreaking` +- `breaking` +- `breakingBody` +- `isIssueAffected` +- `issues` +- `issuesBody` -
- -
+![cz-commitlint questions](/assets/cz-commitlint.png) ```js -module.exports = { +export default { parserPreset: 'conventional-changelog-conventionalcommits', rules: { ... }, prompt: { + settings: {}, messages: { skip: ':skip', max: 'upper %d chars', diff --git a/docs/reference/rules-configuration.md b/docs/reference/rules-configuration.md new file mode 100644 index 0000000000..09494a12b9 --- /dev/null +++ b/docs/reference/rules-configuration.md @@ -0,0 +1,57 @@ +# Rules configuration + +Rules are made up by a name and a configuration array. The configuration array contains: + +- **Level** `[0..2]`: `0` disables the rule. For `1` it will be considered a warning for `2` an error. +- **Applicable** `always|never`: `never` inverts the rule. +- **Value**: value to use for this rule. + +Rule configurations are either of type `array` residing on a key with the rule's name as key on the rules `object` or of type function returning type `array` or `Promise`. This means all of the following notations are supported. + +## Plain array + +:::code-group + +```js [commitlint.config.js] +export default { + // ... + rules: { + "header-max-length": [0, "always", 72], // [!code focus] + }, + // ... +}; +``` + +::: + +## Function returning array + +:::code-group + +```js [commitlint.config.js] +export default { + // ... + rules: { + "header-max-length": () => [0, "always", 72], // [!code focus] + }, + // ... +}; +``` + +::: + +## Async function returning array + +:::code-group + +```js [commitlint.config.js] +export default { + // ... + rules: { + "header-max-length": async () => [0, "always", 72], // [!code focus] + }, + // ... +}; +``` + +::: diff --git a/docs/reference/rules.md b/docs/reference/rules.md new file mode 100644 index 0000000000..7c76fafcd7 --- /dev/null +++ b/docs/reference/rules.md @@ -0,0 +1,418 @@ +# Rules + +## body-case + +- **condition**: `body` is in case `value` +- **rule**: `always` +- **value** + + ```text + 'lower-case' + ``` + +- **possible values** + + ```js + [ + "lower-case", // default + "upper-case", // UPPERCASE + "camel-case", // camelCase + "kebab-case", // kebab-case + "pascal-case", // PascalCase + "sentence-case", // Sentence case + "snake-case", // snake_case + "start-case", // Start Case + ]; + ``` + +## body-empty + +- **condition**: `body` is empty +- **rule**: `never` + +## body-full-stop + +- **condition**: `body` ends with `value` +- **rule**: `never` +- **value** + + ```text + '.' + ``` + +## body-leading-blank + +- **condition**: `body` begins with blank line +- **rule**: `always` + +## body-max-length + +- **condition**: `body` has `value` or less characters +- **rule**: `always` +- **value** + + ```text + Infinity + ``` + +## body-max-line-length + +- **condition**: `body` lines have `value` or less characters, or contain a URL +- **rule**: `always` +- **value** + + ```text + Infinity + ``` + +## body-min-length + +- **condition**: `body` has `value` or more characters +- **rule**: `always` +- **value** + + ```text + 0 + ``` + +## breaking-change-exclamation-mark + +- **condition**: Either both or neither `header` has an exclamation mark before the `:` marker + and a line in `footer` matches the regular expression `^BREAKING[ -]CHANGE:` +- **rule**: `always` + +> [!NOTE] +> +> This rule enforces that breaking changes are marked by both a `!` in the header +> and `BREAKING CHANGE` in the footer. The behavior is that of an XNOR operation: +> +> - It passes when either both are present or both are not. +> - It fails when one is present and the other is not. + +## footer-empty + +- **condition**: `footer` is empty +- **rule**: `never` + +## footer-leading-blank + +- **condition**: `footer` begins with blank line +- **rule**: `always` + +## footer-max-length + +- **condition**: `footer` has `value` or less characters +- **rule**: `always` +- **value** + + ```text + Infinity + ``` + +## footer-max-line-length + +- **condition**: `footer` lines have `value` or less characters +- **rule**: `always` +- **value** + + ```text + Infinity + ``` + +## footer-min-length + +- **condition**: `footer` has `value` or more characters +- **rule**: `always` +- **value** + + ```text + 0 + ``` + +## header-case + +- **condition**: `header` is in case `value` +- **rule**: `always` +- **value** + + ```text + 'lower-case' + ``` + +- **possible values** + + ```js + [ + "lower-case", // default + "upper-case", // UPPERCASE + "camel-case", // camelCase + "kebab-case", // kebab-case + "pascal-case", // PascalCase + "sentence-case", // Sentence case + "snake-case", // snake_case + "start-case", // Start Case + ]; + ``` + +## header-full-stop + +- **condition**: `header` ends with `value` +- **rule**: `never` +- **value** + + ```text + '.' + ``` + +## header-max-length + +- **condition**: `header` has `value` or less characters +- **rule**: `always` +- **value** + + ```text + 72 + ``` + +## header-min-length + +- **condition**: `header` has `value` or more characters +- **rule**: `always` +- **value** + + ```text + 0 + ``` + +## header-trim + +- **condition**: `header` must not have initial or trailing whitespaces +- **rule**: `always` + +## references-empty + +- **condition**: `references` has at least one entry +- **rule**: `never` + +## scope-case + +- **condition**: `scope` is in case `value` +- **rule**: `always` +- **value** + + ```text + 'lower-case' + ``` + +- **possible values** + + ```js + [ + "lower-case", // default + "upper-case", // UPPERCASE + "camel-case", // camelCase + "kebab-case", // kebab-case + "pascal-case", // PascalCase + "sentence-case", // Sentence case + "snake-case", // snake_case + "start-case", // Start Case + ]; + ``` + +## scope-empty + +- **condition**: `scope` is empty +- **rule**: `never` + +## scope-enum + +- **condition**: `scope` is found in value +- **rule**: `always` +- **value** + + ```text + [] + ``` + +> [!NOTE] +> +> - This rule always passes if no scopes are provided in the message or the value > is an empty array. +> - When set to `always`, all message scopes must be found in the value. +> - When set to `never`, none of the message scopes can be found in the value. + +## scope-max-length + +- **condition**: `scope` has `value` or less characters +- **rule**: `always` +- **value** + + ```text + Infinity + ``` + +## scope-min-length + +- **condition**: `scope` has `value` or more characters +- **rule**: `always` +- **value** + + ```text + 0 + ``` + +## signed-off-by + +- **condition**: `message` has `value` +- **rule**: `always` +- **value** + + ```text + 'Signed-off-by:' + ``` + +## subject-case + +- **condition**: `subject` is in case `value` +- **rule**: `always` +- **value** + + ```js + ["sentence-case", "start-case", "pascal-case", "upper-case"]; + ``` + +- **possible values** + + ```js + [ + "lower-case", // lower case + "upper-case", // UPPERCASE + "camel-case", // camelCase + "kebab-case", // kebab-case + "pascal-case", // PascalCase + "sentence-case", // Sentence case + "snake-case", // snake_case + "start-case", // Start Case + ]; + ``` + +## subject-empty + +- **condition**: `subject` is empty +- **rule**: `never` + +## subject-exclamation-mark + +- **condition**: `subject` has exclamation before the `:` marker +- **rule**: `never` + +## subject-full-stop + +- **condition**: `subject` ends with `value` +- **rule**: `never` +- **value** + + ```text + '.' + ``` + +## subject-max-length + +- **condition**: `subject` has `value` or less characters +- **rule**: `always` +- **value** + + ```text + Infinity + ``` + +## subject-min-length + +- **condition**: `subject` has `value` or more characters +- **rule**: `always` +- **value** + + ```text + 0 + ``` + +## trailer-exists + +- **condition**: `message` has trailer `value` +- **rule**: `always` +- **value** + + ```text + 'Signed-off-by:' + ``` + +## type-case + +- **description**: `type` is in case `value` +- **rule**: `always` +- **value** + + ```text + 'lower-case' + ``` + +- **possible values** + + ```js + [ + "lower-case", // default + "upper-case", // UPPERCASE + "camel-case", // camelCase + "kebab-case", // kebab-case + "pascal-case", // PascalCase + "sentence-case", // Sentence case + "snake-case", // snake_case + "start-case", // Start Case + ]; + ``` + +## type-empty + +- **condition**: `type` is empty +- **rule**: `never` + +## type-enum + +- **condition**: `type` is found in value +- **rule**: `always` +- **value** + + ```js + [ + "build", + "chore", + "ci", + "docs", + "feat", + "fix", + "perf", + "refactor", + "revert", + "style", + "test", + ]; + ``` + +## type-max-length + +- **condition**: `type` has `value` or less characters +- **rule**: `always` +- **value** + + ```text + Infinity + ``` + +## type-min-length + +- **condition**: `type` has `value` or more characters +- **rule**: `always` +- **value** + + ```text + 0 + ``` diff --git a/docs/support/releases.md b/docs/support/releases.md new file mode 100644 index 0000000000..053bede855 --- /dev/null +++ b/docs/support/releases.md @@ -0,0 +1,9 @@ +# Releases + +Security patches will be applied to versions which are not yet EOL. +Features will only be applied to the current main version. + +We're not a sponsored OSS project. Therefore we can't promise that we will release patch versions for older releases in a timely manner. +If you are stuck on an older version and need a security patch we're happy if you can provide a PR. + +For a list of releases check our [README](https://github.com/conventional-changelog/commitlint#releases) diff --git a/docs/support/troubleshooting.md b/docs/support/troubleshooting.md new file mode 100644 index 0000000000..273d39c265 --- /dev/null +++ b/docs/support/troubleshooting.md @@ -0,0 +1,26 @@ +# Troubleshooting + +## Getting `Range error: Found invalid rule names: [...]` after update {#range-error-invalid-rule} + +After updating one or more `@commitlint` packages you might encounter an error like: + +```text +Found invalid rule names: header-trim. +Supported rule names are: body-case, body-empty, ... +``` + +The source of this error is likely a mismatch of version between `@commitlint` packages in `node_modules`. + +E.g.: you might have a config requesting a rule that is not included in `@commitlint/rules`. + +> [!TIP] +> If you are relying on a config which depends on an earlier version of `@commitlint/config-conventional` be sure to update them: +> +> ```sh +> npm update @commitlint/config-conventional +> ``` + +--- + +> [!NOTE] +> Detailed explanation about the error can be found in this [comment](https://github.com/conventional-changelog/commitlint/pull/3871#issuecomment-1911455325). diff --git a/docs/guides-upgrade.md b/docs/support/upgrade.md similarity index 93% rename from docs/guides-upgrade.md rename to docs/support/upgrade.md index 8eb0fc0078..ec54313e83 100644 --- a/docs/guides-upgrade.md +++ b/docs/support/upgrade.md @@ -39,7 +39,7 @@ If you used `validate-commit-msg` with custom configuration you might want to cu ```sh npm remove validate-commit-msg --save-dev -npm install --save-dev @commitlint/cli @commitint/config-conventional +npm install --save-dev @commitlint/cli @commitlint/config-conventional ``` **Add a commitmsg run-script to package.json** @@ -62,10 +62,10 @@ npm install --save-dev husky ```js module.exports = { - extends: ['@commitlint/config-conventional'], + extends: ["@commitlint/config-conventional"], rules: { // Place your rules here - 'scope-enum': [2, 'always', ['a', 'b']], // error if scope is given but not in provided list + "scope-enum": [2, "always", ["a", "b"]], // error if scope is given but not in provided list }, }; ``` @@ -90,7 +90,7 @@ module.exports = { } ``` -Refer to the [Rules Reference](reference-rules.md) for a list of all available configuration options. +Refer to the [Rules Reference](/reference/rules) for a list of all available configuration options. There is also the [#commitlint](https://node-tooling.slack.com/messages/C7M8XJ4RL/) channel on the DevTools Slack workspace. Join us there and we'll do our best to help you with your migration. @@ -158,7 +158,7 @@ echo 'module.exports = {extends: ["@commitlint/config-conventional"]};'; #### Config -- `config-angular` dropped support for the `chore` type, breaking compat with conventional-changelog, +- `config-angular` dropped support for the `chore` type, breaking compatibility with conventional-changelog, use `config-conventional` instead. ## Version 7 to 8 diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000000..679b906c09 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,104 @@ +import typescriptEslint from '@typescript-eslint/eslint-plugin'; +import { createTypeScriptImportResolver } from 'eslint-import-resolver-typescript'; +import vitest from '@vitest/eslint-plugin'; +import { importX } from 'eslint-plugin-import-x'; +import globals from 'globals'; +import tsParser from '@typescript-eslint/parser'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; +import js from '@eslint/js'; +import { FlatCompat } from '@eslint/eslintrc'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); +const compat = new FlatCompat({ + baseDirectory: __dirname, + recommendedConfig: js.configs.recommended, + allConfig: js.configs.all, +}); + +export default [ + { + ignores: ['**/lib/', '**/coverage/', '**/node_modules/', '**/fixtures/', '**/dist/'], + }, + importX.flatConfigs.typescript, + ...compat.extends('eslint:recommended', 'prettier'), + { + plugins: { + '@typescript-eslint': typescriptEslint, + }, + settings: { + 'import-x/resolver-next': createTypeScriptImportResolver(), + }, + languageOptions: { + globals: { + ...globals.node, + ...vitest.environments.env.globals + }, + ecmaVersion: 11, + sourceType: 'module', + + parserOptions: { + ecmaFeatures: { + jsx: false, + }, + }, + }, + rules: { + 'import-x/first': 'error', + 'import-x/no-absolute-path': 'error', + 'import-x/no-amd': 'error', + 'import-x/no-mutable-exports': 'error', + 'import-x/no-named-default': 'error', + 'import-x/no-self-import': 'error', + 'import-x/no-extraneous-dependencies': [ + 'error', + { + devDependencies: true, + }, + ], + }, + }, + ...compat + .extends( + 'plugin:@typescript-eslint/eslint-recommended', + 'plugin:@typescript-eslint/recommended', + 'prettier' + ) + .map((config) => ({ + ...config, + files: ['**/*.cts', '**/*.ts'], + })), + { + files: ['**/*.cts', '**/*.ts'], + languageOptions: { + parser: tsParser, + }, + rules: { + '@typescript-eslint/no-unused-vars': 'off', + '@typescript-eslint/no-use-before-define': 'off', + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/explicit-function-return-type': 'off', + '@typescript-eslint/no-var-requires': 'off', + '@typescript-eslint/no-inferrable-types': 'off', + '@typescript-eslint/no-non-null-assertion': 'off', + '@typescript-eslint/triple-slash-reference': 'off', + 'no-empty': 'off', + 'no-var': 'off', + }, + }, + { + files: ['**/*.test.ts', '**/*.test.js'], + plugins: { + vitest, + }, + rules: { + ...vitest.configs.recommended.rules, + 'vitest/max-nested-describe': ['error', { max: 3 }], + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/no-var-requires': 'off', + 'import-x/first': 'off', + 'import-x/no-extraneous-dependencies': 'off', + }, + }, +]; diff --git a/jest.config.js b/jest.config.js deleted file mode 100644 index 435230a5c9..0000000000 --- a/jest.config.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - preset: 'ts-jest/presets/js-with-babel', - testEnvironment: '@commitlint/test-environment', - testRegex: undefined, - testMatch: ['**/*.test.[jt]s?(x)'], -}; diff --git a/lerna.json b/lerna.json index 37a5a4a16a..b007de9a8f 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,4 @@ { - "lerna": "4", "npmClient": "yarn", - "useWorkspaces": true, - "version": "13.1.0" + "version": "20.1.0" } diff --git a/package.json b/package.json index 20676f1239..52b962b4e0 100644 --- a/package.json +++ b/package.json @@ -2,6 +2,7 @@ "name": "@commitlint/root", "description": "Lint commit messages", "private": true, + "type": "module", "version": "1.0.0", "license": "MIT", "scripts": { @@ -11,28 +12,25 @@ "commit": "node @commitlint/prompt-cli/cli.js", "deps": "lerna run deps", "pkg": "lerna run pkg", - "docs": "docsify serve docs", - "lint": "eslint . --ext .js,.ts", - "lint-fix": "eslint . --ext .js,.ts --fix", - "format": "prettier **/*.{ts,js,json,yml,md} -l", - "format-fix": "prettier **/*.{ts,js,json,yml,md} --write", + "docs-dev": "vitepress dev docs", + "docs-build": "vitepress build docs", + "docs-preview": "vitepress preview docs", + "lint": "eslint", + "lint-fix": "eslint --fix", + "format": "prettier **/*.{ts,js,json,yml,md} --check", + "format-fix": "prettier \"**/*.{ts,js,json,yml,md}\" --write", "publish": "lerna publish --conventional-commits", "reinstall": "yarn clean && yarn install", "start": "yarn watch", - "test": "jest", - "test-ci": "jest --runInBand", - "postinstall": "yarn husky install" + "test": "cross-env HOME=$PWD LANG=en_US.UTF-8 NO_COLOR=1 vitest run --coverage", + "prepare": "husky" }, "commitlint": { "extends": [ - "./@commitlint/config-conventional", - "./@commitlint/config-lerna-scopes" + "@commitlint/config-conventional", + "@commitlint/config-workspace-scopes" ] }, - "prettier": { - "singleQuote": true, - "bracketSpacing": false - }, "lint-staged": { "*.{ts,js,json,yml,md}": [ "prettier --write" @@ -60,7 +58,8 @@ "@packages/*" ], "engines": { - "node": ">=10" + "node": ">=v18", + "npm": ">=7" }, "repository": { "type": "git", @@ -83,27 +82,27 @@ "email": "hello@herebecode.com" }, "devDependencies": { - "@babel/core": "^7.12.10", - "@babel/preset-env": "^7.12.11", - "@lerna/project": "4.0.0", - "@types/jest": "26.0.24", - "@types/node": "12.20.17", - "@typescript-eslint/eslint-plugin": "^4.1.0", - "@typescript-eslint/parser": "^4.1.0", - "docsify-cli": "^4.4.3", - "eslint": "^7.0.0", - "eslint-config-prettier": "^8.0.0", - "eslint-plugin-import": "^2.20.1", - "eslint-plugin-jest": "^24.0.0", - "husky": "^7.0.0", - "jest": "27.0.6", - "lerna": "^4.0.0", - "lint-staged": "11.1.1", - "prettier": "^2.0.5", - "ts-jest": "27.0.4", - "typescript": "4.3.5" - }, - "resolutions": { - "**/lodash": "^4.17.19" + "@eslint/eslintrc": "^3.1.0", + "@eslint/js": "^9.16.0", + "@swc/core": "^1.10.1", + "@typescript-eslint/eslint-plugin": "^8.18.0", + "@typescript-eslint/parser": "^8.18.0", + "@vitest/coverage-istanbul": "^3.0.0", + "@vitest/eslint-plugin": "^1.3.4", + "cross-env": "^7.0.3", + "eslint": "^9.16.0", + "eslint-config-prettier": "^10.0.0", + "eslint-import-resolver-typescript": "^4.4.3", + "eslint-plugin-import-x": "^4.15.2", + "globals": "^16.0.0", + "husky": "^9.1.5", + "lerna": "^8.2.0", + "lint-staged": "16.1.2", + "prettier": "^3.5.3", + "typescript": "^5.2.2", + "vitepress": "^1.3.4", + "vitepress-plugin-tabs": "^0.7.0", + "vitest": "^3.0.0", + "vue": "^3.5.0" } } diff --git a/tsconfig.json b/tsconfig.json index 4a7263020b..305b3ae79a 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,27 +1,34 @@ { - "files": [], - "include": [], "extends": "./tsconfig.shared.json", + "files": [], + "include": ["./**/*.test.ts", "./**/*-test.ts"], + "exclude": ["./**/lib/*.ts"], + "compilerOptions": { + "noEmit": true + }, "references": [ - {"path": "@packages/test-environment"}, - {"path": "@packages/test"}, - {"path": "@commitlint/ensure"}, - {"path": "@commitlint/execute-rule"}, - {"path": "@commitlint/format"}, - {"path": "@commitlint/is-ignored"}, - {"path": "@commitlint/load"}, - {"path": "@commitlint/message"}, - {"path": "@commitlint/parse"}, - {"path": "@commitlint/resolve-extends"}, - {"path": "@commitlint/to-lines"}, - {"path": "@commitlint/top-level"}, - {"path": "@commitlint/read"}, - {"path": "@commitlint/rules"}, - {"path": "@commitlint/lint"}, - {"path": "@commitlint/core"}, - {"path": "@commitlint/cli"}, - {"path": "@commitlint/travis-cli"}, - {"path": "@commitlint/prompt"}, - {"path": "@commitlint/cz-commitlint"} + { "path": "@packages/test-environment" }, + { "path": "@packages/test" }, + { "path": "@commitlint/config-validator" }, + { "path": "@commitlint/ensure" }, + { "path": "@commitlint/execute-rule" }, + { "path": "@commitlint/format" }, + { "path": "@commitlint/is-ignored" }, + { "path": "@commitlint/load" }, + { "path": "@commitlint/message" }, + { "path": "@commitlint/parse" }, + { "path": "@commitlint/resolve-extends" }, + { "path": "@commitlint/to-lines" }, + { "path": "@commitlint/top-level" }, + { "path": "@commitlint/read" }, + { "path": "@commitlint/rules" }, + { "path": "@commitlint/lint" }, + { "path": "@commitlint/core" }, + { "path": "@commitlint/cli" }, + { "path": "@commitlint/travis-cli" }, + { "path": "@commitlint/prompt" }, + { "path": "@commitlint/cz-commitlint" }, + { "path": "@commitlint/config-conventional" }, + { "path": "@commitlint/config-pnpm-scopes" } ] } diff --git a/tsconfig.shared.json b/tsconfig.shared.json index ad1bb5892d..150d512559 100644 --- a/tsconfig.shared.json +++ b/tsconfig.shared.json @@ -1,12 +1,14 @@ { "compilerOptions": { - "target": "ES2017", - "lib": ["es2017"], + "target": "ES2022", + "lib": ["es2022"], "declaration": true, "declarationMap": true, "sourceMap": true, - "module": "commonjs", + "module": "NodeNext", + "moduleResolution": "NodeNext", "esModuleInterop": true, + "resolveJsonModule": true, "allowSyntheticDefaultImports": true, "strict": true, "allowUnreachableCode": false, @@ -14,7 +16,6 @@ "noUnusedLocals": true, "noUnusedParameters": true, "forceConsistentCasingInFileNames": true, - "keyofStringsOnly": true, "noFallthroughCasesInSwitch": true, "isolatedModules": true, "skipLibCheck": true, diff --git a/vitest.config.ts b/vitest.config.ts new file mode 100644 index 0000000000..cd76172eba --- /dev/null +++ b/vitest.config.ts @@ -0,0 +1,12 @@ +import { defineConfig } from "vitest/config"; + +export default defineConfig({ + test: { + exclude: ["**/node_modules/**", "**/lib/*.test.js"], + environment: "commitlint", + coverage: { + provider: "istanbul", + include: ["**/@commitlint/*/src/**"], + }, + }, +}); diff --git a/yarn.lock b/yarn.lock index 1ac8996319..ee8f87e867 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,2724 +2,2523 @@ # yarn lockfile v1 -"@babel/code-frame@7.12.11": - version "7.12.11" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" - integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== - dependencies: - "@babel/highlight" "^7.10.4" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.11": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658" - integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g== - dependencies: - "@babel/highlight" "^7.12.13" - -"@babel/code-frame@^7.12.13", "@babel/code-frame@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb" - integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw== - dependencies: - "@babel/highlight" "^7.14.5" - -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.14.5", "@babel/compat-data@^7.14.7": - version "7.14.7" - resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.7.tgz#7b047d7a3a89a67d2258dc61f604f098f1bc7e08" - integrity sha512-nS6dZaISCXJ3+518CWiBfEr//gHyMO02uDxBkXTKZDN5POruCnOZ1N4YBRZDCabwF8nZMWBpRxIicmXtBs+fvw== - -"@babel/core@^7.1.0", "@babel/core@^7.7.5": - version "7.12.10" - resolved "https://registry.npmjs.org/@babel/core/-/core-7.12.10.tgz#b79a2e1b9f70ed3d84bbfb6d8c4ef825f606bccd" - integrity sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.12.10" - "@babel/helper-module-transforms" "^7.12.1" - "@babel/helpers" "^7.12.5" - "@babel/parser" "^7.12.10" - "@babel/template" "^7.12.7" - "@babel/traverse" "^7.12.10" - "@babel/types" "^7.12.10" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.1" - json5 "^2.1.2" - lodash "^4.17.19" - semver "^5.4.1" - source-map "^0.5.0" - -"@babel/core@^7.12.10": - version "7.14.8" - resolved "https://registry.npmjs.org/@babel/core/-/core-7.14.8.tgz#20cdf7c84b5d86d83fac8710a8bc605a7ba3f010" - integrity sha512-/AtaeEhT6ErpDhInbXmjHcUQXH0L0TEgscfcxk1qbOvLuKCa5aZT0SOOtDKFY96/CLROwbLSKyFor6idgNaU4Q== - dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/generator" "^7.14.8" - "@babel/helper-compilation-targets" "^7.14.5" - "@babel/helper-module-transforms" "^7.14.8" - "@babel/helpers" "^7.14.8" - "@babel/parser" "^7.14.8" - "@babel/template" "^7.14.5" - "@babel/traverse" "^7.14.8" - "@babel/types" "^7.14.8" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.1.2" - semver "^6.3.0" - source-map "^0.5.0" - -"@babel/core@^7.7.2": - version "7.14.3" - resolved "https://registry.npmjs.org/@babel/core/-/core-7.14.3.tgz#5395e30405f0776067fbd9cf0884f15bfb770a38" - integrity sha512-jB5AmTKOCSJIZ72sd78ECEhuPiDMKlQdDI/4QRI6lzYATx5SSogS1oQA2AoPecRCknm30gHi2l+QVvNUu3wZAg== - dependencies: - "@babel/code-frame" "^7.12.13" - "@babel/generator" "^7.14.3" - "@babel/helper-compilation-targets" "^7.13.16" - "@babel/helper-module-transforms" "^7.14.2" - "@babel/helpers" "^7.14.0" - "@babel/parser" "^7.14.3" - "@babel/template" "^7.12.13" - "@babel/traverse" "^7.14.2" - "@babel/types" "^7.14.2" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.1.2" - semver "^6.3.0" - source-map "^0.5.0" - -"@babel/generator@^7.12.10", "@babel/generator@^7.12.11": - version "7.12.15" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.12.15.tgz#4617b5d0b25cc572474cc1aafee1edeaf9b5368f" - integrity sha512-6F2xHxBiFXWNSGb7vyCUTBF8RCLY66rS0zEPcP8t/nQyXjha5EuK4z7H5o7fWG8B4M7y6mqVWq1J+1PuwRhecQ== - dependencies: - "@babel/types" "^7.12.13" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/generator@^7.12.13": - version "7.12.17" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.12.17.tgz#9ef1dd792d778b32284411df63f4f668a9957287" - integrity sha512-DSA7ruZrY4WI8VxuS1jWSRezFnghEoYEFrZcw9BizQRmOZiUsiHl59+qEARGPqPikwA/GPTyRCi7isuCK/oyqg== - dependencies: - "@babel/types" "^7.12.17" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/generator@^7.13.0": - version "7.13.9" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz#3a7aa96f9efb8e2be42d38d80e2ceb4c64d8de39" - integrity sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw== - dependencies: - "@babel/types" "^7.13.0" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/generator@^7.14.2", "@babel/generator@^7.14.3": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz#848d7b9f031caca9d0cd0af01b063f226f52d785" - integrity sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA== - dependencies: - "@babel/types" "^7.14.5" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/generator@^7.14.5", "@babel/generator@^7.14.8": - version "7.14.8" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.14.8.tgz#bf86fd6af96cf3b74395a8ca409515f89423e070" - integrity sha512-cYDUpvIzhBVnMzRoY1fkSEhK/HmwEVwlyULYgn/tMQYd6Obag3ylCjONle3gdErfXBW61SVTlR9QR7uWlgeIkg== - dependencies: - "@babel/types" "^7.14.8" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/generator@^7.7.2": - version "7.14.3" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.14.3.tgz#0c2652d91f7bddab7cccc6ba8157e4f40dcedb91" - integrity sha512-bn0S6flG/j0xtQdz3hsjJ624h3W0r3llttBMfyHX3YrZ/KtLYr15bjA0FXkgW7FpvrDuTuElXeVjiKlYRpnOFA== - dependencies: - "@babel/types" "^7.14.2" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/helper-annotate-as-pure@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.14.5.tgz#7bf478ec3b71726d56a8ca5775b046fc29879e61" - integrity sha512-EivH9EgBIb+G8ij1B2jAwSH36WnGvkQSEC6CkX/6v6ZFlw5fVOHvsgGF4uiEHO2GzMvunZb6tDLQEQSdrdocrA== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.14.5.tgz#b939b43f8c37765443a19ae74ad8b15978e0a191" - integrity sha512-YTA/Twn0vBXDVGJuAX6PwW7x5zQei1luDDo2Pl6q1qZ7hVNl0RZrhHCQG/ArGpR29Vl7ETiB8eJyrvpuRp300w== - dependencies: - "@babel/helper-explode-assignable-expression" "^7.14.5" - "@babel/types" "^7.14.5" - -"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.13.16", "@babel/helper-compilation-targets@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.5.tgz#7a99c5d0967911e972fe2c3411f7d5b498498ecf" - integrity sha512-v+QtZqXEiOnpO6EYvlImB6zCD2Lel06RzOPzmkz/D/XgQiUu3C/Jb1LOqSt/AIA34TYi/Q+KlT8vTQrgdxkbLw== - dependencies: - "@babel/compat-data" "^7.14.5" - "@babel/helper-validator-option" "^7.14.5" - browserslist "^4.16.6" - semver "^6.3.0" - -"@babel/helper-create-class-features-plugin@^7.14.5": - version "7.14.8" - resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.8.tgz#a6f8c3de208b1e5629424a9a63567f56501955fc" - integrity sha512-bpYvH8zJBWzeqi1o+co8qOrw+EXzQ/0c74gVmY205AWXy9nifHrOg77y+1zwxX5lXE7Icq4sPlSQ4O2kWBrteQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.14.5" - "@babel/helper-function-name" "^7.14.5" - "@babel/helper-member-expression-to-functions" "^7.14.7" - "@babel/helper-optimise-call-expression" "^7.14.5" - "@babel/helper-replace-supers" "^7.14.5" - "@babel/helper-split-export-declaration" "^7.14.5" - -"@babel/helper-create-regexp-features-plugin@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.5.tgz#c7d5ac5e9cf621c26057722fb7a8a4c5889358c4" - integrity sha512-TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A== - dependencies: - "@babel/helper-annotate-as-pure" "^7.14.5" - regexpu-core "^4.7.1" - -"@babel/helper-define-polyfill-provider@^0.2.2": - version "0.2.3" - resolved "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz#0525edec5094653a282688d34d846e4c75e9c0b6" - integrity sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew== - dependencies: - "@babel/helper-compilation-targets" "^7.13.0" - "@babel/helper-module-imports" "^7.12.13" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/traverse" "^7.13.0" - debug "^4.1.1" - lodash.debounce "^4.0.8" - resolve "^1.14.2" - semver "^6.1.2" - -"@babel/helper-explode-assignable-expression@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.14.5.tgz#8aa72e708205c7bb643e45c73b4386cdf2a1f645" - integrity sha512-Htb24gnGJdIGT4vnRKMdoXiOIlqOLmdiUYpAQ0mYfgVT/GDm8GOYhgi4GL+hMKrkiPRohO4ts34ELFsGAPQLDQ== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-function-name@^7.12.11": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz#93ad656db3c3c2232559fd7b2c3dbdcbe0eb377a" - integrity sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA== - dependencies: - "@babel/helper-get-function-arity" "^7.12.13" - "@babel/template" "^7.12.13" - "@babel/types" "^7.12.13" - -"@babel/helper-function-name@^7.12.13", "@babel/helper-function-name@^7.14.2", "@babel/helper-function-name@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz#89e2c474972f15d8e233b52ee8c480e2cfcd50c4" - integrity sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ== - dependencies: - "@babel/helper-get-function-arity" "^7.14.5" - "@babel/template" "^7.14.5" - "@babel/types" "^7.14.5" - -"@babel/helper-get-function-arity@^7.12.13", "@babel/helper-get-function-arity@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz#25fbfa579b0937eee1f3b805ece4ce398c431815" - integrity sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-hoist-variables@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz#e0dd27c33a78e577d7c8884916a3e7ef1f7c7f8d" - integrity sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-member-expression-to-functions@^7.14.5", "@babel/helper-member-expression-to-functions@^7.14.7": - version "7.14.7" - resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.14.7.tgz#97e56244beb94211fe277bd818e3a329c66f7970" - integrity sha512-TMUt4xKxJn6ccjcOW7c4hlwyJArizskAhoSTOCkA0uZ+KghIaci0Qg9R043kUMWI9mtQfgny+NQ5QATnZ+paaA== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz#6d1a44df6a38c957aa7c312da076429f11b422f3" - integrity sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-module-transforms@^7.12.1": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.13.tgz#01afb052dcad2044289b7b20beb3fa8bd0265bea" - integrity sha512-acKF7EjqOR67ASIlDTupwkKM1eUisNAjaSduo5Cz+793ikfnpe7p4Q7B7EWU2PCoSTPWsQkR7hRUWEIZPiVLGA== - dependencies: - "@babel/helper-module-imports" "^7.12.13" - "@babel/helper-replace-supers" "^7.12.13" - "@babel/helper-simple-access" "^7.12.13" - "@babel/helper-split-export-declaration" "^7.12.13" - "@babel/helper-validator-identifier" "^7.12.11" - "@babel/template" "^7.12.13" - "@babel/traverse" "^7.12.13" - "@babel/types" "^7.12.13" - lodash "^4.17.19" - -"@babel/helper-module-transforms@^7.14.2": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.5.tgz#7de42f10d789b423eb902ebd24031ca77cb1e10e" - integrity sha512-iXpX4KW8LVODuAieD7MzhNjmM6dzYY5tfRqT+R9HDXWl0jPn/djKmA+G9s/2C2T9zggw5tK1QNqZ70USfedOwA== - dependencies: - "@babel/helper-module-imports" "^7.14.5" - "@babel/helper-replace-supers" "^7.14.5" - "@babel/helper-simple-access" "^7.14.5" - "@babel/helper-split-export-declaration" "^7.14.5" - "@babel/helper-validator-identifier" "^7.14.5" - "@babel/template" "^7.14.5" - "@babel/traverse" "^7.14.5" - "@babel/types" "^7.14.5" - -"@babel/helper-module-transforms@^7.14.5", "@babel/helper-module-transforms@^7.14.8": - version "7.14.8" - resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.8.tgz#d4279f7e3fd5f4d5d342d833af36d4dd87d7dc49" - integrity sha512-RyE+NFOjXn5A9YU1dkpeBaduagTlZ0+fccnIcAGbv1KGUlReBj7utF7oEth8IdIBQPcux0DDgW5MFBH2xu9KcA== - dependencies: - "@babel/helper-module-imports" "^7.14.5" - "@babel/helper-replace-supers" "^7.14.5" - "@babel/helper-simple-access" "^7.14.8" - "@babel/helper-split-export-declaration" "^7.14.5" - "@babel/helper-validator-identifier" "^7.14.8" - "@babel/template" "^7.14.5" - "@babel/traverse" "^7.14.8" - "@babel/types" "^7.14.8" - -"@babel/helper-optimise-call-expression@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz#f27395a8619e0665b3f0364cddb41c25d71b499c" - integrity sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9" - integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ== - -"@babel/helper-remap-async-to-generator@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.14.5.tgz#51439c913612958f54a987a4ffc9ee587a2045d6" - integrity sha512-rLQKdQU+HYlxBwQIj8dk4/0ENOUEhA/Z0l4hN8BexpvmSMN9oA9EagjnhnDpNsRdWCfjwa4mn/HyBXO9yhQP6A== - dependencies: - "@babel/helper-annotate-as-pure" "^7.14.5" - "@babel/helper-wrap-function" "^7.14.5" - "@babel/types" "^7.14.5" - -"@babel/helper-replace-supers@^7.12.13", "@babel/helper-replace-supers@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.14.5.tgz#0ecc0b03c41cd567b4024ea016134c28414abb94" - integrity sha512-3i1Qe9/8x/hCHINujn+iuHy+mMRLoc77b2nI9TB0zjH1hvn9qGlXjWlggdwUcju36PkPCy/lpM7LLUdcTyH4Ow== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.14.5" - "@babel/helper-optimise-call-expression" "^7.14.5" - "@babel/traverse" "^7.14.5" - "@babel/types" "^7.14.5" - -"@babel/helper-simple-access@^7.12.13": - version "7.13.12" - resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz#dd6c538afb61819d205a012c31792a39c7a5eaf6" - integrity sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA== - dependencies: - "@babel/types" "^7.13.12" - -"@babel/helper-simple-access@^7.14.5", "@babel/helper-simple-access@^7.14.8": - version "7.14.8" - resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.8.tgz#82e1fec0644a7e775c74d305f212c39f8fe73924" - integrity sha512-TrFN4RHh9gnWEU+s7JloIho2T76GPwRHhdzOWLqTrMnlas8T9O7ec+oEDNsRXndOmru9ymH9DFrEOxpzPoSbdg== - dependencies: - "@babel/types" "^7.14.8" - -"@babel/helper-skip-transparent-expression-wrappers@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.14.5.tgz#96f486ac050ca9f44b009fbe5b7d394cab3a0ee4" - integrity sha512-dmqZB7mrb94PZSAOYtr+ZN5qt5owZIAgqtoTuqiFbHFtxgEcmQlRJVI+bO++fciBunXtB6MK7HrzrfcAzIz2NQ== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-split-export-declaration@^7.12.11": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz#e9430be00baf3e88b0e13e6f9d4eaf2136372b05" - integrity sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-split-export-declaration@^7.12.13", "@babel/helper-split-export-declaration@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz#22b23a54ef51c2b7605d851930c1976dd0bc693a" - integrity sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-validator-identifier@^7.12.11": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz#d0f0e277c512e0c938277faa85a3968c9a44c0e8" - integrity sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg== - -"@babel/helper-validator-identifier@^7.14.5", "@babel/helper-validator-identifier@^7.14.8": - version "7.14.8" - resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.8.tgz#32be33a756f29e278a0d644fa08a2c9e0f88a34c" - integrity sha512-ZGy6/XQjllhYQrNw/3zfWRwZCTVSiBLZ9DHVZxn9n2gip/7ab8mv2TWlKPIBk26RwedCBoWdjLmn+t9na2Gcow== - -"@babel/helper-validator-option@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" - integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow== - -"@babel/helper-wrap-function@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.14.5.tgz#5919d115bf0fe328b8a5d63bcb610f51601f2bff" - integrity sha512-YEdjTCq+LNuNS1WfxsDCNpgXkJaIyqco6DAelTUjT4f2KIWC1nBcaCaSdHTBqQVLnTBexBcVcFhLSU1KnYuePQ== - dependencies: - "@babel/helper-function-name" "^7.14.5" - "@babel/template" "^7.14.5" - "@babel/traverse" "^7.14.5" - "@babel/types" "^7.14.5" - -"@babel/helpers@^7.12.5": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.13.tgz#3c75e993632e4dadc0274eae219c73eb7645ba47" - integrity sha512-oohVzLRZ3GQEk4Cjhfs9YkJA4TdIDTObdBEZGrd6F/T0GPSnuV6l22eMcxlvcvzVIPH3VTtxbseudM1zIE+rPQ== - dependencies: - "@babel/template" "^7.12.13" - "@babel/traverse" "^7.12.13" - "@babel/types" "^7.12.13" - -"@babel/helpers@^7.14.0": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.5.tgz#4870f8d9a6fdbbd65e5674a3558b4ff7fef0d9b2" - integrity sha512-xtcWOuN9VL6nApgVHtq3PPcQv5qFBJzoSZzJ/2c0QK/IP/gxVcoWSNQwFEGvmbQsuS9rhYqjILDGGXcTkA705Q== - dependencies: - "@babel/template" "^7.14.5" - "@babel/traverse" "^7.14.5" - "@babel/types" "^7.14.5" - -"@babel/helpers@^7.14.8": - version "7.14.8" - resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.8.tgz#839f88f463025886cff7f85a35297007e2da1b77" - integrity sha512-ZRDmI56pnV+p1dH6d+UN6GINGz7Krps3+270qqI9UJ4wxYThfAIcI5i7j5vXC4FJ3Wap+S9qcebxeYiqn87DZw== - dependencies: - "@babel/template" "^7.14.5" - "@babel/traverse" "^7.14.8" - "@babel/types" "^7.14.8" - -"@babel/highlight@^7.10.4", "@babel/highlight@^7.12.13", "@babel/highlight@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" - integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== - dependencies: - "@babel/helper-validator-identifier" "^7.14.5" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.7.5": - version "7.12.11" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.12.11.tgz#9ce3595bcd74bc5c466905e86c535b8b25011e79" - integrity sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg== - -"@babel/parser@^7.12.10", "@babel/parser@^7.12.11", "@babel/parser@^7.12.7": - version "7.12.15" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.12.15.tgz#2b20de7f0b4b332d9b119dd9c33409c538b8aacf" - integrity sha512-AQBOU2Z9kWwSZMd6lNjCX0GUgFonL1wAM1db8L8PMk9UDaGsRCArBkU4Sc+UCM3AE4hjbXx+h58Lb3QT4oRmrA== - -"@babel/parser@^7.12.13", "@babel/parser@^7.14.2", "@babel/parser@^7.14.3": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.14.5.tgz#4cd2f346261061b2518873ffecdf1612cb032829" - integrity sha512-TM8C+xtH/9n1qzX+JNHi7AN2zHMTiPUtspO0ZdHflW8KaskkALhMmuMHb4bCmNdv9VAPzJX3/bXqkVLnAvsPfg== - -"@babel/parser@^7.13.0": - version "7.13.13" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.13.13.tgz#42f03862f4aed50461e543270916b47dd501f0df" - integrity sha512-OhsyMrqygfk5v8HmWwOzlYjJrtLaFhF34MrfG/Z73DgYCI6ojNUTUp2TYbtnjo8PegeJp12eamsNettCQjKjVw== - -"@babel/parser@^7.14.5", "@babel/parser@^7.14.8": - version "7.14.8" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.14.8.tgz#66fd41666b2d7b840bd5ace7f7416d5ac60208d4" - integrity sha512-syoCQFOoo/fzkWDeM0dLEZi5xqurb5vuyzwIMNZRNun+N/9A4cUZeQaE7dTrB8jGaKuJRBtEOajtnmw0I5hvvA== - -"@babel/parser@^7.7.2": - version "7.14.3" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.14.3.tgz#9b530eecb071fd0c93519df25c5ff9f14759f298" - integrity sha512-7MpZDIfI7sUC5zWo2+foJ50CSI5lcqDehZ0lVgIhSi4bFEk94fLAKlF3Q0nzSQQ+ca0lm+O6G9ztKVBeu8PMRQ== - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.14.5.tgz#4b467302e1548ed3b1be43beae2cc9cf45e0bb7e" - integrity sha512-ZoJS2XCKPBfTmL122iP6NM9dOg+d4lc9fFk3zxc8iDjvt8Pk4+TlsHSKhIPf6X+L5ORCdBzqMZDjL/WHj7WknQ== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.14.5" - "@babel/plugin-proposal-optional-chaining" "^7.14.5" - -"@babel/plugin-proposal-async-generator-functions@^7.14.7": - version "7.14.7" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.14.7.tgz#784a48c3d8ed073f65adcf30b57bcbf6c8119ace" - integrity sha512-RK8Wj7lXLY3bqei69/cc25gwS5puEc3dknoFPFbqfy3XxYQBQFvu4ioWpafMBAB+L9NyptQK4nMOa5Xz16og8Q== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-remap-async-to-generator" "^7.14.5" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-proposal-class-properties@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz#40d1ee140c5b1e31a350f4f5eed945096559b42e" - integrity sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-proposal-class-static-block@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.14.5.tgz#158e9e10d449c3849ef3ecde94a03d9f1841b681" - integrity sha512-KBAH5ksEnYHCegqseI5N9skTdxgJdmDoAOc0uXa+4QMYKeZD0w5IARh4FMlTNtaHhbB8v+KzMdTgxMMzsIy6Yg== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - -"@babel/plugin-proposal-dynamic-import@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.5.tgz#0c6617df461c0c1f8fff3b47cd59772360101d2c" - integrity sha512-ExjiNYc3HDN5PXJx+bwC50GIx/KKanX2HiggnIUAYedbARdImiCU4RhhHfdf0Kd7JNXGpsBBBCOm+bBVy3Gb0g== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - -"@babel/plugin-proposal-export-namespace-from@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.5.tgz#dbad244310ce6ccd083072167d8cea83a52faf76" - integrity sha512-g5POA32bXPMmSBu5Dx/iZGLGnKmKPc5AiY7qfZgurzrCYgIztDlHFbznSNCoQuv57YQLnQfaDi7dxCtLDIdXdA== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - -"@babel/plugin-proposal-json-strings@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.5.tgz#38de60db362e83a3d8c944ac858ddf9f0c2239eb" - integrity sha512-NSq2fczJYKVRIsUJyNxrVUMhB27zb7N7pOFGQOhBKJrChbGcgEAqyZrmZswkPk18VMurEeJAaICbfm57vUeTbQ== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-json-strings" "^7.8.3" - -"@babel/plugin-proposal-logical-assignment-operators@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.5.tgz#6e6229c2a99b02ab2915f82571e0cc646a40c738" - integrity sha512-YGn2AvZAo9TwyhlLvCCWxD90Xq8xJ4aSgaX3G5D/8DW94L8aaT+dS5cSP+Z06+rCJERGSr9GxMBZ601xoc2taw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - -"@babel/plugin-proposal-nullish-coalescing-operator@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz#ee38589ce00e2cc59b299ec3ea406fcd3a0fdaf6" - integrity sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-proposal-numeric-separator@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.5.tgz#83631bf33d9a51df184c2102a069ac0c58c05f18" - integrity sha512-yiclALKe0vyZRZE0pS6RXgjUOt87GWv6FYa5zqj15PvhOGFO69R5DusPlgK/1K5dVnCtegTiWu9UaBSrLLJJBg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-proposal-object-rest-spread@^7.14.7": - version "7.14.7" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.14.7.tgz#5920a2b3df7f7901df0205974c0641b13fd9d363" - integrity sha512-082hsZz+sVabfmDWo1Oct1u1AgbKbUAyVgmX4otIc7bdsRgHBXwTwb3DpDmD4Eyyx6DNiuz5UAATT655k+kL5g== - dependencies: - "@babel/compat-data" "^7.14.7" - "@babel/helper-compilation-targets" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.14.5" - -"@babel/plugin-proposal-optional-catch-binding@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.5.tgz#939dd6eddeff3a67fdf7b3f044b5347262598c3c" - integrity sha512-3Oyiixm0ur7bzO5ybNcZFlmVsygSIQgdOa7cTfOYCMY+wEPAYhZAJxi3mixKFCTCKUhQXuCTtQ1MzrpL3WT8ZQ== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - -"@babel/plugin-proposal-optional-chaining@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz#fa83651e60a360e3f13797eef00b8d519695b603" - integrity sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.14.5" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -"@babel/plugin-proposal-private-methods@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.14.5.tgz#37446495996b2945f30f5be5b60d5e2aa4f5792d" - integrity sha512-838DkdUA1u+QTCplatfq4B7+1lnDa/+QMI89x5WZHBcnNv+47N8QEj2k9I2MUU9xIv8XJ4XvPCviM/Dj7Uwt9g== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-proposal-private-property-in-object@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.14.5.tgz#9f65a4d0493a940b4c01f8aa9d3f1894a587f636" - integrity sha512-62EyfyA3WA0mZiF2e2IV9mc9Ghwxcg8YTu8BS4Wss4Y3PY725OmS9M0qLORbJwLqFtGh+jiE4wAmocK2CTUK2Q== - dependencies: - "@babel/helper-annotate-as-pure" "^7.14.5" - "@babel/helper-create-class-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - -"@babel/plugin-proposal-unicode-property-regex@^7.14.5", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz#0f95ee0e757a5d647f378daa0eca7e93faa8bbe8" - integrity sha512-6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-bigint@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" - integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" - integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-class-properties@^7.8.3": - version "7.12.1" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz#bcb297c5366e79bebadef509549cd93b04f19978" - integrity sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-class-static-block@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" - integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-dynamic-import@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" - integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-export-namespace-from@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" - integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-import-meta@^7.8.3": - version "7.10.4" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" - integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": - version "7.10.4" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": - version "7.10.4" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" - integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-private-property-in-object@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" - integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-top-level-await@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" - integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-top-level-await@^7.8.3": - version "7.12.1" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz#dd6c0b357ac1bb142d98537450a319625d13d2a0" - integrity sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-typescript@^7.7.2": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.13.tgz#9dff111ca64154cef0f4dc52cf843d9f12ce4474" - integrity sha512-cHP3u1JiUiG2LFDKbXnwVad81GvfyIOmCD6HIEId6ojrY0Drfy2q1jw7BwN7dE84+kTnBjLkXoL3IEy/3JPu2w== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-arrow-functions@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz#f7187d9588a768dd080bf4c9ffe117ea62f7862a" - integrity sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-async-to-generator@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz#72c789084d8f2094acb945633943ef8443d39e67" - integrity sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA== - dependencies: - "@babel/helper-module-imports" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-remap-async-to-generator" "^7.14.5" - -"@babel/plugin-transform-block-scoped-functions@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz#e48641d999d4bc157a67ef336aeb54bc44fd3ad4" - integrity sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-block-scoping@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.5.tgz#8cc63e61e50f42e078e6f09be775a75f23ef9939" - integrity sha512-LBYm4ZocNgoCqyxMLoOnwpsmQ18HWTQvql64t3GvMUzLQrNoV1BDG0lNftC8QKYERkZgCCT/7J5xWGObGAyHDw== +"@algolia/autocomplete-core@1.17.7": + version "1.17.7" + resolved "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.17.7.tgz#2c410baa94a47c5c5f56ed712bb4a00ebe24088b" + integrity sha512-BjiPOW6ks90UKl7TwMv7oNQMnzU+t/wk9mgIDi6b1tXpUek7MW0lbNOUHpvam9pe3lVCf4xPFT+lK7s+e+fs7Q== + dependencies: + "@algolia/autocomplete-plugin-algolia-insights" "1.17.7" + "@algolia/autocomplete-shared" "1.17.7" + +"@algolia/autocomplete-plugin-algolia-insights@1.17.7": + version "1.17.7" + resolved "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.17.7.tgz#7d2b105f84e7dd8f0370aa4c4ab3b704e6760d82" + integrity sha512-Jca5Ude6yUOuyzjnz57og7Et3aXjbwCSDf/8onLHSQgw1qW3ALl9mrMWaXb5FmPVkV3EtkD2F/+NkT6VHyPu9A== + dependencies: + "@algolia/autocomplete-shared" "1.17.7" + +"@algolia/autocomplete-preset-algolia@1.17.7": + version "1.17.7" + resolved "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.17.7.tgz#c9badc0d73d62db5bf565d839d94ec0034680ae9" + integrity sha512-ggOQ950+nwbWROq2MOCIL71RE0DdQZsceqrg32UqnhDz8FlO9rL8ONHNsI2R1MH0tkgVIDKI/D0sMiUchsFdWA== + dependencies: + "@algolia/autocomplete-shared" "1.17.7" + +"@algolia/autocomplete-shared@1.17.7": + version "1.17.7" + resolved "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.17.7.tgz#105e84ad9d1a31d3fb86ba20dc890eefe1a313a0" + integrity sha512-o/1Vurr42U/qskRSuhBH+VKxMvkkUVTLU6WZQr+L5lGZZLYWyhdzWjW0iGXY7EkwRTjBqvN2EsR81yCTGV/kmg== + +"@algolia/client-abtesting@5.20.3": + version "5.20.3" + resolved "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.20.3.tgz#e4120919292c57270546cdf8f7030ac8f035c9a2" + integrity sha512-wPOzHYSsW+H97JkBLmnlOdJSpbb9mIiuNPycUCV5DgzSkJFaI/OFxXfZXAh1gqxK+hf0miKue1C9bltjWljrNA== + dependencies: + "@algolia/client-common" "5.20.3" + "@algolia/requester-browser-xhr" "5.20.3" + "@algolia/requester-fetch" "5.20.3" + "@algolia/requester-node-http" "5.20.3" + +"@algolia/client-analytics@5.20.3": + version "5.20.3" + resolved "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.20.3.tgz#242d448ee34667a52bf1efe5c39b58546d71201f" + integrity sha512-XE3iduH9lA7iTQacDGofBQyIyIgaX8qbTRRdj1bOCmfzc9b98CoiMwhNwdTifmmMewmN0EhVF3hP8KjKWwX7Yw== + dependencies: + "@algolia/client-common" "5.20.3" + "@algolia/requester-browser-xhr" "5.20.3" + "@algolia/requester-fetch" "5.20.3" + "@algolia/requester-node-http" "5.20.3" + +"@algolia/client-common@5.20.3": + version "5.20.3" + resolved "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.20.3.tgz#7eec522ca18ae446b775092d17d47eecf97c6af9" + integrity sha512-IYRd/A/R3BXeaQVT2805lZEdWo54v39Lqa7ABOxIYnUvX2vvOMW1AyzCuT0U7Q+uPdD4UW48zksUKRixShcWxA== + +"@algolia/client-insights@5.20.3": + version "5.20.3" + resolved "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.20.3.tgz#1bcd9e3090512d3f32e64c2c0b839c7ebfd40574" + integrity sha512-QGc/bmDUBgzB71rDL6kihI2e1Mx6G6PxYO5Ks84iL3tDcIel1aFuxtRF14P8saGgdIe1B6I6QkpkeIddZ6vWQw== + dependencies: + "@algolia/client-common" "5.20.3" + "@algolia/requester-browser-xhr" "5.20.3" + "@algolia/requester-fetch" "5.20.3" + "@algolia/requester-node-http" "5.20.3" + +"@algolia/client-personalization@5.20.3": + version "5.20.3" + resolved "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.20.3.tgz#ca1fe559112bd9aedefa38ca712d69b0bc2bfddf" + integrity sha512-zuM31VNPDJ1LBIwKbYGz/7+CSm+M8EhlljDamTg8AnDilnCpKjBebWZR5Tftv/FdWSro4tnYGOIz1AURQgZ+tQ== + dependencies: + "@algolia/client-common" "5.20.3" + "@algolia/requester-browser-xhr" "5.20.3" + "@algolia/requester-fetch" "5.20.3" + "@algolia/requester-node-http" "5.20.3" + +"@algolia/client-query-suggestions@5.20.3": + version "5.20.3" + resolved "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.20.3.tgz#fed613ab3c7e0be1cb5dcca09fdab65de17e2800" + integrity sha512-Nn872PuOI8qzi1bxMMhJ0t2AzVBqN01jbymBQOkypvZHrrjZPso3iTpuuLLo9gi3yc/08vaaWTAwJfPhxPwJUw== + dependencies: + "@algolia/client-common" "5.20.3" + "@algolia/requester-browser-xhr" "5.20.3" + "@algolia/requester-fetch" "5.20.3" + "@algolia/requester-node-http" "5.20.3" + +"@algolia/client-search@5.20.3": + version "5.20.3" + resolved "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.20.3.tgz#d8ce41dea173112d4a971d697f34145a1354befd" + integrity sha512-9+Fm1ahV8/2goSIPIqZnVitV5yHW5E5xTdKy33xnqGd45A9yVv5tTkudWzEXsbfBB47j9Xb3uYPZjAvV5RHbKA== + dependencies: + "@algolia/client-common" "5.20.3" + "@algolia/requester-browser-xhr" "5.20.3" + "@algolia/requester-fetch" "5.20.3" + "@algolia/requester-node-http" "5.20.3" + +"@algolia/ingestion@1.20.3": + version "1.20.3" + resolved "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.20.3.tgz#32283c2cde45d47b6731bbaaa170703ddf9c3874" + integrity sha512-5GHNTiZ3saLjTNyr6WkP5hzDg2eFFAYWomvPcm9eHWskjzXt8R0IOiW9kkTS6I6hXBwN5H9Zna5mZDSqqJdg+g== + dependencies: + "@algolia/client-common" "5.20.3" + "@algolia/requester-browser-xhr" "5.20.3" + "@algolia/requester-fetch" "5.20.3" + "@algolia/requester-node-http" "5.20.3" + +"@algolia/monitoring@1.20.3": + version "1.20.3" + resolved "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.20.3.tgz#8165d8fbb89134876e9055f3432a3de72dc150bc" + integrity sha512-KUWQbTPoRjP37ivXSQ1+lWMfaifCCMzTnEcEnXwAmherS5Tp7us6BAqQDMGOD4E7xyaS2I8pto6WlOzxH+CxmA== + dependencies: + "@algolia/client-common" "5.20.3" + "@algolia/requester-browser-xhr" "5.20.3" + "@algolia/requester-fetch" "5.20.3" + "@algolia/requester-node-http" "5.20.3" + +"@algolia/recommend@5.20.3": + version "5.20.3" + resolved "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.20.3.tgz#bfe36b49287cdf07ad5369640dd65f4b12117e30" + integrity sha512-oo/gG77xTTTclkrdFem0Kmx5+iSRFiwuRRdxZETDjwzCI7svutdbwBgV/Vy4D4QpYaX4nhY/P43k84uEowCE4Q== + dependencies: + "@algolia/client-common" "5.20.3" + "@algolia/requester-browser-xhr" "5.20.3" + "@algolia/requester-fetch" "5.20.3" + "@algolia/requester-node-http" "5.20.3" + +"@algolia/requester-browser-xhr@5.20.3": + version "5.20.3" + resolved "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.20.3.tgz#7bc054eb70669e601e0b1ab034d360eb44c900b6" + integrity sha512-BkkW7otbiI/Er1AiEPZs1h7lxbtSO9p09jFhv3/iT8/0Yz0CY79VJ9iq+Wv1+dq/l0OxnMpBy8mozrieGA3mXQ== + dependencies: + "@algolia/client-common" "5.20.3" + +"@algolia/requester-fetch@5.20.3": + version "5.20.3" + resolved "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.20.3.tgz#e280a3bd142984a31b172743119f21a3ccef576b" + integrity sha512-eAVlXz7UNzTsA1EDr+p0nlIH7WFxo7k3NMxYe8p38DH8YVWLgm2MgOVFUMNg9HCi6ZNOi/A2w/id2ZZ4sKgUOw== + dependencies: + "@algolia/client-common" "5.20.3" + +"@algolia/requester-node-http@5.20.3": + version "5.20.3" + resolved "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.20.3.tgz#cf06a8568efd7f3ad02414e13f2fa94c15edfc37" + integrity sha512-FqR3pQPfHfQyX1wgcdK6iyqu86yP76MZd4Pzj1y/YLMj9rRmRCY0E0AffKr//nrOFEwv6uY8BQY4fd9/6b0ZCg== + dependencies: + "@algolia/client-common" "5.20.3" + +"@ampproject/remapping@^2.2.0": + version "2.3.0" + resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" + integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.24" -"@babel/plugin-transform-classes@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.14.5.tgz#0e98e82097b38550b03b483f9b51a78de0acb2cf" - integrity sha512-J4VxKAMykM06K/64z9rwiL6xnBHgB1+FVspqvlgCdwD1KUbQNfszeKVVOMh59w3sztHYIZDgnhOC4WbdEfHFDA== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.22.13", "@babel/code-frame@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be" + integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg== dependencies: - "@babel/helper-annotate-as-pure" "^7.14.5" - "@babel/helper-function-name" "^7.14.5" - "@babel/helper-optimise-call-expression" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-replace-supers" "^7.14.5" - "@babel/helper-split-export-declaration" "^7.14.5" + "@babel/helper-validator-identifier" "^7.27.1" + js-tokens "^4.0.0" + picocolors "^1.1.1" + +"@babel/compat-data@^7.27.2": + version "7.27.5" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.5.tgz#7d0658ec1a8420fc866d1df1b03bea0e79934c82" + integrity sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg== + +"@babel/core@^7.23.9": + version "7.27.4" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.27.4.tgz#cc1fc55d0ce140a1828d1dd2a2eba285adbfb3ce" + integrity sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.27.1" + "@babel/generator" "^7.27.3" + "@babel/helper-compilation-targets" "^7.27.2" + "@babel/helper-module-transforms" "^7.27.3" + "@babel/helpers" "^7.27.4" + "@babel/parser" "^7.27.4" + "@babel/template" "^7.27.2" + "@babel/traverse" "^7.27.4" + "@babel/types" "^7.27.3" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/generator@^7.27.3": + version "7.27.5" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.27.5.tgz#3eb01866b345ba261b04911020cbe22dd4be8c8c" + integrity sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw== + dependencies: + "@babel/parser" "^7.27.5" + "@babel/types" "^7.27.3" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^3.0.2" + +"@babel/helper-compilation-targets@^7.27.2": + version "7.27.2" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz#46a0f6efab808d51d29ce96858dd10ce8732733d" + integrity sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ== + dependencies: + "@babel/compat-data" "^7.27.2" + "@babel/helper-validator-option" "^7.27.1" + browserslist "^4.24.0" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-module-imports@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz#7ef769a323e2655e126673bb6d2d6913bbead204" + integrity sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w== + dependencies: + "@babel/traverse" "^7.27.1" + "@babel/types" "^7.27.1" + +"@babel/helper-module-transforms@^7.27.3": + version "7.27.3" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz#db0bbcfba5802f9ef7870705a7ef8788508ede02" + integrity sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg== + dependencies: + "@babel/helper-module-imports" "^7.27.1" + "@babel/helper-validator-identifier" "^7.27.1" + "@babel/traverse" "^7.27.3" + +"@babel/helper-string-parser@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" + integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== + +"@babel/helper-validator-identifier@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8" + integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow== + +"@babel/helper-validator-option@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz#fa52f5b1e7db1ab049445b421c4471303897702f" + integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg== + +"@babel/helpers@^7.27.4": + version "7.27.6" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.6.tgz#6456fed15b2cb669d2d1fabe84b66b34991d812c" + integrity sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug== + dependencies: + "@babel/template" "^7.27.2" + "@babel/types" "^7.27.6" + +"@babel/parser@^7.23.9", "@babel/parser@^7.25.4", "@babel/parser@^7.27.2", "@babel/parser@^7.27.4", "@babel/parser@^7.27.5": + version "7.27.5" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.27.5.tgz#ed22f871f110aa285a6fd934a0efed621d118826" + integrity sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg== + dependencies: + "@babel/types" "^7.27.3" + +"@babel/parser@^7.28.0": + version "7.28.0" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.28.0.tgz#979829fbab51a29e13901e5a80713dbcb840825e" + integrity sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g== + dependencies: + "@babel/types" "^7.28.0" + +"@babel/template@^7.27.2": + version "7.27.2" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz#fa78ceed3c4e7b63ebf6cb39e5852fca45f6809d" + integrity sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw== + dependencies: + "@babel/code-frame" "^7.27.1" + "@babel/parser" "^7.27.2" + "@babel/types" "^7.27.1" + +"@babel/traverse@^7.27.1", "@babel/traverse@^7.27.3", "@babel/traverse@^7.27.4": + version "7.27.4" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.4.tgz#b0045ac7023c8472c3d35effd7cc9ebd638da6ea" + integrity sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA== + dependencies: + "@babel/code-frame" "^7.27.1" + "@babel/generator" "^7.27.3" + "@babel/parser" "^7.27.4" + "@babel/template" "^7.27.2" + "@babel/types" "^7.27.3" + debug "^4.3.1" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz#1b9d78987420d11223d41195461cc43b974b204f" - integrity sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-destructuring@^7.14.7": - version "7.14.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.7.tgz#0ad58ed37e23e22084d109f185260835e5557576" - integrity sha512-0mDE99nK+kVh3xlc5vKwB6wnP9ecuSj+zQCa/n0voENtP/zymdT4HH6QEb65wjjcbqr1Jb/7z9Qp7TF5FtwYGw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-dotall-regex@^7.14.5", "@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz#2f6bf76e46bdf8043b4e7e16cf24532629ba0c7a" - integrity sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-duplicate-keys@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.14.5.tgz#365a4844881bdf1501e3a9f0270e7f0f91177954" - integrity sha512-iJjbI53huKbPDAsJ8EmVmvCKeeq21bAze4fu9GBQtSLqfvzj2oRuHVx4ZkDwEhg1htQ+5OBZh/Ab0XDf5iBZ7A== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-exponentiation-operator@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.14.5.tgz#5154b8dd6a3dfe6d90923d61724bd3deeb90b493" - integrity sha512-jFazJhMBc9D27o9jDnIE5ZErI0R0m7PbKXVq77FFvqFbzvTMuv8jaAwLZ5PviOLSFttqKIW0/wxNSDbjLk0tYA== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-for-of@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.14.5.tgz#dae384613de8f77c196a8869cbf602a44f7fc0eb" - integrity sha512-CfmqxSUZzBl0rSjpoQSFoR9UEj3HzbGuGNL21/iFTmjb5gFggJp3ph0xR1YBhexmLoKRHzgxuFvty2xdSt6gTA== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-function-name@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz#e81c65ecb900746d7f31802f6bed1f52d915d6f2" - integrity sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ== - dependencies: - "@babel/helper-function-name" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz#41d06c7ff5d4d09e3cf4587bd3ecf3930c730f78" - integrity sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-member-expression-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz#b39cd5212a2bf235a617d320ec2b48bcc091b8a7" - integrity sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-modules-amd@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.5.tgz#4fd9ce7e3411cb8b83848480b7041d83004858f7" - integrity sha512-3lpOU8Vxmp3roC4vzFpSdEpGUWSMsHFreTWOMMLzel2gNGfHE5UWIh/LN6ghHs2xurUp4jRFYMUIZhuFbody1g== +"@babel/types@^7.25.4", "@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.27.6": + version "7.27.6" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.27.6.tgz#a434ca7add514d4e646c80f7375c0aa2befc5535" + integrity sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q== dependencies: - "@babel/helper-module-transforms" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - babel-plugin-dynamic-import-node "^2.3.3" + "@babel/helper-string-parser" "^7.27.1" + "@babel/helper-validator-identifier" "^7.27.1" -"@babel/plugin-transform-modules-commonjs@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.5.tgz#7aaee0ea98283de94da98b28f8c35701429dad97" - integrity sha512-en8GfBtgnydoao2PS+87mKyw62k02k7kJ9ltbKe0fXTHrQmG6QZZflYuGI1VVG7sVpx4E1n7KBpNlPb8m78J+A== +"@babel/types@^7.28.0": + version "7.28.1" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.28.1.tgz#2aaf3c10b31ba03a77ac84f52b3912a0edef4cf9" + integrity sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ== dependencies: - "@babel/helper-module-transforms" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-simple-access" "^7.14.5" - babel-plugin-dynamic-import-node "^2.3.3" + "@babel/helper-string-parser" "^7.27.1" + "@babel/helper-validator-identifier" "^7.27.1" -"@babel/plugin-transform-modules-systemjs@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.14.5.tgz#c75342ef8b30dcde4295d3401aae24e65638ed29" - integrity sha512-mNMQdvBEE5DcMQaL5LbzXFMANrQjd2W7FPzg34Y4yEz7dBgdaC+9B84dSO+/1Wba98zoDbInctCDo4JGxz1VYA== - dependencies: - "@babel/helper-hoist-variables" "^7.14.5" - "@babel/helper-module-transforms" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-validator-identifier" "^7.14.5" - babel-plugin-dynamic-import-node "^2.3.3" +"@docsearch/css@3.8.2": + version "3.8.2" + resolved "https://registry.npmjs.org/@docsearch/css/-/css-3.8.2.tgz#7973ceb6892c30f154ba254cd05c562257a44977" + integrity sha512-y05ayQFyUmCXze79+56v/4HpycYF3uFqB78pLPrSV5ZKAlDuIAAJNhaRi8tTdRNXh05yxX/TyNnzD6LwSM89vQ== -"@babel/plugin-transform-modules-umd@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.5.tgz#fb662dfee697cce274a7cda525190a79096aa6e0" - integrity sha512-RfPGoagSngC06LsGUYyM9QWSXZ8MysEjDJTAea1lqRjNECE3y0qIJF/qbvJxc4oA4s99HumIMdXOrd+TdKaAAA== +"@docsearch/js@3.8.2": + version "3.8.2" + resolved "https://registry.npmjs.org/@docsearch/js/-/js-3.8.2.tgz#bdcfc9837700eb38453b88e211ab5cc5a3813cc6" + integrity sha512-Q5wY66qHn0SwA7Taa0aDbHiJvaFJLOJyHmooQ7y8hlwwQLQ/5WwCcoX0g7ii04Qi2DJlHsd0XXzJ8Ypw9+9YmQ== dependencies: - "@babel/helper-module-transforms" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@docsearch/react" "3.8.2" + preact "^10.0.0" -"@babel/plugin-transform-named-capturing-groups-regex@^7.14.7": - version "7.14.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.7.tgz#60c06892acf9df231e256c24464bfecb0908fd4e" - integrity sha512-DTNOTaS7TkW97xsDMrp7nycUVh6sn/eq22VaxWfEdzuEbRsiaOU0pqU7DlyUGHVsbQbSghvjKRpEl+nUCKGQSg== +"@docsearch/react@3.8.2": + version "3.8.2" + resolved "https://registry.npmjs.org/@docsearch/react/-/react-3.8.2.tgz#7b11d39b61c976c0aa9fbde66e6b73b30f3acd42" + integrity sha512-xCRrJQlTt8N9GU0DG4ptwHRkfnSnD/YpdeaXe02iKfqs97TkZJv60yE+1eq/tjPcVnTW8dP5qLP7itifFVV5eg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" + "@algolia/autocomplete-core" "1.17.7" + "@algolia/autocomplete-preset-algolia" "1.17.7" + "@docsearch/css" "3.8.2" + algoliasearch "^5.14.2" -"@babel/plugin-transform-new-target@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.14.5.tgz#31bdae8b925dc84076ebfcd2a9940143aed7dbf8" - integrity sha512-Nx054zovz6IIRWEB49RDRuXGI4Gy0GMgqG0cII9L3MxqgXz/+rgII+RU58qpo4g7tNEx1jG7rRVH4ihZoP4esQ== +"@emnapi/core@^1.1.0", "@emnapi/core@^1.4.3": + version "1.4.3" + resolved "https://registry.npmjs.org/@emnapi/core/-/core-1.4.3.tgz#9ac52d2d5aea958f67e52c40a065f51de59b77d6" + integrity sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@emnapi/wasi-threads" "1.0.2" + tslib "^2.4.0" -"@babel/plugin-transform-object-super@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz#d0b5faeac9e98597a161a9cf78c527ed934cdc45" - integrity sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-replace-supers" "^7.14.5" - -"@babel/plugin-transform-parameters@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.14.5.tgz#49662e86a1f3ddccac6363a7dfb1ff0a158afeb3" - integrity sha512-Tl7LWdr6HUxTmzQtzuU14SqbgrSKmaR77M0OKyq4njZLQTPfOvzblNKyNkGwOfEFCEx7KeYHQHDI0P3F02IVkA== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-property-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz#0ddbaa1f83db3606f1cdf4846fa1dfb473458b34" - integrity sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-regenerator@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.14.5.tgz#9676fd5707ed28f522727c5b3c0aa8544440b04f" - integrity sha512-NVIY1W3ITDP5xQl50NgTKlZ0GrotKtLna08/uGY6ErQt6VEQZXla86x/CTddm5gZdcr+5GSsvMeTmWA5Ii6pkg== - dependencies: - regenerator-transform "^0.14.2" - -"@babel/plugin-transform-reserved-words@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.14.5.tgz#c44589b661cfdbef8d4300dcc7469dffa92f8304" - integrity sha512-cv4F2rv1nD4qdexOGsRQXJrOcyb5CrgjUH9PKrrtyhSDBNWGxd0UIitjyJiWagS+EbUGjG++22mGH1Pub8D6Vg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-shorthand-properties@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz#97f13855f1409338d8cadcbaca670ad79e091a58" - integrity sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-spread@^7.14.6": - version "7.14.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.14.6.tgz#6bd40e57fe7de94aa904851963b5616652f73144" - integrity sha512-Zr0x0YroFJku7n7+/HH3A2eIrGMjbmAIbJSVv0IZ+t3U2WUQUA64S/oeied2e+MaGSjmt4alzBCsK9E8gh+fag== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.14.5" - -"@babel/plugin-transform-sticky-regex@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.14.5.tgz#5b617542675e8b7761294381f3c28c633f40aeb9" - integrity sha512-Z7F7GyvEMzIIbwnziAZmnSNpdijdr4dWt+FJNBnBLz5mwDFkqIXU9wmBcWWad3QeJF5hMTkRe4dAq2sUZiG+8A== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-template-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz#a5f2bc233937d8453885dc736bdd8d9ffabf3d93" - integrity sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-typeof-symbol@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.14.5.tgz#39af2739e989a2bd291bf6b53f16981423d457d4" - integrity sha512-lXzLD30ffCWseTbMQzrvDWqljvZlHkXU+CnseMhkMNqU1sASnCsz3tSzAaH3vCUXb9PHeUb90ZT1BdFTm1xxJw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-unicode-escapes@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.14.5.tgz#9d4bd2a681e3c5d7acf4f57fa9e51175d91d0c6b" - integrity sha512-crTo4jATEOjxj7bt9lbYXcBAM3LZaUrbP2uUdxb6WIorLmjNKSpHfIybgY4B8SRpbf8tEVIWH3Vtm7ayCrKocA== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-unicode-regex@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.14.5.tgz#4cd09b6c8425dd81255c7ceb3fb1836e7414382e" - integrity sha512-UygduJpC5kHeCiRw/xDVzC+wj8VaYSoKl5JNVmbP7MadpNinAm3SvZCxZ42H37KZBKztz46YC73i9yV34d0Tzw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/preset-env@^7.12.11": - version "7.14.8" - resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.14.8.tgz#254942f5ca80ccabcfbb2a9f524c74bca574005b" - integrity sha512-a9aOppDU93oArQ51H+B8M1vH+tayZbuBqzjOhntGetZVa+4tTu5jp+XTwqHGG2lxslqomPYVSjIxQkFwXzgnxg== - dependencies: - "@babel/compat-data" "^7.14.7" - "@babel/helper-compilation-targets" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-validator-option" "^7.14.5" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.14.5" - "@babel/plugin-proposal-async-generator-functions" "^7.14.7" - "@babel/plugin-proposal-class-properties" "^7.14.5" - "@babel/plugin-proposal-class-static-block" "^7.14.5" - "@babel/plugin-proposal-dynamic-import" "^7.14.5" - "@babel/plugin-proposal-export-namespace-from" "^7.14.5" - "@babel/plugin-proposal-json-strings" "^7.14.5" - "@babel/plugin-proposal-logical-assignment-operators" "^7.14.5" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.14.5" - "@babel/plugin-proposal-numeric-separator" "^7.14.5" - "@babel/plugin-proposal-object-rest-spread" "^7.14.7" - "@babel/plugin-proposal-optional-catch-binding" "^7.14.5" - "@babel/plugin-proposal-optional-chaining" "^7.14.5" - "@babel/plugin-proposal-private-methods" "^7.14.5" - "@babel/plugin-proposal-private-property-in-object" "^7.14.5" - "@babel/plugin-proposal-unicode-property-regex" "^7.14.5" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-transform-arrow-functions" "^7.14.5" - "@babel/plugin-transform-async-to-generator" "^7.14.5" - "@babel/plugin-transform-block-scoped-functions" "^7.14.5" - "@babel/plugin-transform-block-scoping" "^7.14.5" - "@babel/plugin-transform-classes" "^7.14.5" - "@babel/plugin-transform-computed-properties" "^7.14.5" - "@babel/plugin-transform-destructuring" "^7.14.7" - "@babel/plugin-transform-dotall-regex" "^7.14.5" - "@babel/plugin-transform-duplicate-keys" "^7.14.5" - "@babel/plugin-transform-exponentiation-operator" "^7.14.5" - "@babel/plugin-transform-for-of" "^7.14.5" - "@babel/plugin-transform-function-name" "^7.14.5" - "@babel/plugin-transform-literals" "^7.14.5" - "@babel/plugin-transform-member-expression-literals" "^7.14.5" - "@babel/plugin-transform-modules-amd" "^7.14.5" - "@babel/plugin-transform-modules-commonjs" "^7.14.5" - "@babel/plugin-transform-modules-systemjs" "^7.14.5" - "@babel/plugin-transform-modules-umd" "^7.14.5" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.14.7" - "@babel/plugin-transform-new-target" "^7.14.5" - "@babel/plugin-transform-object-super" "^7.14.5" - "@babel/plugin-transform-parameters" "^7.14.5" - "@babel/plugin-transform-property-literals" "^7.14.5" - "@babel/plugin-transform-regenerator" "^7.14.5" - "@babel/plugin-transform-reserved-words" "^7.14.5" - "@babel/plugin-transform-shorthand-properties" "^7.14.5" - "@babel/plugin-transform-spread" "^7.14.6" - "@babel/plugin-transform-sticky-regex" "^7.14.5" - "@babel/plugin-transform-template-literals" "^7.14.5" - "@babel/plugin-transform-typeof-symbol" "^7.14.5" - "@babel/plugin-transform-unicode-escapes" "^7.14.5" - "@babel/plugin-transform-unicode-regex" "^7.14.5" - "@babel/preset-modules" "^0.1.4" - "@babel/types" "^7.14.8" - babel-plugin-polyfill-corejs2 "^0.2.2" - babel-plugin-polyfill-corejs3 "^0.2.2" - babel-plugin-polyfill-regenerator "^0.2.2" - core-js-compat "^3.15.0" - semver "^6.3.0" - -"@babel/preset-modules@^0.1.4": - version "0.1.4" - resolved "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e" - integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== +"@emnapi/runtime@^1.1.0", "@emnapi/runtime@^1.4.3": + version "1.4.3" + resolved "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.3.tgz#c0564665c80dc81c448adac23f9dfbed6c838f7d" + integrity sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" - "@babel/plugin-transform-dotall-regex" "^7.4.4" - "@babel/types" "^7.4.4" - esutils "^2.0.2" - -"@babel/runtime@^7.8.4": - version "7.14.8" - resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.8.tgz#7119a56f421018852694290b9f9148097391b446" - integrity sha512-twj3L8Og5SaCRCErB4x4ajbvBIVV77CGeFglHpeg5WC5FF8TZzBWXtTJ4MqaD9QszLYTtr+IsaAL2rEUevb+eg== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/template@^7.12.13", "@babel/template@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz#a9bc9d8b33354ff6e55a9c60d1109200a68974f4" - integrity sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g== - dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/parser" "^7.14.5" - "@babel/types" "^7.14.5" - -"@babel/template@^7.12.7": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327" - integrity sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA== - dependencies: - "@babel/code-frame" "^7.12.13" - "@babel/parser" "^7.12.13" - "@babel/types" "^7.12.13" - -"@babel/template@^7.3.3", "@babel/template@^7.7.4": - version "7.12.7" - resolved "https://registry.npmjs.org/@babel/template/-/template-7.12.7.tgz#c817233696018e39fbb6c491d2fb684e05ed43bc" - integrity sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/parser" "^7.12.7" - "@babel/types" "^7.12.7" - -"@babel/traverse@^7.1.0", "@babel/traverse@^7.7.4": - version "7.12.12" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.12.tgz#d0cd87892704edd8da002d674bc811ce64743376" - integrity sha512-s88i0X0lPy45RrLM8b9mz8RPH5FqO9G9p7ti59cToE44xFm1Q+Pjh5Gq4SXBbtb88X7Uy7pexeqRIQDDMNkL0w== - dependencies: - "@babel/code-frame" "^7.12.11" - "@babel/generator" "^7.12.11" - "@babel/helper-function-name" "^7.12.11" - "@babel/helper-split-export-declaration" "^7.12.11" - "@babel/parser" "^7.12.11" - "@babel/types" "^7.12.12" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.19" - -"@babel/traverse@^7.12.10": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.13.tgz#689f0e4b4c08587ad26622832632735fb8c4e0c0" - integrity sha512-3Zb4w7eE/OslI0fTp8c7b286/cQps3+vdLW3UcwC8VSJC6GbKn55aeVVu2QJNuCDoeKyptLOFrPq8WqZZBodyA== - dependencies: - "@babel/code-frame" "^7.12.13" - "@babel/generator" "^7.12.13" - "@babel/helper-function-name" "^7.12.13" - "@babel/helper-split-export-declaration" "^7.12.13" - "@babel/parser" "^7.12.13" - "@babel/types" "^7.12.13" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.19" + tslib "^2.4.0" -"@babel/traverse@^7.12.13": - version "7.13.0" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz#6d95752475f86ee7ded06536de309a65fc8966cc" - integrity sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ== - dependencies: - "@babel/code-frame" "^7.12.13" - "@babel/generator" "^7.13.0" - "@babel/helper-function-name" "^7.12.13" - "@babel/helper-split-export-declaration" "^7.12.13" - "@babel/parser" "^7.13.0" - "@babel/types" "^7.13.0" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.19" - -"@babel/traverse@^7.13.0", "@babel/traverse@^7.14.5", "@babel/traverse@^7.14.8": - version "7.14.8" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.8.tgz#c0253f02677c5de1a8ff9df6b0aacbec7da1a8ce" - integrity sha512-kexHhzCljJcFNn1KYAQ6A5wxMRzq9ebYpEDV4+WdNyr3i7O44tanbDOR/xjiG2F3sllan+LgwK+7OMk0EmydHg== - dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/generator" "^7.14.8" - "@babel/helper-function-name" "^7.14.5" - "@babel/helper-hoist-variables" "^7.14.5" - "@babel/helper-split-export-declaration" "^7.14.5" - "@babel/parser" "^7.14.8" - "@babel/types" "^7.14.8" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/traverse@^7.14.2": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.5.tgz#c111b0f58afab4fea3d3385a406f692748c59870" - integrity sha512-G3BiS15vevepdmFqmUc9X+64y0viZYygubAMO8SvBmKARuF6CPSZtH4Ng9vi/lrWlZFGe3FWdXNy835akH8Glg== - dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/generator" "^7.14.5" - "@babel/helper-function-name" "^7.14.5" - "@babel/helper-hoist-variables" "^7.14.5" - "@babel/helper-split-export-declaration" "^7.14.5" - "@babel/parser" "^7.14.5" - "@babel/types" "^7.14.5" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/traverse@^7.7.2": - version "7.14.2" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.2.tgz#9201a8d912723a831c2679c7ebbf2fe1416d765b" - integrity sha512-TsdRgvBFHMyHOOzcP9S6QU0QQtjxlRpEYOy3mcCO5RgmC305ki42aSAmfZEMSSYBla2oZ9BMqYlncBaKmD/7iA== - dependencies: - "@babel/code-frame" "^7.12.13" - "@babel/generator" "^7.14.2" - "@babel/helper-function-name" "^7.14.2" - "@babel/helper-split-export-declaration" "^7.12.13" - "@babel/parser" "^7.14.2" - "@babel/types" "^7.14.2" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3": - version "7.12.12" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.12.12.tgz#4608a6ec313abbd87afa55004d373ad04a96c299" - integrity sha512-lnIX7piTxOH22xE7fDXDbSHg9MM1/6ORnafpJmov5rs0kX5g4BZxeXNJLXsMRiO0U5Rb8/FvMS6xlTnTHvxonQ== +"@emnapi/wasi-threads@1.0.2": + version "1.0.2" + resolved "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.2.tgz#977f44f844eac7d6c138a415a123818c655f874c" + integrity sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA== + dependencies: + tslib "^2.4.0" + +"@esbuild/aix-ppc64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz#c7184a326533fcdf1b8ee0733e21c713b975575f" + integrity sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ== + +"@esbuild/aix-ppc64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.9.tgz#bef96351f16520055c947aba28802eede3c9e9a9" + integrity sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA== + +"@esbuild/android-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz#09d9b4357780da9ea3a7dfb833a1f1ff439b4052" + integrity sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A== + +"@esbuild/android-arm64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.9.tgz#d2e70be7d51a529425422091e0dcb90374c1546c" + integrity sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg== + +"@esbuild/android-arm@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz#9b04384fb771926dfa6d7ad04324ecb2ab9b2e28" + integrity sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg== + +"@esbuild/android-arm@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.9.tgz#d2a753fe2a4c73b79437d0ba1480e2d760097419" + integrity sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ== + +"@esbuild/android-x64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz#29918ec2db754cedcb6c1b04de8cd6547af6461e" + integrity sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA== + +"@esbuild/android-x64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.9.tgz#5278836e3c7ae75761626962f902a0d55352e683" + integrity sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw== + +"@esbuild/darwin-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz#e495b539660e51690f3928af50a76fb0a6ccff2a" + integrity sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ== + +"@esbuild/darwin-arm64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.9.tgz#f1513eaf9ec8fa15dcaf4c341b0f005d3e8b47ae" + integrity sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg== + +"@esbuild/darwin-x64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz#c13838fa57372839abdddc91d71542ceea2e1e22" + integrity sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw== + +"@esbuild/darwin-x64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.9.tgz#e27dbc3b507b3a1cea3b9280a04b8b6b725f82be" + integrity sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ== + +"@esbuild/freebsd-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz#646b989aa20bf89fd071dd5dbfad69a3542e550e" + integrity sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g== + +"@esbuild/freebsd-arm64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.9.tgz#364e3e5b7a1fd45d92be08c6cc5d890ca75908ca" + integrity sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q== + +"@esbuild/freebsd-x64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz#aa615cfc80af954d3458906e38ca22c18cf5c261" + integrity sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ== + +"@esbuild/freebsd-x64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.9.tgz#7c869b45faeb3df668e19ace07335a0711ec56ab" + integrity sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg== + +"@esbuild/linux-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz#70ac6fa14f5cb7e1f7f887bcffb680ad09922b5b" + integrity sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q== + +"@esbuild/linux-arm64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.9.tgz#48d42861758c940b61abea43ba9a29b186d6cb8b" + integrity sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw== + +"@esbuild/linux-arm@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz#fc6fd11a8aca56c1f6f3894f2bea0479f8f626b9" + integrity sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA== + +"@esbuild/linux-arm@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.9.tgz#6ce4b9cabf148274101701d112b89dc67cc52f37" + integrity sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw== + +"@esbuild/linux-ia32@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz#3271f53b3f93e3d093d518d1649d6d68d346ede2" + integrity sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg== + +"@esbuild/linux-ia32@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.9.tgz#207e54899b79cac9c26c323fc1caa32e3143f1c4" + integrity sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A== + +"@esbuild/linux-loong64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz#ed62e04238c57026aea831c5a130b73c0f9f26df" + integrity sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg== + +"@esbuild/linux-loong64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.9.tgz#0ba48a127159a8f6abb5827f21198b999ffd1fc0" + integrity sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ== + +"@esbuild/linux-mips64el@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz#e79b8eb48bf3b106fadec1ac8240fb97b4e64cbe" + integrity sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg== + +"@esbuild/linux-mips64el@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.9.tgz#a4d4cc693d185f66a6afde94f772b38ce5d64eb5" + integrity sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA== + +"@esbuild/linux-ppc64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz#5f2203860a143b9919d383ef7573521fb154c3e4" + integrity sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w== + +"@esbuild/linux-ppc64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.9.tgz#0f5805c1c6d6435a1dafdc043cb07a19050357db" + integrity sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w== + +"@esbuild/linux-riscv64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz#07bcafd99322d5af62f618cb9e6a9b7f4bb825dc" + integrity sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA== + +"@esbuild/linux-riscv64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.9.tgz#6776edece0f8fca79f3386398b5183ff2a827547" + integrity sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg== + +"@esbuild/linux-s390x@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz#b7ccf686751d6a3e44b8627ababc8be3ef62d8de" + integrity sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A== + +"@esbuild/linux-s390x@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.9.tgz#3f6f29ef036938447c2218d309dc875225861830" + integrity sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA== + +"@esbuild/linux-x64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz#6d8f0c768e070e64309af8004bb94e68ab2bb3b0" + integrity sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ== + +"@esbuild/linux-x64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.9.tgz#831fe0b0e1a80a8b8391224ea2377d5520e1527f" + integrity sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg== + +"@esbuild/netbsd-arm64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.9.tgz#06f99d7eebe035fbbe43de01c9d7e98d2a0aa548" + integrity sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q== + +"@esbuild/netbsd-x64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz#bbe430f60d378ecb88decb219c602667387a6047" + integrity sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg== + +"@esbuild/netbsd-x64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.9.tgz#db99858e6bed6e73911f92a88e4edd3a8c429a52" + integrity sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g== + +"@esbuild/openbsd-arm64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.9.tgz#afb886c867e36f9d86bb21e878e1185f5d5a0935" + integrity sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ== + +"@esbuild/openbsd-x64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz#99d1cf2937279560d2104821f5ccce220cb2af70" + integrity sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow== + +"@esbuild/openbsd-x64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.9.tgz#30855c9f8381fac6a0ef5b5f31ac6e7108a66ecf" + integrity sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA== + +"@esbuild/openharmony-arm64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.9.tgz#2f2144af31e67adc2a8e3705c20c2bd97bd88314" + integrity sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg== + +"@esbuild/sunos-x64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz#08741512c10d529566baba837b4fe052c8f3487b" + integrity sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg== + +"@esbuild/sunos-x64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.9.tgz#69b99a9b5bd226c9eb9c6a73f990fddd497d732e" + integrity sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw== + +"@esbuild/win32-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz#675b7385398411240735016144ab2e99a60fc75d" + integrity sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A== + +"@esbuild/win32-arm64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.9.tgz#d789330a712af916c88325f4ffe465f885719c6b" + integrity sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ== + +"@esbuild/win32-ia32@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz#1bfc3ce98aa6ca9a0969e4d2af72144c59c1193b" + integrity sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA== + +"@esbuild/win32-ia32@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.9.tgz#52fc735406bd49688253e74e4e837ac2ba0789e3" + integrity sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww== + +"@esbuild/win32-x64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz#acad351d582d157bb145535db2a6ff53dd514b5c" + integrity sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw== + +"@esbuild/win32-x64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.9.tgz#585624dc829cfb6e7c0aa6c3ca7d7e6daa87e34f" + integrity sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ== + +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.7.0": + version "4.7.0" + resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz#607084630c6c033992a082de6e6fbc1a8b52175a" + integrity sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw== dependencies: - "@babel/helper-validator-identifier" "^7.12.11" - lodash "^4.17.19" - to-fast-properties "^2.0.0" + eslint-visitor-keys "^3.4.3" -"@babel/types@^7.12.10", "@babel/types@^7.12.12", "@babel/types@^7.12.7": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.12.13.tgz#8be1aa8f2c876da11a9cf650c0ecf656913ad611" - integrity sha512-oKrdZTld2im1z8bDwTOQvUbxKwE+854zc16qWZQlcTqMN00pWxHQ4ZeOq0yDMnisOpRykH2/5Qqcrk/OlbAjiQ== - dependencies: - "@babel/helper-validator-identifier" "^7.12.11" - lodash "^4.17.19" - to-fast-properties "^2.0.0" +"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.12.1": + version "4.12.1" + resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" + integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== -"@babel/types@^7.12.13", "@babel/types@^7.13.0", "@babel/types@^7.13.12", "@babel/types@^7.14.2": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz#3bb997ba829a2104cedb20689c4a5b8121d383ff" - integrity sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg== +"@eslint/config-array@^0.21.0": + version "0.21.0" + resolved "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz#abdbcbd16b124c638081766392a4d6b509f72636" + integrity sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ== dependencies: - "@babel/helper-validator-identifier" "^7.14.5" - to-fast-properties "^2.0.0" + "@eslint/object-schema" "^2.1.6" + debug "^4.3.1" + minimatch "^3.1.2" -"@babel/types@^7.12.17": - version "7.13.0" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz#74424d2816f0171b4100f0ab34e9a374efdf7f80" - integrity sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA== - dependencies: - "@babel/helper-validator-identifier" "^7.12.11" - lodash "^4.17.19" - to-fast-properties "^2.0.0" +"@eslint/config-helpers@^0.3.0": + version "0.3.0" + resolved "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.0.tgz#3e09a90dfb87e0005c7694791e58e97077271286" + integrity sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw== -"@babel/types@^7.14.5", "@babel/types@^7.14.8", "@babel/types@^7.4.4": - version "7.14.8" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.14.8.tgz#38109de8fcadc06415fbd9b74df0065d4d41c728" - integrity sha512-iob4soQa7dZw8nodR/KlOQkPh9S4I8RwCxwRIFuiMRYjOzH/KJzdUfDgz6cGi5dDaclXF4P2PAhCdrBJNIg68Q== +"@eslint/core@^0.15.0", "@eslint/core@^0.15.1": + version "0.15.1" + resolved "https://registry.npmjs.org/@eslint/core/-/core-0.15.1.tgz#d530d44209cbfe2f82ef86d6ba08760196dd3b60" + integrity sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA== dependencies: - "@babel/helper-validator-identifier" "^7.14.8" - to-fast-properties "^2.0.0" + "@types/json-schema" "^7.0.15" -"@bcoe/v8-coverage@^0.2.3": - version "0.2.3" - resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" - integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== - -"@eslint/eslintrc@^0.4.3": - version "0.4.3" - resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" - integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== +"@eslint/eslintrc@^3.1.0", "@eslint/eslintrc@^3.3.1": + version "3.3.1" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz#e55f7f1dd400600dd066dbba349c4c0bac916964" + integrity sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ== dependencies: ajv "^6.12.4" - debug "^4.1.1" - espree "^7.3.0" - globals "^13.9.0" - ignore "^4.0.6" + debug "^4.3.2" + espree "^10.0.1" + globals "^14.0.0" + ignore "^5.2.0" import-fresh "^3.2.1" - js-yaml "^3.13.1" - minimatch "^3.0.4" + js-yaml "^4.1.0" + minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@humanwhocodes/config-array@^0.5.0": - version "0.5.0" - resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" - integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== - dependencies: - "@humanwhocodes/object-schema" "^1.2.0" - debug "^4.1.1" - minimatch "^3.0.4" - -"@humanwhocodes/object-schema@^1.2.0": - version "1.2.0" - resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz#87de7af9c231826fdd68ac7258f77c429e0e5fcf" - integrity sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w== - -"@istanbuljs/load-nyc-config@^1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.0.0.tgz#10602de5570baea82f8afbfa2630b24e7a8cfe5b" - integrity sha512-ZR0rq/f/E4f4XcgnDvtMWXCUJpi8eO0rssVhmztsZqLIEFA9UUP9zmpE0VxlM+kv/E1ul2I876Fwil2ayptDVg== - dependencies: - camelcase "^5.3.1" - find-up "^4.1.0" - js-yaml "^3.13.1" - resolve-from "^5.0.0" - -"@istanbuljs/schema@^0.1.2": - version "0.1.2" - resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" - integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== +"@eslint/js@9.32.0", "@eslint/js@^9.16.0": + version "9.32.0" + resolved "https://registry.npmjs.org/@eslint/js/-/js-9.32.0.tgz#a02916f58bd587ea276876cb051b579a3d75d091" + integrity sha512-BBpRFZK3eX6uMLKz8WxFOBIFFcGFJ/g8XuwjTHCqHROSIsopI+ddn/d5Cfh36+7+e5edVS8dbSHnBNhrLEX0zg== -"@jest/console@^27.0.6": - version "27.0.6" - resolved "https://registry.npmjs.org/@jest/console/-/console-27.0.6.tgz#3eb72ea80897495c3d73dd97aab7f26770e2260f" - integrity sha512-fMlIBocSHPZ3JxgWiDNW/KPj6s+YRd0hicb33IrmelCcjXo/pXPwvuiKFmZz+XuqI/1u7nbUK10zSsWL/1aegg== - dependencies: - "@jest/types" "^27.0.6" - "@types/node" "*" - chalk "^4.0.0" - jest-message-util "^27.0.6" - jest-util "^27.0.6" - slash "^3.0.0" +"@eslint/object-schema@^2.1.6": + version "2.1.6" + resolved "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz#58369ab5b5b3ca117880c0f6c0b0f32f6950f24f" + integrity sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA== -"@jest/core@^27.0.6": - version "27.0.6" - resolved "https://registry.npmjs.org/@jest/core/-/core-27.0.6.tgz#c5f642727a0b3bf0f37c4b46c675372d0978d4a1" - integrity sha512-SsYBm3yhqOn5ZLJCtccaBcvD/ccTLCeuDv8U41WJH/V1MW5eKUkeMHT9U+Pw/v1m1AIWlnIW/eM2XzQr0rEmow== +"@eslint/plugin-kit@^0.3.4": + version "0.3.4" + resolved "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.4.tgz#c6b9f165e94bf4d9fdd493f1c028a94aaf5fc1cc" + integrity sha512-Ul5l+lHEcw3L5+k8POx6r74mxEYKG5kOb6Xpy2gCRW6zweT6TEhAf8vhxGgjhqrd/VO/Dirhsb+1hNpD1ue9hw== dependencies: - "@jest/console" "^27.0.6" - "@jest/reporters" "^27.0.6" - "@jest/test-result" "^27.0.6" - "@jest/transform" "^27.0.6" - "@jest/types" "^27.0.6" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - emittery "^0.8.1" - exit "^0.1.2" - graceful-fs "^4.2.4" - jest-changed-files "^27.0.6" - jest-config "^27.0.6" - jest-haste-map "^27.0.6" - jest-message-util "^27.0.6" - jest-regex-util "^27.0.6" - jest-resolve "^27.0.6" - jest-resolve-dependencies "^27.0.6" - jest-runner "^27.0.6" - jest-runtime "^27.0.6" - jest-snapshot "^27.0.6" - jest-util "^27.0.6" - jest-validate "^27.0.6" - jest-watcher "^27.0.6" - micromatch "^4.0.4" - p-each-series "^2.1.0" - rimraf "^3.0.0" - slash "^3.0.0" - strip-ansi "^6.0.0" + "@eslint/core" "^0.15.1" + levn "^0.4.1" -"@jest/environment@^27.0.1": - version "27.0.1" - resolved "https://registry.npmjs.org/@jest/environment/-/environment-27.0.1.tgz#27ed89bf8179c0a030690f063d922d6da7a519ac" - integrity sha512-nG+r3uSs2pOTsdhgt6lUm4ZGJLRcTc6HZIkrFsVpPcdSqEpJehEny9r9y2Bmhkn8fKXWdGCYJKF3i4nKO0HSmA== - dependencies: - "@jest/fake-timers" "^27.0.1" - "@jest/types" "^27.0.1" - "@types/node" "*" - jest-mock "^27.0.1" +"@gwhitney/detect-indent@7.0.1": + version "7.0.1" + resolved "https://registry.npmjs.org/@gwhitney/detect-indent/-/detect-indent-7.0.1.tgz#db16d7fe6d13b26dc792442e5156677b44cc428e" + integrity sha512-7bQW+gkKa2kKZPeJf6+c6gFK9ARxQfn+FKy9ScTBppyKRWH2KzsmweXUoklqeEiHiNVWaeP5csIdsNq6w7QhzA== -"@jest/environment@^27.0.6": - version "27.0.6" - resolved "https://registry.npmjs.org/@jest/environment/-/environment-27.0.6.tgz#ee293fe996db01d7d663b8108fa0e1ff436219d2" - integrity sha512-4XywtdhwZwCpPJ/qfAkqExRsERW+UaoSRStSHCCiQTUpoYdLukj+YJbQSFrZjhlUDRZeNiU9SFH0u7iNimdiIg== - dependencies: - "@jest/fake-timers" "^27.0.6" - "@jest/types" "^27.0.6" - "@types/node" "*" - jest-mock "^27.0.6" +"@humanfs/core@^0.19.1": + version "0.19.1" + resolved "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz#17c55ca7d426733fe3c561906b8173c336b40a77" + integrity sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA== -"@jest/fake-timers@^27.0.1": - version "27.0.1" - resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.0.1.tgz#6987a596b0bcf8c07653086076c17058b4c77b5c" - integrity sha512-3CyLJQnHzKI4TCJSCo+I9TzIHjSK4RrNEk93jFM6Q9+9WlSJ3mpMq/p2YuKMe0SiHKbmZOd5G/Ll5ofF9Xkw9g== +"@humanfs/node@^0.16.6": + version "0.16.6" + resolved "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz#ee2a10eaabd1131987bf0488fd9b820174cd765e" + integrity sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw== dependencies: - "@jest/types" "^27.0.1" - "@sinonjs/fake-timers" "^7.0.2" - "@types/node" "*" - jest-message-util "^27.0.1" - jest-mock "^27.0.1" - jest-util "^27.0.1" + "@humanfs/core" "^0.19.1" + "@humanwhocodes/retry" "^0.3.0" -"@jest/fake-timers@^27.0.6": - version "27.0.6" - resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.0.6.tgz#cbad52f3fe6abe30e7acb8cd5fa3466b9588e3df" - integrity sha512-sqd+xTWtZ94l3yWDKnRTdvTeZ+A/V7SSKrxsrOKSqdyddb9CeNRF8fbhAU0D7ZJBpTTW2nbp6MftmKJDZfW2LQ== - dependencies: - "@jest/types" "^27.0.6" - "@sinonjs/fake-timers" "^7.0.2" - "@types/node" "*" - jest-message-util "^27.0.6" - jest-mock "^27.0.6" - jest-util "^27.0.6" - -"@jest/globals@^27.0.6": - version "27.0.6" - resolved "https://registry.npmjs.org/@jest/globals/-/globals-27.0.6.tgz#48e3903f99a4650673d8657334d13c9caf0e8f82" - integrity sha512-DdTGCP606rh9bjkdQ7VvChV18iS7q0IMJVP1piwTWyWskol4iqcVwthZmoJEf7obE1nc34OpIyoVGPeqLC+ryw== - dependencies: - "@jest/environment" "^27.0.6" - "@jest/types" "^27.0.6" - expect "^27.0.6" - -"@jest/reporters@^27.0.6": - version "27.0.6" - resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-27.0.6.tgz#91e7f2d98c002ad5df94d5b5167c1eb0b9fd5b00" - integrity sha512-TIkBt09Cb2gptji3yJXb3EE+eVltW6BjO7frO7NEfjI9vSIYoISi5R3aI3KpEDXlB1xwB+97NXIqz84qYeYsfA== - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^27.0.6" - "@jest/test-result" "^27.0.6" - "@jest/transform" "^27.0.6" - "@jest/types" "^27.0.6" - chalk "^4.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.2" - graceful-fs "^4.2.4" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^4.0.3" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.0.2" - jest-haste-map "^27.0.6" - jest-resolve "^27.0.6" - jest-util "^27.0.6" - jest-worker "^27.0.6" - slash "^3.0.0" - source-map "^0.6.0" - string-length "^4.0.1" - terminal-link "^2.0.0" - v8-to-istanbul "^8.0.0" +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@jest/source-map@^27.0.6": - version "27.0.6" - resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-27.0.6.tgz#be9e9b93565d49b0548b86e232092491fb60551f" - integrity sha512-Fek4mi5KQrqmlY07T23JRi0e7Z9bXTOOD86V/uS0EIW4PClvPDqZOyFlLpNJheS6QI0FNX1CgmPjtJ4EA/2M+g== - dependencies: - callsites "^3.0.0" - graceful-fs "^4.2.4" - source-map "^0.6.0" - -"@jest/test-result@^27.0.6": - version "27.0.6" - resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-27.0.6.tgz#3fa42015a14e4fdede6acd042ce98c7f36627051" - integrity sha512-ja/pBOMTufjX4JLEauLxE3LQBPaI2YjGFtXexRAjt1I/MbfNlMx0sytSX3tn5hSLzQsR3Qy2rd0hc1BWojtj9w== - dependencies: - "@jest/console" "^27.0.6" - "@jest/types" "^27.0.6" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" - -"@jest/test-sequencer@^27.0.6": - version "27.0.6" - resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.0.6.tgz#80a913ed7a1130545b1cd777ff2735dd3af5d34b" - integrity sha512-bISzNIApazYOlTHDum9PwW22NOyDa6VI31n6JucpjTVM0jD6JDgqEZ9+yn575nDdPF0+4csYDxNNW13NvFQGZA== - dependencies: - "@jest/test-result" "^27.0.6" - graceful-fs "^4.2.4" - jest-haste-map "^27.0.6" - jest-runtime "^27.0.6" - -"@jest/transform@^27.0.6": - version "27.0.6" - resolved "https://registry.npmjs.org/@jest/transform/-/transform-27.0.6.tgz#189ad7107413208f7600f4719f81dd2f7278cc95" - integrity sha512-rj5Dw+mtIcntAUnMlW/Vju5mr73u8yg+irnHwzgtgoeI6cCPOvUwQ0D1uQtc/APmWgvRweEb1g05pkUpxH3iCA== - dependencies: - "@babel/core" "^7.1.0" - "@jest/types" "^27.0.6" - babel-plugin-istanbul "^6.0.0" - chalk "^4.0.0" - convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.2.4" - jest-haste-map "^27.0.6" - jest-regex-util "^27.0.6" - jest-util "^27.0.6" - micromatch "^4.0.4" - pirates "^4.0.1" - slash "^3.0.0" - source-map "^0.6.1" - write-file-atomic "^3.0.0" +"@humanwhocodes/retry@^0.3.0": + version "0.3.1" + resolved "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz#c72a5c76a9fbaf3488e231b13dc52c0da7bab42a" + integrity sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA== -"@jest/types@^26.6.0": - version "26.6.0" - resolved "https://registry.npmjs.org/@jest/types/-/types-26.6.0.tgz#2c045f231bfd79d52514cda3fbc93ef46157fa6a" - integrity sha512-8pDeq/JVyAYw7jBGU83v8RMYAkdrRxLG3BGnAJuqaQAUd6GWBmND2uyl+awI88+hit48suLoLjNFtR+ZXxWaYg== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^15.0.0" - chalk "^4.0.0" +"@humanwhocodes/retry@^0.4.2": + version "0.4.3" + resolved "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz#c2b9d2e374ee62c586d3adbea87199b1d7a7a6ba" + integrity sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ== -"@jest/types@^26.6.2": - version "26.6.2" - resolved "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" - integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^15.0.0" - chalk "^4.0.0" +"@hutson/parse-repository-url@^3.0.0": + version "3.0.2" + resolved "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz#98c23c950a3d9b6c8f0daed06da6c3af06981340" + integrity sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q== -"@jest/types@^27.0.1": - version "27.0.1" - resolved "https://registry.npmjs.org/@jest/types/-/types-27.0.1.tgz#631738c942e70045ebbf42a3f9b433036d3845e4" - integrity sha512-8A25RRV4twZutsx2D+7WphnDsp7If9Yu6ko0Gxwrwv8BiWESFzka34+Aa2kC8w9xewt7SDuCUSZ6IiAFVj3PRg== +"@iconify-json/simple-icons@^1.2.21": + version "1.2.27" + resolved "https://registry.npmjs.org/@iconify-json/simple-icons/-/simple-icons-1.2.27.tgz#c0293aa2a2a6ba84d02489931c7101ff3cd6094f" + integrity sha512-FtZwp/H7ih5rY9FPfDR+k6toOo/cuwpHWY8faNhxLs5O5uW6Q8TeqdNWfjVfgFtrs5tUUzWysjqNGL234v8EMA== dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^16.0.0" - chalk "^4.0.0" + "@iconify/types" "*" -"@jest/types@^27.0.6": - version "27.0.6" - resolved "https://registry.npmjs.org/@jest/types/-/types-27.0.6.tgz#9a992bc517e0c49f035938b8549719c2de40706b" - integrity sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^16.0.0" - chalk "^4.0.0" +"@iconify/types@*": + version "2.0.0" + resolved "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz#ab0e9ea681d6c8a1214f30cd741fe3a20cc57f57" + integrity sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg== -"@lerna/add@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/add/-/add-4.0.0.tgz#c36f57d132502a57b9e7058d1548b7a565ef183f" - integrity sha512-cpmAH1iS3k8JBxNvnMqrGTTjbY/ZAiKa1ChJzFevMYY3eeqbvhsBKnBcxjRXtdrJ6bd3dCQM+ZtK+0i682Fhng== - dependencies: - "@lerna/bootstrap" "4.0.0" - "@lerna/command" "4.0.0" - "@lerna/filter-options" "4.0.0" - "@lerna/npm-conf" "4.0.0" - "@lerna/validation-error" "4.0.0" - dedent "^0.7.0" - npm-package-arg "^8.1.0" - p-map "^4.0.0" - pacote "^11.2.6" - semver "^7.3.4" +"@inquirer/figures@^1.0.3": + version "1.0.10" + resolved "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.10.tgz#e3676a51c9c51aaabcd6ba18a28e82b98417db37" + integrity sha512-Ey6176gZmeqZuY/W/nZiUyvmb1/qInjcpiZjXWi6nON+nxJpD1bxtSoBxNliGISae32n6OwbY+TSXPZ1CfS4bw== -"@lerna/bootstrap@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/bootstrap/-/bootstrap-4.0.0.tgz#5f5c5e2c6cfc8fcec50cb2fbe569a8c607101891" - integrity sha512-RkS7UbeM2vu+kJnHzxNRCLvoOP9yGNgkzRdy4UV2hNalD7EP41bLvRVOwRYQ7fhc2QcbhnKNdOBihYRL0LcKtw== - dependencies: - "@lerna/command" "4.0.0" - "@lerna/filter-options" "4.0.0" - "@lerna/has-npm-version" "4.0.0" - "@lerna/npm-install" "4.0.0" - "@lerna/package-graph" "4.0.0" - "@lerna/pulse-till-done" "4.0.0" - "@lerna/rimraf-dir" "4.0.0" - "@lerna/run-lifecycle" "4.0.0" - "@lerna/run-topologically" "4.0.0" - "@lerna/symlink-binary" "4.0.0" - "@lerna/symlink-dependencies" "4.0.0" - "@lerna/validation-error" "4.0.0" - dedent "^0.7.0" - get-port "^5.1.1" - multimatch "^5.0.0" - npm-package-arg "^8.1.0" - npmlog "^4.1.2" - p-map "^4.0.0" - p-map-series "^2.1.0" - p-waterfall "^2.1.1" - read-package-tree "^5.3.1" - semver "^7.3.4" +"@isaacs/balanced-match@^4.0.1": + version "4.0.1" + resolved "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz#3081dadbc3460661b751e7591d7faea5df39dd29" + integrity sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ== -"@lerna/changed@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/changed/-/changed-4.0.0.tgz#b9fc76cea39b9292a6cd263f03eb57af85c9270b" - integrity sha512-cD+KuPRp6qiPOD+BO6S6SN5cARspIaWSOqGBpGnYzLb4uWT8Vk4JzKyYtc8ym1DIwyoFXHosXt8+GDAgR8QrgQ== +"@isaacs/brace-expansion@^5.0.0": + version "5.0.0" + resolved "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz#4b3dabab7d8e75a429414a96bd67bf4c1d13e0f3" + integrity sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA== dependencies: - "@lerna/collect-updates" "4.0.0" - "@lerna/command" "4.0.0" - "@lerna/listable" "4.0.0" - "@lerna/output" "4.0.0" + "@isaacs/balanced-match" "^4.0.1" -"@lerna/check-working-tree@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/check-working-tree/-/check-working-tree-4.0.0.tgz#257e36a602c00142e76082a19358e3e1ae8dbd58" - integrity sha512-/++bxM43jYJCshBiKP5cRlCTwSJdRSxVmcDAXM+1oUewlZJVSVlnks5eO0uLxokVFvLhHlC5kHMc7gbVFPHv6Q== +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== dependencies: - "@lerna/collect-uncommitted" "4.0.0" - "@lerna/describe-ref" "4.0.0" - "@lerna/validation-error" "4.0.0" + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" -"@lerna/child-process@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/child-process/-/child-process-4.0.0.tgz#341b96a57dffbd9705646d316e231df6fa4df6e1" - integrity sha512-XtCnmCT9eyVsUUHx6y/CTBYdV9g2Cr/VxyseTWBgfIur92/YKClfEtJTbOh94jRT62hlKLqSvux/UhxXVh613Q== - dependencies: - chalk "^4.1.0" - execa "^5.0.0" - strong-log-transformer "^2.1.0" +"@isaacs/string-locale-compare@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz#291c227e93fd407a96ecd59879a35809120e432b" + integrity sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ== -"@lerna/clean@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/clean/-/clean-4.0.0.tgz#8f778b6f2617aa2a936a6b5e085ae62498e57dc5" - integrity sha512-uugG2iN9k45ITx2jtd8nEOoAtca8hNlDCUM0N3lFgU/b1mEQYAPRkqr1qs4FLRl/Y50ZJ41wUz1eazS+d/0osA== - dependencies: - "@lerna/command" "4.0.0" - "@lerna/filter-options" "4.0.0" - "@lerna/prompt" "4.0.0" - "@lerna/pulse-till-done" "4.0.0" - "@lerna/rimraf-dir" "4.0.0" - p-map "^4.0.0" - p-map-series "^2.1.0" - p-waterfall "^2.1.1" +"@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3": + version "0.1.3" + resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== -"@lerna/cli@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/cli/-/cli-4.0.0.tgz#8eabd334558836c1664df23f19acb95e98b5bbf3" - integrity sha512-Neaw3GzFrwZiRZv2g7g6NwFjs3er1vhraIniEs0jjVLPMNC4eata0na3GfE5yibkM/9d3gZdmihhZdZ3EBdvYA== +"@jest/schemas@^29.6.3": + version "29.6.3" + resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" + integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== dependencies: - "@lerna/global-options" "4.0.0" - dedent "^0.7.0" - npmlog "^4.1.2" - yargs "^16.2.0" + "@sinclair/typebox" "^0.27.8" -"@lerna/collect-uncommitted@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/collect-uncommitted/-/collect-uncommitted-4.0.0.tgz#855cd64612969371cfc2453b90593053ff1ba779" - integrity sha512-ufSTfHZzbx69YNj7KXQ3o66V4RC76ffOjwLX0q/ab//61bObJ41n03SiQEhSlmpP+gmFbTJ3/7pTe04AHX9m/g== +"@jridgewell/gen-mapping@^0.3.5": + version "0.3.8" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz#4f0e06362e01362f823d348f1872b08f666d8142" + integrity sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA== dependencies: - "@lerna/child-process" "4.0.0" - chalk "^4.1.0" - npmlog "^4.1.2" + "@jridgewell/set-array" "^1.2.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.24" -"@lerna/collect-updates@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/collect-updates/-/collect-updates-4.0.0.tgz#8e208b1bafd98a372ff1177f7a5e288f6bea8041" - integrity sha512-bnNGpaj4zuxsEkyaCZLka9s7nMs58uZoxrRIPJ+nrmrZYp1V5rrd+7/NYTuunOhY2ug1sTBvTAxj3NZQ+JKnOw== - dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/describe-ref" "4.0.0" - minimatch "^3.0.4" - npmlog "^4.1.2" - slash "^3.0.0" +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.2" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== -"@lerna/command@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/command/-/command-4.0.0.tgz#991c7971df8f5bf6ae6e42c808869a55361c1b98" - integrity sha512-LM9g3rt5FsPNFqIHUeRwWXLNHJ5NKzOwmVKZ8anSp4e1SPrv2HNc1V02/9QyDDZK/w+5POXH5lxZUI1CHaOK/A== - dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/package-graph" "4.0.0" - "@lerna/project" "4.0.0" - "@lerna/validation-error" "4.0.0" - "@lerna/write-log-file" "4.0.0" - clone-deep "^4.0.1" - dedent "^0.7.0" - execa "^5.0.0" - is-ci "^2.0.0" - npmlog "^4.1.2" - -"@lerna/conventional-commits@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/conventional-commits/-/conventional-commits-4.0.0.tgz#660fb2c7b718cb942ead70110df61f18c6f99750" - integrity sha512-CSUQRjJHFrH8eBn7+wegZLV3OrNc0Y1FehYfYGhjLE2SIfpCL4bmfu/ViYuHh9YjwHaA+4SX6d3hR+xkeseKmw== - dependencies: - "@lerna/validation-error" "4.0.0" - conventional-changelog-angular "^5.0.12" - conventional-changelog-core "^4.2.2" - conventional-recommended-bump "^6.1.0" - fs-extra "^9.1.0" - get-stream "^6.0.0" - lodash.template "^4.5.0" - npm-package-arg "^8.1.0" - npmlog "^4.1.2" - pify "^5.0.0" - semver "^7.3.4" +"@jridgewell/set-array@^1.2.1": + version "1.2.1" + resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" + integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== -"@lerna/create-symlink@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/create-symlink/-/create-symlink-4.0.0.tgz#8c5317ce5ae89f67825443bd7651bf4121786228" - integrity sha512-I0phtKJJdafUiDwm7BBlEUOtogmu8+taxq6PtIrxZbllV9hWg59qkpuIsiFp+no7nfRVuaasNYHwNUhDAVQBig== - dependencies: - cmd-shim "^4.1.0" - fs-extra "^9.1.0" - npmlog "^4.1.2" +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": + version "1.5.0" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" + integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== -"@lerna/create@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/create/-/create-4.0.0.tgz#b6947e9b5dfb6530321952998948c3e63d64d730" - integrity sha512-mVOB1niKByEUfxlbKTM1UNECWAjwUdiioIbRQZEeEabtjCL69r9rscIsjlGyhGWCfsdAG5wfq4t47nlDXdLLag== - dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/command" "4.0.0" - "@lerna/npm-conf" "4.0.0" - "@lerna/validation-error" "4.0.0" - dedent "^0.7.0" - fs-extra "^9.1.0" - globby "^11.0.2" - init-package-json "^2.0.2" - npm-package-arg "^8.1.0" +"@jridgewell/sourcemap-codec@^1.5.0": + version "1.5.4" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz#7358043433b2e5da569aa02cbc4c121da3af27d7" + integrity sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw== + +"@jridgewell/trace-mapping@^0.3.23", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": + version "0.3.25" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" + integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@lerna/create@8.2.3": + version "8.2.3" + resolved "https://registry.npmjs.org/@lerna/create/-/create-8.2.3.tgz#8e88fedb60eb699f2f5057e7344d9f980b7f9554" + integrity sha512-f+68+iojcQ0tZRMfCgQyJdsdz+YPu3/d+0Zo1RJz92bgBxTCiEU+dHACVq1n3sEjm/YWPnFGdag8U5EYYmP3WA== + dependencies: + "@npmcli/arborist" "7.5.4" + "@npmcli/package-json" "5.2.0" + "@npmcli/run-script" "8.1.0" + "@nx/devkit" ">=17.1.2 < 21" + "@octokit/plugin-enterprise-rest" "6.0.1" + "@octokit/rest" "20.1.2" + aproba "2.0.0" + byte-size "8.1.1" + chalk "4.1.0" + clone-deep "4.0.1" + cmd-shim "6.0.3" + color-support "1.1.3" + columnify "1.6.0" + console-control-strings "^1.1.0" + conventional-changelog-core "5.0.1" + conventional-recommended-bump "7.0.1" + cosmiconfig "9.0.0" + dedent "1.5.3" + execa "5.0.0" + fs-extra "^11.2.0" + get-stream "6.0.0" + git-url-parse "14.0.0" + glob-parent "6.0.2" + graceful-fs "4.2.11" + has-unicode "2.0.1" + ini "^1.3.8" + init-package-json "6.0.3" + inquirer "^8.2.4" + is-ci "3.0.1" + is-stream "2.0.0" + js-yaml "4.1.0" + libnpmpublish "9.0.9" + load-json-file "6.2.0" + lodash "^4.17.21" + make-dir "4.0.0" + minimatch "3.0.5" + multimatch "5.0.0" + node-fetch "2.6.7" + npm-package-arg "11.0.2" + npm-packlist "8.0.2" + npm-registry-fetch "^17.1.0" + nx ">=17.1.2 < 21" + p-map "4.0.0" + p-map-series "2.1.0" + p-queue "6.6.2" p-reduce "^2.1.0" - pacote "^11.2.6" - pify "^5.0.0" + pacote "^18.0.6" + pify "5.0.0" + read-cmd-shim "4.0.0" + resolve-from "5.0.0" + rimraf "^4.4.1" semver "^7.3.4" + set-blocking "^2.0.0" + signal-exit "3.0.7" slash "^3.0.0" + ssri "^10.0.6" + string-width "^4.2.3" + tar "6.2.1" + temp-dir "1.0.0" + through "2.3.8" + tinyglobby "0.2.12" + upath "2.0.1" + uuid "^10.0.0" validate-npm-package-license "^3.0.4" - validate-npm-package-name "^3.0.0" - whatwg-url "^8.4.0" - yargs-parser "20.2.4" - -"@lerna/describe-ref@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/describe-ref/-/describe-ref-4.0.0.tgz#53c53b4ea65fdceffa072a62bfebe6772c45d9ec" - integrity sha512-eTU5+xC4C5Gcgz+Ey4Qiw9nV2B4JJbMulsYJMW8QjGcGh8zudib7Sduj6urgZXUYNyhYpRs+teci9M2J8u+UvQ== - dependencies: - "@lerna/child-process" "4.0.0" - npmlog "^4.1.2" - -"@lerna/diff@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/diff/-/diff-4.0.0.tgz#6d3071817aaa4205a07bf77cfc6e932796d48b92" - integrity sha512-jYPKprQVg41+MUMxx6cwtqsNm0Yxx9GDEwdiPLwcUTFx+/qKCEwifKNJ1oGIPBxyEHX2PFCOjkK39lHoj2qiag== + validate-npm-package-name "5.0.1" + wide-align "1.1.5" + write-file-atomic "5.0.1" + write-pkg "4.0.0" + yargs "17.7.2" + yargs-parser "21.1.1" + +"@napi-rs/wasm-runtime@0.2.4": + version "0.2.4" + resolved "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.4.tgz#d27788176f250d86e498081e3c5ff48a17606918" + integrity sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ== dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/command" "4.0.0" - "@lerna/validation-error" "4.0.0" - npmlog "^4.1.2" - -"@lerna/exec@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/exec/-/exec-4.0.0.tgz#eb6cb95cb92d42590e9e2d628fcaf4719d4a8be6" - integrity sha512-VGXtL/b/JfY84NB98VWZpIExfhLOzy0ozm/0XaS4a2SmkAJc5CeUfrhvHxxkxiTBLkU+iVQUyYEoAT0ulQ8PCw== - dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/command" "4.0.0" - "@lerna/filter-options" "4.0.0" - "@lerna/profiler" "4.0.0" - "@lerna/run-topologically" "4.0.0" - "@lerna/validation-error" "4.0.0" - p-map "^4.0.0" + "@emnapi/core" "^1.1.0" + "@emnapi/runtime" "^1.1.0" + "@tybys/wasm-util" "^0.9.0" -"@lerna/filter-options@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/filter-options/-/filter-options-4.0.0.tgz#ac94cc515d7fa3b47e2f7d74deddeabb1de5e9e6" - integrity sha512-vV2ANOeZhOqM0rzXnYcFFCJ/kBWy/3OA58irXih9AMTAlQLymWAK0akWybl++sUJ4HB9Hx12TOqaXbYS2NM5uw== +"@napi-rs/wasm-runtime@^0.2.11": + version "0.2.11" + resolved "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.11.tgz#192c1610e1625048089ab4e35bc0649ce478500e" + integrity sha512-9DPkXtvHydrcOsopiYpUgPHpmj0HWZKMUnL2dZqpvC42lsratuBG06V5ipyno0fUek5VlFsNQ+AcFATSrJXgMA== dependencies: - "@lerna/collect-updates" "4.0.0" - "@lerna/filter-packages" "4.0.0" - dedent "^0.7.0" - npmlog "^4.1.2" + "@emnapi/core" "^1.4.3" + "@emnapi/runtime" "^1.4.3" + "@tybys/wasm-util" "^0.9.0" -"@lerna/filter-packages@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/filter-packages/-/filter-packages-4.0.0.tgz#b1f70d70e1de9cdd36a4e50caa0ac501f8d012f2" - integrity sha512-+4AJIkK7iIiOaqCiVTYJxh/I9qikk4XjNQLhE3kixaqgMuHl1NQ99qXRR0OZqAWB9mh8Z1HA9bM5K1HZLBTOqA== +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== dependencies: - "@lerna/validation-error" "4.0.0" - multimatch "^5.0.0" - npmlog "^4.1.2" + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" -"@lerna/get-npm-exec-opts@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-4.0.0.tgz#dc955be94a4ae75c374ef9bce91320887d34608f" - integrity sha512-yvmkerU31CTWS2c7DvmAWmZVeclPBqI7gPVr5VATUKNWJ/zmVcU4PqbYoLu92I9Qc4gY1TuUplMNdNuZTSL7IQ== - dependencies: - npmlog "^4.1.2" +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== -"@lerna/get-packed@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/get-packed/-/get-packed-4.0.0.tgz#0989d61624ac1f97e393bdad2137c49cd7a37823" - integrity sha512-rfWONRsEIGyPJTxFzC8ECb3ZbsDXJbfqWYyeeQQDrJRPnEJErlltRLPLgC2QWbxFgFPsoDLeQmFHJnf0iDfd8w== +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== dependencies: - fs-extra "^9.1.0" - ssri "^8.0.1" - tar "^6.1.0" + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" -"@lerna/github-client@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/github-client/-/github-client-4.0.0.tgz#2ced67721363ef70f8e12ffafce4410918f4a8a4" - integrity sha512-2jhsldZtTKXYUBnOm23Lb0Fx8G4qfSXF9y7UpyUgWUj+YZYd+cFxSuorwQIgk5P4XXrtVhsUesIsli+BYSThiw== +"@npmcli/agent@^2.0.0": + version "2.2.2" + resolved "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.2.tgz#967604918e62f620a648c7975461c9c9e74fc5d5" + integrity sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og== + dependencies: + agent-base "^7.1.0" + http-proxy-agent "^7.0.0" + https-proxy-agent "^7.0.1" + lru-cache "^10.0.1" + socks-proxy-agent "^8.0.3" + +"@npmcli/arborist@7.5.4": + version "7.5.4" + resolved "https://registry.npmjs.org/@npmcli/arborist/-/arborist-7.5.4.tgz#3dd9e531d6464ef6715e964c188e0880c471ac9b" + integrity sha512-nWtIc6QwwoUORCRNzKx4ypHqCk3drI+5aeYdMTQQiRCcn4lOOgfQh7WyZobGYTxXPSq1VwV53lkpN/BRlRk08g== + dependencies: + "@isaacs/string-locale-compare" "^1.1.0" + "@npmcli/fs" "^3.1.1" + "@npmcli/installed-package-contents" "^2.1.0" + "@npmcli/map-workspaces" "^3.0.2" + "@npmcli/metavuln-calculator" "^7.1.1" + "@npmcli/name-from-folder" "^2.0.0" + "@npmcli/node-gyp" "^3.0.0" + "@npmcli/package-json" "^5.1.0" + "@npmcli/query" "^3.1.0" + "@npmcli/redact" "^2.0.0" + "@npmcli/run-script" "^8.1.0" + bin-links "^4.0.4" + cacache "^18.0.3" + common-ancestor-path "^1.0.1" + hosted-git-info "^7.0.2" + json-parse-even-better-errors "^3.0.2" + json-stringify-nice "^1.1.4" + lru-cache "^10.2.2" + minimatch "^9.0.4" + nopt "^7.2.1" + npm-install-checks "^6.2.0" + npm-package-arg "^11.0.2" + npm-pick-manifest "^9.0.1" + npm-registry-fetch "^17.0.1" + pacote "^18.0.6" + parse-conflict-json "^3.0.0" + proc-log "^4.2.0" + proggy "^2.0.0" + promise-all-reject-late "^1.0.0" + promise-call-limit "^3.0.1" + read-package-json-fast "^3.0.2" + semver "^7.3.7" + ssri "^10.0.6" + treeverse "^3.0.0" + walk-up-path "^3.0.1" + +"@npmcli/fs@^3.1.0", "@npmcli/fs@^3.1.1": + version "3.1.1" + resolved "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz#59cdaa5adca95d135fc00f2bb53f5771575ce726" + integrity sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg== dependencies: - "@lerna/child-process" "4.0.0" - "@octokit/plugin-enterprise-rest" "^6.0.1" - "@octokit/rest" "^18.1.0" - git-url-parse "^11.4.4" - npmlog "^4.1.2" + semver "^7.3.5" -"@lerna/gitlab-client@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/gitlab-client/-/gitlab-client-4.0.0.tgz#00dad73379c7b38951d4b4ded043504c14e2b67d" - integrity sha512-OMUpGSkeDWFf7BxGHlkbb35T7YHqVFCwBPSIR6wRsszY8PAzCYahtH3IaJzEJyUg6vmZsNl0FSr3pdA2skhxqA== +"@npmcli/git@^5.0.0": + version "5.0.8" + resolved "https://registry.npmjs.org/@npmcli/git/-/git-5.0.8.tgz#8ba3ff8724192d9ccb2735a2aa5380a992c5d3d1" + integrity sha512-liASfw5cqhjNW9UFd+ruwwdEf/lbOAQjLL2XY2dFW/bkJheXDYZgOyul/4gVvEV4BWkTXjYGmDqMw9uegdbJNQ== dependencies: - node-fetch "^2.6.1" - npmlog "^4.1.2" - whatwg-url "^8.4.0" + "@npmcli/promise-spawn" "^7.0.0" + ini "^4.1.3" + lru-cache "^10.0.1" + npm-pick-manifest "^9.0.0" + proc-log "^4.0.0" + promise-inflight "^1.0.1" + promise-retry "^2.0.1" + semver "^7.3.5" + which "^4.0.0" -"@lerna/global-options@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/global-options/-/global-options-4.0.0.tgz#c7d8b0de6a01d8a845e2621ea89e7f60f18c6a5f" - integrity sha512-TRMR8afAHxuYBHK7F++Ogop2a82xQjoGna1dvPOY6ltj/pEx59pdgcJfYcynYqMkFIk8bhLJJN9/ndIfX29FTQ== +"@npmcli/installed-package-contents@^2.0.1", "@npmcli/installed-package-contents@^2.1.0": + version "2.1.0" + resolved "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.1.0.tgz#63048e5f6e40947a3a88dcbcb4fd9b76fdd37c17" + integrity sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w== + dependencies: + npm-bundled "^3.0.0" + npm-normalize-package-bin "^3.0.0" + +"@npmcli/map-workspaces@^3.0.2": + version "3.0.6" + resolved "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-3.0.6.tgz#27dc06c20c35ef01e45a08909cab9cb3da08cea6" + integrity sha512-tkYs0OYnzQm6iIRdfy+LcLBjcKuQCeE5YLb8KnrIlutJfheNaPvPpgoFEyEFgbjzl5PLZ3IA/BWAwRU0eHuQDA== + dependencies: + "@npmcli/name-from-folder" "^2.0.0" + glob "^10.2.2" + minimatch "^9.0.0" + read-package-json-fast "^3.0.0" + +"@npmcli/metavuln-calculator@^7.1.1": + version "7.1.1" + resolved "https://registry.npmjs.org/@npmcli/metavuln-calculator/-/metavuln-calculator-7.1.1.tgz#4d3b6c3192f72bc8ad59476de0da939c33877fcf" + integrity sha512-Nkxf96V0lAx3HCpVda7Vw4P23RILgdi/5K1fmj2tZkWIYLpXAN8k2UVVOsW16TsS5F8Ws2I7Cm+PU1/rsVF47g== + dependencies: + cacache "^18.0.0" + json-parse-even-better-errors "^3.0.0" + pacote "^18.0.0" + proc-log "^4.1.0" + semver "^7.3.5" -"@lerna/has-npm-version@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/has-npm-version/-/has-npm-version-4.0.0.tgz#d3fc3292c545eb28bd493b36e6237cf0279f631c" - integrity sha512-LQ3U6XFH8ZmLCsvsgq1zNDqka0Xzjq5ibVN+igAI5ccRWNaUsE/OcmsyMr50xAtNQMYMzmpw5GVLAivT2/YzCg== - dependencies: - "@lerna/child-process" "4.0.0" - semver "^7.3.4" +"@npmcli/name-from-folder@^2.0.0": + version "2.0.0" + resolved "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-2.0.0.tgz#c44d3a7c6d5c184bb6036f4d5995eee298945815" + integrity sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg== -"@lerna/import@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/import/-/import-4.0.0.tgz#bde656c4a451fa87ae41733ff8a8da60547c5465" - integrity sha512-FaIhd+4aiBousKNqC7TX1Uhe97eNKf5/SC7c5WZANVWtC7aBWdmswwDt3usrzCNpj6/Wwr9EtEbYROzxKH8ffg== - dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/command" "4.0.0" - "@lerna/prompt" "4.0.0" - "@lerna/pulse-till-done" "4.0.0" - "@lerna/validation-error" "4.0.0" - dedent "^0.7.0" - fs-extra "^9.1.0" - p-map-series "^2.1.0" - -"@lerna/info@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/info/-/info-4.0.0.tgz#b9fb0e479d60efe1623603958a831a88b1d7f1fc" - integrity sha512-8Uboa12kaCSZEn4XRfPz5KU9XXoexSPS4oeYGj76s2UQb1O1GdnEyfjyNWoUl1KlJ2i/8nxUskpXIftoFYH0/Q== - dependencies: - "@lerna/command" "4.0.0" - "@lerna/output" "4.0.0" - envinfo "^7.7.4" +"@npmcli/node-gyp@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz#101b2d0490ef1aa20ed460e4c0813f0db560545a" + integrity sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA== -"@lerna/init@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/init/-/init-4.0.0.tgz#dadff67e6dfb981e8ccbe0e6a310e837962f6c7a" - integrity sha512-wY6kygop0BCXupzWj5eLvTUqdR7vIAm0OgyV9WHpMYQGfs1V22jhztt8mtjCloD/O0nEe4tJhdG62XU5aYmPNQ== +"@npmcli/package-json@5.2.0": + version "5.2.0" + resolved "https://registry.npmjs.org/@npmcli/package-json/-/package-json-5.2.0.tgz#a1429d3111c10044c7efbfb0fce9f2c501f4cfad" + integrity sha512-qe/kiqqkW0AGtvBjL8TJKZk/eBBSpnJkUWvHdQ9jM2lKHXRYYJuyNpJPlJw3c8QjC2ow6NZYiLExhUaeJelbxQ== + dependencies: + "@npmcli/git" "^5.0.0" + glob "^10.2.2" + hosted-git-info "^7.0.0" + json-parse-even-better-errors "^3.0.0" + normalize-package-data "^6.0.0" + proc-log "^4.0.0" + semver "^7.5.3" + +"@npmcli/package-json@^5.0.0", "@npmcli/package-json@^5.1.0": + version "5.2.1" + resolved "https://registry.npmjs.org/@npmcli/package-json/-/package-json-5.2.1.tgz#df69477b1023b81ff8503f2b9db4db4faea567ed" + integrity sha512-f7zYC6kQautXHvNbLEWgD/uGu1+xCn9izgqBfgItWSx22U0ZDekxN08A1vM8cTxj/cRVe0Q94Ode+tdoYmIOOQ== + dependencies: + "@npmcli/git" "^5.0.0" + glob "^10.2.2" + hosted-git-info "^7.0.0" + json-parse-even-better-errors "^3.0.0" + normalize-package-data "^6.0.0" + proc-log "^4.0.0" + semver "^7.5.3" + +"@npmcli/promise-spawn@^7.0.0": + version "7.0.2" + resolved "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-7.0.2.tgz#1d53d34ffeb5d151bfa8ec661bcccda8bbdfd532" + integrity sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ== dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/command" "4.0.0" - fs-extra "^9.1.0" - p-map "^4.0.0" - write-json-file "^4.3.0" + which "^4.0.0" -"@lerna/link@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/link/-/link-4.0.0.tgz#c3a38aabd44279d714e90f2451e31b63f0fb65ba" - integrity sha512-KlvPi7XTAcVOByfaLlOeYOfkkDcd+bejpHMCd1KcArcFTwijOwXOVi24DYomIeHvy6HsX/IUquJ4PPUJIeB4+w== +"@npmcli/query@^3.1.0": + version "3.1.0" + resolved "https://registry.npmjs.org/@npmcli/query/-/query-3.1.0.tgz#bc202c59e122a06cf8acab91c795edda2cdad42c" + integrity sha512-C/iR0tk7KSKGldibYIB9x8GtO/0Bd0I2mhOaDb8ucQL/bQVTmGoeREaFj64Z5+iCBRf3dQfed0CjJL7I8iTkiQ== dependencies: - "@lerna/command" "4.0.0" - "@lerna/package-graph" "4.0.0" - "@lerna/symlink-dependencies" "4.0.0" - p-map "^4.0.0" - slash "^3.0.0" + postcss-selector-parser "^6.0.10" -"@lerna/list@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/list/-/list-4.0.0.tgz#24b4e6995bd73f81c556793fe502b847efd9d1d7" - integrity sha512-L2B5m3P+U4Bif5PultR4TI+KtW+SArwq1i75QZ78mRYxPc0U/piau1DbLOmwrdqr99wzM49t0Dlvl6twd7GHFg== - dependencies: - "@lerna/command" "4.0.0" - "@lerna/filter-options" "4.0.0" - "@lerna/listable" "4.0.0" - "@lerna/output" "4.0.0" +"@npmcli/redact@^2.0.0": + version "2.0.1" + resolved "https://registry.npmjs.org/@npmcli/redact/-/redact-2.0.1.tgz#95432fd566e63b35c04494621767a4312c316762" + integrity sha512-YgsR5jCQZhVmTJvjduTOIHph0L73pK8xwMVaDY0PatySqVM9AZj93jpoXYSJqfHFxFkN9dmqTw6OiqExsS3LPw== -"@lerna/listable@4.0.0": +"@npmcli/run-script@8.1.0", "@npmcli/run-script@^8.0.0", "@npmcli/run-script@^8.1.0": + version "8.1.0" + resolved "https://registry.npmjs.org/@npmcli/run-script/-/run-script-8.1.0.tgz#a563e5e29b1ca4e648a6b1bbbfe7220b4bfe39fc" + integrity sha512-y7efHHwghQfk28G2z3tlZ67pLG0XdfYbcVG26r7YIXALRsrVQcTq4/tdenSmdOrEsNahIYA/eh8aEVROWGFUDg== + dependencies: + "@npmcli/node-gyp" "^3.0.0" + "@npmcli/package-json" "^5.0.0" + "@npmcli/promise-spawn" "^7.0.0" + node-gyp "^10.0.0" + proc-log "^4.0.0" + which "^4.0.0" + +"@nx/devkit@>=17.1.2 < 21": + version "20.8.2" + resolved "https://registry.npmjs.org/@nx/devkit/-/devkit-20.8.2.tgz#4bed032a06ac37910fae5e231849283b8ac415fb" + integrity sha512-rr9p2/tZDQivIpuBUpZaFBK6bZ+b5SAjZk75V4tbCUqGW3+5OPuVvBPm+X+7PYwUF6rwSpewxkjWNeGskfCe+Q== + dependencies: + ejs "^3.1.7" + enquirer "~2.3.6" + ignore "^5.0.4" + minimatch "9.0.3" + semver "^7.5.3" + tmp "~0.2.1" + tslib "^2.3.0" + yargs-parser "21.1.1" + +"@nx/nx-darwin-arm64@20.8.2": + version "20.8.2" + resolved "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-20.8.2.tgz#16b20a4aac4228f30124551a1eceb03d5f8330e7" + integrity sha512-t+bmCn6sRPNGU6hnSyWNvbQYA/KgsxGZKYlaCLRwkNhI2akModcBUqtktJzCKd1XHDqs6EkEFBWjFr8/kBEkSg== + +"@nx/nx-darwin-x64@20.8.2": + version "20.8.2" + resolved "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-20.8.2.tgz#06a203a695509e4a6f05a82cb40cc00438a19b3a" + integrity sha512-pt/wmDLM31Es8/EzazlyT5U+ou2l60rfMNFGCLqleHEQ0JUTc0KWnOciBLbHIQFiPsCQZJFEKyfV5V/ncePmmw== + +"@nx/nx-freebsd-x64@20.8.2": + version "20.8.2" + resolved "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-20.8.2.tgz#c7c9ae6e331ca97571f6a048c0f69aa6c5fd2479" + integrity sha512-joZxFbgJfkHkB9uMIJr73Gpnm9pnpvr0XKGbWC409/d2x7q1qK77tKdyhGm+A3+kaZFwstNVPmCUtUwJYyU6LA== + +"@nx/nx-linux-arm-gnueabihf@20.8.2": + version "20.8.2" + resolved "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-20.8.2.tgz#a6ae89115efb7601baa4c3421649ee785d6aa3a9" + integrity sha512-98O/qsxn4vIMPY/FyzvmVrl7C5yFhCUVk0/4PF+PA2SvtQ051L1eMRY6bq/lb69qfN6szJPZ41PG5mPx0NeLZw== + +"@nx/nx-linux-arm64-gnu@20.8.2": + version "20.8.2" + resolved "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-20.8.2.tgz#e9a4676d830783ecad5d5bfaf7bf2579c519321c" + integrity sha512-h6a+HxwfSpxsi4KpxGgPh9GDBmD2E+XqGCdfYpobabxqEBvlnIlJyuDhlRR06cTWpuNXHpRdrVogmV6m/YbtDg== + +"@nx/nx-linux-arm64-musl@20.8.2": + version "20.8.2" + resolved "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-20.8.2.tgz#621657dc85c1cb042102f4ed4976cc5823fccea1" + integrity sha512-4Ev+jM0VAxDHV/dFgMXjQTCXS4I8W4oMe7FSkXpG8RUn6JK659DC8ExIDPoGIh+Cyqq6r6mw1CSia+ciQWICWQ== + +"@nx/nx-linux-x64-gnu@20.8.2": + version "20.8.2" + resolved "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-20.8.2.tgz#2b7b893a931b26a8688304d5352bdef0a2431194" + integrity sha512-nR0ev+wxu+nQYRd7bhqggOxK7UfkV6h+Ko1mumUFyrM5GvPpz/ELhjJFSnMcOkOMcvH0b6G5uTBJvN1XWCkbmg== + +"@nx/nx-linux-x64-musl@20.8.2": + version "20.8.2" + resolved "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-20.8.2.tgz#4188df5b222d6f42fff1e436d494a46af1d30b0b" + integrity sha512-ost41l5yc2aq2Gc9bMMpaPi/jkXqbXEMEPHrxWKuKmaek3K2zbVDQzvBBNcQKxf/mlCsrqN4QO0mKYSRRqag5A== + +"@nx/nx-win32-arm64-msvc@20.8.2": + version "20.8.2" + resolved "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-20.8.2.tgz#6d2122a1c827c100e89698f4a878410833911748" + integrity sha512-0SEOqT/daBG5WtM9vOGilrYaAuf1tiALdrFavY62+/arXYxXemUKmRI5qoKDTnvoLMBGkJs6kxhMO5b7aUXIvQ== + +"@nx/nx-win32-x64-msvc@20.8.2": + version "20.8.2" + resolved "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-20.8.2.tgz#60f4c381ad62369ff7ede9336d92262352514bc1" + integrity sha512-iIsY+tVqes/NOqTbJmggL9Juie/iaDYlWgXA9IUv88FE9thqWKhVj4/tCcPjsOwzD+1SVna3YISEEFsx5UV4ew== + +"@octokit/auth-token@^4.0.0": version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/listable/-/listable-4.0.0.tgz#d00d6cb4809b403f2b0374fc521a78e318b01214" - integrity sha512-/rPOSDKsOHs5/PBLINZOkRIX1joOXUXEtyUs5DHLM8q6/RP668x/1lFhw6Dx7/U+L0+tbkpGtZ1Yt0LewCLgeQ== - dependencies: - "@lerna/query-graph" "4.0.0" - chalk "^4.1.0" - columnify "^1.5.4" + resolved "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz#40d203ea827b9f17f42a29c6afb93b7745ef80c7" + integrity sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA== -"@lerna/log-packed@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/log-packed/-/log-packed-4.0.0.tgz#95168fe2e26ac6a71e42f4be857519b77e57a09f" - integrity sha512-+dpCiWbdzgMAtpajLToy9PO713IHoE6GV/aizXycAyA07QlqnkpaBNZ8DW84gHdM1j79TWockGJo9PybVhrrZQ== - dependencies: - byte-size "^7.0.0" - columnify "^1.5.4" - has-unicode "^2.0.1" - npmlog "^4.1.2" +"@octokit/core@^5.0.2": + version "5.2.1" + resolved "https://registry.npmjs.org/@octokit/core/-/core-5.2.1.tgz#58c21a5f689ee81e0b883b5aa77573a7ff1b4ea1" + integrity sha512-dKYCMuPO1bmrpuogcjQ8z7ICCH3FP6WmxpwC03yjzGfZhj9fTJg6+bS1+UAplekbN2C+M61UNllGOOoAfGCrdQ== + dependencies: + "@octokit/auth-token" "^4.0.0" + "@octokit/graphql" "^7.1.0" + "@octokit/request" "^8.4.1" + "@octokit/request-error" "^5.1.1" + "@octokit/types" "^13.0.0" + before-after-hook "^2.2.0" + universal-user-agent "^6.0.0" -"@lerna/npm-conf@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/npm-conf/-/npm-conf-4.0.0.tgz#b259fd1e1cee2bf5402b236e770140ff9ade7fd2" - integrity sha512-uS7H02yQNq3oejgjxAxqq/jhwGEE0W0ntr8vM3EfpCW1F/wZruwQw+7bleJQ9vUBjmdXST//tk8mXzr5+JXCfw== +"@octokit/endpoint@^9.0.6": + version "9.0.6" + resolved "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.6.tgz#114d912108fe692d8b139cfe7fc0846dfd11b6c0" + integrity sha512-H1fNTMA57HbkFESSt3Y9+FBICv+0jFceJFPWDePYlR/iMGrwM5ph+Dd4XRQs+8X+PUFURLQgX9ChPfhJ/1uNQw== dependencies: - config-chain "^1.1.12" - pify "^5.0.0" + "@octokit/types" "^13.1.0" + universal-user-agent "^6.0.0" -"@lerna/npm-dist-tag@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/npm-dist-tag/-/npm-dist-tag-4.0.0.tgz#d1e99b4eccd3414142f0548ad331bf2d53f3257a" - integrity sha512-F20sg28FMYTgXqEQihgoqSfwmq+Id3zT23CnOwD+XQMPSy9IzyLf1fFVH319vXIw6NF6Pgs4JZN2Qty6/CQXGw== +"@octokit/graphql@^7.1.0": + version "7.1.1" + resolved "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.1.1.tgz#79d9f3d0c96a8fd13d64186fe5c33606d48b79cc" + integrity sha512-3mkDltSfcDUoa176nlGoA32RGjeWjl3K7F/BwHwRMJUW/IteSa4bnSV8p2ThNkcIcZU2umkZWxwETSSCJf2Q7g== dependencies: - "@lerna/otplease" "4.0.0" - npm-package-arg "^8.1.0" - npm-registry-fetch "^9.0.0" - npmlog "^4.1.2" + "@octokit/request" "^8.4.1" + "@octokit/types" "^13.0.0" + universal-user-agent "^6.0.0" -"@lerna/npm-install@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/npm-install/-/npm-install-4.0.0.tgz#31180be3ab3b7d1818a1a0c206aec156b7094c78" - integrity sha512-aKNxq2j3bCH3eXl3Fmu4D54s/YLL9WSwV8W7X2O25r98wzrO38AUN6AB9EtmAx+LV/SP15et7Yueg9vSaanRWg== - dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/get-npm-exec-opts" "4.0.0" - fs-extra "^9.1.0" - npm-package-arg "^8.1.0" - npmlog "^4.1.2" - signal-exit "^3.0.3" - write-pkg "^4.0.0" +"@octokit/openapi-types@^24.2.0": + version "24.2.0" + resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-24.2.0.tgz#3d55c32eac0d38da1a7083a9c3b0cca77924f7d3" + integrity sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg== -"@lerna/npm-publish@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/npm-publish/-/npm-publish-4.0.0.tgz#84eb62e876fe949ae1fd62c60804423dbc2c4472" - integrity sha512-vQb7yAPRo5G5r77DRjHITc9piR9gvEKWrmfCH7wkfBnGWEqu7n8/4bFQ7lhnkujvc8RXOsYpvbMQkNfkYibD/w== - dependencies: - "@lerna/otplease" "4.0.0" - "@lerna/run-lifecycle" "4.0.0" - fs-extra "^9.1.0" - libnpmpublish "^4.0.0" - npm-package-arg "^8.1.0" - npmlog "^4.1.2" - pify "^5.0.0" - read-package-json "^3.0.0" - -"@lerna/npm-run-script@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/npm-run-script/-/npm-run-script-4.0.0.tgz#dfebf4f4601442e7c0b5214f9fb0d96c9350743b" - integrity sha512-Jmyh9/IwXJjOXqKfIgtxi0bxi1pUeKe5bD3S81tkcy+kyng/GNj9WSqD5ZggoNP2NP//s4CLDAtUYLdP7CU9rA== - dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/get-npm-exec-opts" "4.0.0" - npmlog "^4.1.2" +"@octokit/plugin-enterprise-rest@6.0.1": + version "6.0.1" + resolved "https://registry.npmjs.org/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz#e07896739618dab8da7d4077c658003775f95437" + integrity sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw== -"@lerna/otplease@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/otplease/-/otplease-4.0.0.tgz#84972eb43448f8a1077435ba1c5e59233b725850" - integrity sha512-Sgzbqdk1GH4psNiT6hk+BhjOfIr/5KhGBk86CEfHNJTk9BK4aZYyJD4lpDbDdMjIV4g03G7pYoqHzH765T4fxw== +"@octokit/plugin-paginate-rest@11.4.4-cjs.2": + version "11.4.4-cjs.2" + resolved "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.4.4-cjs.2.tgz#979a10d577bce7a393e8e65953887e42b0a05000" + integrity sha512-2dK6z8fhs8lla5PaOTgqfCGBxgAv/le+EhPs27KklPhm1bKObpu6lXzwfUEQ16ajXzqNrKMujsFyo9K2eaoISw== dependencies: - "@lerna/prompt" "4.0.0" + "@octokit/types" "^13.7.0" -"@lerna/output@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/output/-/output-4.0.0.tgz#b1d72215c0e35483e4f3e9994debc82c621851f2" - integrity sha512-Un1sHtO1AD7buDQrpnaYTi2EG6sLF+KOPEAMxeUYG5qG3khTs2Zgzq5WE3dt2N/bKh7naESt20JjIW6tBELP0w== - dependencies: - npmlog "^4.1.2" +"@octokit/plugin-request-log@^4.0.0": + version "4.0.1" + resolved "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-4.0.1.tgz#98a3ca96e0b107380664708111864cb96551f958" + integrity sha512-GihNqNpGHorUrO7Qa9JbAl0dbLnqJVrV8OXe2Zm5/Y4wFkZQDfTreBzVmiRfJVfE4mClXdihHnbpyyO9FSX4HA== -"@lerna/pack-directory@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/pack-directory/-/pack-directory-4.0.0.tgz#8b617db95d20792f043aaaa13a9ccc0e04cb4c74" - integrity sha512-NJrmZNmBHS+5aM+T8N6FVbaKFScVqKlQFJNY2k7nsJ/uklNKsLLl6VhTQBPwMTbf6Tf7l6bcKzpy7aePuq9UiQ== - dependencies: - "@lerna/get-packed" "4.0.0" - "@lerna/package" "4.0.0" - "@lerna/run-lifecycle" "4.0.0" - npm-packlist "^2.1.4" - npmlog "^4.1.2" - tar "^6.1.0" - temp-write "^4.0.0" - -"@lerna/package-graph@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/package-graph/-/package-graph-4.0.0.tgz#16a00253a8ac810f72041481cb46bcee8d8123dd" - integrity sha512-QED2ZCTkfXMKFoTGoccwUzjHtZMSf3UKX14A4/kYyBms9xfFsesCZ6SLI5YeySEgcul8iuIWfQFZqRw+Qrjraw== +"@octokit/plugin-rest-endpoint-methods@13.3.2-cjs.1": + version "13.3.2-cjs.1" + resolved "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-13.3.2-cjs.1.tgz#d0a142ff41d8f7892b6ccef45979049f51ecaa8d" + integrity sha512-VUjIjOOvF2oELQmiFpWA1aOPdawpyaCUqcEBc/UOUnj3Xp6DJGrJ1+bjUIIDzdHjnFNO6q57ODMfdEZnoBkCwQ== dependencies: - "@lerna/prerelease-id-from-version" "4.0.0" - "@lerna/validation-error" "4.0.0" - npm-package-arg "^8.1.0" - npmlog "^4.1.2" - semver "^7.3.4" + "@octokit/types" "^13.8.0" -"@lerna/package@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/package/-/package-4.0.0.tgz#1b4c259c4bcff45c876ee1d591a043aacbc0d6b7" - integrity sha512-l0M/izok6FlyyitxiQKr+gZLVFnvxRQdNhzmQ6nRnN9dvBJWn+IxxpM+cLqGACatTnyo9LDzNTOj2Db3+s0s8Q== +"@octokit/request-error@^5.1.1": + version "5.1.1" + resolved "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.1.1.tgz#b9218f9c1166e68bb4d0c89b638edc62c9334805" + integrity sha512-v9iyEQJH6ZntoENr9/yXxjuezh4My67CBSu9r6Ve/05Iu5gNgnisNWOsoJHTP6k0Rr0+HQIpnH+kyammu90q/g== dependencies: - load-json-file "^6.2.0" - npm-package-arg "^8.1.0" - write-pkg "^4.0.0" + "@octokit/types" "^13.1.0" + deprecation "^2.0.0" + once "^1.4.0" -"@lerna/prerelease-id-from-version@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-4.0.0.tgz#c7e0676fcee1950d85630e108eddecdd5b48c916" - integrity sha512-GQqguzETdsYRxOSmdFZ6zDBXDErIETWOqomLERRY54f4p+tk4aJjoVdd9xKwehC9TBfIFvlRbL1V9uQGHh1opg== +"@octokit/request@^8.4.1": + version "8.4.1" + resolved "https://registry.npmjs.org/@octokit/request/-/request-8.4.1.tgz#715a015ccf993087977ea4365c44791fc4572486" + integrity sha512-qnB2+SY3hkCmBxZsR/MPCybNmbJe4KAlfWErXq+rBKkQJlbjdJeS85VI9r8UqeLYLvnAenU8Q1okM/0MBsAGXw== dependencies: - semver "^7.3.4" + "@octokit/endpoint" "^9.0.6" + "@octokit/request-error" "^5.1.1" + "@octokit/types" "^13.1.0" + universal-user-agent "^6.0.0" -"@lerna/profiler@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/profiler/-/profiler-4.0.0.tgz#8a53ab874522eae15d178402bff90a14071908e9" - integrity sha512-/BaEbqnVh1LgW/+qz8wCuI+obzi5/vRE8nlhjPzdEzdmWmZXuCKyWSEzAyHOJWw1ntwMiww5dZHhFQABuoFz9Q== +"@octokit/rest@20.1.2": + version "20.1.2" + resolved "https://registry.npmjs.org/@octokit/rest/-/rest-20.1.2.tgz#1d74d0c72ade0d64f7c5416448d5c885f5e3ccc4" + integrity sha512-GmYiltypkHHtihFwPRxlaorG5R9VAHuk/vbszVoRTGXnAsY60wYLkh/E2XiFmdZmqrisw+9FaazS1i5SbdWYgA== dependencies: - fs-extra "^9.1.0" - npmlog "^4.1.2" - upath "^2.0.1" + "@octokit/core" "^5.0.2" + "@octokit/plugin-paginate-rest" "11.4.4-cjs.2" + "@octokit/plugin-request-log" "^4.0.0" + "@octokit/plugin-rest-endpoint-methods" "13.3.2-cjs.1" -"@lerna/project@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/project/-/project-4.0.0.tgz#ff84893935833533a74deff30c0e64ddb7f0ba6b" - integrity sha512-o0MlVbDkD5qRPkFKlBZsXZjoNTWPyuL58564nSfZJ6JYNmgAptnWPB2dQlAc7HWRZkmnC2fCkEdoU+jioPavbg== - dependencies: - "@lerna/package" "4.0.0" - "@lerna/validation-error" "4.0.0" - cosmiconfig "^7.0.0" - dedent "^0.7.0" - dot-prop "^6.0.1" - glob-parent "^5.1.1" - globby "^11.0.2" - load-json-file "^6.2.0" - npmlog "^4.1.2" - p-map "^4.0.0" - resolve-from "^5.0.0" - write-json-file "^4.3.0" - -"@lerna/prompt@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/prompt/-/prompt-4.0.0.tgz#5ec69a803f3f0db0ad9f221dad64664d3daca41b" - integrity sha512-4Ig46oCH1TH5M7YyTt53fT6TuaKMgqUUaqdgxvp6HP6jtdak6+amcsqB8YGz2eQnw/sdxunx84DfI9XpoLj4bQ== +"@octokit/types@^13.0.0", "@octokit/types@^13.1.0", "@octokit/types@^13.7.0", "@octokit/types@^13.8.0": + version "13.10.0" + resolved "https://registry.npmjs.org/@octokit/types/-/types-13.10.0.tgz#3e7c6b19c0236c270656e4ea666148c2b51fd1a3" + integrity sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA== dependencies: - inquirer "^7.3.3" - npmlog "^4.1.2" + "@octokit/openapi-types" "^24.2.0" -"@lerna/publish@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/publish/-/publish-4.0.0.tgz#f67011305adeba120066a3b6d984a5bb5fceef65" - integrity sha512-K8jpqjHrChH22qtkytA5GRKIVFEtqBF6JWj1I8dWZtHs4Jywn8yB1jQ3BAMLhqmDJjWJtRck0KXhQQKzDK2UPg== - dependencies: - "@lerna/check-working-tree" "4.0.0" - "@lerna/child-process" "4.0.0" - "@lerna/collect-updates" "4.0.0" - "@lerna/command" "4.0.0" - "@lerna/describe-ref" "4.0.0" - "@lerna/log-packed" "4.0.0" - "@lerna/npm-conf" "4.0.0" - "@lerna/npm-dist-tag" "4.0.0" - "@lerna/npm-publish" "4.0.0" - "@lerna/otplease" "4.0.0" - "@lerna/output" "4.0.0" - "@lerna/pack-directory" "4.0.0" - "@lerna/prerelease-id-from-version" "4.0.0" - "@lerna/prompt" "4.0.0" - "@lerna/pulse-till-done" "4.0.0" - "@lerna/run-lifecycle" "4.0.0" - "@lerna/run-topologically" "4.0.0" - "@lerna/validation-error" "4.0.0" - "@lerna/version" "4.0.0" - fs-extra "^9.1.0" - libnpmaccess "^4.0.1" - npm-package-arg "^8.1.0" - npm-registry-fetch "^9.0.0" - npmlog "^4.1.2" - p-map "^4.0.0" - p-pipe "^3.1.0" - pacote "^11.2.6" - semver "^7.3.4" +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== -"@lerna/pulse-till-done@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/pulse-till-done/-/pulse-till-done-4.0.0.tgz#04bace7d483a8205c187b806bcd8be23d7bb80a3" - integrity sha512-Frb4F7QGckaybRhbF7aosLsJ5e9WuH7h0KUkjlzSByVycxY91UZgaEIVjS2oN9wQLrheLMHl6SiFY0/Pvo0Cxg== - dependencies: - npmlog "^4.1.2" +"@pnpm/constants@7.1.1": + version "7.1.1" + resolved "https://registry.npmjs.org/@pnpm/constants/-/constants-7.1.1.tgz#3db261425fe15425aa213a2b003f4f60c9378b43" + integrity sha512-31pZqMtjwV+Vaq7MaPrT1EoDFSYwye3dp6BiHIGRJmVThCQwySRKM7hCvqqI94epNkqFAAYoWrNynWoRYosGdw== -"@lerna/query-graph@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/query-graph/-/query-graph-4.0.0.tgz#09dd1c819ac5ee3f38db23931143701f8a6eef63" - integrity sha512-YlP6yI3tM4WbBmL9GCmNDoeQyzcyg1e4W96y/PKMZa5GbyUvkS2+Jc2kwPD+5KcXou3wQZxSPzR3Te5OenaDdg== +"@pnpm/error@5.0.3": + version "5.0.3" + resolved "https://registry.npmjs.org/@pnpm/error/-/error-5.0.3.tgz#4dbb9f4acb0b30c373b3ca5024cdf495f03f4380" + integrity sha512-ONJU5cUeoeJSy50qOYsMZQHTA/9QKmGgh1ATfEpCLgtbdwqUiwD9MxHNeXUYYI/pocBCz6r1ZCFqiQvO+8SUKA== dependencies: - "@lerna/package-graph" "4.0.0" + "@pnpm/constants" "7.1.1" -"@lerna/resolve-symlink@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/resolve-symlink/-/resolve-symlink-4.0.0.tgz#6d006628a210c9b821964657a9e20a8c9a115e14" - integrity sha512-RtX8VEUzqT+uLSCohx8zgmjc6zjyRlh6i/helxtZTMmc4+6O4FS9q5LJas2uGO2wKvBlhcD6siibGt7dIC3xZA== - dependencies: - fs-extra "^9.1.0" - npmlog "^4.1.2" - read-cmd-shim "^2.0.0" - -"@lerna/rimraf-dir@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/rimraf-dir/-/rimraf-dir-4.0.0.tgz#2edf3b62d4eb0ef4e44e430f5844667d551ec25a" - integrity sha512-QNH9ABWk9mcMJh2/muD9iYWBk1oQd40y6oH+f3wwmVGKYU5YJD//+zMiBI13jxZRtwBx0vmBZzkBkK1dR11cBg== - dependencies: - "@lerna/child-process" "4.0.0" - npmlog "^4.1.2" - path-exists "^4.0.0" - rimraf "^3.0.2" +"@pnpm/graceful-fs@3.2.0": + version "3.2.0" + resolved "https://registry.npmjs.org/@pnpm/graceful-fs/-/graceful-fs-3.2.0.tgz#241846c42c23feff7421b8bd97d4039891003f12" + integrity sha512-vRoXJxscDpHak7YE9SqCkzfrayn+Lw+YueOeHIPEqkgokrHeYgYeONoc2kGh0ObHaRtNSsonozVfJ456kxLNvA== + dependencies: + graceful-fs "^4.2.11" + +"@pnpm/read-project-manifest@^5.0.10": + version "5.0.11" + resolved "https://registry.npmjs.org/@pnpm/read-project-manifest/-/read-project-manifest-5.0.11.tgz#50bc7bc7183bc49ae85925edb93836db63d5bb6a" + integrity sha512-themRLiDt9Ud6Somlu0PJbeprBBQEhlI1xNG5bZIv26yfLsc1vYLd1TfgGViD1b8fP0jxAqsUrDM+WMaMKI+gw== + dependencies: + "@gwhitney/detect-indent" "7.0.1" + "@pnpm/error" "5.0.3" + "@pnpm/graceful-fs" "3.2.0" + "@pnpm/text.comments-parser" "2.0.0" + "@pnpm/types" "9.4.2" + "@pnpm/write-project-manifest" "5.0.6" + fast-deep-equal "^3.1.3" + is-windows "^1.0.2" + json5 "^2.2.3" + lodash.clonedeep "^4.5.0" + parse-json "^5.2.0" + read-yaml-file "^2.1.0" + sort-keys "^4.2.0" + strip-bom "^4.0.0" -"@lerna/run-lifecycle@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/run-lifecycle/-/run-lifecycle-4.0.0.tgz#e648a46f9210a9bcd7c391df6844498cb5079334" - integrity sha512-IwxxsajjCQQEJAeAaxF8QdEixfI7eLKNm4GHhXHrgBu185JcwScFZrj9Bs+PFKxwb+gNLR4iI5rpUdY8Y0UdGQ== +"@pnpm/text.comments-parser@2.0.0": + version "2.0.0" + resolved "https://registry.npmjs.org/@pnpm/text.comments-parser/-/text.comments-parser-2.0.0.tgz#902d53ced2a0ae6a6d99b12ec6eb85dbc79e517a" + integrity sha512-DRWtTmmxQQtuWHf1xPt9bqzCSq8d0MQF5x1kdpCDMLd7xk3nP4To2/OGkPrb8MKbrWsgCNDwXyKCFlEKrAg7fg== + dependencies: + strip-comments-strings "1.2.0" + +"@pnpm/types@9.4.2": + version "9.4.2" + resolved "https://registry.npmjs.org/@pnpm/types/-/types-9.4.2.tgz#0a34c3c41d5452461d8d8958374a727f9c46cfb2" + integrity sha512-g1hcF8Nv4gd76POilz9gD4LITAPXOe5nX4ijgr8ixCbLQZfcpYiMfJ+C1RlMNRUDo8vhlNB4O3bUlxmT6EAQXA== + +"@pnpm/write-project-manifest@5.0.6": + version "5.0.6" + resolved "https://registry.npmjs.org/@pnpm/write-project-manifest/-/write-project-manifest-5.0.6.tgz#a074f5d833ffbc7bb1b1d34cb23e274fb6780761" + integrity sha512-3qkKCftRE/HXzoWedyDuaMMUQzheDwx8AQXR0DnA9ylsBnZQYNut19Ado/gzi5+IvznaMcqrBszw57j3y1/ILw== + dependencies: + "@pnpm/text.comments-parser" "2.0.0" + "@pnpm/types" "9.4.2" + json5 "^2.2.3" + write-file-atomic "^5.0.1" + write-yaml-file "^5.0.0" + +"@rollup/rollup-android-arm-eabi@4.43.0": + version "4.43.0" + resolved "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.43.0.tgz#9241b59af721beb7e3587a56c6c245d6c465753d" + integrity sha512-Krjy9awJl6rKbruhQDgivNbD1WuLb8xAclM4IR4cN5pHGAs2oIMMQJEiC3IC/9TZJ+QZkmZhlMO/6MBGxPidpw== + +"@rollup/rollup-android-arm-eabi@4.50.1": + version "4.50.1" + resolved "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.50.1.tgz#7d41dc45adcfcb272504ebcea9c8a5b2c659e963" + integrity sha512-HJXwzoZN4eYTdD8bVV22DN8gsPCAj3V20NHKOs8ezfXanGpmVPR7kalUHd+Y31IJp9stdB87VKPFbsGY3H/2ag== + +"@rollup/rollup-android-arm64@4.43.0": + version "4.43.0" + resolved "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.43.0.tgz#f70ee53ba991fdd65c277b0716c559736d490a58" + integrity sha512-ss4YJwRt5I63454Rpj+mXCXicakdFmKnUNxr1dLK+5rv5FJgAxnN7s31a5VchRYxCFWdmnDWKd0wbAdTr0J5EA== + +"@rollup/rollup-android-arm64@4.50.1": + version "4.50.1" + resolved "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.50.1.tgz#6c708fae2c9755e994c42d56c34a94cb77020650" + integrity sha512-PZlsJVcjHfcH53mOImyt3bc97Ep3FJDXRpk9sMdGX0qgLmY0EIWxCag6EigerGhLVuL8lDVYNnSo8qnTElO4xw== + +"@rollup/rollup-darwin-arm64@4.43.0": + version "4.43.0" + resolved "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.43.0.tgz#9f59000e817cf5760d87515ce899f8b93fe8756a" + integrity sha512-eKoL8ykZ7zz8MjgBenEF2OoTNFAPFz1/lyJ5UmmFSz5jW+7XbH1+MAgCVHy72aG59rbuQLcJeiMrP8qP5d/N0A== + +"@rollup/rollup-darwin-arm64@4.50.1": + version "4.50.1" + resolved "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.50.1.tgz#85ccf92ab114e434c83037a175923a525635cbb4" + integrity sha512-xc6i2AuWh++oGi4ylOFPmzJOEeAa2lJeGUGb4MudOtgfyyjr4UPNK+eEWTPLvmPJIY/pgw6ssFIox23SyrkkJw== + +"@rollup/rollup-darwin-x64@4.43.0": + version "4.43.0" + resolved "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.43.0.tgz#c92aebd02725ae1b88bdce40f08f7823e8055c78" + integrity sha512-SYwXJgaBYW33Wi/q4ubN+ldWC4DzQY62S4Ll2dgfr/dbPoF50dlQwEaEHSKrQdSjC6oIe1WgzosoaNoHCdNuMg== + +"@rollup/rollup-darwin-x64@4.50.1": + version "4.50.1" + resolved "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.50.1.tgz#0af089f3d658d05573208dabb3a392b44d7f4630" + integrity sha512-2ofU89lEpDYhdLAbRdeyz/kX3Y2lpYc6ShRnDjY35bZhd2ipuDMDi6ZTQ9NIag94K28nFMofdnKeHR7BT0CATw== + +"@rollup/rollup-freebsd-arm64@4.43.0": + version "4.43.0" + resolved "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.43.0.tgz#b128dbe7b353922ddd729a4fc4e408ddcbf338b5" + integrity sha512-SV+U5sSo0yujrjzBF7/YidieK2iF6E7MdF6EbYxNz94lA+R0wKl3SiixGyG/9Klab6uNBIqsN7j4Y/Fya7wAjQ== + +"@rollup/rollup-freebsd-arm64@4.50.1": + version "4.50.1" + resolved "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.50.1.tgz#46c22a16d18180e99686647543335567221caa9c" + integrity sha512-wOsE6H2u6PxsHY/BeFHA4VGQN3KUJFZp7QJBmDYI983fgxq5Th8FDkVuERb2l9vDMs1D5XhOrhBrnqcEY6l8ZA== + +"@rollup/rollup-freebsd-x64@4.43.0": + version "4.43.0" + resolved "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.43.0.tgz#88297a0ddfadddd61d7d9b73eb42b3f227301d30" + integrity sha512-J7uCsiV13L/VOeHJBo5SjasKiGxJ0g+nQTrBkAsmQBIdil3KhPnSE9GnRon4ejX1XDdsmK/l30IYLiAaQEO0Cg== + +"@rollup/rollup-freebsd-x64@4.50.1": + version "4.50.1" + resolved "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.50.1.tgz#819ffef2f81891c266456952962a13110c8e28b5" + integrity sha512-A/xeqaHTlKbQggxCqispFAcNjycpUEHP52mwMQZUNqDUJFFYtPHCXS1VAG29uMlDzIVr+i00tSFWFLivMcoIBQ== + +"@rollup/rollup-linux-arm-gnueabihf@4.43.0": + version "4.43.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.43.0.tgz#a59afc092523ebe43d3899f33da9cdd2ec01fb87" + integrity sha512-gTJ/JnnjCMc15uwB10TTATBEhK9meBIY+gXP4s0sHD1zHOaIh4Dmy1X9wup18IiY9tTNk5gJc4yx9ctj/fjrIw== + +"@rollup/rollup-linux-arm-gnueabihf@4.50.1": + version "4.50.1" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.50.1.tgz#7fe283c14793e607e653a3214b09f8973f08262a" + integrity sha512-54v4okehwl5TaSIkpp97rAHGp7t3ghinRd/vyC1iXqXMfjYUTm7TfYmCzXDoHUPTTf36L8pr0E7YsD3CfB3ZDg== + +"@rollup/rollup-linux-arm-musleabihf@4.43.0": + version "4.43.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.43.0.tgz#3095c1327b794bd187d03e372e633717fb69b4c0" + integrity sha512-ZJ3gZynL1LDSIvRfz0qXtTNs56n5DI2Mq+WACWZ7yGHFUEirHBRt7fyIk0NsCKhmRhn7WAcjgSkSVVxKlPNFFw== + +"@rollup/rollup-linux-arm-musleabihf@4.50.1": + version "4.50.1" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.50.1.tgz#066e92eb22ea30560414ec800a6d119ba0b435ac" + integrity sha512-p/LaFyajPN/0PUHjv8TNyxLiA7RwmDoVY3flXHPSzqrGcIp/c2FjwPPP5++u87DGHtw+5kSH5bCJz0mvXngYxw== + +"@rollup/rollup-linux-arm64-gnu@4.43.0": + version "4.43.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.43.0.tgz#e43bb77df3a6de85312e991d1e3ad352d1abb00d" + integrity sha512-8FnkipasmOOSSlfucGYEu58U8cxEdhziKjPD2FIa0ONVMxvl/hmONtX/7y4vGjdUhjcTHlKlDhw3H9t98fPvyA== + +"@rollup/rollup-linux-arm64-gnu@4.50.1": + version "4.50.1" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.50.1.tgz#480d518ea99a8d97b2a174c46cd55164f138cc37" + integrity sha512-2AbMhFFkTo6Ptna1zO7kAXXDLi7H9fGTbVaIq2AAYO7yzcAsuTNWPHhb2aTA6GPiP+JXh85Y8CiS54iZoj4opw== + +"@rollup/rollup-linux-arm64-musl@4.43.0": + version "4.43.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.43.0.tgz#34873a437bcd87618f702dc66f0cbce170aebf9f" + integrity sha512-KPPyAdlcIZ6S9C3S2cndXDkV0Bb1OSMsX0Eelr2Bay4EsF9yi9u9uzc9RniK3mcUGCLhWY9oLr6er80P5DE6XA== + +"@rollup/rollup-linux-arm64-musl@4.50.1": + version "4.50.1" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.50.1.tgz#ed7db3b8999b60dd20009ddf71c95f3af49423c8" + integrity sha512-Cgef+5aZwuvesQNw9eX7g19FfKX5/pQRIyhoXLCiBOrWopjo7ycfB292TX9MDcDijiuIJlx1IzJz3IoCPfqs9w== + +"@rollup/rollup-linux-loongarch64-gnu@4.43.0": + version "4.43.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.43.0.tgz#224ff524349e365baa56f1f512822548c2d76910" + integrity sha512-HPGDIH0/ZzAZjvtlXj6g+KDQ9ZMHfSP553za7o2Odegb/BEfwJcR0Sw0RLNpQ9nC6Gy8s+3mSS9xjZ0n3rhcYg== + +"@rollup/rollup-linux-loongarch64-gnu@4.50.1": + version "4.50.1" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.50.1.tgz#16a6927a35f5dbc505ff874a4e1459610c0c6f46" + integrity sha512-RPhTwWMzpYYrHrJAS7CmpdtHNKtt2Ueo+BlLBjfZEhYBhK00OsEqM08/7f+eohiF6poe0YRDDd8nAvwtE/Y62Q== + +"@rollup/rollup-linux-powerpc64le-gnu@4.43.0": + version "4.43.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.43.0.tgz#43c3c053b26ace18a1d3dab204596a466c1b0e34" + integrity sha512-gEmwbOws4U4GLAJDhhtSPWPXUzDfMRedT3hFMyRAvM9Mrnj+dJIFIeL7otsv2WF3D7GrV0GIewW0y28dOYWkmw== + +"@rollup/rollup-linux-ppc64-gnu@4.50.1": + version "4.50.1" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.50.1.tgz#a006700469be0041846c45b494c35754e6a04eea" + integrity sha512-eSGMVQw9iekut62O7eBdbiccRguuDgiPMsw++BVUg+1K7WjZXHOg/YOT9SWMzPZA+w98G+Fa1VqJgHZOHHnY0Q== + +"@rollup/rollup-linux-riscv64-gnu@4.43.0": + version "4.43.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.43.0.tgz#e7df825d71daefa7037605015455aa58be43cd7a" + integrity sha512-XXKvo2e+wFtXZF/9xoWohHg+MuRnvO29TI5Hqe9xwN5uN8NKUYy7tXUG3EZAlfchufNCTHNGjEx7uN78KsBo0g== + +"@rollup/rollup-linux-riscv64-gnu@4.50.1": + version "4.50.1" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.50.1.tgz#0fcc45b2ec8a0e54218ca48849ea6d596f53649c" + integrity sha512-S208ojx8a4ciIPrLgazF6AgdcNJzQE4+S9rsmOmDJkusvctii+ZvEuIC4v/xFqzbuP8yDjn73oBlNDgF6YGSXQ== + +"@rollup/rollup-linux-riscv64-musl@4.43.0": + version "4.43.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.43.0.tgz#d76ad93a7f4c0b2855a024d8d859196acf38acf5" + integrity sha512-ruf3hPWhjw6uDFsOAzmbNIvlXFXlBQ4nk57Sec8E8rUxs/AI4HD6xmiiasOOx/3QxS2f5eQMKTAwk7KHwpzr/Q== + +"@rollup/rollup-linux-riscv64-musl@4.50.1": + version "4.50.1" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.50.1.tgz#d6e617eec9fe6f5859ee13fad435a16c42b469f2" + integrity sha512-3Ag8Ls1ggqkGUvSZWYcdgFwriy2lWo+0QlYgEFra/5JGtAd6C5Hw59oojx1DeqcA2Wds2ayRgvJ4qxVTzCHgzg== + +"@rollup/rollup-linux-s390x-gnu@4.43.0": + version "4.43.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.43.0.tgz#0852608843d05852af3f447bf43bb63d80d62b6a" + integrity sha512-QmNIAqDiEMEvFV15rsSnjoSmO0+eJLoKRD9EAa9rrYNwO/XRCtOGM3A5A0X+wmG+XRrw9Fxdsw+LnyYiZWWcVw== + +"@rollup/rollup-linux-s390x-gnu@4.50.1": + version "4.50.1" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.50.1.tgz#b147760d63c6f35b4b18e6a25a2a760dd3ea0c05" + integrity sha512-t9YrKfaxCYe7l7ldFERE1BRg/4TATxIg+YieHQ966jwvo7ddHJxPj9cNFWLAzhkVsbBvNA4qTbPVNsZKBO4NSg== + +"@rollup/rollup-linux-x64-gnu@4.43.0": + version "4.43.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.43.0.tgz#d16a57f86357a4e697142bee244afed59b24e6c5" + integrity sha512-jAHr/S0iiBtFyzjhOkAics/2SrXE092qyqEg96e90L3t9Op8OTzS6+IX0Fy5wCt2+KqeHAkti+eitV0wvblEoQ== + +"@rollup/rollup-linux-x64-gnu@4.50.1": + version "4.50.1" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.50.1.tgz#fc0be1da374f85e7e85dccaf1ff12d7cfc9fbe3d" + integrity sha512-MCgtFB2+SVNuQmmjHf+wfI4CMxy3Tk8XjA5Z//A0AKD7QXUYFMQcns91K6dEHBvZPCnhJSyDWLApk40Iq/H3tA== + +"@rollup/rollup-linux-x64-musl@4.43.0": + version "4.43.0" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.43.0.tgz#51cbc8b1eb46ebc0e284725418b6fbf48686e4e2" + integrity sha512-3yATWgdeXyuHtBhrLt98w+5fKurdqvs8B53LaoKD7P7H7FKOONLsBVMNl9ghPQZQuYcceV5CDyPfyfGpMWD9mQ== + +"@rollup/rollup-linux-x64-musl@4.50.1": + version "4.50.1" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.50.1.tgz#54c79932e0f9a3c992b034c82325be3bcde0d067" + integrity sha512-nEvqG+0jeRmqaUMuwzlfMKwcIVffy/9KGbAGyoa26iu6eSngAYQ512bMXuqqPrlTyfqdlB9FVINs93j534UJrg== + +"@rollup/rollup-openharmony-arm64@4.50.1": + version "4.50.1" + resolved "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.50.1.tgz#fc48e74d413623ac02c1d521bec3e5e784488fdc" + integrity sha512-RDsLm+phmT3MJd9SNxA9MNuEAO/J2fhW8GXk62G/B4G7sLVumNFbRwDL6v5NrESb48k+QMqdGbHgEtfU0LCpbA== + +"@rollup/rollup-win32-arm64-msvc@4.43.0": + version "4.43.0" + resolved "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.43.0.tgz#d6d84aace2b211119bf0ab1c586e29d01e32aa01" + integrity sha512-wVzXp2qDSCOpcBCT5WRWLmpJRIzv23valvcTwMHEobkjippNf+C3ys/+wf07poPkeNix0paTNemB2XrHr2TnGw== + +"@rollup/rollup-win32-arm64-msvc@4.50.1": + version "4.50.1" + resolved "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.50.1.tgz#8ce3d1181644406362cf1e62c90e88ab083e02bb" + integrity sha512-hpZB/TImk2FlAFAIsoElM3tLzq57uxnGYwplg6WDyAxbYczSi8O2eQ+H2Lx74504rwKtZ3N2g4bCUkiamzS6TQ== + +"@rollup/rollup-win32-ia32-msvc@4.43.0": + version "4.43.0" + resolved "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.43.0.tgz#4af33168de2f65b97a8f36bd1d8d21cea34d3ccb" + integrity sha512-fYCTEyzf8d+7diCw8b+asvWDCLMjsCEA8alvtAutqJOJp/wL5hs1rWSqJ1vkjgW0L2NB4bsYJrpKkiIPRR9dvw== + +"@rollup/rollup-win32-ia32-msvc@4.50.1": + version "4.50.1" + resolved "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.50.1.tgz#dd2dfc896eac4b2689d55f01c6d51c249263f805" + integrity sha512-SXjv8JlbzKM0fTJidX4eVsH+Wmnp0/WcD8gJxIZyR6Gay5Qcsmdbi9zVtnbkGPG8v2vMR1AD06lGWy5FLMcG7A== + +"@rollup/rollup-win32-x64-msvc@4.43.0": + version "4.43.0" + resolved "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.43.0.tgz#42a88207659e404e8ffa655cae763cbad94906ab" + integrity sha512-SnGhLiE5rlK0ofq8kzuDkM0g7FN1s5VYY+YSMTibP7CqShxCQvqtNxTARS4xX4PFJfHjG0ZQYX9iGzI3FQh5Aw== + +"@rollup/rollup-win32-x64-msvc@4.50.1": + version "4.50.1" + resolved "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.50.1.tgz#13f758c97b9fbbac56b6928547a3ff384e7cfb3e" + integrity sha512-StxAO/8ts62KZVRAm4JZYq9+NqNsV7RvimNK+YM7ry//zebEH6meuugqW/P5OFUCjyQgui+9fUxT6d5NShvMvA== + +"@shikijs/core@2.5.0", "@shikijs/core@^2.1.0": + version "2.5.0" + resolved "https://registry.npmjs.org/@shikijs/core/-/core-2.5.0.tgz#e14d33961dfa3141393d4a76fc8923d0d1c4b62f" + integrity sha512-uu/8RExTKtavlpH7XqnVYBrfBkUc20ngXiX9NSrBhOVZYv/7XQRKUyhtkeflY5QsxC0GbJThCerruZfsUaSldg== dependencies: - "@lerna/npm-conf" "4.0.0" - npm-lifecycle "^3.1.5" - npmlog "^4.1.2" + "@shikijs/engine-javascript" "2.5.0" + "@shikijs/engine-oniguruma" "2.5.0" + "@shikijs/types" "2.5.0" + "@shikijs/vscode-textmate" "^10.0.2" + "@types/hast" "^3.0.4" + hast-util-to-html "^9.0.4" -"@lerna/run-topologically@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/run-topologically/-/run-topologically-4.0.0.tgz#af846eeee1a09b0c2be0d1bfb5ef0f7b04bb1827" - integrity sha512-EVZw9hGwo+5yp+VL94+NXRYisqgAlj0jWKWtAIynDCpghRxCE5GMO3xrQLmQgqkpUl9ZxQFpICgYv5DW4DksQA== +"@shikijs/engine-javascript@2.5.0": + version "2.5.0" + resolved "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-2.5.0.tgz#e045c6ecfbda6c99137547b0a482e0b87f1053fc" + integrity sha512-VjnOpnQf8WuCEZtNUdjjwGUbtAVKuZkVQ/5cHy/tojVVRIRtlWMYVjyWhxOmIq05AlSOv72z7hRNRGVBgQOl0w== dependencies: - "@lerna/query-graph" "4.0.0" - p-queue "^6.6.2" - -"@lerna/run@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/run/-/run-4.0.0.tgz#4bc7fda055a729487897c23579694f6183c91262" - integrity sha512-9giulCOzlMPzcZS/6Eov6pxE9gNTyaXk0Man+iCIdGJNMrCnW7Dme0Z229WWP/UoxDKg71F2tMsVVGDiRd8fFQ== - dependencies: - "@lerna/command" "4.0.0" - "@lerna/filter-options" "4.0.0" - "@lerna/npm-run-script" "4.0.0" - "@lerna/output" "4.0.0" - "@lerna/profiler" "4.0.0" - "@lerna/run-topologically" "4.0.0" - "@lerna/timer" "4.0.0" - "@lerna/validation-error" "4.0.0" - p-map "^4.0.0" + "@shikijs/types" "2.5.0" + "@shikijs/vscode-textmate" "^10.0.2" + oniguruma-to-es "^3.1.0" -"@lerna/symlink-binary@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/symlink-binary/-/symlink-binary-4.0.0.tgz#21009f62d53a425f136cb4c1a32c6b2a0cc02d47" - integrity sha512-zualodWC4q1QQc1pkz969hcFeWXOsVYZC5AWVtAPTDfLl+TwM7eG/O6oP+Rr3fFowspxo6b1TQ6sYfDV6HXNWA== +"@shikijs/engine-oniguruma@2.5.0": + version "2.5.0" + resolved "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-2.5.0.tgz#230de5693cc1da6c9d59c7ad83593c2027274817" + integrity sha512-pGd1wRATzbo/uatrCIILlAdFVKdxImWJGQ5rFiB5VZi2ve5xj3Ax9jny8QvkaV93btQEwR/rSz5ERFpC5mKNIw== dependencies: - "@lerna/create-symlink" "4.0.0" - "@lerna/package" "4.0.0" - fs-extra "^9.1.0" - p-map "^4.0.0" + "@shikijs/types" "2.5.0" + "@shikijs/vscode-textmate" "^10.0.2" -"@lerna/symlink-dependencies@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/symlink-dependencies/-/symlink-dependencies-4.0.0.tgz#8910eca084ae062642d0490d8972cf2d98e9ebbd" - integrity sha512-BABo0MjeUHNAe2FNGty1eantWp8u83BHSeIMPDxNq0MuW2K3CiQRaeWT3EGPAzXpGt0+hVzBrA6+OT0GPn7Yuw== +"@shikijs/langs@2.5.0": + version "2.5.0" + resolved "https://registry.npmjs.org/@shikijs/langs/-/langs-2.5.0.tgz#97ab50c495922cc1ca06e192985b28dc73de5d50" + integrity sha512-Qfrrt5OsNH5R+5tJ/3uYBBZv3SuGmnRPejV9IlIbFH3HTGLDlkqgHymAlzklVmKBjAaVmkPkyikAV/sQ1wSL+w== dependencies: - "@lerna/create-symlink" "4.0.0" - "@lerna/resolve-symlink" "4.0.0" - "@lerna/symlink-binary" "4.0.0" - fs-extra "^9.1.0" - p-map "^4.0.0" - p-map-series "^2.1.0" - -"@lerna/timer@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/timer/-/timer-4.0.0.tgz#a52e51bfcd39bfd768988049ace7b15c1fd7a6da" - integrity sha512-WFsnlaE7SdOvjuyd05oKt8Leg3ENHICnvX3uYKKdByA+S3g+TCz38JsNs7OUZVt+ba63nC2nbXDlUnuT2Xbsfg== + "@shikijs/types" "2.5.0" -"@lerna/validation-error@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/validation-error/-/validation-error-4.0.0.tgz#af9d62fe8304eaa2eb9a6ba1394f9aa807026d35" - integrity sha512-1rBOM5/koiVWlRi3V6dB863E1YzJS8v41UtsHgMr6gB2ncJ2LsQtMKlJpi3voqcgh41H8UsPXR58RrrpPpufyw== +"@shikijs/themes@2.5.0": + version "2.5.0" + resolved "https://registry.npmjs.org/@shikijs/themes/-/themes-2.5.0.tgz#8c6aecf73f5455681c8bec15797cf678162896cb" + integrity sha512-wGrk+R8tJnO0VMzmUExHR+QdSaPUl/NKs+a4cQQRWyoc3YFbUzuLEi/KWK1hj+8BfHRKm2jNhhJck1dfstJpiw== dependencies: - npmlog "^4.1.2" - -"@lerna/version@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/version/-/version-4.0.0.tgz#532659ec6154d8a8789c5ab53878663e244e3228" - integrity sha512-otUgiqs5W9zGWJZSCCMRV/2Zm2A9q9JwSDS7s/tlKq4mWCYriWo7+wsHEA/nPTMDyYyBO5oyZDj+3X50KDUzeA== - dependencies: - "@lerna/check-working-tree" "4.0.0" - "@lerna/child-process" "4.0.0" - "@lerna/collect-updates" "4.0.0" - "@lerna/command" "4.0.0" - "@lerna/conventional-commits" "4.0.0" - "@lerna/github-client" "4.0.0" - "@lerna/gitlab-client" "4.0.0" - "@lerna/output" "4.0.0" - "@lerna/prerelease-id-from-version" "4.0.0" - "@lerna/prompt" "4.0.0" - "@lerna/run-lifecycle" "4.0.0" - "@lerna/run-topologically" "4.0.0" - "@lerna/validation-error" "4.0.0" - chalk "^4.1.0" - dedent "^0.7.0" - load-json-file "^6.2.0" - minimatch "^3.0.4" - npmlog "^4.1.2" - p-map "^4.0.0" - p-pipe "^3.1.0" - p-reduce "^2.1.0" - p-waterfall "^2.1.1" - semver "^7.3.4" - slash "^3.0.0" - temp-write "^4.0.0" - write-json-file "^4.3.0" + "@shikijs/types" "2.5.0" -"@lerna/write-log-file@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/write-log-file/-/write-log-file-4.0.0.tgz#18221a38a6a307d6b0a5844dd592ad53fa27091e" - integrity sha512-XRG5BloiArpXRakcnPHmEHJp+4AtnhRtpDIHSghmXD5EichI1uD73J7FgPp30mm2pDRq3FdqB0NbwSEsJ9xFQg== +"@shikijs/transformers@^2.1.0": + version "2.5.0" + resolved "https://registry.npmjs.org/@shikijs/transformers/-/transformers-2.5.0.tgz#190c84786ff06c417580ab79177338a947168c55" + integrity sha512-SI494W5X60CaUwgi8u4q4m4s3YAFSxln3tzNjOSYqq54wlVgz0/NbbXEb3mdLbqMBztcmS7bVTaEd2w0qMmfeg== dependencies: - npmlog "^4.1.2" - write-file-atomic "^3.0.3" + "@shikijs/core" "2.5.0" + "@shikijs/types" "2.5.0" -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== +"@shikijs/types@2.5.0", "@shikijs/types@^2.1.0": + version "2.5.0" + resolved "https://registry.npmjs.org/@shikijs/types/-/types-2.5.0.tgz#e949c7384802703a48b9d6425dd41673c164df69" + integrity sha512-ygl5yhxki9ZLNuNpPitBWvcy9fsSKKaRuO4BAlMyagszQidxcpLAr0qiW/q43DtSIDxO6hEbtYLiFZNXO/hdGw== dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" + "@shikijs/vscode-textmate" "^10.0.2" + "@types/hast" "^3.0.4" -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== +"@shikijs/vscode-textmate@^10.0.2": + version "10.0.2" + resolved "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz#a90ab31d0cc1dfb54c66a69e515bf624fa7b2224" + integrity sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg== -"@nodelib/fs.walk@^1.2.3": - version "1.2.8" - resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== +"@sigstore/bundle@^2.3.2": + version "2.3.2" + resolved "https://registry.npmjs.org/@sigstore/bundle/-/bundle-2.3.2.tgz#ad4dbb95d665405fd4a7a02c8a073dbd01e4e95e" + integrity sha512-wueKWDk70QixNLB363yHc2D2ItTgYiMTdPwK8D9dKQMR3ZQ0c35IxP5xnwQ8cNLoCgCRcHf14kE+CLIvNX1zmA== dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" + "@sigstore/protobuf-specs" "^0.3.2" -"@npmcli/ci-detect@^1.0.0": - version "1.3.0" - resolved "https://registry.npmjs.org/@npmcli/ci-detect/-/ci-detect-1.3.0.tgz#6c1d2c625fb6ef1b9dea85ad0a5afcbef85ef22a" - integrity sha512-oN3y7FAROHhrAt7Rr7PnTSwrHrZVRTS2ZbyxeQwSSYD0ifwM3YNgQqbaRmjcWoPyq77MjchusjJDspbzMmip1Q== +"@sigstore/core@^1.0.0", "@sigstore/core@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@sigstore/core/-/core-1.1.0.tgz#5583d8f7ffe599fa0a89f2bf289301a5af262380" + integrity sha512-JzBqdVIyqm2FRQCulY6nbQzMpJJpSiJ8XXWMhtOX9eKgaXXpfNOF53lzQEjIydlStnd/eFtuC1dW4VYdD93oRg== -"@npmcli/git@^2.0.1": - version "2.0.6" - resolved "https://registry.npmjs.org/@npmcli/git/-/git-2.0.6.tgz#47b97e96b2eede3f38379262fa3bdfa6eae57bf2" - integrity sha512-a1MnTfeRPBaKbFY07fd+6HugY1WAkKJzdiJvlRub/9o5xz2F/JtPacZZapx5zRJUQFIzSL677vmTSxEcDMrDbg== - dependencies: - "@npmcli/promise-spawn" "^1.1.0" - lru-cache "^6.0.0" - mkdirp "^1.0.3" - npm-pick-manifest "^6.0.0" - promise-inflight "^1.0.1" +"@sigstore/protobuf-specs@^0.3.2": + version "0.3.3" + resolved "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.3.3.tgz#7dd46d68b76c322873a2ef7581ed955af6f4dcde" + integrity sha512-RpacQhBlwpBWd7KEJsRKcBQalbV28fvkxwTOJIqhIuDysMMaJW47V4OqW30iJB9uRpqOSxxEAQFdr8tTattReQ== + +"@sigstore/sign@^2.3.2": + version "2.3.2" + resolved "https://registry.npmjs.org/@sigstore/sign/-/sign-2.3.2.tgz#d3d01e56d03af96fd5c3a9b9897516b1233fc1c4" + integrity sha512-5Vz5dPVuunIIvC5vBb0APwo7qKA4G9yM48kPWJT+OEERs40md5GoUR1yedwpekWZ4m0Hhw44m6zU+ObsON+iDA== + dependencies: + "@sigstore/bundle" "^2.3.2" + "@sigstore/core" "^1.0.0" + "@sigstore/protobuf-specs" "^0.3.2" + make-fetch-happen "^13.0.1" + proc-log "^4.2.0" promise-retry "^2.0.1" - semver "^7.3.2" - unique-filename "^1.1.1" - which "^2.0.2" -"@npmcli/installed-package-contents@^1.0.6": - version "1.0.7" - resolved "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz#ab7408c6147911b970a8abe261ce512232a3f4fa" - integrity sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw== +"@sigstore/tuf@^2.3.4": + version "2.3.4" + resolved "https://registry.npmjs.org/@sigstore/tuf/-/tuf-2.3.4.tgz#da1d2a20144f3b87c0172920cbc8dcc7851ca27c" + integrity sha512-44vtsveTPUpqhm9NCrbU8CWLe3Vck2HO1PNLw7RIajbB7xhtn5RBPm1VNSCMwqGYHhDsBJG8gDF0q4lgydsJvw== dependencies: - npm-bundled "^1.1.1" - npm-normalize-package-bin "^1.0.1" + "@sigstore/protobuf-specs" "^0.3.2" + tuf-js "^2.2.1" -"@npmcli/move-file@^1.0.1": - version "1.1.2" - resolved "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674" - integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== +"@sigstore/verify@^1.2.1": + version "1.2.1" + resolved "https://registry.npmjs.org/@sigstore/verify/-/verify-1.2.1.tgz#c7e60241b432890dcb8bd8322427f6062ef819e1" + integrity sha512-8iKx79/F73DKbGfRf7+t4dqrc0bRr0thdPrxAtCKWRm/F0tG71i6O1rvlnScncJLLBZHn3h8M3c1BSUAb9yu8g== + dependencies: + "@sigstore/bundle" "^2.3.2" + "@sigstore/core" "^1.1.0" + "@sigstore/protobuf-specs" "^0.3.2" + +"@sinclair/typebox@^0.27.8": + version "0.27.8" + resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" + integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== + +"@swc/core-darwin-arm64@1.13.2": + version "1.13.2" + resolved "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.13.2.tgz#654ea490dbcada542d74f234dcf7e8658a1e5772" + integrity sha512-44p7ivuLSGFJ15Vly4ivLJjg3ARo4879LtEBAabcHhSZygpmkP8eyjyWxrH3OxkY1eRZSIJe8yRZPFw4kPXFPw== + +"@swc/core-darwin-x64@1.13.2": + version "1.13.2" + resolved "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.13.2.tgz#46f56d4053867c3531166aaaafc02e1248aa5e15" + integrity sha512-Lb9EZi7X2XDAVmuUlBm2UvVAgSCbD3qKqDCxSI4jEOddzVOpNCnyZ/xEampdngUIyDDhhJLYU9duC+Mcsv5Y+A== + +"@swc/core-linux-arm-gnueabihf@1.13.2": + version "1.13.2" + resolved "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.13.2.tgz#724eb4f763b3e87db3d22c58a1d40e144db0d406" + integrity sha512-9TDe/92ee1x57x+0OqL1huG4BeljVx0nWW4QOOxp8CCK67Rpc/HHl2wciJ0Kl9Dxf2NvpNtkPvqj9+BUmM9WVA== + +"@swc/core-linux-arm64-gnu@1.13.2": + version "1.13.2" + resolved "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.13.2.tgz#d01a0a65838a0fd5035ae088ad351f8cfb7289e3" + integrity sha512-KJUSl56DBk7AWMAIEcU83zl5mg3vlQYhLELhjwRFkGFMvghQvdqQ3zFOYa4TexKA7noBZa3C8fb24rI5sw9Exg== + +"@swc/core-linux-arm64-musl@1.13.2": + version "1.13.2" + resolved "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.13.2.tgz#a2812e3728970a3918502ab3adc337b45761bdd4" + integrity sha512-teU27iG1oyWpNh9CzcGQ48ClDRt/RCem7mYO7ehd2FY102UeTws2+OzLESS1TS1tEZipq/5xwx3FzbVgiolCiQ== + +"@swc/core-linux-x64-gnu@1.13.2": + version "1.13.2" + resolved "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.13.2.tgz#91553462484d8135703888c55d0d02dce2a8a7c5" + integrity sha512-dRPsyPyqpLD0HMRCRpYALIh4kdOir8pPg4AhNQZLehKowigRd30RcLXGNVZcc31Ua8CiPI4QSgjOIxK+EQe4LQ== + +"@swc/core-linux-x64-musl@1.13.2": + version "1.13.2" + resolved "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.13.2.tgz#b8c8dc71eea56e56903dc3bfc5ca507199f469d1" + integrity sha512-CCxETW+KkYEQDqz1SYC15YIWYheqFC+PJVOW76Maa/8yu8Biw+HTAcblKf2isrlUtK8RvrQN94v3UXkC2NzCEw== + +"@swc/core-win32-arm64-msvc@1.13.2": + version "1.13.2" + resolved "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.13.2.tgz#2ac8ebdfc8ebaed404893879b239df2bad3601ef" + integrity sha512-Wv/QTA6PjyRLlmKcN6AmSI4jwSMRl0VTLGs57PHTqYRwwfwd7y4s2fIPJVBNbAlXd795dOEP6d/bGSQSyhOX3A== + +"@swc/core-win32-ia32-msvc@1.13.2": + version "1.13.2" + resolved "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.13.2.tgz#1e13ec7e8c2367b75e529dc8d47c2c42d5cd803f" + integrity sha512-PuCdtNynEkUNbUXX/wsyUC+t4mamIU5y00lT5vJcAvco3/r16Iaxl5UCzhXYaWZSNVZMzPp9qN8NlSL8M5pPxw== + +"@swc/core-win32-x64-msvc@1.13.2": + version "1.13.2" + resolved "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.13.2.tgz#8b8841f6676bc7f8c4a2ac44eba42e7be655e606" + integrity sha512-qlmMkFZJus8cYuBURx1a3YAG2G7IW44i+FEYV5/32ylKkzGNAr9tDJSA53XNnNXkAB5EXSPsOz7bn5C3JlEtdQ== + +"@swc/core@^1.10.1": + version "1.13.2" + resolved "https://registry.npmjs.org/@swc/core/-/core-1.13.2.tgz#962b34dae61fa1ff604d20c1b9100a9277a16f83" + integrity sha512-YWqn+0IKXDhqVLKoac4v2tV6hJqB/wOh8/Br8zjqeqBkKa77Qb0Kw2i7LOFzjFNZbZaPH6AlMGlBwNrxaauaAg== + dependencies: + "@swc/counter" "^0.1.3" + "@swc/types" "^0.1.23" + optionalDependencies: + "@swc/core-darwin-arm64" "1.13.2" + "@swc/core-darwin-x64" "1.13.2" + "@swc/core-linux-arm-gnueabihf" "1.13.2" + "@swc/core-linux-arm64-gnu" "1.13.2" + "@swc/core-linux-arm64-musl" "1.13.2" + "@swc/core-linux-x64-gnu" "1.13.2" + "@swc/core-linux-x64-musl" "1.13.2" + "@swc/core-win32-arm64-msvc" "1.13.2" + "@swc/core-win32-ia32-msvc" "1.13.2" + "@swc/core-win32-x64-msvc" "1.13.2" + +"@swc/counter@^0.1.3": + version "0.1.3" + resolved "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9" + integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ== + +"@swc/types@^0.1.23": + version "0.1.23" + resolved "https://registry.npmjs.org/@swc/types/-/types-0.1.23.tgz#7eabf88b9cfd929253859c562ae95982ee04b4e8" + integrity sha512-u1iIVZV9Q0jxY+yM2vw/hZGDNudsN85bBpTqzAQ9rzkxW9D+e3aEM4Han+ow518gSewkXgjmEK0BD79ZcNVgPw== dependencies: - mkdirp "^1.0.4" - rimraf "^3.0.2" + "@swc/counter" "^0.1.3" -"@npmcli/node-gyp@^1.0.2": - version "1.0.2" - resolved "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.2.tgz#3cdc1f30e9736dbc417373ed803b42b1a0a29ede" - integrity sha512-yrJUe6reVMpktcvagumoqD9r08fH1iRo01gn1u0zoCApa9lnZGEigVKUd2hzsCId4gdtkZZIVscLhNxMECKgRg== +"@tufjs/canonical-json@2.0.0": + version "2.0.0" + resolved "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz#a52f61a3d7374833fca945b2549bc30a2dd40d0a" + integrity sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA== -"@npmcli/promise-spawn@^1.1.0", "@npmcli/promise-spawn@^1.2.0", "@npmcli/promise-spawn@^1.3.2": - version "1.3.2" - resolved "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz#42d4e56a8e9274fba180dabc0aea6e38f29274f5" - integrity sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg== - dependencies: - infer-owner "^1.0.4" - -"@npmcli/run-script@^1.8.2": - version "1.8.3" - resolved "https://registry.npmjs.org/@npmcli/run-script/-/run-script-1.8.3.tgz#07f440ed492400bb1114369bc37315eeaaae2bb3" - integrity sha512-ELPGWAVU/xyU+A+H3pEPj0QOvYwLTX71RArXcClFzeiyJ/b/McsZ+d0QxpznvfFtZzxGN/gz/1cvlqICR4/suQ== - dependencies: - "@npmcli/node-gyp" "^1.0.2" - "@npmcli/promise-spawn" "^1.3.2" - infer-owner "^1.0.4" - node-gyp "^7.1.0" - puka "^1.0.1" - read-package-json-fast "^2.0.1" - -"@octokit/auth-token@^2.4.4": - version "2.4.5" - resolved "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.4.5.tgz#568ccfb8cb46f36441fac094ce34f7a875b197f3" - integrity sha512-BpGYsPgJt05M7/L/5FoE1PiAbdxXFZkX/3kDYcsvd1v6UhlnE5e96dTDr0ezX/EFwciQxf3cNV0loipsURU+WA== - dependencies: - "@octokit/types" "^6.0.3" - -"@octokit/core@^3.2.3": - version "3.2.5" - resolved "https://registry.npmjs.org/@octokit/core/-/core-3.2.5.tgz#57becbd5fd789b0592b915840855f3a5f233d554" - integrity sha512-+DCtPykGnvXKWWQI0E1XD+CCeWSBhB6kwItXqfFmNBlIlhczuDPbg+P6BtLnVBaRJDAjv+1mrUJuRsFSjktopg== - dependencies: - "@octokit/auth-token" "^2.4.4" - "@octokit/graphql" "^4.5.8" - "@octokit/request" "^5.4.12" - "@octokit/types" "^6.0.3" - before-after-hook "^2.1.0" - universal-user-agent "^6.0.0" +"@tufjs/models@2.0.1": + version "2.0.1" + resolved "https://registry.npmjs.org/@tufjs/models/-/models-2.0.1.tgz#e429714e753b6c2469af3212e7f320a6973c2812" + integrity sha512-92F7/SFyufn4DXsha9+QfKnN03JGqtMFMXgSHbZOo8JG59WkTni7UzAouNQDf7AuP9OAMxVOPQcqG3sB7w+kkg== + dependencies: + "@tufjs/canonical-json" "2.0.0" + minimatch "^9.0.4" -"@octokit/endpoint@^6.0.1": - version "6.0.11" - resolved "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.11.tgz#082adc2aebca6dcefa1fb383f5efb3ed081949d1" - integrity sha512-fUIPpx+pZyoLW4GCs3yMnlj2LfoXTWDUVPTC4V3MUEKZm48W+XYpeWSZCv+vYF1ZABUm2CqnDVf1sFtIYrj7KQ== +"@tybys/wasm-util@^0.9.0": + version "0.9.0" + resolved "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz#3e75eb00604c8d6db470bf18c37b7d984a0e3355" + integrity sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw== dependencies: - "@octokit/types" "^6.0.3" - is-plain-object "^5.0.0" - universal-user-agent "^6.0.0" + tslib "^2.4.0" -"@octokit/graphql@^4.5.8": - version "4.6.0" - resolved "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.6.0.tgz#f9abca55f82183964a33439d5264674c701c3327" - integrity sha512-CJ6n7izLFXLvPZaWzCQDjU/RP+vHiZmWdOunaCS87v+2jxMsW9FB5ktfIxybRBxZjxuJGRnxk7xJecWTVxFUYQ== +"@types/chai@^5.2.2": + version "5.2.2" + resolved "https://registry.npmjs.org/@types/chai/-/chai-5.2.2.tgz#6f14cea18180ffc4416bc0fd12be05fdd73bdd6b" + integrity sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg== dependencies: - "@octokit/request" "^5.3.0" - "@octokit/types" "^6.0.3" - universal-user-agent "^6.0.0" + "@types/deep-eql" "*" -"@octokit/openapi-types@^5.2.0": - version "5.2.0" - resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-5.2.0.tgz#54e6ca0bc2cd54cd93f0a64658e893c32a5e69ec" - integrity sha512-MInMij2VK5o96Ei6qaHjxBglSZWOXQs9dTZfnGX2Xnr2mhA+yk9L/QCH4RcJGISJJCBclLHuY3ytq+iRgDfX7w== +"@types/conventional-commits-parser@^5.0.0": + version "5.0.1" + resolved "https://registry.npmjs.org/@types/conventional-commits-parser/-/conventional-commits-parser-5.0.1.tgz#8cb81cf170853496cbc501a3b32dcf5e46ffb61a" + integrity sha512-7uz5EHdzz2TqoMfV7ee61Egf5y6NkcO4FB/1iCCQnbeiI1F3xzv3vK5dBCXUCLQgGYS+mUeigK1iKQzvED+QnQ== + dependencies: + "@types/node" "*" -"@octokit/plugin-enterprise-rest@^6.0.1": - version "6.0.1" - resolved "https://registry.npmjs.org/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz#e07896739618dab8da7d4077c658003775f95437" - integrity sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw== +"@types/deep-eql@*": + version "4.0.2" + resolved "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz#334311971d3a07121e7eb91b684a605e7eea9cbd" + integrity sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw== -"@octokit/plugin-paginate-rest@^2.6.2": - version "2.11.0" - resolved "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.11.0.tgz#3568c43896a3355f4a0bbb3a64f443b2abdc760d" - integrity sha512-7L9xQank2G3r1dGqrVPo1z62V5utbykOUzlmNHPz87Pww/JpZQ9KyG5CHtUzgmB4n5iDRKYNK/86A8D98HP0yA== - dependencies: - "@octokit/types" "^6.11.0" +"@types/estree@1.0.7", "@types/estree@^1.0.0": + version "1.0.7" + resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz#4158d3105276773d5b7695cd4834b1722e4f37a8" + integrity sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ== -"@octokit/plugin-request-log@^1.0.2": - version "1.0.3" - resolved "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.3.tgz#70a62be213e1edc04bb8897ee48c311482f9700d" - integrity sha512-4RFU4li238jMJAzLgAwkBAw+4Loile5haQMQr+uhFq27BmyJXcXSKvoQKqh0agsZEiUlW6iSv3FAgvmGkur7OQ== +"@types/estree@1.0.8", "@types/estree@^1.0.6": + version "1.0.8" + resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e" + integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== -"@octokit/plugin-rest-endpoint-methods@4.13.0": - version "4.13.0" - resolved "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-4.13.0.tgz#59a90f59a564d416214ab191c3ffcd641f175e6a" - integrity sha512-Ofusy7BwHkU7z4TNsVdf7wm5W3KR625KqlQj4AiWPnBvclmZU0Y2bVK8b8Mz8nW7sEX9TJcCdX6KeaincE/cLw== +"@types/fs-extra@^11.0.3": + version "11.0.4" + resolved "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-11.0.4.tgz#e16a863bb8843fba8c5004362b5a73e17becca45" + integrity sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ== dependencies: - "@octokit/types" "^6.11.0" - deprecation "^2.3.1" + "@types/jsonfile" "*" + "@types/node" "*" -"@octokit/request-error@^2.0.0": - version "2.0.5" - resolved "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.0.5.tgz#72cc91edc870281ad583a42619256b380c600143" - integrity sha512-T/2wcCFyM7SkXzNoyVNWjyVlUwBvW3igM3Btr/eKYiPmucXTtkxt2RBsf6gn3LTzaLSLTQtNmvg+dGsOxQrjZg== +"@types/git-raw-commits@^2.0.3": + version "2.0.4" + resolved "https://registry.npmjs.org/@types/git-raw-commits/-/git-raw-commits-2.0.4.tgz#29a77a82043b7baaba823f8b34ab10191df138e9" + integrity sha512-PYmTK156j6TilbwtnO2JErH4TCC1izpgP3kRE3KUX35bjBOD2A+syCGeercqHXBcM6wL+DU0WbJB2Gz8fPR+8A== dependencies: - "@octokit/types" "^6.0.3" - deprecation "^2.0.0" - once "^1.4.0" + "@types/node" "*" -"@octokit/request@^5.3.0", "@octokit/request@^5.4.12": - version "5.4.14" - resolved "https://registry.npmjs.org/@octokit/request/-/request-5.4.14.tgz#ec5f96f78333bb2af390afa5ff66f114b063bc96" - integrity sha512-VkmtacOIQp9daSnBmDI92xNIeLuSRDOIuplp/CJomkvzt7M18NXgG044Cx/LFKLgjKt9T2tZR6AtJayba9GTSA== +"@types/glob@^8.1.0": + version "8.1.0" + resolved "https://registry.npmjs.org/@types/glob/-/glob-8.1.0.tgz#b63e70155391b0584dce44e7ea25190bbc38f2fc" + integrity sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w== dependencies: - "@octokit/endpoint" "^6.0.1" - "@octokit/request-error" "^2.0.0" - "@octokit/types" "^6.7.1" - deprecation "^2.0.0" - is-plain-object "^5.0.0" - node-fetch "^2.6.1" - once "^1.4.0" - universal-user-agent "^6.0.0" + "@types/minimatch" "^5.1.2" + "@types/node" "*" -"@octokit/rest@^18.1.0": - version "18.3.0" - resolved "https://registry.npmjs.org/@octokit/rest/-/rest-18.3.0.tgz#c326475a2039ffeaec9a1498ebee14a561aae4e5" - integrity sha512-R45oBVhnq3HAOGVtC6lHY7LX7TGWqbbcD4KvBHoT4QIjgJzfqKag3m/DUJwLnp8xrokz1spZmspTIXiDeQqJSA== +"@types/hast@^3.0.0", "@types/hast@^3.0.4": + version "3.0.4" + resolved "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz#1d6b39993b82cea6ad783945b0508c25903e15aa" + integrity sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ== dependencies: - "@octokit/core" "^3.2.3" - "@octokit/plugin-paginate-rest" "^2.6.2" - "@octokit/plugin-request-log" "^1.0.2" - "@octokit/plugin-rest-endpoint-methods" "4.13.0" + "@types/unist" "*" -"@octokit/types@^6.0.3", "@octokit/types@^6.11.0", "@octokit/types@^6.7.1": - version "6.11.0" - resolved "https://registry.npmjs.org/@octokit/types/-/types-6.11.0.tgz#830a608882cde659be19a6e86568abaa619e2ee7" - integrity sha512-RMLAmpPZf/a33EsclBazKg02NCCj4rC69V9sUgf0SuWTjmnBD2QC1nIVtJo7RJrGnwG1+aoFBb2yTrWm/8AS7w== +"@types/inquirer@^9.0.7": + version "9.0.8" + resolved "https://registry.npmjs.org/@types/inquirer/-/inquirer-9.0.8.tgz#09d39cc6435ab7b0597f527ff5e2d6ccdf6b14be" + integrity sha512-CgPD5kFGWsb8HJ5K7rfWlifao87m4ph8uioU7OTncJevmE/VLIqAAjfQtko578JZg7/f69K4FgqYym3gNr7DeA== dependencies: - "@octokit/openapi-types" "^5.2.0" - -"@sindresorhus/is@^0.14.0": - version "0.14.0" - resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" - integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== + "@types/through" "*" + rxjs "^7.2.0" -"@sinonjs/commons@^1.7.0": - version "1.7.0" - resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.7.0.tgz#f90ffc52a2e519f018b13b6c4da03cbff36ebed6" - integrity sha512-qbk9AP+cZUsKdW1GJsBpxPKFmCJ0T8swwzVje3qFd+AkQb74Q/tiuzrdfFg8AD2g5HH/XbE/I8Uc1KYHVYWfhg== - dependencies: - type-detect "4.0.8" +"@types/json-schema@^7.0.15": + version "7.0.15" + resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== -"@sinonjs/fake-timers@^7.0.2": - version "7.1.0" - resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-7.1.0.tgz#8f13af27d842cbf51ad4502e05562fe9391d084e" - integrity sha512-hAEzXi6Wbvlb67NnGMGSNOeAflLVnMa4yliPU/ty1qjgW/vAletH15/v/esJwASSIA0YlIyjnloenFbEZc9q9A== +"@types/jsonfile@*": + version "6.1.4" + resolved "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.4.tgz#614afec1a1164e7d670b4a7ad64df3e7beb7b702" + integrity sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ== dependencies: - "@sinonjs/commons" "^1.7.0" + "@types/node" "*" -"@szmarczak/http-timer@^1.1.2": - version "1.1.2" - resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" - integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== - dependencies: - defer-to-connect "^1.0.1" +"@types/linkify-it@^5": + version "5.0.0" + resolved "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz#21413001973106cda1c3a9b91eedd4ccd5469d76" + integrity sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q== -"@tootallnate/once@1": - version "1.1.2" - resolved "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" - integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== - -"@types/babel__core@^7.0.0": - version "7.1.9" - resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.9.tgz#77e59d438522a6fb898fa43dc3455c6e72f3963d" - integrity sha512-sY2RsIJ5rpER1u3/aQ8OFSI7qGIy8o1NEEbgb2UaJcvOtXOMpd39ko723NBpjQFg9SIX7TXtjejZVGeIMLhoOw== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__core@^7.1.14": - version "7.1.14" - resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.14.tgz#faaeefc4185ec71c389f4501ee5ec84b170cc402" - integrity sha512-zGZJzzBUVDo/eV6KgbE0f0ZI7dInEYvo12Rb70uNQDshC3SkRMb67ja0GgRHZgAX3Za6rhaWlvbDO8rrGyAb1g== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - version "7.6.1" - resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.1.tgz#4901767b397e8711aeb99df8d396d7ba7b7f0e04" - integrity sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew== - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - version "7.0.2" - resolved "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.0.2.tgz#4ff63d6b52eddac1de7b975a5223ed32ecea9307" - integrity sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg== +"@types/lodash.camelcase@^4.3.8": + version "4.3.9" + resolved "https://registry.npmjs.org/@types/lodash.camelcase/-/lodash.camelcase-4.3.9.tgz#da7b65013d6914fecb8759d5220a6ca9b658ee23" + integrity sha512-ys9/hGBfsKxzmFI8hckII40V0ASQ83UM2pxfQRghHAwekhH4/jWtjz/3/9YDy7ZpUd/H0k2STSqmPR28dnj7Zg== dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" + "@types/lodash" "*" -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.0.8" - resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.8.tgz#479a4ee3e291a403a1096106013ec22cf9b64012" - integrity sha512-yGeB2dHEdvxjP0y4UbRtQaSkXJ9649fYCmIdRoul5kfAoGCwxuCbMhag0k3RPfnuh9kPGm8x89btcfDEXdVWGw== +"@types/lodash.isfunction@^3.0.8": + version "3.0.9" + resolved "https://registry.npmjs.org/@types/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz#527e51ab6638b38c65a03ec218232b1a787cc9bc" + integrity sha512-BLaDvlY09jnPND1wxlGXPrPl2CN4M7qGRah7Tb/rtB1vnLyZmtcw3FRPSUkDsd5n4e+2E5BBrr0ICfYR+S4hZQ== dependencies: - "@babel/types" "^7.3.0" + "@types/lodash" "*" -"@types/babel__traverse@^7.0.4": - version "7.11.0" - resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.11.0.tgz#b9a1efa635201ba9bc850323a8793ee2d36c04a0" - integrity sha512-kSjgDMZONiIfSH1Nxcr5JIRMwUetDki63FSQfpTCz8ogF3Ulqm8+mr5f78dUYs6vMiB6gBusQqfQmBvHZj/lwg== +"@types/lodash.isplainobject@^4.0.8": + version "4.0.9" + resolved "https://registry.npmjs.org/@types/lodash.isplainobject/-/lodash.isplainobject-4.0.9.tgz#3e0159c1598d96af2372151ed65f2792b61787e4" + integrity sha512-QC8nKcap5hRrbtIaPRjUMlcXXnLeayqQZPSaWJDx3xeuN17+2PW5wkmEJ4+lZgNnQRlSPzxjTYKCfV1uTnPaEg== dependencies: - "@babel/types" "^7.3.0" + "@types/lodash" "*" -"@types/fs-extra@^9.0.1": - version "9.0.1" - resolved "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.1.tgz#91c8fc4c51f6d5dbe44c2ca9ab09310bd00c7918" - integrity sha512-B42Sxuaz09MhC3DDeW5kubRcQ5by4iuVQ0cRRWM2lggLzAa/KVom0Aft/208NgMvNQQZ86s5rVcqDdn/SH0/mg== +"@types/lodash.kebabcase@^4.1.8": + version "4.1.9" + resolved "https://registry.npmjs.org/@types/lodash.kebabcase/-/lodash.kebabcase-4.1.9.tgz#48d3df753b89499e75eba5e017979b560d69df85" + integrity sha512-kPrrmcVOhSsjAVRovN0lRfrbuidfg0wYsrQa5IYuoQO1fpHHGSme66oyiYA/5eQPVl8Z95OA3HG0+d2SvYC85w== dependencies: - "@types/node" "*" + "@types/lodash" "*" -"@types/git-raw-commits@^2.0.0": - version "2.0.0" - resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/git-raw-commits/-/git-raw-commits-2.0.0.tgz#157e9e4709db0748fb1aa623f8927ddd4864bac6" - integrity sha1-FX6eRwnbB0j7GqYj+JJ93UhkusY= +"@types/lodash.merge@^4.6.8": + version "4.6.9" + resolved "https://registry.npmjs.org/@types/lodash.merge/-/lodash.merge-4.6.9.tgz#93e94796997ed9a3ebe9ccf071ccaec4c6bc8fb8" + integrity sha512-23sHDPmzd59kUgWyKGiOMO2Qb9YtqRO/x4IhkgNUiPQ1+5MUVqi6bCZeq9nBJ17msjIMbEIO5u+XW4Kz6aGUhQ== dependencies: - "@types/node" "*" + "@types/lodash" "*" -"@types/graceful-fs@^4.1.2": - version "4.1.3" - resolved "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.3.tgz#039af35fe26bec35003e8d86d2ee9c586354348f" - integrity sha512-AiHRaEB50LQg0pZmm659vNBb9f4SJ0qrAnteuzhSeAUcJKxoYgEnprg/83kppCnc2zvtCKbdZry1a5pVY3lOTQ== +"@types/lodash.mergewith@^4.6.8": + version "4.6.9" + resolved "https://registry.npmjs.org/@types/lodash.mergewith/-/lodash.mergewith-4.6.9.tgz#7093028a36de3cae4495d03b9d92c351cab1f8bf" + integrity sha512-fgkoCAOF47K7sxrQ7Mlud2TH023itugZs2bUg8h/KzT+BnZNrR2jAOmaokbLunHNnobXVWOezAeNn/lZqwxkcw== dependencies: - "@types/node" "*" + "@types/lodash" "*" -"@types/inquirer@^7.3.1": - version "7.3.1" - resolved "https://registry.npmjs.org/@types/inquirer/-/inquirer-7.3.1.tgz#1f231224e7df11ccfaf4cf9acbcc3b935fea292d" - integrity sha512-osD38QVIfcdgsPCT0V3lD7eH0OFurX71Jft18bZrsVQWVRt6TuxRzlr0GJLrxoHZR2V5ph7/qP8se/dcnI7o0g== +"@types/lodash.snakecase@^4.1.8": + version "4.1.9" + resolved "https://registry.npmjs.org/@types/lodash.snakecase/-/lodash.snakecase-4.1.9.tgz#2d2b3313a44500cb6d8a1c598e0353778d4420d2" + integrity sha512-emBZJUiNlo+QPXr1junMKXwzHJK9zbFvTVdyAoorFcm1YRsbzkZCYPTVMM9AW+dlnA6utG7vpfvOs8alxv/TMw== dependencies: - "@types/through" "*" - rxjs "^6.4.0" - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.1" - resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" - integrity sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg== + "@types/lodash" "*" -"@types/istanbul-lib-report@*": - version "1.1.1" - resolved "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz#e5471e7fa33c61358dd38426189c037a58433b8c" - integrity sha512-3BUTyMzbZa2DtDI2BkERNC6jJw2Mr2Y0oGI7mRxYNBPxppbtEK1F66u3bKwU2g+wxwWI7PAoRpJnOY1grJqzHg== +"@types/lodash.startcase@^4.4.8": + version "4.4.9" + resolved "https://registry.npmjs.org/@types/lodash.startcase/-/lodash.startcase-4.4.9.tgz#fba0daa4bb5f279e05628c03193ae1d5e32c438d" + integrity sha512-C0M4DlN1pnn2vEEhLHkTHxiRZ+3GlTegpoAEHHGXnuJkSOXyJMHGiSc+SLRzBlFZWHsBkixe6FqvEAEU04g14g== dependencies: - "@types/istanbul-lib-coverage" "*" + "@types/lodash" "*" -"@types/istanbul-reports@^3.0.0": - version "3.0.0" - resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz#508b13aa344fa4976234e75dddcc34925737d821" - integrity sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA== +"@types/lodash.uniq@^4.5.8": + version "4.5.9" + resolved "https://registry.npmjs.org/@types/lodash.uniq/-/lodash.uniq-4.5.9.tgz#9a5390422c003ca6d0219207ed6c9c38e37a783f" + integrity sha512-2Vd5avnDMNLbDSnUwwgwExKXvX9W3CN72rodT+ikGqGHXn7gVK6BM6Z+kHonbpGgCI2BzM+QDMHrkgKoofOi6A== dependencies: - "@types/istanbul-lib-report" "*" + "@types/lodash" "*" -"@types/jest@26.0.24": - version "26.0.24" - resolved "https://registry.npmjs.org/@types/jest/-/jest-26.0.24.tgz#943d11976b16739185913a1936e0de0c4a7d595a" - integrity sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w== +"@types/lodash.upperfirst@^4.3.8": + version "4.3.9" + resolved "https://registry.npmjs.org/@types/lodash.upperfirst/-/lodash.upperfirst-4.3.9.tgz#66e150885a67866ed8bc4331c8c305ab682a198c" + integrity sha512-bYhT1QEsk9/ggrFjK86Pb5bnKJgTBbpVA77Ygbb1aW1oiWJNGRbVjSlQ9We/ihB9vVpX5WqDJvbISXlukGR+dQ== dependencies: - jest-diff "^26.0.0" - pretty-format "^26.0.0" + "@types/lodash" "*" -"@types/json-schema@^7.0.7": - version "7.0.8" - resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.8.tgz#edf1bf1dbf4e04413ca8e5b17b3b7d7d54b59818" - integrity sha512-YSBPTLTVm2e2OoQIDYx8HaeWJ5tTToLH67kXR7zYNGupXMEHa2++G8k+DczX2cFVgalypqtyZIcU19AFcmOpmg== +"@types/lodash@*": + version "4.17.16" + resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.16.tgz#94ae78fab4a38d73086e962d0b65c30d816bfb0a" + integrity sha512-HX7Em5NYQAXKW+1T+FiuG27NGwzJfCX3s1GjOa7ujxZa52kjJLOr4FUxT+giF6Tgxv1e+/czV/iTtBw27WTU9g== -"@types/json5@^0.0.29": - version "0.0.29" - resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" - integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= +"@types/markdown-it@^14.1.2": + version "14.1.2" + resolved "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz#57f2532a0800067d9b934f3521429a2e8bfb4c61" + integrity sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog== + dependencies: + "@types/linkify-it" "^5" + "@types/mdurl" "^2" -"@types/lodash@4.14.171": - version "4.14.171" - resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.171.tgz#f01b3a5fe3499e34b622c362a46a609fdb23573b" - integrity sha512-7eQ2xYLLI/LsicL2nejW9Wyko3lcpN6O/z0ZLHrEQsg280zIdCv1t/0m6UtBjUHokCGBQ3gYTbHzDkZ1xOBwwg== +"@types/mdast@^4.0.0": + version "4.0.4" + resolved "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz#7ccf72edd2f1aa7dd3437e180c64373585804dd6" + integrity sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA== + dependencies: + "@types/unist" "*" -"@types/lodash@^4.14.161": - version "4.14.161" - resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.161.tgz#a21ca0777dabc6e4f44f3d07f37b765f54188b18" - integrity sha512-EP6O3Jkr7bXvZZSZYlsgt5DIjiGr0dXP1/jVEwVLTFgg0d+3lWVQkRavYVQszV7dYUwvg0B8R0MBDpcmXg7XIA== +"@types/mdurl@^2": + version "2.0.0" + resolved "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz#d43878b5b20222682163ae6f897b20447233bdfd" + integrity sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg== "@types/minimatch@^3.0.3": - version "3.0.3" - resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" - integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== + version "3.0.5" + resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" + integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== -"@types/minimist@^1.2.0": - version "1.2.1" - resolved "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.1.tgz#283f669ff76d7b8260df8ab7a4262cc83d988256" - integrity sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg== +"@types/minimatch@^5.1.2": + version "5.1.2" + resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" + integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== + +"@types/minimist@^1.2.0", "@types/minimist@^1.2.4": + version "1.2.5" + resolved "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz#ec10755e871497bcd83efe927e43ec46e8c0747e" + integrity sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag== "@types/node@*": - version "12.12.26" - resolved "https://registry.npmjs.org/@types/node/-/node-12.12.26.tgz#213e153babac0ed169d44a6d919501e68f59dea9" - integrity sha512-UmUm94/QZvU5xLcUlNR8hA7Ac+fGpO1EG/a8bcWVz0P0LqtxFmun9Y2bbtuckwGboWJIT70DoWq1r3hb56n3DA== + version "24.0.7" + resolved "https://registry.npmjs.org/@types/node/-/node-24.0.7.tgz#ee580f7850c7eabaeef61ef96b8d8c04fdf94f53" + integrity sha512-YIEUUr4yf8q8oQoXPpSlnvKNVKDQlPMWrmOcgzoduo7kvA2UF0/BwJ/eMKFTiTtkNL17I0M6Xe2tvwFU7be6iw== + dependencies: + undici-types "~7.8.0" -"@types/node@12.20.17": - version "12.20.17" - resolved "https://registry.npmjs.org/@types/node/-/node-12.20.17.tgz#ffd44c2801fc527a6fe6e86bc9b900261df1c87e" - integrity sha512-so8EHl4S6MmatPS0f9sE1ND94/ocbcEshW5OpyYthRqeRpiYyW2uXYTo/84kmfdfeNrDycARkvuiXl6nO40NGg== +"@types/node@^18.19.17": + version "18.19.120" + resolved "https://registry.npmjs.org/@types/node/-/node-18.19.120.tgz#07b3bd73875956d5281fa27e6d77a66415f7d455" + integrity sha512-WtCGHFXnVI8WHLxDAt5TbnCM4eSE+nI0QN2NJtwzcgMhht2eNz6V9evJrk+lwC8bCY8OWV5Ym8Jz7ZEyGnKnMA== + dependencies: + undici-types "~5.26.4" -"@types/normalize-package-data@^2.4.0": - version "2.4.0" - resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" - integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== +"@types/normalize-package-data@^2.4.0", "@types/normalize-package-data@^2.4.3": + version "2.4.4" + resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz#56e2cc26c397c038fab0e3a917a12d5c5909e901" + integrity sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA== -"@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== +"@types/require-from-string@^1.2.3": + version "1.2.3" + resolved "https://registry.npmjs.org/@types/require-from-string/-/require-from-string-1.2.3.tgz#454ffa447f6556d7641d86684407d7b62e4430bd" + integrity sha512-kxLU5xvefySGpp1Z7VCt4m5AhQJUZ8HjW8ADdeS7GieqFPHLAde007fd9bxeXEsFXyaA0LeWIoQXyXP17mGpIg== -"@types/prettier@^2.1.5": - version "2.2.3" - resolved "https://registry.npmjs.org/@types/prettier/-/prettier-2.2.3.tgz#ef65165aea2924c9359205bf748865b8881753c0" - integrity sha512-PijRCG/K3s3w1We6ynUKdxEc5AcuuH3NBmMDP8uvKVp6X43UY7NQlTzczakXP3DJR0F4dfNQIGjU2cUeRYs2AA== +"@types/semver@^7.5.7": + version "7.7.0" + resolved "https://registry.npmjs.org/@types/semver/-/semver-7.7.0.tgz#64c441bdae033b378b6eef7d0c3d77c329b9378e" + integrity sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA== -"@types/semver@7.3.8": - version "7.3.8" - resolved "https://registry.npmjs.org/@types/semver/-/semver-7.3.8.tgz#508a27995498d7586dcecd77c25e289bfaf90c59" - integrity sha512-D/2EJvAlCEtYFEYmmlGwbGXuK886HzyCc3nZX/tkFTQdEU8jZDAgiv08P162yB17y4ZXZoq7yFAnW4GDBb9Now== +"@types/tar-fs@^2.0.4": + version "2.0.4" + resolved "https://registry.npmjs.org/@types/tar-fs/-/tar-fs-2.0.4.tgz#7c7502d281d436db0ad0f78282acef71da02a292" + integrity sha512-ipPec0CjTmVDWE+QKr9cTmIIoTl7dFG/yARCM5MqK8i6CNLIG1P8x4kwDsOQY1ChZOZjH0wO9nvfgBvWl4R3kA== + dependencies: + "@types/node" "*" + "@types/tar-stream" "*" -"@types/stack-utils@^2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.0.tgz#7036640b4e21cc2f259ae826ce843d277dad8cff" - integrity sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw== +"@types/tar-stream@*": + version "3.1.3" + resolved "https://registry.npmjs.org/@types/tar-stream/-/tar-stream-3.1.3.tgz#f61427229691eda1b7d5719f34acdc4fc8a558ce" + integrity sha512-Zbnx4wpkWBMBSu5CytMbrT5ZpMiF55qgM+EpHzR4yIDu7mv52cej8hTkOc6K+LzpkOAbxwn/m7j3iO+/l42YkQ== + dependencies: + "@types/node" "*" "@types/through@*": - version "0.0.30" - resolved "https://registry.npmjs.org/@types/through/-/through-0.0.30.tgz#e0e42ce77e897bd6aead6f6ea62aeb135b8a3895" - integrity sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg== + version "0.0.33" + resolved "https://registry.npmjs.org/@types/through/-/through-0.0.33.tgz#14ebf599320e1c7851e7d598149af183c6b9ea56" + integrity sha512-HsJ+z3QuETzP3cswwtzt2vEIiHBk/dCcHGhbmG5X3ecnwFD/lPrMpliGXxSCg03L9AhrdwA4Oz/qfspkDW+xGQ== dependencies: "@types/node" "*" -"@types/tmp@^0.2.0": - version "0.2.0" - resolved "https://registry.npmjs.org/@types/tmp/-/tmp-0.2.0.tgz#e3f52b4d7397eaa9193592ef3fdd44dc0af4298c" - integrity sha512-flgpHJjntpBAdJD43ShRosQvNC0ME97DCfGvZEDlAThQmnerRXrLbX6YgzRBQCZTthET9eAWFAMaYP0m0Y4HzQ== +"@types/tmp@^0.2.5": + version "0.2.6" + resolved "https://registry.npmjs.org/@types/tmp/-/tmp-0.2.6.tgz#d785ee90c52d7cc020e249c948c36f7b32d1e217" + integrity sha512-chhaNf2oKHlRkDGt+tiKE2Z5aJ6qalm7Z9rlLdBwmOiAAf09YQvvoLXjWK4HWPF1xU/fqvMgfNfpVoBscA/tKA== + +"@types/unist@*", "@types/unist@^3.0.0": + version "3.0.3" + resolved "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz#acaab0f919ce69cce629c2d4ed2eb4adc1b6c20c" + integrity sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q== + +"@types/web-bluetooth@^0.0.20": + version "0.0.20" + resolved "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz#f066abfcd1cbe66267cdbbf0de010d8a41b41597" + integrity sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow== "@types/yargs-parser@*": - version "20.2.0" - resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.0.tgz#dd3e6699ba3237f0348cd085e4698780204842f9" - integrity sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA== + version "21.0.3" + resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" + integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== -"@types/yargs@^15.0.0": - version "15.0.3" - resolved "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.3.tgz#41453a0bc7ab393e995d1f5451455638edbd2baf" - integrity sha512-XCMQRK6kfpNBixHLyHUsGmXrpEmFFxzMrcnSXFMziHd8CoNJo8l16FkHyQq4x+xbM7E2XL83/O78OD8u+iZTdQ== +"@types/yargs@^17.0.29": + version "17.0.33" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz#8c32303da83eec050a84b3c7ae7b9f922d13e32d" + integrity sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA== dependencies: "@types/yargs-parser" "*" -"@types/yargs@^16.0.0": - version "16.0.3" - resolved "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.3.tgz#4b6d35bb8e680510a7dc2308518a80ee1ef27e01" - integrity sha512-YlFfTGS+zqCgXuXNV26rOIeETOkXnGQXP/pjjL9P0gO/EP9jTmc7pUBhx+jVEIxpq41RX33GQ7N3DzOSfZoglQ== - dependencies: - "@types/yargs-parser" "*" +"@typescript-eslint/eslint-plugin@^8.18.0": + version "8.38.0" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.38.0.tgz#6e5220d16f2691ab6d983c1737dd5b36e17641b7" + integrity sha512-CPoznzpuAnIOl4nhj4tRr4gIPj5AfKgkiJmGQDaq+fQnRJTYlcBjbX3wbciGmpoPf8DREufuPRe1tNMZnGdanA== + dependencies: + "@eslint-community/regexpp" "^4.10.0" + "@typescript-eslint/scope-manager" "8.38.0" + "@typescript-eslint/type-utils" "8.38.0" + "@typescript-eslint/utils" "8.38.0" + "@typescript-eslint/visitor-keys" "8.38.0" + graphemer "^1.4.0" + ignore "^7.0.0" + natural-compare "^1.4.0" + ts-api-utils "^2.1.0" + +"@typescript-eslint/parser@^8.18.0": + version "8.38.0" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.38.0.tgz#6723a5ea881e1777956b1045cba30be5ea838293" + integrity sha512-Zhy8HCvBUEfBECzIl1PKqF4p11+d0aUJS1GeUiuqK9WmOug8YCmC4h4bjyBvMyAMI9sbRczmrYL5lKg/YMbrcQ== + dependencies: + "@typescript-eslint/scope-manager" "8.38.0" + "@typescript-eslint/types" "8.38.0" + "@typescript-eslint/typescript-estree" "8.38.0" + "@typescript-eslint/visitor-keys" "8.38.0" + debug "^4.3.4" + +"@typescript-eslint/project-service@8.38.0": + version "8.38.0" + resolved "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.38.0.tgz#4900771f943163027fd7d2020a062892056b5e2f" + integrity sha512-dbK7Jvqcb8c9QfH01YB6pORpqX1mn5gDZc9n63Ak/+jD67oWXn3Gs0M6vddAN+eDXBCS5EmNWzbSxsn9SzFWWg== + dependencies: + "@typescript-eslint/tsconfig-utils" "^8.38.0" + "@typescript-eslint/types" "^8.38.0" + debug "^4.3.4" + +"@typescript-eslint/project-service@8.41.0": + version "8.41.0" + resolved "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.41.0.tgz#08ebf882d413a038926e73fda36e00c3dba84882" + integrity sha512-b8V9SdGBQzQdjJ/IO3eDifGpDBJfvrNTp2QD9P2BeqWTGrRibgfgIlBSw6z3b6R7dPzg752tOs4u/7yCLxksSQ== + dependencies: + "@typescript-eslint/tsconfig-utils" "^8.41.0" + "@typescript-eslint/types" "^8.41.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@8.38.0": + version "8.38.0" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.38.0.tgz#5a0efcb5c9cf6e4121b58f87972f567c69529226" + integrity sha512-WJw3AVlFFcdT9Ri1xs/lg8LwDqgekWXWhH3iAF+1ZM+QPd7oxQ6jvtW/JPwzAScxitILUIFs0/AnQ/UWHzbATQ== + dependencies: + "@typescript-eslint/types" "8.38.0" + "@typescript-eslint/visitor-keys" "8.38.0" + +"@typescript-eslint/scope-manager@8.41.0": + version "8.41.0" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.41.0.tgz#c8aba12129cb9cead1f1727f58e6a0fcebeecdb5" + integrity sha512-n6m05bXn/Cd6DZDGyrpXrELCPVaTnLdPToyhBoFkLIMznRUQUEQdSp96s/pcWSQdqOhrgR1mzJ+yItK7T+WPMQ== + dependencies: + "@typescript-eslint/types" "8.41.0" + "@typescript-eslint/visitor-keys" "8.41.0" + +"@typescript-eslint/tsconfig-utils@8.38.0", "@typescript-eslint/tsconfig-utils@^8.38.0": + version "8.38.0" + resolved "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.38.0.tgz#6de4ce224a779601a8df667db56527255c42c4d0" + integrity sha512-Lum9RtSE3EroKk/bYns+sPOodqb2Fv50XOl/gMviMKNvanETUuUcC9ObRbzrJ4VSd2JalPqgSAavwrPiPvnAiQ== + +"@typescript-eslint/tsconfig-utils@8.41.0", "@typescript-eslint/tsconfig-utils@^8.41.0": + version "8.41.0" + resolved "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.41.0.tgz#134dee36eb16cdd78095a20bca0516d10b5dda75" + integrity sha512-TDhxYFPUYRFxFhuU5hTIJk+auzM/wKvWgoNYOPcOf6i4ReYlOoYN8q1dV5kOTjNQNJgzWN3TUUQMtlLOcUgdUw== + +"@typescript-eslint/type-utils@8.38.0": + version "8.38.0" + resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.38.0.tgz#a56cd84765fa6ec135fe252b5db61e304403a85b" + integrity sha512-c7jAvGEZVf0ao2z+nnz8BUaHZD09Agbh+DY7qvBQqLiz8uJzRgVPj5YvOh8I8uEiH8oIUGIfHzMwUcGVco/SJg== + dependencies: + "@typescript-eslint/types" "8.38.0" + "@typescript-eslint/typescript-estree" "8.38.0" + "@typescript-eslint/utils" "8.38.0" + debug "^4.3.4" + ts-api-utils "^2.1.0" + +"@typescript-eslint/types@8.38.0", "@typescript-eslint/types@^8.38.0": + version "8.38.0" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.38.0.tgz#297351c994976b93c82ac0f0e206c8143aa82529" + integrity sha512-wzkUfX3plUqij4YwWaJyqhiPE5UCRVlFpKn1oCRn2O1bJ592XxWJj8ROQ3JD5MYXLORW84063z3tZTb/cs4Tyw== + +"@typescript-eslint/types@8.41.0", "@typescript-eslint/types@^8.41.0": + version "8.41.0" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.41.0.tgz#9935afeaae65e535abcbcee95383fa649c64d16d" + integrity sha512-9EwxsWdVqh42afLbHP90n2VdHaWU/oWgbH2P0CfcNfdKL7CuKpwMQGjwev56vWu9cSKU7FWSu6r9zck6CVfnag== + +"@typescript-eslint/types@^8.35.0": + version "8.35.0" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.35.0.tgz#e60d062907930e30008d796de5c4170f02618a93" + integrity sha512-0mYH3emanku0vHw2aRLNGqe7EXh9WHEhi7kZzscrMDf6IIRUQ5Jk4wp1QrledE/36KtdZrVfKnE32eZCf/vaVQ== + +"@typescript-eslint/typescript-estree@8.38.0": + version "8.38.0" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.38.0.tgz#82262199eb6778bba28a319e25ad05b1158957df" + integrity sha512-fooELKcAKzxux6fA6pxOflpNS0jc+nOQEEOipXFNjSlBS6fqrJOVY/whSn70SScHrcJ2LDsxWrneFoWYSVfqhQ== + dependencies: + "@typescript-eslint/project-service" "8.38.0" + "@typescript-eslint/tsconfig-utils" "8.38.0" + "@typescript-eslint/types" "8.38.0" + "@typescript-eslint/visitor-keys" "8.38.0" + debug "^4.3.4" + fast-glob "^3.3.2" + is-glob "^4.0.3" + minimatch "^9.0.4" + semver "^7.6.0" + ts-api-utils "^2.1.0" + +"@typescript-eslint/typescript-estree@8.41.0": + version "8.41.0" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.41.0.tgz#7c9cff8b4334ce96f14e9689692e8cf426ce4d59" + integrity sha512-D43UwUYJmGhuwHfY7MtNKRZMmfd8+p/eNSfFe6tH5mbVDto+VQCayeAt35rOx3Cs6wxD16DQtIKw/YXxt5E0UQ== + dependencies: + "@typescript-eslint/project-service" "8.41.0" + "@typescript-eslint/tsconfig-utils" "8.41.0" + "@typescript-eslint/types" "8.41.0" + "@typescript-eslint/visitor-keys" "8.41.0" + debug "^4.3.4" + fast-glob "^3.3.2" + is-glob "^4.0.3" + minimatch "^9.0.4" + semver "^7.6.0" + ts-api-utils "^2.1.0" + +"@typescript-eslint/utils@8.38.0": + version "8.38.0" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.38.0.tgz#5f10159899d30eb92ba70e642ca6f754bddbf15a" + integrity sha512-hHcMA86Hgt+ijJlrD8fX0j1j8w4C92zue/8LOPAFioIno+W0+L7KqE8QZKCcPGc/92Vs9x36w/4MPTJhqXdyvg== + dependencies: + "@eslint-community/eslint-utils" "^4.7.0" + "@typescript-eslint/scope-manager" "8.38.0" + "@typescript-eslint/types" "8.38.0" + "@typescript-eslint/typescript-estree" "8.38.0" + +"@typescript-eslint/utils@^8.24.1": + version "8.41.0" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.41.0.tgz#17cb3b766c1626311004ea41ffd8c27eb226b953" + integrity sha512-udbCVstxZ5jiPIXrdH+BZWnPatjlYwJuJkDA4Tbo3WyYLh8NvB+h/bKeSZHDOFKfphsZYJQqaFtLeXEqurQn1A== + dependencies: + "@eslint-community/eslint-utils" "^4.7.0" + "@typescript-eslint/scope-manager" "8.41.0" + "@typescript-eslint/types" "8.41.0" + "@typescript-eslint/typescript-estree" "8.41.0" + +"@typescript-eslint/visitor-keys@8.38.0": + version "8.38.0" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.38.0.tgz#a9765a527b082cb8fc60fd8a16e47c7ad5b60ea5" + integrity sha512-pWrTcoFNWuwHlA9CvlfSsGWs14JxfN1TH25zM5L7o0pRLhsoZkDnTsXfQRJBEWJoV5DL0jf+Z+sxiud+K0mq1g== + dependencies: + "@typescript-eslint/types" "8.38.0" + eslint-visitor-keys "^4.2.1" + +"@typescript-eslint/visitor-keys@8.41.0": + version "8.41.0" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.41.0.tgz#16eb99b55d207f6688002a2cf425e039579aa9a9" + integrity sha512-+GeGMebMCy0elMNg67LRNoVnUFPIm37iu5CmHESVx56/9Jsfdpsvbv605DQ81Pi/x11IdKUsS5nzgTYbCQU9fg== + dependencies: + "@typescript-eslint/types" "8.41.0" + eslint-visitor-keys "^4.2.1" + +"@ungap/structured-clone@^1.0.0": + version "1.3.0" + resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz#d06bbb384ebcf6c505fde1c3d0ed4ddffe0aaff8" + integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g== + +"@unrs/resolver-binding-android-arm-eabi@1.9.2": + version "1.9.2" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.9.2.tgz#6cb01dde20bef06397ffd4924f502596cb458851" + integrity sha512-tS+lqTU3N0kkthU+rYp0spAYq15DU8ld9kXkaKg9sbQqJNF+WPMuNHZQGCgdxrUOEO0j22RKMwRVhF1HTl+X8A== + +"@unrs/resolver-binding-android-arm64@1.9.2": + version "1.9.2" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.9.2.tgz#1672b533f01f98119095860683496def93929a2e" + integrity sha512-MffGiZULa/KmkNjHeuuflLVqfhqLv1vZLm8lWIyeADvlElJ/GLSOkoUX+5jf4/EGtfwrNFcEaB8BRas03KT0/Q== + +"@unrs/resolver-binding-darwin-arm64@1.9.2": + version "1.9.2" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.9.2.tgz#dad66a21553b1ba4088c6eb922332846550bd9b2" + integrity sha512-dzJYK5rohS1sYl1DHdJ3mwfwClJj5BClQnQSyAgEfggbUwA9RlROQSSbKBLqrGfsiC/VyrDPtbO8hh56fnkbsQ== + +"@unrs/resolver-binding-darwin-x64@1.9.2": + version "1.9.2" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.9.2.tgz#bfaedca218078862f3d536d44269fed94a6158e2" + integrity sha512-gaIMWK+CWtXcg9gUyznkdV54LzQ90S3X3dn8zlh+QR5Xy7Y+Efqw4Rs4im61K1juy4YNb67vmJsCDAGOnIeffQ== + +"@unrs/resolver-binding-freebsd-x64@1.9.2": + version "1.9.2" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.9.2.tgz#bdab0e754c45831522b16df0b6fe4b0ffde22628" + integrity sha512-S7QpkMbVoVJb0xwHFwujnwCAEDe/596xqY603rpi/ioTn9VDgBHnCCxh+UFrr5yxuMH+dliHfjwCZJXOPJGPnw== + +"@unrs/resolver-binding-linux-arm-gnueabihf@1.9.2": + version "1.9.2" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.9.2.tgz#2bac9c19599888d4ba4787b437b0273ac7a7a9f2" + integrity sha512-+XPUMCuCCI80I46nCDFbGum0ZODP5NWGiwS3Pj8fOgsG5/ctz+/zzuBlq/WmGa+EjWZdue6CF0aWWNv84sE1uw== + +"@unrs/resolver-binding-linux-arm-musleabihf@1.9.2": + version "1.9.2" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.9.2.tgz#49d27d5d63e5f26cf7b93a0731334b302b9b7fec" + integrity sha512-sqvUyAd1JUpwbz33Ce2tuTLJKM+ucSsYpPGl2vuFwZnEIg0CmdxiZ01MHQ3j6ExuRqEDUCy8yvkDKvjYFPb8Zg== + +"@unrs/resolver-binding-linux-arm64-gnu@1.9.2": + version "1.9.2" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.9.2.tgz#95ba5d1654a04b1049d944871e165d786e8da68f" + integrity sha512-UYA0MA8ajkEDCFRQdng/FVx3F6szBvk3EPnkTTQuuO9lV1kPGuTB+V9TmbDxy5ikaEgyWKxa4CI3ySjklZ9lFA== + +"@unrs/resolver-binding-linux-arm64-musl@1.9.2": + version "1.9.2" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.9.2.tgz#23f90a48b1d343189b1c20c89b694140e2d5a210" + integrity sha512-P/CO3ODU9YJIHFqAkHbquKtFst0COxdphc8TKGL5yCX75GOiVpGqd1d15ahpqu8xXVsqP4MGFP2C3LRZnnL5MA== + +"@unrs/resolver-binding-linux-ppc64-gnu@1.9.2": + version "1.9.2" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.9.2.tgz#076f2c2e95dbcd4824cc9929bc504151b402ac11" + integrity sha512-uKStFlOELBxBum2s1hODPtgJhY4NxYJE9pAeyBgNEzHgTqTiVBPjfTlPFJkfxyTjQEuxZbbJlJnMCrRgD7ubzw== + +"@unrs/resolver-binding-linux-riscv64-gnu@1.9.2": + version "1.9.2" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.9.2.tgz#f7de54d45df430c74bbd12794946a55805bed6dd" + integrity sha512-LkbNnZlhINfY9gK30AHs26IIVEZ9PEl9qOScYdmY2o81imJYI4IMnJiW0vJVtXaDHvBvxeAgEy5CflwJFIl3tQ== + +"@unrs/resolver-binding-linux-riscv64-musl@1.9.2": + version "1.9.2" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.9.2.tgz#ad1fcdcf5f112d7432fcfe38269a084bdccad266" + integrity sha512-vI+e6FzLyZHSLFNomPi+nT+qUWN4YSj8pFtQZSFTtmgFoxqB6NyjxSjAxEC1m93qn6hUXhIsh8WMp+fGgxCoRg== + +"@unrs/resolver-binding-linux-s390x-gnu@1.9.2": + version "1.9.2" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.9.2.tgz#d914a4f12b9048e1a4de0040f64d73274104e301" + integrity sha512-sSO4AlAYhSM2RAzBsRpahcJB1msc6uYLAtP6pesPbZtptF8OU/CbCPhSRW6cnYOGuVmEmWVW5xVboAqCnWTeHQ== + +"@unrs/resolver-binding-linux-x64-gnu@1.9.2": + version "1.9.2" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.9.2.tgz#d8f8cddc42ae267ef45ed4b61ff72b9e22aa3b82" + integrity sha512-jkSkwch0uPFva20Mdu8orbQjv2A3G88NExTN2oPTI1AJ+7mZfYW3cDCTyoH6OnctBKbBVeJCEqh0U02lTkqD5w== + +"@unrs/resolver-binding-linux-x64-musl@1.9.2": + version "1.9.2" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.9.2.tgz#7bfce67acb51b3f4a7cff8383f46600f7b055a96" + integrity sha512-Uk64NoiTpQbkpl+bXsbeyOPRpUoMdcUqa+hDC1KhMW7aN1lfW8PBlBH4mJ3n3Y47dYE8qi0XTxy1mBACruYBaw== + +"@unrs/resolver-binding-wasm32-wasi@1.9.2": + version "1.9.2" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.9.2.tgz#b133c9b6941aba54eea007ca2f27ff6ce917ae55" + integrity sha512-EpBGwkcjDicjR/ybC0g8wO5adPNdVuMrNalVgYcWi+gYtC1XYNuxe3rufcO7dA76OHGeVabcO6cSkPJKVcbCXQ== + dependencies: + "@napi-rs/wasm-runtime" "^0.2.11" + +"@unrs/resolver-binding-win32-arm64-msvc@1.9.2": + version "1.9.2" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.9.2.tgz#5f95f590f06c1e9ba15b24292c956c21a6294b30" + integrity sha512-EdFbGn7o1SxGmN6aZw9wAkehZJetFPao0VGZ9OMBwKx6TkvDuj6cNeLimF/Psi6ts9lMOe+Dt6z19fZQ9Ye2fw== + +"@unrs/resolver-binding-win32-ia32-msvc@1.9.2": + version "1.9.2" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.9.2.tgz#aac6595c6de6b26e5314372ab977b0f6a869c903" + integrity sha512-JY9hi1p7AG+5c/dMU8o2kWemM8I6VZxfGwn1GCtf3c5i+IKcMo2NQ8OjZ4Z3/itvY/Si3K10jOBQn7qsD/whUA== + +"@unrs/resolver-binding-win32-x64-msvc@1.9.2": + version "1.9.2" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.9.2.tgz#f755c5229f1401bbff7307d037c6e38fa169ad1d" + integrity sha512-ryoo+EB19lMxAd80ln9BVf8pdOAxLb97amrQ3SFN9OCRn/5M5wvwDgAe4i8ZjhpbiHoDeP8yavcTEnpKBo7lZg== + +"@vitejs/plugin-vue@^5.2.1": + version "5.2.1" + resolved "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.1.tgz#d1491f678ee3af899f7ae57d9c21dc52a65c7133" + integrity sha512-cxh314tzaWwOLqVes2gnnCtvBDcM1UMdn+iFR+UjAn411dPT3tOmqrJjbMd7koZpMAmBM/GqeV4n9ge7JSiJJQ== -"@types/yargs@^17.0.0": - version "17.0.0" - resolved "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.0.tgz#32f740934eedf0a5cd19470249f317755c91f1ae" - integrity sha512-RS7u2X7vdXjVQs160PWY1pjLBw6GJj04utojn0KU8p2rRZR37FSzzK6XOT+KLzT/DVbDYRyezroc0LHIvM5Z2A== +"@vitest/coverage-istanbul@^3.0.0": + version "3.2.4" + resolved "https://registry.npmjs.org/@vitest/coverage-istanbul/-/coverage-istanbul-3.2.4.tgz#a622802975935a2357d890b367fffd0dfd7a5a99" + integrity sha512-IDlpuFJiWU9rhcKLkpzj8mFu/lpe64gVgnV15ZOrYx1iFzxxrxCzbExiUEKtwwXRvEiEMUS6iZeYgnMxgbqbxQ== + dependencies: + "@istanbuljs/schema" "^0.1.3" + debug "^4.4.1" + istanbul-lib-coverage "^3.2.2" + istanbul-lib-instrument "^6.0.3" + istanbul-lib-report "^3.0.1" + istanbul-lib-source-maps "^5.0.6" + istanbul-reports "^3.1.7" + magicast "^0.3.5" + test-exclude "^7.0.1" + tinyrainbow "^2.0.0" + +"@vitest/eslint-plugin@^1.3.4": + version "1.3.4" + resolved "https://registry.npmjs.org/@vitest/eslint-plugin/-/eslint-plugin-1.3.4.tgz#010f99ecfdcf349eb6d9c1f29c31ebcc8f5e18f8" + integrity sha512-EOg8d0jn3BAiKnR55WkFxmxfWA3nmzrbIIuOXyTe6A72duryNgyU+bdBEauA97Aab3ho9kLmAwgPX63Ckj4QEg== + dependencies: + "@typescript-eslint/utils" "^8.24.1" + +"@vitest/expect@3.2.4": + version "3.2.4" + resolved "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz#8362124cd811a5ee11c5768207b9df53d34f2433" + integrity sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig== dependencies: - "@types/yargs-parser" "*" + "@types/chai" "^5.2.2" + "@vitest/spy" "3.2.4" + "@vitest/utils" "3.2.4" + chai "^5.2.0" + tinyrainbow "^2.0.0" -"@typescript-eslint/eslint-plugin@^4.1.0": - version "4.28.5" - resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.28.5.tgz#8197f1473e7da8218c6a37ff308d695707835684" - integrity sha512-m31cPEnbuCqXtEZQJOXAHsHvtoDi9OVaeL5wZnO2KZTnkvELk+u6J6jHg+NzvWQxk+87Zjbc4lJS4NHmgImz6Q== +"@vitest/mocker@3.2.4": + version "3.2.4" + resolved "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz#4471c4efbd62db0d4fa203e65cc6b058a85cabd3" + integrity sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ== dependencies: - "@typescript-eslint/experimental-utils" "4.28.5" - "@typescript-eslint/scope-manager" "4.28.5" - debug "^4.3.1" - functional-red-black-tree "^1.0.1" - regexpp "^3.1.0" - semver "^7.3.5" - tsutils "^3.21.0" - -"@typescript-eslint/experimental-utils@4.28.5": - version "4.28.5" - resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.28.5.tgz#66c28bef115b417cf9d80812a713e0e46bb42a64" - integrity sha512-bGPLCOJAa+j49hsynTaAtQIWg6uZd8VLiPcyDe4QPULsvQwLHGLSGKKcBN8/lBxIX14F74UEMK2zNDI8r0okwA== - dependencies: - "@types/json-schema" "^7.0.7" - "@typescript-eslint/scope-manager" "4.28.5" - "@typescript-eslint/types" "4.28.5" - "@typescript-eslint/typescript-estree" "4.28.5" - eslint-scope "^5.1.1" - eslint-utils "^3.0.0" - -"@typescript-eslint/experimental-utils@^4.0.1": - version "4.28.4" - resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.28.4.tgz#9c70c35ebed087a5c70fb0ecd90979547b7fec96" - integrity sha512-OglKWOQRWTCoqMSy6pm/kpinEIgdcXYceIcH3EKWUl4S8xhFtN34GQRaAvTIZB9DD94rW7d/U7tUg3SYeDFNHA== - dependencies: - "@types/json-schema" "^7.0.7" - "@typescript-eslint/scope-manager" "4.28.4" - "@typescript-eslint/types" "4.28.4" - "@typescript-eslint/typescript-estree" "4.28.4" - eslint-scope "^5.1.1" - eslint-utils "^3.0.0" - -"@typescript-eslint/parser@^4.1.0": - version "4.28.5" - resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.28.5.tgz#9c971668f86d1b5c552266c47788a87488a47d1c" - integrity sha512-NPCOGhTnkXGMqTznqgVbA5LqVsnw+i3+XA1UKLnAb+MG1Y1rP4ZSK9GX0kJBmAZTMIktf+dTwXToT6kFwyimbw== - dependencies: - "@typescript-eslint/scope-manager" "4.28.5" - "@typescript-eslint/types" "4.28.5" - "@typescript-eslint/typescript-estree" "4.28.5" - debug "^4.3.1" + "@vitest/spy" "3.2.4" + estree-walker "^3.0.3" + magic-string "^0.30.17" -"@typescript-eslint/scope-manager@4.28.4": - version "4.28.4" - resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.28.4.tgz#bdbce9b6a644e34f767bd68bc17bb14353b9fe7f" - integrity sha512-ZJBNs4usViOmlyFMt9X9l+X0WAFcDH7EdSArGqpldXu7aeZxDAuAzHiMAeI+JpSefY2INHrXeqnha39FVqXb8w== +"@vitest/pretty-format@3.2.4", "@vitest/pretty-format@^3.2.4": + version "3.2.4" + resolved "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz#3c102f79e82b204a26c7a5921bf47d534919d3b4" + integrity sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA== dependencies: - "@typescript-eslint/types" "4.28.4" - "@typescript-eslint/visitor-keys" "4.28.4" + tinyrainbow "^2.0.0" -"@typescript-eslint/scope-manager@4.28.5": - version "4.28.5" - resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.28.5.tgz#3a1b70c50c1535ac33322786ea99ebe403d3b923" - integrity sha512-PHLq6n9nTMrLYcVcIZ7v0VY1X7dK309NM8ya9oL/yG8syFINIMHxyr2GzGoBYUdv3NUfCOqtuqps0ZmcgnZTfQ== +"@vitest/runner@3.2.4": + version "3.2.4" + resolved "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz#5ce0274f24a971f6500f6fc166d53d8382430766" + integrity sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ== dependencies: - "@typescript-eslint/types" "4.28.5" - "@typescript-eslint/visitor-keys" "4.28.5" - -"@typescript-eslint/types@4.28.4": - version "4.28.4" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.28.4.tgz#41acbd79b5816b7c0dd7530a43d97d020d3aeb42" - integrity sha512-3eap4QWxGqkYuEmVebUGULMskR6Cuoc/Wii0oSOddleP4EGx1tjLnZQ0ZP33YRoMDCs5O3j56RBV4g14T4jvww== + "@vitest/utils" "3.2.4" + pathe "^2.0.3" + strip-literal "^3.0.0" -"@typescript-eslint/types@4.28.5": - version "4.28.5" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.28.5.tgz#d33edf8e429f0c0930a7c3d44e9b010354c422e9" - integrity sha512-MruOu4ZaDOLOhw4f/6iudyks/obuvvZUAHBDSW80Trnc5+ovmViLT2ZMDXhUV66ozcl6z0LJfKs1Usldgi/WCA== - -"@typescript-eslint/typescript-estree@4.28.4": - version "4.28.4" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.28.4.tgz#252e6863278dc0727244be9e371eb35241c46d00" - integrity sha512-z7d8HK8XvCRyN2SNp+OXC2iZaF+O2BTquGhEYLKLx5k6p0r05ureUtgEfo5f6anLkhCxdHtCf6rPM1p4efHYDQ== +"@vitest/snapshot@3.2.4": + version "3.2.4" + resolved "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz#40a8bc0346ac0aee923c0eefc2dc005d90bc987c" + integrity sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ== dependencies: - "@typescript-eslint/types" "4.28.4" - "@typescript-eslint/visitor-keys" "4.28.4" - debug "^4.3.1" - globby "^11.0.3" - is-glob "^4.0.1" - semver "^7.3.5" - tsutils "^3.21.0" + "@vitest/pretty-format" "3.2.4" + magic-string "^0.30.17" + pathe "^2.0.3" -"@typescript-eslint/typescript-estree@4.28.5": - version "4.28.5" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.28.5.tgz#4906d343de693cf3d8dcc301383ed638e0441cd1" - integrity sha512-FzJUKsBX8poCCdve7iV7ShirP8V+ys2t1fvamVeD1rWpiAnIm550a+BX/fmTHrjEpQJ7ZAn+Z7ZZwJjytk9rZw== +"@vitest/spy@3.2.4": + version "3.2.4" + resolved "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.4.tgz#cc18f26f40f3f028da6620046881f4e4518c2599" + integrity sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw== dependencies: - "@typescript-eslint/types" "4.28.5" - "@typescript-eslint/visitor-keys" "4.28.5" - debug "^4.3.1" - globby "^11.0.3" - is-glob "^4.0.1" - semver "^7.3.5" - tsutils "^3.21.0" + tinyspy "^4.0.3" + +"@vitest/utils@3.2.4": + version "3.2.4" + resolved "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz#c0813bc42d99527fb8c5b138c7a88516bca46fea" + integrity sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA== + dependencies: + "@vitest/pretty-format" "3.2.4" + loupe "^3.1.4" + tinyrainbow "^2.0.0" + +"@vue/compiler-core@3.5.18": + version "3.5.18" + resolved "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.18.tgz#521a138cdd970d9bfd27e42168d12f77a04b2074" + integrity sha512-3slwjQrrV1TO8MoXgy3aynDQ7lslj5UqDxuHnrzHtpON5CBinhWjJETciPngpin/T3OuW3tXUf86tEurusnztw== + dependencies: + "@babel/parser" "^7.28.0" + "@vue/shared" "3.5.18" + entities "^4.5.0" + estree-walker "^2.0.2" + source-map-js "^1.2.1" + +"@vue/compiler-dom@3.5.18": + version "3.5.18" + resolved "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.18.tgz#e13504492c3061ec5bbe6a2e789f15261d4f03a7" + integrity sha512-RMbU6NTU70++B1JyVJbNbeFkK+A+Q7y9XKE2EM4NLGm2WFR8x9MbAtWxPPLdm0wUkuZv9trpwfSlL6tjdIa1+A== + dependencies: + "@vue/compiler-core" "3.5.18" + "@vue/shared" "3.5.18" + +"@vue/compiler-sfc@3.5.18": + version "3.5.18" + resolved "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.18.tgz#ba1e849561337d809937994cdaf900539542eeca" + integrity sha512-5aBjvGqsWs+MoxswZPoTB9nSDb3dhd1x30xrrltKujlCxo48j8HGDNj3QPhF4VIS0VQDUrA1xUfp2hEa+FNyXA== + dependencies: + "@babel/parser" "^7.28.0" + "@vue/compiler-core" "3.5.18" + "@vue/compiler-dom" "3.5.18" + "@vue/compiler-ssr" "3.5.18" + "@vue/shared" "3.5.18" + estree-walker "^2.0.2" + magic-string "^0.30.17" + postcss "^8.5.6" + source-map-js "^1.2.1" + +"@vue/compiler-ssr@3.5.18": + version "3.5.18" + resolved "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.18.tgz#aecde0b0bff268a9c9014ba66799307c4a784328" + integrity sha512-xM16Ak7rSWHkM3m22NlmcdIM+K4BMyFARAfV9hYFl+SFuRzrZ3uGMNW05kA5pmeMa0X9X963Kgou7ufdbpOP9g== + dependencies: + "@vue/compiler-dom" "3.5.18" + "@vue/shared" "3.5.18" + +"@vue/devtools-api@^7.7.0": + version "7.7.2" + resolved "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-7.7.2.tgz#49837eae6f61fc43a09f5d6c2d3210f9f73a0d09" + integrity sha512-1syn558KhyN+chO5SjlZIwJ8bV/bQ1nOVTG66t2RbG66ZGekyiYNmRO7X9BJCXQqPsFHlnksqvPhce2qpzxFnA== + dependencies: + "@vue/devtools-kit" "^7.7.2" + +"@vue/devtools-kit@^7.7.2": + version "7.7.2" + resolved "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.7.2.tgz#3315bd5b144f98c7b84c2f44270b445644ec8f10" + integrity sha512-CY0I1JH3Z8PECbn6k3TqM1Bk9ASWxeMtTCvZr7vb+CHi+X/QwQm5F1/fPagraamKMAHVfuuCbdcnNg1A4CYVWQ== + dependencies: + "@vue/devtools-shared" "^7.7.2" + birpc "^0.2.19" + hookable "^5.5.3" + mitt "^3.0.1" + perfect-debounce "^1.0.0" + speakingurl "^14.0.1" + superjson "^2.2.1" + +"@vue/devtools-shared@^7.7.2": + version "7.7.2" + resolved "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.7.2.tgz#b11b143820130a32d8ce5737e264d06ab6d62f40" + integrity sha512-uBFxnp8gwW2vD6FrJB8JZLUzVb6PNRG0B0jBnHsOH8uKyva2qINY8PTF5Te4QlTbMDqU5K6qtJDr6cNsKWhbOA== + dependencies: + rfdc "^1.4.1" + +"@vue/reactivity@3.5.18": + version "3.5.18" + resolved "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.18.tgz#fe32166e3938832c54b4134e60e9b58ca7d9bdb4" + integrity sha512-x0vPO5Imw+3sChLM5Y+B6G1zPjwdOri9e8V21NnTnlEvkxatHEH5B5KEAJcjuzQ7BsjGrKtfzuQ5eQwXh8HXBg== + dependencies: + "@vue/shared" "3.5.18" + +"@vue/runtime-core@3.5.18": + version "3.5.18" + resolved "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.18.tgz#9e9ae8b9491548b53d0cea2bf25746d27c52e191" + integrity sha512-DUpHa1HpeOQEt6+3nheUfqVXRog2kivkXHUhoqJiKR33SO4x+a5uNOMkV487WPerQkL0vUuRvq/7JhRgLW3S+w== + dependencies: + "@vue/reactivity" "3.5.18" + "@vue/shared" "3.5.18" + +"@vue/runtime-dom@3.5.18": + version "3.5.18" + resolved "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.18.tgz#1150952d1048b5822e4f1dd8aed24665cbb22107" + integrity sha512-YwDj71iV05j4RnzZnZtGaXwPoUWeRsqinblgVJwR8XTXYZ9D5PbahHQgsbmzUvCWNF6x7siQ89HgnX5eWkr3mw== + dependencies: + "@vue/reactivity" "3.5.18" + "@vue/runtime-core" "3.5.18" + "@vue/shared" "3.5.18" + csstype "^3.1.3" + +"@vue/server-renderer@3.5.18": + version "3.5.18" + resolved "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.18.tgz#e9fa267b95b3a1d8cddca762377e5de2ae9122bd" + integrity sha512-PvIHLUoWgSbDG7zLHqSqaCoZvHi6NNmfVFOqO+OnwvqMz/tqQr3FuGWS8ufluNddk7ZLBJYMrjcw1c6XzR12mA== + dependencies: + "@vue/compiler-ssr" "3.5.18" + "@vue/shared" "3.5.18" + +"@vue/shared@3.5.18": + version "3.5.18" + resolved "https://registry.npmjs.org/@vue/shared/-/shared-3.5.18.tgz#529f24a88d3ed678d50fd5c07455841fbe8ac95e" + integrity sha512-cZy8Dq+uuIXbxCZpuLd2GJdeSO/lIzIspC2WtkqIpje5QyFbvLaI5wZtdUjLHjGZrlVX6GilejatWwVYYRc8tA== + +"@vue/shared@^3.5.13": + version "3.5.17" + resolved "https://registry.npmjs.org/@vue/shared/-/shared-3.5.17.tgz#e8b3a41f0be76499882a89e8ed40d86a70fa4b70" + integrity sha512-CabR+UN630VnsJO/jHWYBC1YVXyMq94KKp6iF5MQgZJs5I8cmjw6oVMO1oDbtBkENSHSSn/UadWlW/OAgdmKrg== + +"@vueuse/core@12.7.0", "@vueuse/core@^12.4.0": + version "12.7.0" + resolved "https://registry.npmjs.org/@vueuse/core/-/core-12.7.0.tgz#b9c3880e9c01d9db86029c6a58412f1b1922497e" + integrity sha512-jtK5B7YjZXmkGNHjviyGO4s3ZtEhbzSgrbX+s5o+Lr8i2nYqNyHuPVOeTdM1/hZ5Tkxg/KktAuAVDDiHMraMVA== + dependencies: + "@types/web-bluetooth" "^0.0.20" + "@vueuse/metadata" "12.7.0" + "@vueuse/shared" "12.7.0" + vue "^3.5.13" + +"@vueuse/integrations@^12.4.0": + version "12.7.0" + resolved "https://registry.npmjs.org/@vueuse/integrations/-/integrations-12.7.0.tgz#d9ba676a6643def3f8dcc99580162fbaf33de05e" + integrity sha512-IEq7K4bCl7mn3uKJaWtNXnd1CAPaHLUMuyj5K1/k/pVcItt0VONZW8xiGxdIovJcQjkzOHjImhX5t6gija+0/g== + dependencies: + "@vueuse/core" "12.7.0" + "@vueuse/shared" "12.7.0" + vue "^3.5.13" + +"@vueuse/metadata@12.7.0": + version "12.7.0" + resolved "https://registry.npmjs.org/@vueuse/metadata/-/metadata-12.7.0.tgz#17a263927204962ec045095c83f62c81db085a46" + integrity sha512-4VvTH9mrjXqFN5LYa5YfqHVRI6j7R00Vy4995Rw7PQxyCL3z0Lli86iN4UemWqixxEvYfRjG+hF9wL8oLOn+3g== + +"@vueuse/shared@12.7.0": + version "12.7.0" + resolved "https://registry.npmjs.org/@vueuse/shared/-/shared-12.7.0.tgz#0c573789069818a2e25ddae3ab64b536c614537b" + integrity sha512-coLlUw2HHKsm7rPN6WqHJQr18WymN4wkA/3ThFaJ4v4gWGWAQQGK+MJxLuJTBs4mojQiazlVWAKNJNpUWGRkNw== + dependencies: + vue "^3.5.13" + +"@yarnpkg/lockfile@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" + integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== -"@typescript-eslint/visitor-keys@4.28.4": - version "4.28.4" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.28.4.tgz#92dacfefccd6751cbb0a964f06683bfd72d0c4d3" - integrity sha512-NIAXAdbz1XdOuzqkJHjNKXKj8QQ4cv5cxR/g0uQhCYf/6//XrmfpaYsM7PnBcNbfvTDLUkqQ5TPNm1sozDdTWg== +"@yarnpkg/parsers@3.0.2": + version "3.0.2" + resolved "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.2.tgz#48a1517a0f49124827f4c37c284a689c607b2f32" + integrity sha512-/HcYgtUSiJiot/XWGLOlGxPYUG65+/31V8oqk17vZLW1xlCoR4PampyePljOxY2n8/3jz9+tIFzICsyGujJZoA== dependencies: - "@typescript-eslint/types" "4.28.4" - eslint-visitor-keys "^2.0.0" + js-yaml "^3.10.0" + tslib "^2.4.0" -"@typescript-eslint/visitor-keys@4.28.5": - version "4.28.5" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.28.5.tgz#ffee2c602762ed6893405ee7c1144d9cc0a29675" - integrity sha512-dva/7Rr+EkxNWdJWau26xU/0slnFlkh88v3TsyTgRS/IIYFi5iIfpCFM4ikw0vQTFUR9FYSSyqgK4w64gsgxhg== +"@zkochan/js-yaml@0.0.7": + version "0.0.7" + resolved "https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.7.tgz#4b0cb785220d7c28ce0ec4d0804deb5d821eae89" + integrity sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ== dependencies: - "@typescript-eslint/types" "4.28.5" - eslint-visitor-keys "^2.0.0" + argparse "^2.0.1" -JSONStream@^1.0.4: +JSONStream@^1.3.5: version "1.3.5" resolved "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== @@ -2727,79 +2526,40 @@ JSONStream@^1.0.4: jsonparse "^1.2.0" through ">=2.2.7 <3" -abab@^2.0.3, abab@^2.0.5: - version "2.0.5" - resolved "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" - integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== - -abbrev@1: - version "1.1.1" - resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - -acorn-globals@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" - integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== - dependencies: - acorn "^7.1.1" - acorn-walk "^7.1.1" +abbrev@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz#cf59829b8b4f03f89dda2771cb7f3653828c89bf" + integrity sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ== -acorn-jsx@^5.3.1: +acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn-walk@^7.1.1: - version "7.2.0" - resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" - integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== - -acorn@^7.1.1: - version "7.4.0" - resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.0.tgz#e1ad486e6c54501634c6c397c5c121daa383607c" - integrity sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w== - -acorn@^7.4.0: - version "7.4.1" - resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== - -acorn@^8.2.4: - version "8.2.4" - resolved "https://registry.npmjs.org/acorn/-/acorn-8.2.4.tgz#caba24b08185c3b56e3168e97d15ed17f4d31fd0" - integrity sha512-Ibt84YwBDDA890eDiDCEqcbwvHlBvzzDkU2cGBBDDI1QWT12jTiXIOn2CIw5KK4i6N5Z2HUxwYjzriDyqaqqZg== +acorn@^8.15.0: + version "8.15.0" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz#a360898bc415edaac46c8241f6383975b930b816" + integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== add-stream@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" - integrity sha1-anmQQ3ynNtXhKI25K9MmbV9csqo= - -agent-base@6: - version "6.0.2" - resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== - dependencies: - debug "4" + integrity sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ== -agentkeepalive@^4.1.3: - version "4.1.4" - resolved "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.1.4.tgz#d928028a4862cb11718e55227872e842a44c945b" - integrity sha512-+V/rGa3EuU74H6wR04plBb7Ks10FbtUQgRj/FQOG7uUIEuaINI+AiqJR1k6t3SVNs7o7ZjIdus6706qqzVq8jQ== - dependencies: - debug "^4.1.0" - depd "^1.1.2" - humanize-ms "^1.2.1" +agent-base@^7.1.0, agent-base@^7.1.2: + version "7.1.3" + resolved "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz#29435eb821bc4194633a5b89e5bc4703bafc25a1" + integrity sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw== aggregate-error@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0" - integrity sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA== + version "3.1.0" + resolved "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== dependencies: clean-stack "^2.0.0" indent-string "^4.0.0" -ajv@^6.10.0, ajv@^6.12.4: +ajv@^6.12.4: version "6.12.6" resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -2809,91 +2569,65 @@ ajv@^6.10.0, ajv@^6.12.4: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^6.12.3: - version "6.12.5" - resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.5.tgz#19b0e8bae8f476e5ba666300387775fb1a00a4da" - integrity sha512-lRF8RORchjpKG50/WFf8xmg7sgCLFiYNNnqdKflk63whMQcWR5ngGjiSXkL9bjxy6B2npOK2HSMN49jEBMSkag== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ajv@^6.5.5: - version "6.11.0" - resolved "https://registry.npmjs.org/ajv/-/ajv-6.11.0.tgz#c3607cbc8ae392d8a5a536f25b21f8e5f3f87fe9" - integrity sha512-nCprB/0syFYy9fVYU1ox1l2KN8S9I+tziH8D4zdZuLT3N6RMlGSGt5FSTpAiHB/Whv8Qs1cWHma1aMKZyaHRKA== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ajv@^8.0.1: - version "8.6.2" - resolved "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz#2fb45e0e5fcbc0813326c1c3da535d1881bb0571" - integrity sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w== +ajv@^8.11.0: + version "8.17.1" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6" + integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== dependencies: - fast-deep-equal "^3.1.1" + fast-deep-equal "^3.1.3" + fast-uri "^3.0.1" json-schema-traverse "^1.0.0" require-from-string "^2.0.2" - uri-js "^4.2.2" -ansi-align@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" - integrity sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw== - dependencies: - string-width "^3.0.0" +algoliasearch@^5.14.2: + version "5.20.3" + resolved "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.20.3.tgz#32d79b9ffaf5a085943fab304698f46c5a3faed9" + integrity sha512-iNC6BGvipaalFfDfDnXUje8GUlW5asj0cTMsZJwO/0rhsyLx1L7GZFAY8wW+eQ6AM4Yge2p5GSE5hrBlfSD90Q== + dependencies: + "@algolia/client-abtesting" "5.20.3" + "@algolia/client-analytics" "5.20.3" + "@algolia/client-common" "5.20.3" + "@algolia/client-insights" "5.20.3" + "@algolia/client-personalization" "5.20.3" + "@algolia/client-query-suggestions" "5.20.3" + "@algolia/client-search" "5.20.3" + "@algolia/ingestion" "1.20.3" + "@algolia/monitoring" "1.20.3" + "@algolia/recommend" "5.20.3" + "@algolia/requester-browser-xhr" "5.20.3" + "@algolia/requester-fetch" "5.20.3" + "@algolia/requester-node-http" "5.20.3" ansi-colors@^4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" - integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== - -ansi-escapes@^1.0.0, ansi-escapes@^1.1.0: - version "1.4.0" - resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" - integrity sha1-06ioOzGapneTZisT52HHkRQiMG4= - -ansi-escapes@^3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" - integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== + version "4.1.3" + resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== -ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: - version "4.3.1" - resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" - integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== +ansi-escapes@^4.2.1, ansi-escapes@^4.3.2: + version "4.3.2" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== dependencies: - type-fest "^0.11.0" - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + type-fest "^0.21.3" -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= - -ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" - integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== +ansi-escapes@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz#00fc19f491bbb18e1d481b97868204f92109bfe7" + integrity sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw== + dependencies: + environment "^1.0.0" -ansi-regex@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" - integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= +ansi-regex@^6.0.1: + version "6.1.0" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654" + integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== -ansi-styles@^3.2.0, ansi-styles@^3.2.1: +ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== @@ -2912,32 +2646,16 @@ ansi-styles@^5.0.0: resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== -anymatch@^3.0.3, anymatch@~3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" - integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -aproba@^1.0.3: - version "1.2.0" - resolved "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== +ansi-styles@^6.0.0, ansi-styles@^6.1.0, ansi-styles@^6.2.1: + version "6.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== -aproba@^2.0.0: +aproba@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== -are-we-there-yet@~1.1.2: - version "1.1.5" - resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" - integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - argparse@^1.0.7: version "1.0.10" resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -2945,365 +2663,178 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== array-differ@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg== -array-find-index@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" - integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= - array-ify@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" - integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4= - -array-includes@^3.1.3: - version "3.1.3" - resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz#c7f619b382ad2afaf5326cddfdc0afc61af7690a" - integrity sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" - get-intrinsic "^1.1.1" - is-string "^1.0.5" - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + integrity sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng== -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= - -array.prototype.flat@^1.2.4: - version "1.2.4" - resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz#6ef638b43312bd401b4c6199fdec7e2dc9e9a123" - integrity sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== arrify@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= + integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== arrify@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== -asap@^2.0.0: - version "2.0.6" - resolved "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" - integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= - -asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== - dependencies: - safer-buffer "~2.1.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= +assertion-error@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz#f641a196b335690b1070bf00b6e7593fec190bf7" + integrity sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA== -astral-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" - integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== +async@^3.2.3: + version "3.2.6" + resolved "https://registry.npmjs.org/async/-/async-3.2.6.tgz#1b0728e14929d51b85b449b7f06e27c1145e38ce" + integrity sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA== asynckit@^0.4.0: version "0.4.0" resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== at-least-node@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= - -aws4@^1.8.0: - version "1.9.0" - resolved "https://registry.npmjs.org/aws4/-/aws4-1.9.0.tgz#24390e6ad61386b0a747265754d2a17219de862c" - integrity sha512-Uvq6hVe90D0B2WEnUqtdgY1bATGz3mw33nH9Y+dmA+w5DHvUmBgkr5rM/KCHpCsiFNRUfokW/szpPPgMK2hm4A== - -babel-jest@^27.0.6: - version "27.0.6" - resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-27.0.6.tgz#e99c6e0577da2655118e3608b68761a5a69bd0d8" - integrity sha512-iTJyYLNc4wRofASmofpOc5NK9QunwMk+TLFgGXsTFS8uEqmd8wdI7sga0FPe2oVH3b5Agt/EAK1QjPEuKL8VfA== - dependencies: - "@jest/transform" "^27.0.6" - "@jest/types" "^27.0.6" - "@types/babel__core" "^7.1.14" - babel-plugin-istanbul "^6.0.0" - babel-preset-jest "^27.0.6" - chalk "^4.0.0" - graceful-fs "^4.2.4" - slash "^3.0.0" - -babel-plugin-dynamic-import-node@^2.3.3: - version "2.3.3" - resolved "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" - integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== +axios@^1.8.3: + version "1.11.0" + resolved "https://registry.npmjs.org/axios/-/axios-1.11.0.tgz#c2ec219e35e414c025b2095e8b8280278478fdb6" + integrity sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA== dependencies: - object.assign "^4.1.0" + follow-redirects "^1.15.6" + form-data "^4.0.4" + proxy-from-env "^1.1.0" -babel-plugin-istanbul@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" - integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^4.0.0" - test-exclude "^6.0.0" +b4a@^1.6.4: + version "1.6.7" + resolved "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz#a99587d4ebbfbd5a6e3b21bdb5d5fa385767abe4" + integrity sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg== -babel-plugin-jest-hoist@^27.0.6: - version "27.0.6" - resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.0.6.tgz#f7c6b3d764af21cb4a2a1ab6870117dbde15b456" - integrity sha512-CewFeM9Vv2gM7Yr9n5eyyLVPRSiBnk6lKZRjgwYnGKSl9M14TMn2vkN02wTF04OGuSDLEzlWiMzvjXuW9mB6Gw== - dependencies: - "@babel/template" "^7.3.3" - "@babel/types" "^7.3.3" - "@types/babel__core" "^7.0.0" - "@types/babel__traverse" "^7.0.6" +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -babel-plugin-polyfill-corejs2@^0.2.2: - version "0.2.2" - resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz#e9124785e6fd94f94b618a7954e5693053bf5327" - integrity sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ== - dependencies: - "@babel/compat-data" "^7.13.11" - "@babel/helper-define-polyfill-provider" "^0.2.2" - semver "^6.1.1" +bare-events@^2.0.0, bare-events@^2.2.0: + version "2.5.4" + resolved "https://registry.npmjs.org/bare-events/-/bare-events-2.5.4.tgz#16143d435e1ed9eafd1ab85f12b89b3357a41745" + integrity sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA== -babel-plugin-polyfill-corejs3@^0.2.2: - version "0.2.3" - resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.3.tgz#72add68cf08a8bf139ba6e6dfc0b1d504098e57b" - integrity sha512-rCOFzEIJpJEAU14XCcV/erIf/wZQMmMT5l5vXOpL5uoznyOGfDIjPj6FVytMvtzaKSTSVKouOCTPJ5OMUZH30g== +bare-fs@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/bare-fs/-/bare-fs-4.0.1.tgz#85844f34da819c76754d545323a8b23ed3617c76" + integrity sha512-ilQs4fm/l9eMfWY2dY0WCIUplSUp7U0CT1vrqMg1MUdeZl4fypu5UP0XcDBK5WBQPJAKP1b7XEodISmekH/CEg== dependencies: - "@babel/helper-define-polyfill-provider" "^0.2.2" - core-js-compat "^3.14.0" + bare-events "^2.0.0" + bare-path "^3.0.0" + bare-stream "^2.0.0" -babel-plugin-polyfill-regenerator@^0.2.2: - version "0.2.2" - resolved "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz#b310c8d642acada348c1fa3b3e6ce0e851bee077" - integrity sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.2.2" +bare-os@^3.0.1: + version "3.5.1" + resolved "https://registry.npmjs.org/bare-os/-/bare-os-3.5.1.tgz#8e59ad8db6d0eab35cfe499208db643fd5f4c594" + integrity sha512-LvfVNDcWLw2AnIw5f2mWUgumW3I3N/WYGiWeimhQC1Ybt71n2FjlS9GJKeCnFeg1MKZHxzIFmpFnBXDI+sBeFg== -babel-polyfill@^6.3.14: - version "6.26.0" - resolved "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153" - integrity sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM= +bare-path@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz#b59d18130ba52a6af9276db3e96a2e3d3ea52178" + integrity sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw== dependencies: - babel-runtime "^6.26.0" - core-js "^2.5.0" - regenerator-runtime "^0.10.5" + bare-os "^3.0.1" -babel-preset-current-node-syntax@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" - integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== - dependencies: - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-bigint" "^7.8.3" - "@babel/plugin-syntax-class-properties" "^7.8.3" - "@babel/plugin-syntax-import-meta" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-top-level-await" "^7.8.3" - -babel-preset-jest@^27.0.6: - version "27.0.6" - resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.0.6.tgz#909ef08e9f24a4679768be2f60a3df0856843f9d" - integrity sha512-WObA0/Biw2LrVVwZkF/2GqbOdzhKD6Fkdwhoy9ASIrOWr/zodcSpQh72JOkEn6NWyjmnPDjNSqaGN4KnpKzhXw== - dependencies: - babel-plugin-jest-hoist "^27.0.6" - babel-preset-current-node-syntax "^1.0.0" - -babel-runtime@^6.26.0: - version "6.26.0" - resolved "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== +bare-stream@^2.0.0: + version "2.6.5" + resolved "https://registry.npmjs.org/bare-stream/-/bare-stream-2.6.5.tgz#bba8e879674c4c27f7e27805df005c15d7a2ca07" + integrity sha512-jSmxKJNJmHySi6hC42zlZnq00rga4jjxcgNZjY9N5WlOe/iOoGRtdwGsHzQv2RlH2KOYMwGUXhf2zXd32BA9RA== + dependencies: + streamx "^2.21.0" base64-js@^1.3.1: - version "1.3.1" - resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" - integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== - -base@^0.11.1: - version "0.11.2" - resolved "https://registry.npmjs.org/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" + version "1.5.1" + resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= - dependencies: - tweetnacl "^0.14.3" +before-after-hook@^2.2.0: + version "2.2.3" + resolved "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz#c51e809c81a4e354084422b9b26bad88249c517c" + integrity sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ== -before-after-hook@^2.1.0: - version "2.1.1" - resolved "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.1.1.tgz#99ae36992b5cfab4a83f6bee74ab27835f28f405" - integrity sha512-5ekuQOvO04MDj7kYZJaMab2S8SPjGJbotVNyv7QYFCOAwrGZs/YnoDNlh1U+m5hl7H2D/+n0taaAV/tfyd3KMA== +bin-links@^4.0.4: + version "4.0.4" + resolved "https://registry.npmjs.org/bin-links/-/bin-links-4.0.4.tgz#c3565832b8e287c85f109a02a17027d152a58a63" + integrity sha512-cMtq4W5ZsEwcutJrVId+a/tjt8GSbS+h0oNkdl6+6rBuEv8Ot33Bevj5KPm40t309zuhVic8NjpuL42QCiJWWA== + dependencies: + cmd-shim "^6.0.0" + npm-normalize-package-bin "^3.0.0" + read-cmd-shim "^4.0.0" + write-file-atomic "^5.0.0" -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== +birpc@^0.2.19: + version "0.2.19" + resolved "https://registry.npmjs.org/birpc/-/birpc-0.2.19.tgz#cdd183a4a70ba103127d49765b4a71349da5a0ca" + integrity sha512-5WeXXAvTmitV1RqJFppT5QtUiz2p1mRSYU000Jkft5ZUCLJIk4uQriYNO50HknxKwM6jd8utNc66K1qGIwwWBQ== -bl@^4.0.3: - version "4.0.3" - resolved "https://registry.npmjs.org/bl/-/bl-4.0.3.tgz#12d6287adc29080e22a705e5764b2a9522cdc489" - integrity sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg== +bl@^4.0.3, bl@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== dependencies: buffer "^5.5.0" inherits "^2.0.4" readable-stream "^3.4.0" -boxen@^4.2.0: - version "4.2.0" - resolved "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz#e411b62357d6d6d36587c8ac3d5d974daa070e64" - integrity sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ== - dependencies: - ansi-align "^3.0.0" - camelcase "^5.3.1" - chalk "^3.0.0" - cli-boxes "^2.2.0" - string-width "^4.1.0" - term-size "^2.1.0" - type-fest "^0.8.1" - widest-line "^3.1.0" - brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + version "1.1.12" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz#ab9b454466e5a8cc3a187beaad580412a9c5b843" + integrity sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg== dependencies: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^2.3.1: - version "2.3.2" - resolved "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - -braces@^3.0.1, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -browser-process-hrtime@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" - integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== - -browserslist@^4.16.6: - version "4.16.6" - resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz#d7901277a5a88e554ed305b183ec9b0c08f66fa2" - integrity sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ== +brace-expansion@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz#54fc53237a613d854c7bd37463aad17df87214e7" + integrity sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ== dependencies: - caniuse-lite "^1.0.30001219" - colorette "^1.2.2" - electron-to-chromium "^1.3.723" - escalade "^3.1.1" - node-releases "^1.1.71" + balanced-match "^1.0.0" -bs-logger@0.x: - version "0.2.6" - resolved "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" - integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== +braces@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== dependencies: - fast-json-stable-stringify "2.x" + fill-range "^7.1.1" -bser@2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" - integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== +browserslist@^4.24.0: + version "4.25.0" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.25.0.tgz#986aa9c6d87916885da2b50d8eb577ac8d133b2c" + integrity sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA== dependencies: - node-int64 "^0.4.0" + caniuse-lite "^1.0.30001718" + electron-to-chromium "^1.5.160" + node-releases "^2.0.19" + update-browserslist-db "^1.1.3" -buffer-from@1.x, buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== buffer@^5.5.0: version "5.7.1" @@ -3313,107 +2844,52 @@ buffer@^5.5.0: base64-js "^1.3.1" ieee754 "^1.1.13" -builtins@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" - integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og= - -byline@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz#741c5216468eadc457b03410118ad77de8c1ddb1" - integrity sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE= - -byte-size@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/byte-size/-/byte-size-7.0.0.tgz#36528cd1ca87d39bd9abd51f5715dc93b6ceb032" - integrity sha512-NNiBxKgxybMBtWdmvx7ZITJi4ZG+CYUgwOSZTfqB1qogkRHrhbQE/R2r5Fh94X+InN5MCYz6SvB/ejHMj/HbsQ== - -cacache@^15.0.5: - version "15.0.5" - resolved "https://registry.npmjs.org/cacache/-/cacache-15.0.5.tgz#69162833da29170d6732334643c60e005f5f17d0" - integrity sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A== - dependencies: - "@npmcli/move-file" "^1.0.1" - chownr "^2.0.0" - fs-minipass "^2.0.0" - glob "^7.1.4" - infer-owner "^1.0.4" - lru-cache "^6.0.0" - minipass "^3.1.1" - minipass-collect "^1.0.2" +byte-size@8.1.1: + version "8.1.1" + resolved "https://registry.npmjs.org/byte-size/-/byte-size-8.1.1.tgz#3424608c62d59de5bfda05d31e0313c6174842ae" + integrity sha512-tUkzZWK0M/qdoLEqikxBWe4kumyuwjl3HO6zHTr4yEI23EojPtLYXdG1+AQY7MN0cGyNDvEaJ8wiYQm6P2bPxg== + +cac@^6.7.14: + version "6.7.14" + resolved "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz#804e1e6f506ee363cb0e3ccbb09cad5dd9870959" + integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ== + +cacache@^18.0.0, cacache@^18.0.3: + version "18.0.4" + resolved "https://registry.npmjs.org/cacache/-/cacache-18.0.4.tgz#4601d7578dadb59c66044e157d02a3314682d6a5" + integrity sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ== + dependencies: + "@npmcli/fs" "^3.1.0" + fs-minipass "^3.0.0" + glob "^10.2.2" + lru-cache "^10.0.1" + minipass "^7.0.3" + minipass-collect "^2.0.1" minipass-flush "^1.0.5" - minipass-pipeline "^1.2.2" - mkdirp "^1.0.3" + minipass-pipeline "^1.2.4" p-map "^4.0.0" - promise-inflight "^1.0.1" - rimraf "^3.0.2" - ssri "^8.0.0" - tar "^6.0.2" - unique-filename "^1.1.1" - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" + ssri "^10.0.0" + tar "^6.1.11" + unique-filename "^3.0.0" -cacheable-request@^6.0.0: - version "6.1.0" - resolved "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" - integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== - dependencies: - clone-response "^1.0.2" - get-stream "^5.1.0" - http-cache-semantics "^4.0.0" - keyv "^3.0.0" - lowercase-keys "^2.0.0" - normalize-url "^4.1.0" - responselike "^1.0.2" - -cachedir@2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/cachedir/-/cachedir-2.2.0.tgz#19afa4305e05d79e417566882e0c8f960f62ff0e" - integrity sha512-VvxA0xhNqIIfg0V9AmJkDg91DaJwryutH5rVEZAhcNi4iJFj9f+QxmAjgK1LT9I8OgToX27fypX6/MeCXVbBjQ== +cachedir@2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz#0c75892a052198f0b21c7c1804d8331edfcae0e8" + integrity sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw== -call-bind@^1.0.0, call-bind@^1.0.2: +call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + resolved "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" + integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" + es-errors "^1.3.0" + function-bind "^1.1.2" callsites@^3.0.0: version "3.1.0" resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camelcase-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" - integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc= - dependencies: - camelcase "^2.0.0" - map-obj "^1.0.0" - -camelcase-keys@^4.0.0: - version "4.2.0" - resolved "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz#a2aa5fb1af688758259c32c141426d78923b9b77" - integrity sha1-oqpfsa9oh1glnDLBQUJteJI7m3c= - dependencies: - camelcase "^4.1.0" - map-obj "^2.0.0" - quick-lru "^1.0.0" - camelcase-keys@^6.2.2: version "6.2.2" resolved "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" @@ -3423,48 +2899,41 @@ camelcase-keys@^6.2.2: map-obj "^4.0.0" quick-lru "^4.0.1" -camelcase@^2.0.0: - version "2.1.1" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= - -camelcase@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" - integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= - -camelcase@^5.0.0, camelcase@^5.3.1: +camelcase@^5.3.1: version "5.3.1" resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -camelcase@^6.2.0: - version "6.2.0" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" - integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== +caniuse-lite@^1.0.30001718: + version "1.0.30001723" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001723.tgz#c4f3174f02089720736e1887eab345e09bb10944" + integrity sha512-1R/elMjtehrFejxwmexeXAtae5UO9iSyFn6G/I806CYC/BLyyBk1EPhrKBkWhy6wM6Xnm47dSJQec+tLJ39WHw== -caniuse-lite@^1.0.30001219: - version "1.0.30001245" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001245.tgz#45b941bbd833cb0fa53861ff2bae746b3c6ca5d4" - integrity sha512-768fM9j1PKXpOCKws6eTo3RHmvTUsG9UrpT4WoREFeZgJBTi4/X9g565azS/rVUGtqb8nt7FjLeF5u4kukERnA== +ccount@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz#17a3bf82302e0870d6da43a01311a8bc02a3ecf5" + integrity sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg== -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= +chai@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz#1358ee106763624114addf84ab02697e411c9c05" + integrity sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw== + dependencies: + assertion-error "^2.0.1" + check-error "^2.1.1" + deep-eql "^5.0.1" + loupe "^3.1.0" + pathval "^2.0.0" -chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1: - version "1.1.3" - resolved "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= +chalk@4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" + ansi-styles "^4.1.0" + supports-color "^7.1.0" -chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.4.1: version "2.4.2" resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -3473,152 +2942,100 @@ chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== +chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1: + version "4.1.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== dependencies: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^4.0.0, chalk@^4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz#c80b3fab28bf6371e6863325eee67e618b77e6ad" - integrity sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" +chalk@^5.3.0, chalk@^5.4.1: + version "5.4.1" + resolved "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz#1b48bf0963ec158dce2aacf69c093ae2dd2092d8" + integrity sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w== -chalk@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" - integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" +character-entities-html4@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz#1f1adb940c971a4b22ba39ddca6b618dc6e56b2b" + integrity sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA== -char-regex@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" - integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== +character-entities-legacy@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz#76bc83a90738901d7bc223a9e93759fdd560125b" + integrity sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ== chardet@^0.7.0: version "0.7.0" resolved "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -chokidar@^3.5.0: - version "3.5.1" - resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" - integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== - dependencies: - anymatch "~3.1.1" - braces "~3.0.2" - glob-parent "~5.1.0" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.5.0" - optionalDependencies: - fsevents "~2.3.1" - -chownr@^1.1.1: - version "1.1.3" - resolved "https://registry.npmjs.org/chownr/-/chownr-1.1.3.tgz#42d837d5239688d55f303003a508230fa6727142" - integrity sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw== +check-error@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz#87eb876ae71ee388fa0471fe423f494be1d96ccc" + integrity sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw== chownr@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== - -ci-info@^3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.1.1.tgz#9a32fcefdf7bcdb6f0a7e1c0f8098ec57897b80a" - integrity sha512-kdRWLBIJwdsYJWYJFtAFFYxybguqeF91qpZaggjG5Nf8QKdizFG2hjqvaTXbxFIcYbSaD74KpAXv6BSm17DHEQ== - -cjs-module-lexer@^1.0.0: - version "1.2.1" - resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.1.tgz#2fd46d9906a126965aa541345c499aaa18e8cd73" - integrity sha512-jVamGdJPDeuQilKhvVn1h3knuMOZzr8QDnpk+M9aMlCaMkTDd6fBWPhiDqFvFZ07pL0liqabAiuy8SY4jGHeaw== +ci-info@^3.2.0: + version "3.9.0" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" + integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" +ci-info@^4.0.0: + version "4.2.0" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-4.2.0.tgz#cbd21386152ebfe1d56f280a3b5feccbd96764c7" + integrity sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg== clean-stack@^2.0.0: version "2.2.0" resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== -cli-boxes@^2.2.0: - version "2.2.1" - resolved "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" - integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== - -cli-cursor@^1.0.1, cli-cursor@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" - integrity sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc= - dependencies: - restore-cursor "^1.0.1" - -cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= - dependencies: - restore-cursor "^2.0.0" - -cli-cursor@^3.1.0: +cli-cursor@3.1.0, cli-cursor@^3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== dependencies: restore-cursor "^3.1.0" -cli-truncate@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" - integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== +cli-cursor@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz#24a4831ecf5a6b01ddeb32fb71a4b2088b0dce38" + integrity sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw== dependencies: - slice-ansi "^3.0.0" - string-width "^4.2.0" + restore-cursor "^5.0.0" -cli-width@^1.0.1: - version "1.1.1" - resolved "https://registry.npmjs.org/cli-width/-/cli-width-1.1.1.tgz#a4d293ef67ebb7b88d4a4d42c0ccf00c4d1e366d" - integrity sha1-pNKT72frt7iNSk1CwMzwDE0eNm0= +cli-spinners@2.6.1: + version "2.6.1" + resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" + integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== -cli-width@^2.0.0: - version "2.2.1" - resolved "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" - integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== +cli-spinners@^2.5.0: + version "2.9.2" + resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz#1773a8f4b9c4d6ac31563df53b3fc1d79462fe41" + integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== + +cli-truncate@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz#6cc28a2924fee9e25ce91e973db56c7066e6172a" + integrity sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA== + dependencies: + slice-ansi "^5.0.0" + string-width "^7.0.0" cli-width@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== - dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" +cli-width@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz#42daac41d3c254ef38ad8ac037672130173691c5" + integrity sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ== cliui@^7.0.2: version "7.0.4" @@ -3629,7 +3046,16 @@ cliui@^7.0.2: strip-ansi "^6.0.0" wrap-ansi "^7.0.0" -clone-deep@^4.0.1: +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +clone-deep@4.0.1: version "4.0.1" resolved "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== @@ -3638,47 +3064,15 @@ clone-deep@^4.0.1: kind-of "^6.0.2" shallow-clone "^3.0.0" -clone-response@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" - integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= - dependencies: - mimic-response "^1.0.0" - clone@^1.0.2: version "1.0.4" resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= - -cmd-shim@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/cmd-shim/-/cmd-shim-4.1.0.tgz#b3a904a6743e9fede4148c6f3800bf2a08135bdd" - integrity sha512-lb9L7EM4I/ZRVuljLPEtUJOP+xiQVknZ4ZMpMgEp4JzNldPb27HU03hi6K1/6CoIuit/Zm/LQXySErFeXxDprw== - dependencies: - mkdirp-infer-owner "^2.0.0" - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= - -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= - -collect-v8-coverage@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.0.tgz#150ee634ac3650b71d9c985eb7f608942334feb1" - integrity sha512-VKIhJgvk8E1W28m5avZ2Gv2Ruv5YiF56ug2oclvaG9md69BuZImMG2sk9g7QNKLUbtYAKQjXjYxbYZVUlMMKmQ== + integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" +cmd-shim@6.0.3, cmd-shim@^6.0.0: + version "6.0.3" + resolved "https://registry.npmjs.org/cmd-shim/-/cmd-shim-6.0.3.tgz#c491e9656594ba17ac83c4bd931590a9d6e26033" + integrity sha512-FMabTRlc5t5zjdenF6mS0MBeFZm0XqHqeOkcskKFb/LYCcRQ5fVgLOHVc4Lq9CqABd9zhjwPjMBCJvMCziSVtA== color-convert@^1.9.0: version "1.9.3" @@ -3697,82 +3091,77 @@ color-convert@^2.0.1: color-name@1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== color-name@~1.1.4: version "1.1.4" resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -colorette@^1.2.2: - version "1.2.2" - resolved "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" - integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== +color-support@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== -columnify@^1.5.4: - version "1.5.4" - resolved "https://registry.npmjs.org/columnify/-/columnify-1.5.4.tgz#4737ddf1c7b69a8a7c340570782e947eec8e78bb" - integrity sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs= +colorette@^2.0.20: + version "2.0.20" + resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" + integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== + +columnify@1.6.0: + version "1.6.0" + resolved "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz#6989531713c9008bb29735e61e37acf5bd553cf3" + integrity sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q== dependencies: - strip-ansi "^3.0.0" + strip-ansi "^6.0.1" wcwidth "^1.0.0" -combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: +combined-stream@^1.0.8: version "1.0.8" resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: delayed-stream "~1.0.0" -commander@^7.2.0: - version "7.2.0" - resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" - integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== +comma-separated-tokens@^2.0.0: + version "2.0.3" + resolved "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz#4e89c9458acb61bc8fef19f4529973b2392839ee" + integrity sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg== -commander@~2.20.3: - version "2.20.3" - resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== +commander@^14.0.0: + version "14.0.0" + resolved "https://registry.npmjs.org/commander/-/commander-14.0.0.tgz#f244fc74a92343514e56229f16ef5c5e22ced5e9" + integrity sha512-2uM9rYjPvyq39NwLRqaiLtWHyDC1FvryJDa2ATTVims5YAS4PupsEQsDvP14FqhFr0P49CYDugi59xaxJlTXRA== -commitizen@4.2.4: - version "4.2.4" - resolved "https://registry.npmjs.org/commitizen/-/commitizen-4.2.4.tgz#a3e5b36bd7575f6bf6e7aa19dbbf06b0d8f37165" - integrity sha512-LlZChbDzg3Ir3O2S7jSo/cgWp5/QwylQVr59K4xayVq8S4/RdKzSyJkghAiZZHfhh5t4pxunUoyeg0ml1q/7aw== +comment-parser@^1.4.1: + version "1.4.1" + resolved "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz#bdafead37961ac079be11eb7ec65c4d021eaf9cc" + integrity sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg== + +commitizen@^4.0.3, commitizen@^4.2.4: + version "4.3.1" + resolved "https://registry.npmjs.org/commitizen/-/commitizen-4.3.1.tgz#f0e0e4b7ae3fafc92e444bbb78f2ded5a1d4311a" + integrity sha512-gwAPAVTy/j5YcOOebcCRIijn+mSjWJC+IYKivTu6aG8Ei/scoXgfsMRnuAk6b0GRste2J4NGxVdMN3ZpfNaVaw== dependencies: - cachedir "2.2.0" - cz-conventional-changelog "3.2.0" + cachedir "2.3.0" + cz-conventional-changelog "3.3.0" dedent "0.7.0" - detect-indent "6.0.0" + detect-indent "6.1.0" find-node-modules "^2.1.2" find-root "1.1.0" - fs-extra "8.1.0" - glob "7.1.4" - inquirer "6.5.2" + fs-extra "9.1.0" + glob "7.2.3" + inquirer "8.2.5" is-utf8 "^0.2.1" - lodash "^4.17.20" - minimist "1.2.5" + lodash "4.17.21" + minimist "1.2.7" strip-bom "4.0.0" - strip-json-comments "3.0.1" + strip-json-comments "3.1.1" -commitizen@^4.0.3: - version "4.1.2" - resolved "https://registry.npmjs.org/commitizen/-/commitizen-4.1.2.tgz#6095eb825fd3f0d3611df88e6803c69b23307e9a" - integrity sha512-LBxTQKHbVgroMz9ohpm86N+GfJobonGyvDc3zBGdZazbwCLz2tqLa48Rf2TnAdKx7/06W1i1R3SXUt5QW97qVQ== - dependencies: - cachedir "2.2.0" - cz-conventional-changelog "3.2.0" - dedent "0.7.0" - detect-indent "6.0.0" - find-node-modules "2.0.0" - find-root "1.1.0" - fs-extra "8.1.0" - glob "7.1.4" - inquirer "6.5.0" - is-utf8 "^0.2.1" - lodash "4.17.15" - minimist "1.2.5" - strip-bom "4.0.0" - strip-json-comments "3.0.1" +common-ancestor-path@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz#4f7d2d1394d91b7abdf51871c62f71eadb0182a7" + integrity sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w== compare-func@^2.0.0: version "2.0.0" @@ -3782,15 +3171,10 @@ compare-func@^2.0.0: array-ify "^1.0.0" dot-prop "^5.1.0" -component-emitter@^1.2.1: - version "1.3.0" - resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - concat-map@0.0.1: version "0.0.1" resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== concat-stream@^2.0.0: version "2.0.0" @@ -3802,265 +3186,175 @@ concat-stream@^2.0.0: readable-stream "^3.0.2" typedarray "^0.0.6" -config-chain@^1.1.12: - version "1.1.12" - resolved "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" - integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA== - dependencies: - ini "^1.3.4" - proto-list "~1.2.1" - -configstore@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" - integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA== - dependencies: - dot-prop "^5.2.0" - graceful-fs "^4.1.2" - make-dir "^3.0.0" - unique-string "^2.0.0" - write-file-atomic "^3.0.0" - xdg-basedir "^4.0.0" - -connect-livereload@^0.6.0: - version "0.6.1" - resolved "https://registry.npmjs.org/connect-livereload/-/connect-livereload-0.6.1.tgz#1ac0c8bb9d9cfd5b28b629987a56a9239db9baaa" - integrity sha512-3R0kMOdL7CjJpU66fzAkCe6HNtd3AavCS4m+uW4KtJjrdGPT0SQEZieAYd+cm+lJoBznNQ4lqipYWkhBMgk00g== - -connect@^3.6.0: - version "3.7.0" - resolved "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8" - integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== - dependencies: - debug "2.6.9" - finalhandler "1.1.2" - parseurl "~1.3.3" - utils-merge "1.0.1" - -console-control-strings@^1.0.0, console-control-strings@~1.1.0: +console-control-strings@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= + integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== -conventional-changelog-angular@5.0.12, conventional-changelog-angular@^5.0.11, conventional-changelog-angular@^5.0.12: - version "5.0.12" - resolved "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.12.tgz#c979b8b921cbfe26402eb3da5bbfda02d865a2b9" - integrity sha512-5GLsbnkR/7A89RyHLvvoExbiGbd9xKdKqDTrArnPbOqBqG/2wIosu0fHwpeIRI8Tl94MhVNBXcLJZl92ZQ5USw== +conventional-changelog-angular@7.0.0, conventional-changelog-angular@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz#5eec8edbff15aa9b1680a8dcfbd53e2d7eb2ba7a" + integrity sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ== dependencies: compare-func "^2.0.0" - q "^1.5.1" -conventional-changelog-atom@^2.0.8: - version "2.0.8" - resolved "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-2.0.8.tgz#a759ec61c22d1c1196925fca88fe3ae89fd7d8de" - integrity sha512-xo6v46icsFTK3bb7dY/8m2qvc8sZemRgdqLb/bjpBsH2UyOS8rKNTgcb5025Hri6IpANPApbXMg15QLb1LJpBw== - dependencies: - q "^1.5.1" +conventional-changelog-atom@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-4.0.0.tgz#291fd1583517d4e7131dba779ad9fa238359daa1" + integrity sha512-q2YtiN7rnT1TGwPTwjjBSIPIzDJCRE+XAUahWxnh+buKK99Kks4WLMHoexw38GXx9OUxAsrp44f9qXe5VEMYhw== -conventional-changelog-conventionalcommits@^4.3.1: - version "4.3.1" - resolved "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.3.1.tgz#69972639e526e39a24946cb033260648dfecdda0" - integrity sha512-EQa7TJzF7H4EMkfjjJV7d+gragejDqa8NirZnCfRpruCMZqRbAJ8DqmYbkHrYtBYicXqgfM0zkk6HlvLPcyOdQ== +conventional-changelog-conventionalcommits@^7.0.2: + version "7.0.2" + resolved "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-7.0.2.tgz#aa5da0f1b2543094889e8cf7616ebe1a8f5c70d5" + integrity sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w== dependencies: compare-func "^2.0.0" - lodash "^4.17.15" - q "^1.5.1" -conventional-changelog-core@^4.2.2: - version "4.2.2" - resolved "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.2.tgz#f0897df6d53b5d63dec36b9442bd45354f8b3ce5" - integrity sha512-7pDpRUiobQDNkwHyJG7k9f6maPo9tfPzkSWbRq97GGiZqisElhnvUZSvyQH20ogfOjntB5aadvv6NNcKL1sReg== +conventional-changelog-core@5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-5.0.1.tgz#3c331b155d5b9850f47b4760aeddfc983a92ad49" + integrity sha512-Rvi5pH+LvgsqGwZPZ3Cq/tz4ty7mjijhr3qR4m9IBXNbxGGYgTVVO+duXzz9aArmHxFtwZ+LRkrNIMDQzgoY4A== dependencies: add-stream "^1.0.0" - conventional-changelog-writer "^4.0.18" - conventional-commits-parser "^3.2.0" - dateformat "^3.0.0" - get-pkg-repo "^1.0.0" - git-raw-commits "^2.0.8" + conventional-changelog-writer "^6.0.0" + conventional-commits-parser "^4.0.0" + dateformat "^3.0.3" + get-pkg-repo "^4.2.1" + git-raw-commits "^3.0.0" git-remote-origin-url "^2.0.0" - git-semver-tags "^4.1.1" - lodash "^4.17.15" - normalize-package-data "^3.0.0" - q "^1.5.1" + git-semver-tags "^5.0.0" + normalize-package-data "^3.0.3" read-pkg "^3.0.0" read-pkg-up "^3.0.0" - shelljs "^0.8.3" - through2 "^4.0.0" -conventional-changelog-preset-loader@^2.3.4: - version "2.3.4" - resolved "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz#14a855abbffd59027fd602581f1f34d9862ea44c" - integrity sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g== +conventional-changelog-preset-loader@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-3.0.0.tgz#14975ef759d22515d6eabae6396c2ae721d4c105" + integrity sha512-qy9XbdSLmVnwnvzEisjxdDiLA4OmV3o8db+Zdg4WiFw14fP3B6XNz98X0swPPpkTd/pc1K7+adKgEDM1JCUMiA== -conventional-changelog-writer@^4.0.18: - version "4.1.0" - resolved "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-4.1.0.tgz#1ca7880b75aa28695ad33312a1f2366f4b12659f" - integrity sha512-WwKcUp7WyXYGQmkLsX4QmU42AZ1lqlvRW9mqoyiQzdD+rJWbTepdWoKJuwXTS+yq79XKnQNa93/roViPQrAQgw== +conventional-changelog-writer@^6.0.0: + version "6.0.1" + resolved "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-6.0.1.tgz#d8d3bb5e1f6230caed969dcc762b1c368a8f7b01" + integrity sha512-359t9aHorPw+U+nHzUXHS5ZnPBOizRxfQsWT5ZDHBfvfxQOAik+yfuhKXG66CN5LEWPpMNnIMHUTCKeYNprvHQ== dependencies: - compare-func "^2.0.0" - conventional-commits-filter "^2.0.7" - dateformat "^3.0.0" - handlebars "^4.7.6" + conventional-commits-filter "^3.0.0" + dateformat "^3.0.3" + handlebars "^4.7.7" json-stringify-safe "^5.0.1" - lodash "^4.17.15" - meow "^8.0.0" - semver "^6.0.0" - split "^1.0.0" - through2 "^4.0.0" + meow "^8.1.2" + semver "^7.0.0" + split "^1.0.1" conventional-commit-types@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/conventional-commit-types/-/conventional-commit-types-3.0.0.tgz#7c9214e58eae93e85dd66dbfbafe7e4fffa2365b" integrity sha512-SmmCYnOniSsAa9GqWOeLqc179lfr5TRu5b4QFDkbsrJ5TZjPJx85wtOr3zn+1dbeNiXDKGPbZ72IKbPhLXh/Lg== -conventional-commits-filter@^2.0.7: - version "2.0.7" - resolved "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz#f8d9b4f182fce00c9af7139da49365b136c8a0b3" - integrity sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA== +conventional-commits-filter@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-3.0.0.tgz#bf1113266151dd64c49cd269e3eb7d71d7015ee2" + integrity sha512-1ymej8b5LouPx9Ox0Dw/qAO2dVdfpRFq28e5Y0jJEU8ZrLdy0vOSkkIInwmxErFGhg6SALro60ZrwYFVTUDo4Q== dependencies: lodash.ismatch "^4.4.0" - modify-values "^1.0.0" + modify-values "^1.0.1" -conventional-commits-parser@^3.0.0: - version "3.0.8" - resolved "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.0.8.tgz#23310a9bda6c93c874224375e72b09fb275fe710" - integrity sha512-YcBSGkZbYp7d+Cr3NWUeXbPDFUN6g3SaSIzOybi8bjHL5IJ5225OSCxJJ4LgziyEJ7AaJtE9L2/EU6H7Nt/DDQ== +conventional-commits-parser@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-4.0.0.tgz#02ae1178a381304839bce7cea9da5f1b549ae505" + integrity sha512-WRv5j1FsVM5FISJkoYMR6tPk07fkKT0UodruX4je86V4owk451yjXAKzKAPOs9l7y59E2viHUS9eQ+dfUA9NSg== dependencies: - JSONStream "^1.0.4" + JSONStream "^1.3.5" is-text-path "^1.0.1" - lodash "^4.17.15" - meow "^5.0.0" - split2 "^2.0.0" - through2 "^3.0.0" - trim-off-newlines "^1.0.0" + meow "^8.1.2" + split2 "^3.2.2" -conventional-commits-parser@^3.2.0: - version "3.2.1" - resolved "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.1.tgz#ba44f0b3b6588da2ee9fd8da508ebff50d116ce2" - integrity sha512-OG9kQtmMZBJD/32NEw5IhN5+HnBqVjy03eC+I71I0oQRFA5rOgA4OtPOYG7mz1GkCfCNxn3gKIX8EiHJYuf1cA== +conventional-commits-parser@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz#57f3594b81ad54d40c1b4280f04554df28627d9a" + integrity sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA== dependencies: - JSONStream "^1.0.4" - is-text-path "^1.0.1" - lodash "^4.17.15" - meow "^8.0.0" - split2 "^3.0.0" - through2 "^4.0.0" - trim-off-newlines "^1.0.0" + JSONStream "^1.3.5" + is-text-path "^2.0.0" + meow "^12.0.1" + split2 "^4.0.0" -conventional-recommended-bump@^6.1.0: - version "6.1.0" - resolved "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz#cfa623285d1de554012f2ffde70d9c8a22231f55" - integrity sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw== +conventional-recommended-bump@7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-7.0.1.tgz#ec01f6c7f5d0e2491c2d89488b0d757393392424" + integrity sha512-Ft79FF4SlOFvX4PkwFDRnaNiIVX7YbmqGU0RwccUaiGvgp3S0a8ipR2/Qxk31vclDNM+GSdJOVs2KrsUCjblVA== dependencies: concat-stream "^2.0.0" - conventional-changelog-preset-loader "^2.3.4" - conventional-commits-filter "^2.0.7" - conventional-commits-parser "^3.2.0" - git-raw-commits "^2.0.8" - git-semver-tags "^4.1.1" - meow "^8.0.0" - q "^1.5.1" - -convert-source-map@^1.4.0, convert-source-map@^1.6.0: - version "1.7.0" - resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" - integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== - dependencies: - safe-buffer "~5.1.1" - -convert-source-map@^1.7.0: - version "1.8.0" - resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" - integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== - dependencies: - safe-buffer "~5.1.1" - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + conventional-changelog-preset-loader "^3.0.0" + conventional-commits-filter "^3.0.0" + conventional-commits-parser "^4.0.0" + git-raw-commits "^3.0.0" + git-semver-tags "^5.0.0" + meow "^8.1.2" + +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== -core-js-compat@^3.14.0, core-js-compat@^3.15.0: - version "3.15.2" - resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.15.2.tgz#47272fbb479880de14b4e6081f71f3492f5bd3cb" - integrity sha512-Wp+BJVvwopjI+A1EFqm2dwUmWYXrvucmtIB2LgXn/Rb+gWPKYxtmb4GKHGKG/KGF1eK9jfjzT38DITbTOCX/SQ== +copy-anything@^3.0.2: + version "3.0.5" + resolved "https://registry.npmjs.org/copy-anything/-/copy-anything-3.0.5.tgz#2d92dce8c498f790fa7ad16b01a1ae5a45b020a0" + integrity sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w== dependencies: - browserslist "^4.16.6" - semver "7.0.0" - -core-js@^2.4.0, core-js@^2.5.0: - version "2.6.12" - resolved "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" - integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== + is-what "^4.1.8" -core-util-is@1.0.2, core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== -cosmiconfig@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3" - integrity sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA== +cosmiconfig-typescript-loader@^6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-6.1.0.tgz#7f644503e1c2bff90aed2d29a637008f279646bb" + integrity sha512-tJ1w35ZRUiM5FeTzT7DtYWAFFv37ZLqSRkGi2oeCK1gPhvaWjkAtfXvLmvE1pRfxxp9aQo6ba/Pvg1dKj05D4g== dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.2.1" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.10.0" + jiti "^2.4.1" -cp-file@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/cp-file/-/cp-file-7.0.0.tgz#b9454cfd07fe3b974ab9ea0e5f29655791a9b8cd" - integrity sha512-0Cbj7gyvFVApzpK/uhCtQ/9kE9UnYpxMzaq5nQQC/Dh4iaj5fxp7iEFIullrYwzj8nf0qnsI1Qsx34hAeAebvw== +cosmiconfig@9.0.0, cosmiconfig@^9.0.0: + version "9.0.0" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz#34c3fc58287b915f3ae905ab6dc3de258b55ad9d" + integrity sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg== dependencies: - graceful-fs "^4.1.2" - make-dir "^3.0.0" - nested-error-stacks "^2.0.0" - p-event "^4.1.0" + env-paths "^2.2.1" + import-fresh "^3.3.0" + js-yaml "^4.1.0" + parse-json "^5.2.0" -cross-spawn@^7.0.2, cross-spawn@^7.0.3: +cross-env@^7.0.3: version "7.0.3" - resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + resolved "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf" + integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw== + dependencies: + cross-spawn "^7.0.1" + +cross-spawn@^7.0.1, cross-spawn@^7.0.3, cross-spawn@^7.0.6: + version "7.0.6" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== dependencies: path-key "^3.1.0" shebang-command "^2.0.0" which "^2.0.1" -crypto-random-string@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" - integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== - -cssom@^0.4.4: - version "0.4.4" - resolved "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" - integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== - -cssom@~0.3.6: - version "0.3.8" - resolved "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" - integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== - -cssstyle@^2.3.0: - version "2.3.0" - resolved "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" - integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== - dependencies: - cssom "~0.3.6" +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -currently-unhandled@^0.4.1: - version "0.4.1" - resolved "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" - integrity sha1-mI3zP+qxke95mmE2nddsF635V+o= - dependencies: - array-find-index "^1.0.1" +csstype@^3.1.3: + version "3.1.3" + resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" + integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== -cz-conventional-changelog@3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/cz-conventional-changelog/-/cz-conventional-changelog-3.2.0.tgz#6aef1f892d64113343d7e455529089ac9f20e477" - integrity sha512-yAYxeGpVi27hqIilG1nh4A9Bnx4J3Ov+eXy4koL3drrR+IO9GaWPsKjik20ht608Asqi8TQPf0mczhEeyAtMzg== +cz-conventional-changelog@3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/cz-conventional-changelog/-/cz-conventional-changelog-3.3.0.tgz#9246947c90404149b3fe2cf7ee91acad3b7d22d2" + integrity sha512-U466fIzU5U22eES5lTNiNbZ+d8dfcHcssH4o7QsdWaCcRs/feIPCxKYSWkYBNs5mny7MvEfwpTLWjvbm94hecw== dependencies: chalk "^2.4.1" commitizen "^4.0.3" @@ -4071,658 +3365,479 @@ cz-conventional-changelog@3.2.0: optionalDependencies: "@commitlint/load" ">6.1.1" -dargs@^4.0.1: - version "4.1.0" - resolved "https://registry.npmjs.org/dargs/-/dargs-4.1.0.tgz#03a9dbb4b5c2f139bf14ae53f0b8a2a6a86f4e17" - integrity sha1-A6nbtLXC8Tm/FK5T8LiipqhvThc= - dependencies: - number-is-nan "^1.0.0" - dargs@^7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc" integrity sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg== -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= - dependencies: - assert-plus "^1.0.0" - -data-urls@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" - integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== - dependencies: - abab "^2.0.3" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.0.0" +dargs@^8.0.0: + version "8.1.0" + resolved "https://registry.npmjs.org/dargs/-/dargs-8.1.0.tgz#a34859ea509cbce45485e5aa356fef70bfcc7272" + integrity sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw== -dateformat@^3.0.0: +dateformat@^3.0.3: version "3.0.3" resolved "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== -debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: - version "2.6.9" - resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@4: - version "4.3.1" - resolved "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" - integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== - dependencies: - ms "2.1.2" - -debug@^3.2.7: - version "3.2.7" - resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2: - version "4.3.2" - resolved "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" - integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.4.1: + version "4.4.1" + resolved "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz#e5a8bc6cbc4c6cd3e64308b0693a3d4fa550189b" + integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ== dependencies: - ms "2.1.2" + ms "^2.1.3" -debuglog@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" - integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI= - -decamelize-keys@^1.0.0, decamelize-keys@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" - integrity sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk= +decamelize-keys@^1.1.0: + version "1.1.1" + resolved "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz#04a2d523b2f18d80d0158a43b895d56dff8d19d8" + integrity sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg== dependencies: decamelize "^1.1.0" map-obj "^1.0.0" -decamelize@^1.1.0, decamelize@^1.1.2, decamelize@^1.2.0: +decamelize@^1.1.0: version "1.2.0" resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== -decimal.js@^10.2.1: - version "10.2.1" - resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.1.tgz#238ae7b0f0c793d3e3cea410108b35a2c01426a3" - integrity sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw== - -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= - -decompress-response@^3.3.0: - version "3.3.0" - resolved "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" - integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= - dependencies: - mimic-response "^1.0.0" - -dedent@0.7.0, dedent@^0.7.0: +dedent@0.7.0: version "0.7.0" resolved "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" - integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= + integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== +dedent@1.5.3: + version "1.5.3" + resolved "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz#99aee19eb9bae55a67327717b6e848d0bf777e5a" + integrity sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ== -deep-is@^0.1.3, deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= +deep-eql@^5.0.1: + version "5.0.2" + resolved "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz#4b756d8d770a9257300825d52a2c2cff99c3a341" + integrity sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q== -deepmerge@^4.2.2: - version "4.2.2" - resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" - integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== defaults@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" - integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= + version "1.0.4" + resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" + integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== dependencies: clone "^1.0.2" -defer-to-connect@^1.0.1: - version "1.1.3" - resolved "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" - integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== - -define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== - dependencies: - object-keys "^1.0.12" - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= - -depd@^1.1.2, depd@~1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== -deprecation@^2.0.0, deprecation@^2.3.1: +deprecation@^2.0.0: version "2.3.1" resolved "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= +dequal@^2.0.0: + version "2.0.3" + resolved "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" + integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== detect-file@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" - integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= + integrity sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q== -detect-indent@6.0.0, detect-indent@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/detect-indent/-/detect-indent-6.0.0.tgz#0abd0f549f69fc6659a254fe96786186b6f528fd" - integrity sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA== +detect-indent@6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" + integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== detect-indent@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" - integrity sha1-OHHMCmoALow+Wzz38zYmRnXwa50= - -detect-newline@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" - integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== - -dezalgo@^1.0.0: - version "1.0.3" - resolved "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz#7f742de066fc748bc8db820569dddce49bf0d456" - integrity sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY= - dependencies: - asap "^2.0.0" - wrappy "1" - -diff-sequences@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" - integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== - -diff-sequences@^27.0.6: - version "27.0.6" - resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz#3305cb2e55a033924054695cc66019fd7f8e5723" - integrity sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ== - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -docsify-cli@^4.4.3: - version "4.4.3" - resolved "https://registry.npmjs.org/docsify-cli/-/docsify-cli-4.4.3.tgz#5f75d9478d7da27ac1c129d446bf0d4fe70c93d9" - integrity sha512-oI/cD04b+hklNd9yKiN9p9EqGx9UKL6p4D0J3fS9L5fpwOti1F8p2rshGJTyArxUlw6EeEBtaJd4rzPzBkK+Lw== - dependencies: - chalk "^2.4.2" - connect "^3.6.0" - connect-livereload "^0.6.0" - cp-file "^7.0.0" - docsify "^4.12.1" - docsify-server-renderer ">=4.10.0" - enquirer "^2.3.6" - fs-extra "^8.1.0" - get-port "^5.0.0" - livereload "^0.9.1" - lru-cache "^5.1.1" - open "^6.4.0" - serve-static "^1.12.1" - update-notifier "^4.1.0" - yargonaut "^1.1.2" - yargs "^14.2.0" - -docsify-server-renderer@>=4.10.0: - version "4.12.1" - resolved "https://registry.npmjs.org/docsify-server-renderer/-/docsify-server-renderer-4.12.1.tgz#f1d5ca156d4352ae78e64cf2243e98da3c249485" - integrity sha512-IYakkc+UxPS89N/Mq8MF4SKTQ1gtxN5nDEFAnJPf5TvQO+1fuxszHgv/hMprG5z/ms7PJb1w4nMykUfRW36+/A== - dependencies: - debug "^4.3.2" - docsify "^4.12.0" - dompurify "^2.2.6" - node-fetch "^2.6.0" - resolve-pathname "^3.0.0" - -docsify@^4.12.0, docsify@^4.12.1: - version "4.12.1" - resolved "https://registry.npmjs.org/docsify/-/docsify-4.12.1.tgz#46c15a4c101397185835f7e6bdad7bd6cd02896b" - integrity sha512-7v4UlCYLTmb83leJLIlheQlQ8kDTbTxcpMttRg0Uf92Nl//m0AcKFHoLLo5HHS4UhnO0KhDV8SKCdTR279zI9A== - dependencies: - dompurify "^2.2.6" - marked "^1.2.9" - medium-zoom "^1.0.6" - opencollective-postinstall "^2.0.2" - prismjs "^1.23.0" - strip-indent "^3.0.0" - tinydate "^1.3.0" - tweezer.js "^1.4.0" - -doctrine@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" - integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== - dependencies: - esutils "^2.0.2" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" + integrity sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g== -domexception@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" - integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== +devlop@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz#4db7c2ca4dc6e0e834c30be70c94bbc976dc7018" + integrity sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA== dependencies: - webidl-conversions "^5.0.0" + dequal "^2.0.0" -dompurify@^2.2.6: - version "2.2.6" - resolved "https://registry.npmjs.org/dompurify/-/dompurify-2.2.6.tgz#54945dc5c0b45ce5ae228705777e8e59d7b2edc4" - integrity sha512-7b7ZArhhH0SP6W2R9cqK6RjaU82FZ2UPM7RO8qN1b1wyvC/NY1FNWcX1Pu00fFOAnzEORtwXe4bPaClg6pUybQ== +diff-sequences@^29.6.3: + version "29.6.3" + resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" + integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== dot-prop@^5.1.0: - version "5.2.0" - resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz#c34ecc29556dc45f1f4c22697b6f4904e0cc4fcb" - integrity sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A== - dependencies: - is-obj "^2.0.0" - -dot-prop@^5.2.0: version "5.3.0" resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== dependencies: is-obj "^2.0.0" -dot-prop@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz#fc26b3cf142b9e59b74dbd39ed66ce620c681083" - integrity sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA== +dotenv-expand@~11.0.6: + version "11.0.7" + resolved "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.7.tgz#af695aea007d6fdc84c86cd8d0ad7beb40a0bd08" + integrity sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA== dependencies: - is-obj "^2.0.0" + dotenv "^16.4.5" -duplexer3@^0.1.4: - version "0.1.4" - resolved "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" - integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= +dotenv@^16.4.5: + version "16.6.1" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz#773f0e69527a8315c7285d5ee73c4459d20a8020" + integrity sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow== -duplexer@^0.1.1: - version "0.1.1" - resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" - integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= +dotenv@~16.4.5: + version "16.4.7" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz#0e20c5b82950140aa99be360a8a5f52335f53c26" + integrity sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ== -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= +dunder-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" + integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" + call-bind-apply-helpers "^1.0.1" + es-errors "^1.3.0" + gopd "^1.2.0" -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== -electron-to-chromium@^1.3.723: - version "1.3.781" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.781.tgz#aeb54595edc0ae56721ff6428ffeb4c885c09e57" - integrity sha512-l2adP72hnTZANALhjUDLm0zt1fY8Cm+kEU0Ikfy3sP/99BNsOGnnPf2nfCO/3fIL4LwmTcbQD+Ap2Deeuwe9yQ== +ejs@^3.1.7: + version "3.1.10" + resolved "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b" + integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA== + dependencies: + jake "^10.8.5" -emittery@^0.8.1: - version "0.8.1" - resolved "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" - integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== +electron-to-chromium@^1.5.160: + version "1.5.169" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.169.tgz#6afdfd8e701b7ab744e2bb0cfdec3cefc1072cbe" + integrity sha512-q7SQx6mkLy0GTJK9K9OiWeaBMV4XQtBSdf6MJUzDB/H/5tFXfIiX38Lci1Kl6SsgiEhz1SQI1ejEOU5asWEhwQ== -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== +emoji-regex-xs@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz#e8af22e5d9dbd7f7f22d280af3d19d2aab5b0724" + integrity sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg== + +emoji-regex@^10.3.0: + version "10.4.0" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz#03553afea80b3975749cfcb36f776ca268e413d4" + integrity sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw== emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== -encoding@^0.1.12: +encoding@^0.1.13: version "0.1.13" resolved "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== dependencies: iconv-lite "^0.6.2" -end-of-stream@^1.1.0, end-of-stream@^1.4.1: +end-of-stream@^1.1.0: version "1.4.4" resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: once "^1.4.0" -enquirer@^2.3.5, enquirer@^2.3.6: +end-of-stream@^1.4.1: + version "1.4.5" + resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz#7344d711dea40e0b74abc2ed49778743ccedb08c" + integrity sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg== + dependencies: + once "^1.4.0" + +enquirer@~2.3.6: version "2.3.6" resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== dependencies: ansi-colors "^4.1.1" -env-paths@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/env-paths/-/env-paths-2.2.0.tgz#cdca557dc009152917d6166e2febe1f039685e43" - integrity sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA== +entities@^4.5.0: + version "4.5.0" + resolved "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== + +env-paths@^2.2.0, env-paths@^2.2.1: + version "2.2.1" + resolved "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== + +envinfo@7.13.0: + version "7.13.0" + resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz#81fbb81e5da35d74e814941aeab7c325a606fb31" + integrity sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q== -envinfo@^7.7.4: - version "7.7.4" - resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.7.4.tgz#c6311cdd38a0e86808c1c9343f667e4267c4a320" - integrity sha512-TQXTYFVVwwluWSFis6K2XKxgrD22jEv0FTuLCQI+OjH7rn93+iY0fSSFM5lrSxFY+H1+B0/cvvlamr3UsBivdQ== +environment@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz#8e86c66b180f363c7ab311787e0259665f45a9f1" + integrity sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q== err-code@^2.0.2: version "2.0.3" resolved "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== -error-ex@^1.2.0, error-ex@^1.3.1: +error-ex@^1.3.1: version "1.3.2" resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== dependencies: is-arrayish "^0.2.1" -es-abstract@^1.17.0-next.1: - version "1.18.0" - resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz#ab80b359eecb7ede4c298000390bc5ac3ec7b5a4" - integrity sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw== - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - get-intrinsic "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.2" - is-callable "^1.2.3" - is-negative-zero "^2.0.1" - is-regex "^1.1.2" - is-string "^1.0.5" - object-inspect "^1.9.0" - object-keys "^1.1.1" - object.assign "^4.1.2" - string.prototype.trimend "^1.0.4" - string.prototype.trimstart "^1.0.4" - unbox-primitive "^1.0.0" - -es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2, es-abstract@^1.18.2: - version "1.18.3" - resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.3.tgz#25c4c3380a27aa203c44b2b685bba94da31b63e0" - integrity sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw== - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - get-intrinsic "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.2" - is-callable "^1.2.3" - is-negative-zero "^2.0.1" - is-regex "^1.1.3" - is-string "^1.0.6" - object-inspect "^1.10.3" - object-keys "^1.1.1" - object.assign "^4.1.2" - string.prototype.trimend "^1.0.4" - string.prototype.trimstart "^1.0.4" - unbox-primitive "^1.0.1" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" +es-define-property@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" + integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== +es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== -escape-goat@^2.0.0: - version "2.1.1" - resolved "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" - integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== +es-module-lexer@^1.7.0: + version "1.7.0" + resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz#9159601561880a85f2734560a9099b2c31e5372a" + integrity sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA== -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= +es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" + integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== + dependencies: + es-errors "^1.3.0" + +es-set-tostringtag@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d" + integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA== + dependencies: + es-errors "^1.3.0" + get-intrinsic "^1.2.6" + has-tostringtag "^1.0.2" + hasown "^2.0.2" + +esbuild@^0.21.3: + version "0.21.5" + resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz#9ca301b120922959b766360d8ac830da0d02997d" + integrity sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw== + optionalDependencies: + "@esbuild/aix-ppc64" "0.21.5" + "@esbuild/android-arm" "0.21.5" + "@esbuild/android-arm64" "0.21.5" + "@esbuild/android-x64" "0.21.5" + "@esbuild/darwin-arm64" "0.21.5" + "@esbuild/darwin-x64" "0.21.5" + "@esbuild/freebsd-arm64" "0.21.5" + "@esbuild/freebsd-x64" "0.21.5" + "@esbuild/linux-arm" "0.21.5" + "@esbuild/linux-arm64" "0.21.5" + "@esbuild/linux-ia32" "0.21.5" + "@esbuild/linux-loong64" "0.21.5" + "@esbuild/linux-mips64el" "0.21.5" + "@esbuild/linux-ppc64" "0.21.5" + "@esbuild/linux-riscv64" "0.21.5" + "@esbuild/linux-s390x" "0.21.5" + "@esbuild/linux-x64" "0.21.5" + "@esbuild/netbsd-x64" "0.21.5" + "@esbuild/openbsd-x64" "0.21.5" + "@esbuild/sunos-x64" "0.21.5" + "@esbuild/win32-arm64" "0.21.5" + "@esbuild/win32-ia32" "0.21.5" + "@esbuild/win32-x64" "0.21.5" + +esbuild@^0.25.0: + version "0.25.9" + resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.25.9.tgz#15ab8e39ae6cdc64c24ff8a2c0aef5b3fd9fa976" + integrity sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g== + optionalDependencies: + "@esbuild/aix-ppc64" "0.25.9" + "@esbuild/android-arm" "0.25.9" + "@esbuild/android-arm64" "0.25.9" + "@esbuild/android-x64" "0.25.9" + "@esbuild/darwin-arm64" "0.25.9" + "@esbuild/darwin-x64" "0.25.9" + "@esbuild/freebsd-arm64" "0.25.9" + "@esbuild/freebsd-x64" "0.25.9" + "@esbuild/linux-arm" "0.25.9" + "@esbuild/linux-arm64" "0.25.9" + "@esbuild/linux-ia32" "0.25.9" + "@esbuild/linux-loong64" "0.25.9" + "@esbuild/linux-mips64el" "0.25.9" + "@esbuild/linux-ppc64" "0.25.9" + "@esbuild/linux-riscv64" "0.25.9" + "@esbuild/linux-s390x" "0.25.9" + "@esbuild/linux-x64" "0.25.9" + "@esbuild/netbsd-arm64" "0.25.9" + "@esbuild/netbsd-x64" "0.25.9" + "@esbuild/openbsd-arm64" "0.25.9" + "@esbuild/openbsd-x64" "0.25.9" + "@esbuild/openharmony-arm64" "0.25.9" + "@esbuild/sunos-x64" "0.25.9" + "@esbuild/win32-arm64" "0.25.9" + "@esbuild/win32-ia32" "0.25.9" + "@esbuild/win32-x64" "0.25.9" + +escalade@^3.1.1, escalade@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: +escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== escape-string-regexp@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -escodegen@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" - integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== - dependencies: - esprima "^4.0.1" - estraverse "^5.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - -eslint-config-prettier@^8.0.0: - version "8.3.0" - resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz#f7471b20b6fe8a9a9254cc684454202886a2dd7a" - integrity sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew== - -eslint-import-resolver-node@^0.3.4: - version "0.3.4" - resolved "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" - integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== - dependencies: - debug "^2.6.9" - resolve "^1.13.1" - -eslint-module-utils@^2.6.1: - version "2.6.1" - resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.1.tgz#b51be1e473dd0de1c5ea638e22429c2490ea8233" - integrity sha512-ZXI9B8cxAJIH4nfkhTwcRTEAnrVfobYqwjWy/QMCZ8rHkZHFjf9yO4BzpiF9kCSfNlMG54eKigISHpX0+AaT4A== - dependencies: - debug "^3.2.7" - pkg-dir "^2.0.0" - -eslint-plugin-import@^2.20.1: - version "2.23.4" - resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.23.4.tgz#8dceb1ed6b73e46e50ec9a5bb2411b645e7d3d97" - integrity sha512-6/wP8zZRsnQFiR3iaPFgh5ImVRM1WN5NUWfTIRqwOdeiGJlBcSk82o1FEVq8yXmy4lkIzTo7YhHCIxlU/2HyEQ== - dependencies: - array-includes "^3.1.3" - array.prototype.flat "^1.2.4" - debug "^2.6.9" - doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.4" - eslint-module-utils "^2.6.1" - find-up "^2.0.0" - has "^1.0.3" - is-core-module "^2.4.0" - minimatch "^3.0.4" - object.values "^1.1.3" - pkg-up "^2.0.0" - read-pkg-up "^3.0.0" - resolve "^1.20.0" - tsconfig-paths "^3.9.0" - -eslint-plugin-jest@^24.0.0: - version "24.4.0" - resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-24.4.0.tgz#fa4b614dbd46a98b652d830377971f097bda9262" - integrity sha512-8qnt/hgtZ94E9dA6viqfViKBfkJwFHXgJmTWlMGDgunw1XJEGqm3eiPjDsTanM3/u/3Az82nyQM9GX7PM/QGmg== - dependencies: - "@typescript-eslint/experimental-utils" "^4.0.1" - -eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== +eslint-config-prettier@^10.0.0: + version "10.1.8" + resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz#15734ce4af8c2778cc32f0b01b37b0b5cd1ecb97" + integrity sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w== + +eslint-import-context@^0.1.8: + version "0.1.8" + resolved "https://registry.npmjs.org/eslint-import-context/-/eslint-import-context-0.1.8.tgz#4098b659f4c1a3b3cc3bc896c3baee7907ca636d" + integrity sha512-bq+F7nyc65sKpZGT09dY0S0QrOnQtuDVIfyTGQ8uuvtMIF7oHp6CEP3mouN0rrnYF3Jqo6Ke0BfU/5wASZue1w== + dependencies: + get-tsconfig "^4.10.1" + stable-hash-x "^0.1.1" + +eslint-import-context@^0.1.9: + version "0.1.9" + resolved "https://registry.npmjs.org/eslint-import-context/-/eslint-import-context-0.1.9.tgz#967b0b2f0a90ef4b689125e088f790f0b7756dbe" + integrity sha512-K9Hb+yRaGAGUbwjhFNHvSmmkZs9+zbuoe3kFQ4V1wYjrepUFYM2dZAfNtjbbj3qsPfUfsA68Bx/ICWQMi+C8Eg== + dependencies: + get-tsconfig "^4.10.1" + stable-hash-x "^0.2.0" + +eslint-import-resolver-typescript@^4.4.3: + version "4.4.4" + resolved "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-4.4.4.tgz#3e83a9c25f4a053fe20e1b07b47e04e8519a8720" + integrity sha512-1iM2zeBvrYmUNTj2vSC/90JTHDth+dfOfiNKkxApWRsTJYNrc8rOdxxIf5vazX+BiAXTeOT0UvWpGI/7qIWQOw== + dependencies: + debug "^4.4.1" + eslint-import-context "^0.1.8" + get-tsconfig "^4.10.1" + is-bun-module "^2.0.0" + stable-hash-x "^0.2.0" + tinyglobby "^0.2.14" + unrs-resolver "^1.7.11" + +eslint-plugin-import-x@^4.15.2: + version "4.16.1" + resolved "https://registry.npmjs.org/eslint-plugin-import-x/-/eslint-plugin-import-x-4.16.1.tgz#a96ee1ad5ba6816f9a5573a9617935011a24c4df" + integrity sha512-vPZZsiOKaBAIATpFE2uMI4w5IRwdv/FpQ+qZZMR4E+PeOcM4OeoEbqxRMnywdxP19TyB/3h6QBB0EWon7letSQ== + dependencies: + "@typescript-eslint/types" "^8.35.0" + comment-parser "^1.4.1" + debug "^4.4.1" + eslint-import-context "^0.1.9" + is-glob "^4.0.3" + minimatch "^9.0.3 || ^10.0.1" + semver "^7.7.2" + stable-hash-x "^0.2.0" + unrs-resolver "^1.9.2" + +eslint-scope@^8.4.0: + version "8.4.0" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz#88e646a207fad61436ffa39eb505147200655c82" + integrity sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg== dependencies: esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" - integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" - integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== - dependencies: - eslint-visitor-keys "^2.0.0" + estraverse "^5.2.0" -eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" - integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== +eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== -eslint-visitor-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" - integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== - -eslint@^7.0.0: - version "7.31.0" - resolved "https://registry.npmjs.org/eslint/-/eslint-7.31.0.tgz#f972b539424bf2604907a970860732c5d99d3aca" - integrity sha512-vafgJpSh2ia8tnTkNUkwxGmnumgckLh5aAbLa1xRmIn9+owi8qBNGKL+B881kNKNTy7FFqTEkpNkUvmw0n6PkA== - dependencies: - "@babel/code-frame" "7.12.11" - "@eslint/eslintrc" "^0.4.3" - "@humanwhocodes/config-array" "^0.5.0" - ajv "^6.10.0" +eslint-visitor-keys@^4.2.1: + version "4.2.1" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz#4cfea60fe7dd0ad8e816e1ed026c1d5251b512c1" + integrity sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ== + +eslint@^9.16.0: + version "9.32.0" + resolved "https://registry.npmjs.org/eslint/-/eslint-9.32.0.tgz#4ea28df4a8dbc454e1251e0f3aed4bcf4ce50a47" + integrity sha512-LSehfdpgMeWcTZkWZVIJl+tkZ2nuSkyyB9C27MZqFWXuph7DvaowgcTvKqxvpLW1JZIk8PN7hFY3Rj9LQ7m7lg== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.12.1" + "@eslint/config-array" "^0.21.0" + "@eslint/config-helpers" "^0.3.0" + "@eslint/core" "^0.15.0" + "@eslint/eslintrc" "^3.3.1" + "@eslint/js" "9.32.0" + "@eslint/plugin-kit" "^0.3.4" + "@humanfs/node" "^0.16.6" + "@humanwhocodes/module-importer" "^1.0.1" + "@humanwhocodes/retry" "^0.4.2" + "@types/estree" "^1.0.6" + "@types/json-schema" "^7.0.15" + ajv "^6.12.4" chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.0.1" - doctrine "^3.0.0" - enquirer "^2.3.5" + cross-spawn "^7.0.6" + debug "^4.3.2" escape-string-regexp "^4.0.0" - eslint-scope "^5.1.1" - eslint-utils "^2.1.0" - eslint-visitor-keys "^2.0.0" - espree "^7.3.1" - esquery "^1.4.0" + eslint-scope "^8.4.0" + eslint-visitor-keys "^4.2.1" + espree "^10.4.0" + esquery "^1.5.0" esutils "^2.0.2" fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.1.2" - globals "^13.6.0" - ignore "^4.0.6" - import-fresh "^3.0.0" + file-entry-cache "^8.0.0" + find-up "^5.0.0" + glob-parent "^6.0.2" + ignore "^5.2.0" imurmurhash "^0.1.4" is-glob "^4.0.0" - js-yaml "^3.13.1" json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" lodash.merge "^4.6.2" - minimatch "^3.0.4" + minimatch "^3.1.2" natural-compare "^1.4.0" - optionator "^0.9.1" - progress "^2.0.0" - regexpp "^3.1.0" - semver "^7.2.1" - strip-ansi "^6.0.0" - strip-json-comments "^3.1.0" - table "^6.0.9" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" + optionator "^0.9.3" -espree@^7.3.0, espree@^7.3.1: - version "7.3.1" - resolved "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" - integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== +espree@^10.0.1, espree@^10.4.0: + version "10.4.0" + resolved "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz#d54f4949d4629005a1fa168d937c3ff1f7e2a837" + integrity sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ== dependencies: - acorn "^7.4.0" - acorn-jsx "^5.3.1" - eslint-visitor-keys "^1.3.0" + acorn "^8.15.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^4.2.1" -esprima@^4.0.0, esprima@^4.0.1: +esprima@^4.0.0: version "4.0.1" resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== +esquery@^1.5.0: + version "1.6.0" + resolved "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" + integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== dependencies: estraverse "^5.1.0" @@ -4733,32 +3848,39 @@ esrecurse@^4.3.0: dependencies: estraverse "^5.2.0" -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - estraverse@^5.1.0, estraverse@^5.2.0: - version "5.2.0" - resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" - integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== + version "5.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +estree-walker@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + +estree-walker@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz#67c3e549ec402a487b4fc193d1953a524752340d" + integrity sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g== + dependencies: + "@types/estree" "^1.0.0" esutils@^2.0.2: version "2.0.3" resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= - eventemitter3@^4.0.4: version "4.0.7" resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== -execa@^5.0.0: +eventemitter3@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" + integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== + +execa@5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz#4029b0007998a841fbd1032e5f4de86a3c1e3376" integrity sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ== @@ -4773,69 +3895,24 @@ execa@^5.0.0: signal-exit "^3.0.3" strip-final-newline "^2.0.0" -exit-hook@^1.0.0: - version "1.1.1" - resolved "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" - integrity sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g= - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - expand-tilde@^2.0.0, expand-tilde@^2.0.2: version "2.0.2" resolved "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" - integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= + integrity sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw== dependencies: homedir-polyfill "^1.0.1" -expect@^27.0.6: - version "27.0.6" - resolved "https://registry.npmjs.org/expect/-/expect-27.0.6.tgz#a4d74fbe27222c718fff68ef49d78e26a8fd4c05" - integrity sha512-psNLt8j2kwg42jGBDSfAlU49CEZxejN1f1PlANWDZqIhBOVU/c2Pm888FcjWJzFewhIsNWfZJeLjUjtKGiPuSw== - dependencies: - "@jest/types" "^27.0.6" - ansi-styles "^5.0.0" - jest-get-type "^27.0.6" - jest-matcher-utils "^27.0.6" - jest-message-util "^27.0.6" - jest-regex-util "^27.0.6" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" +expect-type@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/expect-type/-/expect-type-1.2.1.tgz#af76d8b357cf5fa76c41c09dafb79c549e75f71f" + integrity sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw== -extend@~3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== +exponential-backoff@^3.1.1: + version "3.1.2" + resolved "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.2.tgz#a8f26adb96bf78e8cd8ad1037928d5e5c0679d91" + integrity sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA== -external-editor@^3.0.3: +external-editor@^3.0.3, external-editor@^3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== @@ -4844,177 +3921,117 @@ external-editor@^3.0.3: iconv-lite "^0.4.24" tmp "^0.0.33" -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= - -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= - fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-glob@^3.1.1: - version "3.2.7" - resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" - integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== +fast-fifo@^1.2.0, fast-fifo@^1.3.2: + version "1.3.2" + resolved "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz#286e31de96eb96d38a97899815740ba2a4f3640c" + integrity sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ== + +fast-glob@^3.3.1, fast-glob@^3.3.2, fast-glob@^3.3.3: + version "3.3.3" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" + integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" glob-parent "^5.1.2" merge2 "^1.3.0" - micromatch "^4.0.4" + micromatch "^4.0.8" -fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: +fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: +fast-levenshtein@^2.0.6: version "2.0.6" resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fast-safe-stringify@^2.0.6: + version "2.1.1" + resolved "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" + integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== + +fast-uri@^3.0.1: + version "3.0.6" + resolved "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz#88f130b77cfaea2378d56bf970dea21257a68748" + integrity sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw== fastq@^1.6.0: - version "1.11.1" - resolved "https://registry.npmjs.org/fastq/-/fastq-1.11.1.tgz#5d8175aae17db61947f8b162cfc7f63264d22807" - integrity sha512-HOnr8Mc60eNYl1gzwp6r5RoUyAn5/glBolUzP/Ez6IFVPMPirxn/9phgL6zhOtaTy7ISwPvQ+wT+hfcRZh/bzw== + version "1.19.1" + resolved "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz#d50eaba803c8846a883c16492821ebcd2cda55f5" + integrity sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ== dependencies: reusify "^1.0.4" -fb-watchman@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" - integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== - dependencies: - bser "2.1.1" - -figlet@^1.1.1: - version "1.5.0" - resolved "https://registry.npmjs.org/figlet/-/figlet-1.5.0.tgz#2db4d00a584e5155a96080632db919213c3e003c" - integrity sha512-ZQJM4aifMpz6H19AW1VqvZ7l4pOE9p7i/3LyxgO2kp+PO/VcDYNqIHEMtkccqIhTXMKci4kjueJr/iCQEaT/Ww== - -figures@^1.3.5: - version "1.7.0" - resolved "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" - integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4= - dependencies: - escape-string-regexp "^1.0.5" - object-assign "^4.1.0" +fdir@^6.4.3, fdir@^6.4.4: + version "6.4.6" + resolved "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz#2b268c0232697063111bbf3f64810a2a741ba281" + integrity sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w== -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= - dependencies: - escape-string-regexp "^1.0.5" +fdir@^6.5.0: + version "6.5.0" + resolved "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz#ed2ab967a331ade62f18d077dae192684d50d350" + integrity sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg== -figures@^3.0.0, figures@^3.2.0: +figures@3.2.0, figures@^3.0.0: version "3.2.0" resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== dependencies: escape-string-regexp "^1.0.5" -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== +file-entry-cache@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz#7787bddcf1131bffb92636c69457bbc0edd6d81f" + integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ== dependencies: - flat-cache "^3.0.4" + flat-cache "^4.0.0" -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= +filelist@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" + integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" + minimatch "^5.0.1" -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== dependencies: to-regex-range "^5.0.1" -finalhandler@1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" - integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.3" - statuses "~1.5.0" - unpipe "~1.0.0" - -find-node-modules@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/find-node-modules/-/find-node-modules-2.0.0.tgz#5db1fb9e668a3d451db3d618cd167cdd59e41b69" - integrity sha512-8MWIBRgJi/WpjjfVXumjPKCtmQ10B+fjx6zmSA+770GMJirLhWIzg8l763rhjl9xaeaHbnxPNRQKq2mgMhr+aw== - dependencies: - findup-sync "^3.0.0" - merge "^1.2.1" - find-node-modules@^2.1.2: - version "2.1.2" - resolved "https://registry.npmjs.org/find-node-modules/-/find-node-modules-2.1.2.tgz#57565a3455baf671b835bc6b2134a9b938b9c53c" - integrity sha512-x+3P4mbtRPlSiVE1Qco0Z4YLU8WFiFcuWTf3m75OV9Uzcfs2Bg+O9N+r/K0AnmINBW06KpfqKwYJbFlFq4qNug== + version "2.1.3" + resolved "https://registry.npmjs.org/find-node-modules/-/find-node-modules-2.1.3.tgz#3c976cff2ca29ee94b4f9eafc613987fc4c0ee44" + integrity sha512-UC2I2+nx1ZuOBclWVNdcnbDR5dlrOdVb7xNjmT/lHE+LsgztWks3dG7boJ37yTS/venXw84B/mAW9uHVoC5QRg== dependencies: findup-sync "^4.0.0" - merge "^2.1.0" + merge "^2.1.1" find-root@1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== -find-up@^1.0.0: - version "1.1.2" - resolved "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" - integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= - dependencies: - path-exists "^2.0.0" - pinkie-promise "^2.0.0" +find-up-simple@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.1.tgz#18fb90ad49e45252c4d7fca56baade04fa3fca1e" + integrity sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ== -find-up@^2.0.0, find-up@^2.1.0: +find-up@^2.0.0: version "2.1.0" resolved "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + integrity sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ== dependencies: locate-path "^2.0.0" -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" @@ -5031,15 +4048,14 @@ find-up@^5.0.0: locate-path "^6.0.0" path-exists "^4.0.0" -findup-sync@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" - integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== +find-up@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-7.0.0.tgz#e8dec1455f74f78d888ad65bf7ca13dd2b4e66fb" + integrity sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g== dependencies: - detect-file "^1.0.0" - is-glob "^4.0.0" - micromatch "^3.0.4" - resolve-dir "^1.0.1" + locate-path "^7.2.0" + path-exists "^5.0.0" + unicorn-magic "^0.1.0" findup-sync@^4.0.0: version "4.0.0" @@ -5051,83 +4067,68 @@ findup-sync@^4.0.0: micromatch "^4.0.2" resolve-dir "^1.0.1" -flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== +flat-cache@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz#0ece39fcb14ee012f4b0410bd33dd9c1f011127c" + integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw== dependencies: - flatted "^3.1.0" - rimraf "^3.0.2" + flatted "^3.2.9" + keyv "^4.5.4" -flatted@^3.1.0: - version "3.2.1" - resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.1.tgz#bbef080d95fca6709362c73044a1634f7c6e7d05" - integrity sha512-OMQjaErSFHmHqZe+PSidH5n8j3O0F2DdnVh8JB4j4eUQ2k6KvB0qGfrKIhapvez5JerBbmWkaLYUYWISaESoXg== +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= +flatted@^3.2.9: + version "3.3.3" + resolved "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz#67c8fad95454a7c7abebf74bb78ee74a44023358" + integrity sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg== -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= +focus-trap@^7.6.4: + version "7.6.4" + resolved "https://registry.npmjs.org/focus-trap/-/focus-trap-7.6.4.tgz#455ec5c51fee5ae99604ca15142409ffbbf84db9" + integrity sha512-xx560wGBk7seZ6y933idtjJQc1l+ck+pI3sKvhKozdBV1dRZoKhkW5xoCaFv9tQiX5RH1xfSxjuNu6g+lmN/gw== + dependencies: + tabbable "^6.2.0" -form-data@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" - integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== +follow-redirects@^1.15.6: + version "1.15.9" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1" + integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ== + +foreground-child@^3.1.0: + version "3.3.1" + resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz#32e8e9ed1b68a3497befb9ac2b6adf92a638576f" + integrity sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw== dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" + cross-spawn "^7.0.6" + signal-exit "^4.0.1" -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== +form-data@^4.0.4: + version "4.0.4" + resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz#784cdcce0669a9d68e94d11ac4eea98088edd2c4" + integrity sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow== dependencies: asynckit "^0.4.0" - combined-stream "^1.0.6" + combined-stream "^1.0.8" + es-set-tostringtag "^2.1.0" + hasown "^2.0.2" mime-types "^2.1.12" -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= +front-matter@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/front-matter/-/front-matter-4.0.2.tgz#b14e54dc745cfd7293484f3210d15ea4edd7f4d5" + integrity sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg== dependencies: - map-cache "^0.2.2" - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + js-yaml "^3.13.1" fs-constants@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== -fs-extra@8.1.0, fs-extra@^8.1.0: - version "8.1.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" - integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@^10.0.0: - version "10.0.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz#9ff61b655dde53fb34a82df84bb214ce802e17c1" - integrity sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-extra@^9.1.0: +fs-extra@9.1.0: version "9.1.0" resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== @@ -5137,246 +4138,225 @@ fs-extra@^9.1.0: jsonfile "^6.0.1" universalify "^2.0.0" -fs-minipass@^1.2.5: - version "1.2.7" - resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" - integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== +fs-extra@^11.0.0, fs-extra@^11.2.0: + version "11.3.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz#0daced136bbaf65a555a326719af931adc7a314d" + integrity sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew== dependencies: - minipass "^2.6.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" -fs-minipass@^2.0.0, fs-minipass@^2.1.0: +fs-minipass@^2.0.0: version "2.1.0" resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== dependencies: minipass "^3.0.0" +fs-minipass@^3.0.0: + version "3.0.3" + resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz#79a85981c4dc120065e96f62086bf6f9dc26cc54" + integrity sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw== + dependencies: + minipass "^7.0.3" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -fsevents@^2.3.2, fsevents@~2.3.1: - version "2.3.2" - resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== +fsevents@~2.3.2, fsevents@~2.3.3: + version "2.3.3" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= - -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - -gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: +gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== -get-caller-file@^2.0.1, get-caller-file@^2.0.5: +get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" - integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - -get-own-enumerable-property-symbols@^3.0.0: - version "3.0.2" - resolved "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" - integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== +get-east-asian-width@^1.0.0: + version "1.3.0" + resolved "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz#21b4071ee58ed04ee0db653371b55b4299875389" + integrity sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ== -get-pkg-repo@^1.0.0: - version "1.4.0" - resolved "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz#c73b489c06d80cc5536c2c853f9e05232056972d" - integrity sha1-xztInAbYDMVTbCyFP54FIyBWly0= +get-intrinsic@^1.2.6: + version "1.3.0" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" + integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== + dependencies: + call-bind-apply-helpers "^1.0.2" + es-define-property "^1.0.1" + es-errors "^1.3.0" + es-object-atoms "^1.1.1" + function-bind "^1.1.2" + get-proto "^1.0.1" + gopd "^1.2.0" + has-symbols "^1.1.0" + hasown "^2.0.2" + math-intrinsics "^1.1.0" + +get-pkg-repo@^4.2.1: + version "4.2.1" + resolved "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz#75973e1c8050c73f48190c52047c4cee3acbf385" + integrity sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA== dependencies: - hosted-git-info "^2.1.4" - meow "^3.3.0" - normalize-package-data "^2.3.0" - parse-github-repo-url "^1.3.0" + "@hutson/parse-repository-url" "^3.0.0" + hosted-git-info "^4.0.0" through2 "^2.0.0" + yargs "^16.2.0" -get-port@^5.0.0, get-port@^5.1.1: +get-port@5.1.1: version "5.1.1" resolved "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== -get-stdin@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" - integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= - -get-stream@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - -get-stream@^5.1.0: - version "5.2.0" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== +get-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" + integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== dependencies: - pump "^3.0.0" + dunder-proto "^1.0.1" + es-object-atoms "^1.0.0" -get-stream@^6.0.0: +get-stream@6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz#3e0012cb6827319da2706e601a1583e8629a6718" integrity sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg== -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= +get-tsconfig@^4.10.1: + version "4.10.1" + resolved "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.1.tgz#d34c1c01f47d65a606c37aa7a177bc3e56ab4b2e" + integrity sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ== dependencies: - assert-plus "^1.0.0" + resolve-pkg-maps "^1.0.0" -git-raw-commits@^2.0.0: - version "2.0.3" - resolved "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.3.tgz#f040e67b8445962d4d168903a9e84c4240c17655" - integrity sha512-SoSsFL5lnixVzctGEi2uykjA7B5I0AhO9x6kdzvGRHbxsa6JSEgrgy1esRKsfOKE1cgyOJ/KDR2Trxu157sb8w== +git-raw-commits@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-3.0.0.tgz#5432f053a9744f67e8db03dbc48add81252cfdeb" + integrity sha512-b5OHmZ3vAgGrDn/X0kS+9qCfNKWe4K/jFnhwzVWWg0/k5eLa3060tZShrRg8Dja5kPc+YjS0Gc6y7cRr44Lpjw== dependencies: - dargs "^4.0.1" - lodash.template "^4.0.2" - meow "^5.0.0" - split2 "^2.0.0" - through2 "^3.0.0" + dargs "^7.0.0" + meow "^8.1.2" + split2 "^3.2.2" -git-raw-commits@^2.0.8: - version "2.0.10" - resolved "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.10.tgz#e2255ed9563b1c9c3ea6bd05806410290297bbc1" - integrity sha512-sHhX5lsbG9SOO6yXdlwgEMQ/ljIn7qMpAbJZCGfXX2fq5T8M5SrDnpYk9/4HswTildcIqatsWa91vty6VhWSaQ== +git-raw-commits@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-4.0.0.tgz#b212fd2bff9726d27c1283a1157e829490593285" + integrity sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ== dependencies: - dargs "^7.0.0" - lodash "^4.17.15" - meow "^8.0.0" - split2 "^3.0.0" - through2 "^4.0.0" + dargs "^8.0.0" + meow "^12.0.1" + split2 "^4.0.0" git-remote-origin-url@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz#5282659dae2107145a11126112ad3216ec5fa65f" - integrity sha1-UoJlna4hBxRaERJhEq0yFuxfpl8= + integrity sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw== dependencies: gitconfiglocal "^1.0.0" pify "^2.3.0" -git-semver-tags@^4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz#63191bcd809b0ec3e151ba4751c16c444e5b5780" - integrity sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA== +git-semver-tags@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-5.0.1.tgz#db748aa0e43d313bf38dcd68624d8443234e1c15" + integrity sha512-hIvOeZwRbQ+7YEUmCkHqo8FOLQZCEn18yevLHADlFPZY02KJGsu5FZt9YW/lybfK2uhWFI7Qg/07LekJiTv7iA== dependencies: - meow "^8.0.0" - semver "^6.0.0" + meow "^8.1.2" + semver "^7.0.0" -git-up@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/git-up/-/git-up-4.0.1.tgz#cb2ef086653640e721d2042fe3104857d89007c0" - integrity sha512-LFTZZrBlrCrGCG07/dm1aCjjpL1z9L3+5aEeI9SBhAqSc+kiA9Or1bgZhQFNppJX6h/f5McrvJt1mQXTFm6Qrw== +git-up@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/git-up/-/git-up-7.0.0.tgz#bace30786e36f56ea341b6f69adfd83286337467" + integrity sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ== dependencies: - is-ssh "^1.3.0" - parse-url "^5.0.0" + is-ssh "^1.4.0" + parse-url "^8.1.0" -git-url-parse@^11.4.4: - version "11.4.4" - resolved "https://registry.npmjs.org/git-url-parse/-/git-url-parse-11.4.4.tgz#5d747debc2469c17bc385719f7d0427802d83d77" - integrity sha512-Y4o9o7vQngQDIU9IjyCmRJBin5iYjI5u9ZITnddRZpD7dcCFQj2sL2XuMNbLRE4b4B/4ENPsp2Q8P44fjAZ0Pw== +git-url-parse@14.0.0: + version "14.0.0" + resolved "https://registry.npmjs.org/git-url-parse/-/git-url-parse-14.0.0.tgz#18ce834726d5fbca0c25a4555101aa277017418f" + integrity sha512-NnLweV+2A4nCvn4U/m2AoYu0pPKlsmhK9cknG7IMwsjFY1S2jxM+mAhsDxyxfCIGfGaD+dozsyX4b6vkYc83yQ== dependencies: - git-up "^4.0.0" + git-up "^7.0.0" gitconfiglocal@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz#41d045f3851a5ea88f03f24ca1c6178114464b9b" - integrity sha1-QdBF84UaXqiPA/JMocYXgRRGS5s= + integrity sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ== dependencies: ini "^1.3.2" -glob-parent@^5.1.1, glob-parent@^5.1.2, glob-parent@~5.1.0: +glob-parent@6.0.2, glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob-parent@^5.1.2: version "5.1.2" resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" -glob@7.1.4: - version "7.1.4" - resolved "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" - integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== +glob@7.2.3: + version "7.2.3" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" - minimatch "^3.0.4" + minimatch "^3.1.1" once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.4, glob@^7.1.6: - version "7.1.6" - resolved "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== +glob@^10.2.2, glob@^10.3.10, glob@^10.4.1: + version "10.4.5" + resolved "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" + integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" + foreground-child "^3.1.0" + jackspeak "^3.1.2" + minimatch "^9.0.4" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^1.11.1" -glob@^7.1.3: - version "7.1.7" - resolved "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" - integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== +glob@^9.2.0: + version "9.3.5" + resolved "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz#ca2ed8ca452781a3009685607fdf025a899dfe21" + integrity sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q== dependencies: fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -global-dirs@^0.1.1: - version "0.1.1" - resolved "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" - integrity sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU= - dependencies: - ini "^1.3.4" + minimatch "^8.0.2" + minipass "^4.2.4" + path-scurry "^1.6.1" -global-dirs@^2.0.1: - version "2.1.0" - resolved "https://registry.npmjs.org/global-dirs/-/global-dirs-2.1.0.tgz#e9046a49c806ff04d6c1825e196c8f0091e8df4d" - integrity sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ== +global-directory@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz#4d7ac7cfd2cb73f304c53b8810891748df5e361e" + integrity sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q== dependencies: - ini "1.3.7" + ini "4.1.1" global-modules@^1.0.0: version "1.0.0" @@ -5390,7 +4370,7 @@ global-modules@^1.0.0: global-prefix@^1.0.1: version "1.0.2" resolved "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" - integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= + integrity sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg== dependencies: expand-tilde "^2.0.2" homedir-polyfill "^1.0.1" @@ -5403,193 +4383,105 @@ globals@^11.1.0: resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globals@^13.6.0, globals@^13.9.0: - version "13.10.0" - resolved "https://registry.npmjs.org/globals/-/globals-13.10.0.tgz#60ba56c3ac2ca845cfbf4faeca727ad9dd204676" - integrity sha512-piHC3blgLGFjvOuMmWZX60f+na1lXFDhQXBf1UYp2fXPXqvEUbOhNwi6BsQ0bQishwedgnjkwv1d9zKf+MWw3g== - dependencies: - type-fest "^0.20.2" - -globby@^11.0.0: - version "11.0.0" - resolved "https://registry.npmjs.org/globby/-/globby-11.0.0.tgz#56fd0e9f0d4f8fb0c456f1ab0dee96e1380bc154" - integrity sha512-iuehFnR3xu5wBBtm4xi0dMe92Ob87ufyu/dHwpDYfbcpYpIbrO5OnS8M1vWvrBhSGEJ3/Ecj7gnX76P8YxpPEg== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" - slash "^3.0.0" +globals@^14.0.0: + version "14.0.0" + resolved "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e" + integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== -globby@^11.0.1, globby@^11.0.3: - version "11.0.4" - resolved "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5" - integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" - slash "^3.0.0" +globals@^16.0.0: + version "16.3.0" + resolved "https://registry.npmjs.org/globals/-/globals-16.3.0.tgz#66118e765ddaf9e2d880f7e17658543f93f1f667" + integrity sha512-bqWEnJ1Nt3neqx2q5SFfGS8r/ahumIakg3HcwtNlrVlwXIeNumWn/c7Pn/wKzGhf6SaW6H6uWXLqC30STCMchQ== -globby@^11.0.2: - version "11.0.2" - resolved "https://registry.npmjs.org/globby/-/globby-11.0.2.tgz#1af538b766a3b540ebfb58a32b2e2d5897321d83" - integrity sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" - slash "^3.0.0" +gopd@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" + integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== -got@^9.6.0: - version "9.6.0" - resolved "https://registry.npmjs.org/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" - integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== - dependencies: - "@sindresorhus/is" "^0.14.0" - "@szmarczak/http-timer" "^1.1.2" - cacheable-request "^6.0.0" - decompress-response "^3.3.0" - duplexer3 "^0.1.4" - get-stream "^4.1.0" - lowercase-keys "^1.0.1" - mimic-response "^1.0.1" - p-cancelable "^1.0.0" - to-readable-stream "^1.0.0" - url-parse-lax "^3.0.0" - -graceful-fs@^4.1.11, graceful-fs@^4.2.4: - version "4.2.4" - resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" - integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== - -graceful-fs@^4.1.15, graceful-fs@^4.2.2: - version "4.2.3" - resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" - integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== +graceful-fs@4.2.11, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.6: + version "4.2.11" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.3: - version "4.2.6" - resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" - integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== -handlebars@^4.7.6: - version "4.7.7" - resolved "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" - integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== +handlebars@^4.7.7: + version "4.7.8" + resolved "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz#41c42c18b1be2365439188c77c6afae71c0cd9e9" + integrity sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ== dependencies: minimist "^1.2.5" - neo-async "^2.6.0" + neo-async "^2.6.2" source-map "^0.6.1" wordwrap "^1.0.0" optionalDependencies: uglify-js "^3.1.4" -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= - -har-validator@~5.1.0: - version "5.1.3" - resolved "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" - integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== - dependencies: - ajv "^6.5.5" - har-schema "^2.0.0" - -har-validator@~5.1.3: - version "5.1.5" - resolved "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" - integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== - dependencies: - ajv "^6.12.3" - har-schema "^2.0.0" - hard-rejection@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= - dependencies: - ansi-regex "^2.0.0" - -has-bigints@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" - integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== - has-flag@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== has-flag@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-symbols@^1.0.1, has-symbols@^1.0.2: +has-symbols@^1.0.3, has-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" + integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== + +has-tostringtag@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" - integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== + resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== + dependencies: + has-symbols "^1.0.3" -has-unicode@^2.0.0, has-unicode@^2.0.1: +has-unicode@2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" + integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== -has-yarn@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" - integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== +hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + +hast-util-to-html@^9.0.4: + version "9.0.5" + resolved "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz#ccc673a55bb8e85775b08ac28380f72d47167005" + integrity sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw== + dependencies: + "@types/hast" "^3.0.0" + "@types/unist" "^3.0.0" + ccount "^2.0.0" + comma-separated-tokens "^2.0.0" + hast-util-whitespace "^3.0.0" + html-void-elements "^3.0.0" + mdast-util-to-hast "^13.0.0" + property-information "^7.0.0" + space-separated-tokens "^2.0.0" + stringify-entities "^4.0.0" + zwitch "^2.0.4" + +hast-util-whitespace@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz#7778ed9d3c92dd9e8c5c8f648a49c21fc51cb621" + integrity sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw== dependencies: - function-bind "^1.1.1" + "@types/hast" "^3.0.0" homedir-polyfill@^1.0.1: version "1.0.3" @@ -5598,77 +4490,59 @@ homedir-polyfill@^1.0.1: dependencies: parse-passwd "^1.0.0" +hookable@^5.5.3: + version "5.5.3" + resolved "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz#6cfc358984a1ef991e2518cb9ed4a778bbd3215d" + integrity sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ== + hosted-git-info@^2.1.4: version "2.8.9" resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== -hosted-git-info@^3.0.6: - version "3.0.8" - resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz#6e35d4cc87af2c5f816e4cb9ce350ba87a3f370d" - integrity sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw== - dependencies: - lru-cache "^6.0.0" - -hosted-git-info@^4.0.1: - version "4.0.2" - resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz#5e425507eede4fea846b7262f0838456c4209961" - integrity sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg== +hosted-git-info@^4.0.0, hosted-git-info@^4.0.1: + version "4.1.0" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" + integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== dependencies: lru-cache "^6.0.0" -html-encoding-sniffer@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" - integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== +hosted-git-info@^7.0.0, hosted-git-info@^7.0.2: + version "7.0.2" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz#9b751acac097757667f30114607ef7b661ff4f17" + integrity sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w== dependencies: - whatwg-encoding "^1.0.5" + lru-cache "^10.0.1" html-escaper@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.0.tgz#71e87f931de3fe09e56661ab9a29aadec707b491" - integrity sha512-a4u9BeERWGu/S8JiWEAQcdrg9v4QArtP9keViQjGMdff20fBdd8waotXaNmODqBe6uZ3Nafi7K/ho4gCQHV3Ig== - -http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" - integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== + version "2.0.2" + resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== -http-errors@~1.7.2: - version "1.7.3" - resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" - integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== - dependencies: - depd "~1.1.2" - inherits "2.0.4" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" +html-void-elements@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz#fc9dbd84af9e747249034d4d62602def6517f1d7" + integrity sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg== -http-proxy-agent@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" - integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== - dependencies: - "@tootallnate/once" "1" - agent-base "6" - debug "4" +http-cache-semantics@^4.1.1: + version "4.2.0" + resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz#205f4db64f8562b76a4ff9235aa5279839a09dd5" + integrity sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ== -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= +http-proxy-agent@^7.0.0: + version "7.0.2" + resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e" + integrity sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig== dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" + agent-base "^7.1.0" + debug "^4.3.4" -https-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" - integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== +https-proxy-agent@^7.0.1: + version "7.0.6" + resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz#da8dfeac7da130b05c2ba4b59c9b6cd66611a6b9" + integrity sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw== dependencies: - agent-base "6" + agent-base "^7.1.2" debug "4" human-signals@^2.1.0: @@ -5676,19 +4550,12 @@ human-signals@^2.1.0: resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -humanize-ms@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" - integrity sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0= - dependencies: - ms "^2.0.0" - -husky@^7.0.0: - version "7.0.1" - resolved "https://registry.npmjs.org/husky/-/husky-7.0.1.tgz#579f4180b5da4520263e8713cc832942b48e1f1c" - integrity sha512-gceRaITVZ+cJH9sNHqx5tFwbzlLCVxtVZcusME8JYQ8Edy5mpGDOqD8QBCdMhpyo9a+JXddnujQ4rpY2Ff9SJA== +husky@^9.1.5: + version "9.1.7" + resolved "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz#d46a38035d101b46a70456a850ff4201344c0b2d" + integrity sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA== -iconv-lite@0.4.24, iconv-lite@^0.4.24: +iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -5696,9 +4563,9 @@ iconv-lite@0.4.24, iconv-lite@^0.4.24: safer-buffer ">= 2.1.2 < 3" iconv-lite@^0.6.2: - version "0.6.2" - resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz#ce13d1875b0c3a674bd6a04b7f76b01b1b6ded01" - integrity sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ== + version "0.6.3" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== dependencies: safer-buffer ">= 2.1.2 < 3.0.0" @@ -5707,1081 +4574,442 @@ ieee754@^1.1.13: resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -ignore-walk@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" - integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== +ignore-walk@^6.0.4: + version "6.0.5" + resolved "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.5.tgz#ef8d61eab7da169078723d1f82833b36e200b0dd" + integrity sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A== dependencies: - minimatch "^3.0.4" + minimatch "^9.0.0" -ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== +ignore@^5.0.4, ignore@^5.2.0: + version "5.3.2" + resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" + integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== -ignore@^5.1.4: - version "5.1.8" - resolved "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" - integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== +ignore@^7.0.0: + version "7.0.5" + resolved "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz#4cb5f6cd7d4c7ab0365738c7aea888baa6d7efd9" + integrity sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg== -import-fresh@^3.0.0, import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== +import-fresh@^3.2.1, import-fresh@^3.3.0: + version "3.3.1" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz#9cecb56503c0ada1f2741dbbd6546e4b13b57ccf" + integrity sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ== dependencies: parent-module "^1.0.0" resolve-from "^4.0.0" -import-from@4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/import-from/-/import-from-4.0.0.tgz#2710b8d66817d232e16f4166e319248d3d5492e2" - integrity sha512-P9J71vT5nLlDeV8FHs5nNxaLbrpfAV5cF5srvbZfpwpcJoM/xZR3hiv+q+SAnuSmuGbXMWud063iIMx/V/EWZQ== - -import-lazy@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" - integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= - -import-local@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" - integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA== +import-local@3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" + integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== dependencies: pkg-dir "^4.2.0" resolve-cwd "^3.0.0" +import-meta-resolve@^4.0.0: + version "4.1.0" + resolved "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz#f9db8bead9fafa61adb811db77a2bf22c5399706" + integrity sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw== + imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= - -in-publish@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz#948b1a535c8030561cea522f73f78f4be357e00c" - integrity sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ== - -indent-string@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" - integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA= - dependencies: - repeating "^2.0.0" - -indent-string@^3.0.0: - version "3.2.0" - resolved "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" - integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== indent-string@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== -infer-owner@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" - integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== +index-to-position@^0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/index-to-position/-/index-to-position-0.1.2.tgz#e11bfe995ca4d8eddb1ec43274488f3c201a7f09" + integrity sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g== inflight@^1.0.4: version "1.0.6" resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== dependencies: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: +inherits@2, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: version "2.0.4" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -ini@1.3.7, ini@^1.3.2, ini@^1.3.4: - version "1.3.7" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.7.tgz#a09363e1911972ea16d7a8851005d84cf09a9a84" - integrity sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ== +ini@4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz#d95b3d843b1e906e56d6747d5447904ff50ce7a1" + integrity sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g== -ini@~1.3.0: +ini@^1.3.2, ini@^1.3.4, ini@^1.3.8: version "1.3.8" resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== -init-package-json@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/init-package-json/-/init-package-json-2.0.2.tgz#d81a7e6775af9b618f20bba288e440b8d1ce05f3" - integrity sha512-PO64kVeArePvhX7Ff0jVWkpnE1DfGRvaWcStYrPugcJz9twQGYibagKJuIMHCX7ENcp0M6LJlcjLBuLD5KeJMg== - dependencies: - glob "^7.1.1" - npm-package-arg "^8.1.0" - promzard "^0.3.0" - read "~1.0.1" - read-package-json "^3.0.0" - semver "^7.3.2" - validate-npm-package-license "^3.0.4" - validate-npm-package-name "^3.0.0" - -inquirer@0.11.0: - version "0.11.0" - resolved "https://registry.npmjs.org/inquirer/-/inquirer-0.11.0.tgz#7448bfa924092af311d47173bbab990cae2bb027" - integrity sha1-dEi/qSQJKvMR1HFzu6uZDK4rsCc= - dependencies: - ansi-escapes "^1.1.0" - ansi-regex "^2.0.0" - chalk "^1.0.0" - cli-cursor "^1.0.1" - cli-width "^1.0.1" - figures "^1.3.5" - lodash "^3.3.1" - readline2 "^1.0.1" - run-async "^0.1.0" - rx-lite "^3.1.2" - strip-ansi "^3.0.0" - through "^2.3.6" +ini@^4.1.3: + version "4.1.3" + resolved "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz#4c359675a6071a46985eb39b14e4a2c0ec98a795" + integrity sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg== -inquirer@6.5.0: - version "6.5.0" - resolved "https://registry.npmjs.org/inquirer/-/inquirer-6.5.0.tgz#2303317efc9a4ea7ec2e2df6f86569b734accf42" - integrity sha512-scfHejeG/lVZSpvCXpsB4j/wQNPM5JC8kiElOI0OUTwmc1RTpXr4H32/HOlQHcZiYl2z2VElwuCVDRG8vFmbnA== +init-package-json@6.0.3: + version "6.0.3" + resolved "https://registry.npmjs.org/init-package-json/-/init-package-json-6.0.3.tgz#2552fba75b6eed2495dc97f44183e2e5a5bcf8b0" + integrity sha512-Zfeb5ol+H+eqJWHTaGca9BovufyGeIfr4zaaBorPmJBMrJ+KBnN+kQx2ZtXdsotUTgldHmHQV44xvUWOUA7E2w== dependencies: - ansi-escapes "^3.2.0" - chalk "^2.4.2" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^3.0.3" - figures "^2.0.0" - lodash "^4.17.12" - mute-stream "0.0.7" - run-async "^2.2.0" - rxjs "^6.4.0" - string-width "^2.1.0" - strip-ansi "^5.1.0" - through "^2.3.6" + "@npmcli/package-json" "^5.0.0" + npm-package-arg "^11.0.0" + promzard "^1.0.0" + read "^3.0.1" + semver "^7.3.5" + validate-npm-package-license "^3.0.4" + validate-npm-package-name "^5.0.0" -inquirer@6.5.2: - version "6.5.2" - resolved "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" - integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== +inquirer@8.2.5: + version "8.2.5" + resolved "https://registry.npmjs.org/inquirer/-/inquirer-8.2.5.tgz#d8654a7542c35a9b9e069d27e2df4858784d54f8" + integrity sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ== dependencies: - ansi-escapes "^3.2.0" - chalk "^2.4.2" - cli-cursor "^2.1.0" - cli-width "^2.0.0" + ansi-escapes "^4.2.1" + chalk "^4.1.1" + cli-cursor "^3.1.0" + cli-width "^3.0.0" external-editor "^3.0.3" - figures "^2.0.0" - lodash "^4.17.12" - mute-stream "0.0.7" - run-async "^2.2.0" - rxjs "^6.4.0" - string-width "^2.1.0" - strip-ansi "^5.1.0" + figures "^3.0.0" + lodash "^4.17.21" + mute-stream "0.0.8" + ora "^5.4.1" + run-async "^2.4.0" + rxjs "^7.5.5" + string-width "^4.1.0" + strip-ansi "^6.0.0" through "^2.3.6" + wrap-ansi "^7.0.0" -inquirer@^7.3.3: - version "7.3.3" - resolved "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" - integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== +inquirer@^8.2.4: + version "8.2.6" + resolved "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz#733b74888195d8d400a67ac332011b5fae5ea562" + integrity sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg== dependencies: ansi-escapes "^4.2.1" - chalk "^4.1.0" + chalk "^4.1.1" cli-cursor "^3.1.0" cli-width "^3.0.0" external-editor "^3.0.3" figures "^3.0.0" - lodash "^4.17.19" + lodash "^4.17.21" mute-stream "0.0.8" + ora "^5.4.1" run-async "^2.4.0" - rxjs "^6.6.0" + rxjs "^7.5.5" string-width "^4.1.0" strip-ansi "^6.0.0" through "^2.3.6" + wrap-ansi "^6.0.1" + +inquirer@^9.2.15: + version "9.3.7" + resolved "https://registry.npmjs.org/inquirer/-/inquirer-9.3.7.tgz#0b562bf843812208844741c9aec9244c939b83d4" + integrity sha512-LJKFHCSeIRq9hanN14IlOtPSTe3lNES7TYDTE2xxdAy1LS5rYphajK1qtwvj3YmQXvvk0U2Vbmcni8P9EIQW9w== + dependencies: + "@inquirer/figures" "^1.0.3" + ansi-escapes "^4.3.2" + cli-width "^4.1.0" + external-editor "^3.1.0" + mute-stream "1.0.0" + ora "^5.4.1" + run-async "^3.0.0" + rxjs "^7.8.1" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wrap-ansi "^6.2.0" + yoctocolors-cjs "^2.1.2" -interpret@^1.0.0: - version "1.4.0" - resolved "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" - integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== - -ip@^1.1.5: - version "1.1.5" - resolved "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" - integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== +ip-address@^9.0.5: + version "9.0.5" + resolved "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz#117a960819b08780c3bd1f14ef3c1cc1d3f3ea5a" + integrity sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g== dependencies: - kind-of "^6.0.0" + jsbn "1.1.0" + sprintf-js "^1.1.3" is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= - -is-bigint@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz#ffb381442503235ad245ea89e45b3dbff040ee5a" - integrity sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA== - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-boolean-object@^1.1.0: - version "1.1.1" - resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz#3c0878f035cb821228d350d2e1e36719716a3de8" - integrity sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng== - dependencies: - call-bind "^1.0.2" - -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - -is-callable@^1.1.4, is-callable@^1.2.3: - version "1.2.3" - resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" - integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== - -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== - dependencies: - ci-info "^2.0.0" - -is-ci@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz#c7e7be3c9d8eef7d0fa144390bd1e4b88dc4c994" - integrity sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ== - dependencies: - ci-info "^3.1.1" - -is-core-module@^2.2.0: - version "2.5.0" - resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.5.0.tgz#f754843617c70bfd29b7bd87327400cda5c18491" - integrity sha512-TXCMSDsEHMEEZ6eCA8rwRDbLu55MRGmrctljsBX/2v1d9/GzqHOxW5c5oPSgrUt2vBFXebu9rGqckXGPWOlYpg== - dependencies: - has "^1.0.3" - -is-core-module@^2.4.0: - version "2.4.0" - resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz#8e9fc8e15027b011418026e98f0e6f4d86305cc1" - integrity sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A== - dependencies: - has "^1.0.3" - -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= - dependencies: - kind-of "^3.0.2" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== +is-bun-module@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz#4d7859a87c0fcac950c95e666730e745eae8bddd" + integrity sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ== dependencies: - kind-of "^6.0.0" - -is-date-object@^1.0.1: - version "1.0.4" - resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz#550cfcc03afada05eea3dd30981c7b09551f73e5" - integrity sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A== + semver "^7.7.1" -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== +is-ci@3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz#db6ecbed1bd659c43dac0f45661e7674103d1867" + integrity sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ== dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" + ci-info "^3.2.0" -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== +is-core-module@^2.16.0, is-core-module@^2.5.0: + version "2.16.1" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" + integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + hasown "^2.0.2" -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" +is-docker@^2.0.0, is-docker@^2.1.1: + version "2.2.1" + resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -is-finite@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" - integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== -is-generator-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" - integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== +is-fullwidth-code-point@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz#fae3167c729e7463f8461ce512b080a49268aa88" + integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ== -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== +is-fullwidth-code-point@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz#9609efced7c2f97da7b60145ef481c787c7ba704" + integrity sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA== dependencies: - is-extglob "^2.1.1" + get-east-asian-width "^1.0.0" -is-installed-globally@^0.3.1: - version "0.3.2" - resolved "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141" - integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g== +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: - global-dirs "^2.0.1" - is-path-inside "^3.0.1" + is-extglob "^2.1.1" + +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== is-lambda@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" - integrity sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU= - -is-negative-zero@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" - integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== - -is-npm@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz#c90dd8380696df87a7a6d823c20d0b12bbe3c84d" - integrity sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig== - -is-number-object@^1.0.4: - version "1.0.5" - resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz#6edfaeed7950cff19afedce9fbfca9ee6dd289eb" - integrity sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw== - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - dependencies: - kind-of "^3.0.2" + integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== is-number@^7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-obj@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" - integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= - is-obj@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== -is-path-inside@^3.0.1: - version "3.0.3" - resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= + integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== is-plain-obj@^2.0.0: version "2.1.0" resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== -is-plain-object@^2.0.3, is-plain-object@^2.0.4: +is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== dependencies: isobject "^3.0.1" -is-plain-object@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" - integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== - -is-potential-custom-element-name@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" - integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== - -is-regex@^1.1.2, is-regex@^1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz#d029f9aff6448b93ebbe3f33dac71511fdcbef9f" - integrity sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ== - dependencies: - call-bind "^1.0.2" - has-symbols "^1.0.2" - -is-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" - integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= - -is-ssh@^1.3.0: - version "1.3.1" - resolved "https://registry.npmjs.org/is-ssh/-/is-ssh-1.3.1.tgz#f349a8cadd24e65298037a522cf7520f2e81a0f3" - integrity sha512-0eRIASHZt1E68/ixClI8bp2YK2wmBPVWEismTs6M+M099jKgrzl/3E976zIbImSIob48N2/XGe9y7ZiYdImSlg== +is-ssh@^1.4.0: + version "1.4.1" + resolved "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.1.tgz#76de1cdbe8f92a8b905d1a172b6bc09704c20396" + integrity sha512-JNeu1wQsHjyHgn9NcWTaXq6zWSR6hqE0++zhfZlkFBbScNkyvxCdeV8sRkSBaeLKxmbpR21brail63ACNxJ0Tg== dependencies: - protocols "^1.1.0" + protocols "^2.0.1" -is-stream@^2.0.0: +is-stream@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== -is-string@^1.0.5, is-string@^1.0.6: - version "1.0.6" - resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.6.tgz#3fe5d5992fb0d93404f32584d4b0179a71b54a5f" - integrity sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w== - -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.4" - resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" - integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== - dependencies: - has-symbols "^1.0.2" +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== is-text-path@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e" - integrity sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4= + integrity sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w== dependencies: text-extensions "^1.0.0" -is-typedarray@^1.0.0, is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= +is-text-path@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz#b2484e2b720a633feb2e85b67dc193ff72c75636" + integrity sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw== + dependencies: + text-extensions "^2.0.0" is-unicode-supported@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== -is-utf8@^0.2.0, is-utf8@^0.2.1: +is-utf8@^0.2.1: version "0.2.1" resolved "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" - integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= + integrity sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q== + +is-what@^4.1.8: + version "4.1.16" + resolved "https://registry.npmjs.org/is-what/-/is-what-4.1.16.tgz#1ad860a19da8b4895ad5495da3182ce2acdd7a6f" + integrity sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A== is-windows@^1.0.1, is-windows@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= - -is-yarn-global@^0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" - integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== +is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" -isarray@1.0.0, isarray@~1.0.0: +isarray@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== isexe@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - dependencies: - isarray "1.0.0" +isexe@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz#4a407e2bd78ddfb14bea0c27c6f7072dde775f0d" + integrity sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ== -isobject@^3.0.0, isobject@^3.0.1: +isobject@^3.0.1: version "3.0.1" resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= - -istanbul-lib-coverage@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" - integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== -istanbul-lib-instrument@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.1.tgz#61f13ac2c96cfefb076fe7131156cc05907874e6" - integrity sha512-imIchxnodll7pvQBYOqUu88EufLCU56LMeFPZZM/fJZ1irYcYdqroaV+ACK1Ila8ls09iEYArp+nqyC6lW1Vfg== - dependencies: - "@babel/core" "^7.7.5" - "@babel/parser" "^7.7.5" - "@babel/template" "^7.7.4" - "@babel/traverse" "^7.7.4" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.0.0" - semver "^6.3.0" +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0, istanbul-lib-coverage@^3.2.2: + version "3.2.2" + resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" + integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== -istanbul-lib-instrument@^4.0.3: - version "4.0.3" - resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" - integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== +istanbul-lib-instrument@^6.0.3: + version "6.0.3" + resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz#fa15401df6c15874bcb2105f773325d78c666765" + integrity sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q== dependencies: - "@babel/core" "^7.7.5" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.0.0" - semver "^6.3.0" + "@babel/core" "^7.23.9" + "@babel/parser" "^7.23.9" + "@istanbuljs/schema" "^0.1.3" + istanbul-lib-coverage "^3.2.0" + semver "^7.5.4" -istanbul-lib-report@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" - integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== +istanbul-lib-report@^3.0.0, istanbul-lib-report@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" + integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== dependencies: istanbul-lib-coverage "^3.0.0" - make-dir "^3.0.0" + make-dir "^4.0.0" supports-color "^7.1.0" -istanbul-lib-source-maps@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" - integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg== +istanbul-lib-source-maps@^5.0.6: + version "5.0.6" + resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz#acaef948df7747c8eb5fbf1265cb980f6353a441" + integrity sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A== dependencies: + "@jridgewell/trace-mapping" "^0.3.23" debug "^4.1.1" istanbul-lib-coverage "^3.0.0" - source-map "^0.6.1" -istanbul-reports@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" - integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== +istanbul-reports@^3.1.7: + version "3.1.7" + resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz#daed12b9e1dca518e15c056e1e537e741280fa0b" + integrity sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g== dependencies: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -jest-changed-files@^27.0.6: - version "27.0.6" - resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.0.6.tgz#bed6183fcdea8a285482e3b50a9a7712d49a7a8b" - integrity sha512-BuL/ZDauaq5dumYh5y20sn4IISnf1P9A0TDswTxUi84ORGtVa86ApuBHqICL0vepqAnZiY6a7xeSPWv2/yy4eA== - dependencies: - "@jest/types" "^27.0.6" - execa "^5.0.0" - throat "^6.0.1" - -jest-circus@^27.0.6: - version "27.0.6" - resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-27.0.6.tgz#dd4df17c4697db6a2c232aaad4e9cec666926668" - integrity sha512-OJlsz6BBeX9qR+7O9lXefWoc2m9ZqcZ5Ohlzz0pTEAG4xMiZUJoacY8f4YDHxgk0oKYxj277AfOk9w6hZYvi1Q== - dependencies: - "@jest/environment" "^27.0.6" - "@jest/test-result" "^27.0.6" - "@jest/types" "^27.0.6" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - dedent "^0.7.0" - expect "^27.0.6" - is-generator-fn "^2.0.0" - jest-each "^27.0.6" - jest-matcher-utils "^27.0.6" - jest-message-util "^27.0.6" - jest-runtime "^27.0.6" - jest-snapshot "^27.0.6" - jest-util "^27.0.6" - pretty-format "^27.0.6" - slash "^3.0.0" - stack-utils "^2.0.3" - throat "^6.0.1" - -jest-cli@^27.0.6: - version "27.0.6" - resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-27.0.6.tgz#d021e5f4d86d6a212450d4c7b86cb219f1e6864f" - integrity sha512-qUUVlGb9fdKir3RDE+B10ULI+LQrz+MCflEH2UJyoUjoHHCbxDrMxSzjQAPUMsic4SncI62ofYCcAvW6+6rhhg== - dependencies: - "@jest/core" "^27.0.6" - "@jest/test-result" "^27.0.6" - "@jest/types" "^27.0.6" - chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.4" - import-local "^3.0.2" - jest-config "^27.0.6" - jest-util "^27.0.6" - jest-validate "^27.0.6" - prompts "^2.0.1" - yargs "^16.0.3" - -jest-config@^27.0.6: - version "27.0.6" - resolved "https://registry.npmjs.org/jest-config/-/jest-config-27.0.6.tgz#119fb10f149ba63d9c50621baa4f1f179500277f" - integrity sha512-JZRR3I1Plr2YxPBhgqRspDE2S5zprbga3swYNrvY3HfQGu7p/GjyLOqwrYad97tX3U3mzT53TPHVmozacfP/3w== - dependencies: - "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^27.0.6" - "@jest/types" "^27.0.6" - babel-jest "^27.0.6" - chalk "^4.0.0" - deepmerge "^4.2.2" - glob "^7.1.1" - graceful-fs "^4.2.4" - is-ci "^3.0.0" - jest-circus "^27.0.6" - jest-environment-jsdom "^27.0.6" - jest-environment-node "^27.0.6" - jest-get-type "^27.0.6" - jest-jasmine2 "^27.0.6" - jest-regex-util "^27.0.6" - jest-resolve "^27.0.6" - jest-runner "^27.0.6" - jest-util "^27.0.6" - jest-validate "^27.0.6" - micromatch "^4.0.4" - pretty-format "^27.0.6" - -jest-diff@^26.0.0: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394" - integrity sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA== - dependencies: - chalk "^4.0.0" - diff-sequences "^26.6.2" - jest-get-type "^26.3.0" - pretty-format "^26.6.2" - -jest-diff@^27.0.6: - version "27.0.6" - resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-27.0.6.tgz#4a7a19ee6f04ad70e0e3388f35829394a44c7b5e" - integrity sha512-Z1mqgkTCSYaFgwTlP/NUiRzdqgxmmhzHY1Tq17zL94morOHfHu3K4bgSgl+CR4GLhpV8VxkuOYuIWnQ9LnFqmg== - dependencies: - chalk "^4.0.0" - diff-sequences "^27.0.6" - jest-get-type "^27.0.6" - pretty-format "^27.0.6" - -jest-docblock@^27.0.6: - version "27.0.6" - resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.0.6.tgz#cc78266acf7fe693ca462cbbda0ea4e639e4e5f3" - integrity sha512-Fid6dPcjwepTFraz0YxIMCi7dejjJ/KL9FBjPYhBp4Sv1Y9PdhImlKZqYU555BlN4TQKaTc+F2Av1z+anVyGkA== - dependencies: - detect-newline "^3.0.0" - -jest-each@^27.0.6: - version "27.0.6" - resolved "https://registry.npmjs.org/jest-each/-/jest-each-27.0.6.tgz#cee117071b04060158dc8d9a66dc50ad40ef453b" - integrity sha512-m6yKcV3bkSWrUIjxkE9OC0mhBZZdhovIW5ergBYirqnkLXkyEn3oUUF/QZgyecA1cF1QFyTE8bRRl8Tfg1pfLA== - dependencies: - "@jest/types" "^27.0.6" - chalk "^4.0.0" - jest-get-type "^27.0.6" - jest-util "^27.0.6" - pretty-format "^27.0.6" - -jest-environment-jsdom@^27.0.6: - version "27.0.6" - resolved "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.0.6.tgz#f66426c4c9950807d0a9f209c590ce544f73291f" - integrity sha512-FvetXg7lnXL9+78H+xUAsra3IeZRTiegA3An01cWeXBspKXUhAwMM9ycIJ4yBaR0L7HkoMPaZsozCLHh4T8fuw== - dependencies: - "@jest/environment" "^27.0.6" - "@jest/fake-timers" "^27.0.6" - "@jest/types" "^27.0.6" - "@types/node" "*" - jest-mock "^27.0.6" - jest-util "^27.0.6" - jsdom "^16.6.0" - -jest-environment-node@^27.0.0: - version "27.0.1" - resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.0.1.tgz#7d7df7ae191477a823ffb4fcc0772b4c23ec5c87" - integrity sha512-/p94lo0hx+hbKUw1opnRFUPPsjncRBEUU+2Dh7BuxX8Nr4rRiTivLYgXzo79FhaeMYV0uiV5WAbHBq6xC11JJg== - dependencies: - "@jest/environment" "^27.0.1" - "@jest/fake-timers" "^27.0.1" - "@jest/types" "^27.0.1" - "@types/node" "*" - jest-mock "^27.0.1" - jest-util "^27.0.1" - -jest-environment-node@^27.0.6: - version "27.0.6" - resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.0.6.tgz#a6699b7ceb52e8d68138b9808b0c404e505f3e07" - integrity sha512-+Vi6yLrPg/qC81jfXx3IBlVnDTI6kmRr08iVa2hFCWmJt4zha0XW7ucQltCAPhSR0FEKEoJ3i+W4E6T0s9is0w== +jackspeak@^3.1.2: + version "3.4.3" + resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" + integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== dependencies: - "@jest/environment" "^27.0.6" - "@jest/fake-timers" "^27.0.6" - "@jest/types" "^27.0.6" - "@types/node" "*" - jest-mock "^27.0.6" - jest-util "^27.0.6" - -jest-get-type@^26.3.0: - version "26.3.0" - resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" - integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== - -jest-get-type@^27.0.6: - version "27.0.6" - resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz#0eb5c7f755854279ce9b68a9f1a4122f69047cfe" - integrity sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg== - -jest-haste-map@^27.0.6: - version "27.0.6" - resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.0.6.tgz#4683a4e68f6ecaa74231679dca237279562c8dc7" - integrity sha512-4ldjPXX9h8doB2JlRzg9oAZ2p6/GpQUNAeiYXqcpmrKbP0Qev0wdZlxSMOmz8mPOEnt4h6qIzXFLDi8RScX/1w== - dependencies: - "@jest/types" "^27.0.6" - "@types/graceful-fs" "^4.1.2" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.4" - jest-regex-util "^27.0.6" - jest-serializer "^27.0.6" - jest-util "^27.0.6" - jest-worker "^27.0.6" - micromatch "^4.0.4" - walker "^1.0.7" + "@isaacs/cliui" "^8.0.2" optionalDependencies: - fsevents "^2.3.2" - -jest-jasmine2@^27.0.6: - version "27.0.6" - resolved "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.0.6.tgz#fd509a9ed3d92bd6edb68a779f4738b100655b37" - integrity sha512-cjpH2sBy+t6dvCeKBsHpW41mjHzXgsavaFMp+VWRf0eR4EW8xASk1acqmljFtK2DgyIECMv2yCdY41r2l1+4iA== - dependencies: - "@babel/traverse" "^7.1.0" - "@jest/environment" "^27.0.6" - "@jest/source-map" "^27.0.6" - "@jest/test-result" "^27.0.6" - "@jest/types" "^27.0.6" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - expect "^27.0.6" - is-generator-fn "^2.0.0" - jest-each "^27.0.6" - jest-matcher-utils "^27.0.6" - jest-message-util "^27.0.6" - jest-runtime "^27.0.6" - jest-snapshot "^27.0.6" - jest-util "^27.0.6" - pretty-format "^27.0.6" - throat "^6.0.1" - -jest-leak-detector@^27.0.6: - version "27.0.6" - resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.0.6.tgz#545854275f85450d4ef4b8fe305ca2a26450450f" - integrity sha512-2/d6n2wlH5zEcdctX4zdbgX8oM61tb67PQt4Xh8JFAIy6LRKUnX528HulkaG6nD5qDl5vRV1NXejCe1XRCH5gQ== - dependencies: - jest-get-type "^27.0.6" - pretty-format "^27.0.6" - -jest-matcher-utils@^27.0.6: - version "27.0.6" - resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.0.6.tgz#2a8da1e86c620b39459f4352eaa255f0d43e39a9" - integrity sha512-OFgF2VCQx9vdPSYTHWJ9MzFCehs20TsyFi6bIHbk5V1u52zJOnvF0Y/65z3GLZHKRuTgVPY4Z6LVePNahaQ+tA== - dependencies: - chalk "^4.0.0" - jest-diff "^27.0.6" - jest-get-type "^27.0.6" - pretty-format "^27.0.6" - -jest-message-util@^27.0.1: - version "27.0.1" - resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.0.1.tgz#382b7c55d8e0b1aba9eeb41d3cfdd34e451210ed" - integrity sha512-w8BfON2GwWORkos8BsxcwwQrLkV2s1ENxSRXK43+6yuquDE2hVxES/jrFqOArpP1ETVqqMmktU6iGkG8ncVzeA== - dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^27.0.1" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.4" - micromatch "^4.0.4" - pretty-format "^27.0.1" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-message-util@^27.0.6: - version "27.0.6" - resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.0.6.tgz#158bcdf4785706492d164a39abca6a14da5ab8b5" - integrity sha512-rBxIs2XK7rGy+zGxgi+UJKP6WqQ+KrBbD1YMj517HYN3v2BG66t3Xan3FWqYHKZwjdB700KiAJ+iES9a0M+ixw== - dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^27.0.6" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.4" - micromatch "^4.0.4" - pretty-format "^27.0.6" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-mock@^27.0.1: - version "27.0.1" - resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-27.0.1.tgz#8394e297bc3dfed980961622cb51fd042b4acf5a" - integrity sha512-fXCSZQDT5hUcAUy8OBnB018x7JFOMQnz4XfpSKEbfpWzL6o5qaLRhgf2Qg2NPuVKmC/fgOf33Edj8wjF4I24CQ== - dependencies: - "@jest/types" "^27.0.1" - "@types/node" "*" - -jest-mock@^27.0.6: - version "27.0.6" - resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-27.0.6.tgz#0efdd40851398307ba16778728f6d34d583e3467" - integrity sha512-lzBETUoK8cSxts2NYXSBWT+EJNzmUVtVVwS1sU9GwE1DLCfGsngg+ZVSIe0yd0ZSm+y791esiuo+WSwpXJQ5Bw== - dependencies: - "@jest/types" "^27.0.6" - "@types/node" "*" - -jest-pnp-resolver@^1.2.2: - version "1.2.2" - resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" - integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== - -jest-regex-util@^27.0.6: - version "27.0.6" - resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz#02e112082935ae949ce5d13b2675db3d8c87d9c5" - integrity sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ== - -jest-resolve-dependencies@^27.0.6: - version "27.0.6" - resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.0.6.tgz#3e619e0ef391c3ecfcf6ef4056207a3d2be3269f" - integrity sha512-mg9x9DS3BPAREWKCAoyg3QucCr0n6S8HEEsqRCKSPjPcu9HzRILzhdzY3imsLoZWeosEbJZz6TKasveczzpJZA== - dependencies: - "@jest/types" "^27.0.6" - jest-regex-util "^27.0.6" - jest-snapshot "^27.0.6" - -jest-resolve@^27.0.6: - version "27.0.6" - resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.0.6.tgz#e90f436dd4f8fbf53f58a91c42344864f8e55bff" - integrity sha512-yKmIgw2LgTh7uAJtzv8UFHGF7Dm7XfvOe/LQ3Txv101fLM8cx2h1QVwtSJ51Q/SCxpIiKfVn6G2jYYMDNHZteA== - dependencies: - "@jest/types" "^27.0.6" - chalk "^4.0.0" - escalade "^3.1.1" - graceful-fs "^4.2.4" - jest-pnp-resolver "^1.2.2" - jest-util "^27.0.6" - jest-validate "^27.0.6" - resolve "^1.20.0" - slash "^3.0.0" - -jest-runner@^27.0.6: - version "27.0.6" - resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-27.0.6.tgz#1325f45055539222bbc7256a6976e993ad2f9520" - integrity sha512-W3Bz5qAgaSChuivLn+nKOgjqNxM7O/9JOJoKDCqThPIg2sH/d4A/lzyiaFgnb9V1/w29Le11NpzTJSzga1vyYQ== - dependencies: - "@jest/console" "^27.0.6" - "@jest/environment" "^27.0.6" - "@jest/test-result" "^27.0.6" - "@jest/transform" "^27.0.6" - "@jest/types" "^27.0.6" - "@types/node" "*" - chalk "^4.0.0" - emittery "^0.8.1" - exit "^0.1.2" - graceful-fs "^4.2.4" - jest-docblock "^27.0.6" - jest-environment-jsdom "^27.0.6" - jest-environment-node "^27.0.6" - jest-haste-map "^27.0.6" - jest-leak-detector "^27.0.6" - jest-message-util "^27.0.6" - jest-resolve "^27.0.6" - jest-runtime "^27.0.6" - jest-util "^27.0.6" - jest-worker "^27.0.6" - source-map-support "^0.5.6" - throat "^6.0.1" - -jest-runtime@^27.0.6: - version "27.0.6" - resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.0.6.tgz#45877cfcd386afdd4f317def551fc369794c27c9" - integrity sha512-BhvHLRVfKibYyqqEFkybsznKwhrsu7AWx2F3y9G9L95VSIN3/ZZ9vBpm/XCS2bS+BWz3sSeNGLzI3TVQ0uL85Q== - dependencies: - "@jest/console" "^27.0.6" - "@jest/environment" "^27.0.6" - "@jest/fake-timers" "^27.0.6" - "@jest/globals" "^27.0.6" - "@jest/source-map" "^27.0.6" - "@jest/test-result" "^27.0.6" - "@jest/transform" "^27.0.6" - "@jest/types" "^27.0.6" - "@types/yargs" "^16.0.0" - chalk "^4.0.0" - cjs-module-lexer "^1.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.3" - graceful-fs "^4.2.4" - jest-haste-map "^27.0.6" - jest-message-util "^27.0.6" - jest-mock "^27.0.6" - jest-regex-util "^27.0.6" - jest-resolve "^27.0.6" - jest-snapshot "^27.0.6" - jest-util "^27.0.6" - jest-validate "^27.0.6" - slash "^3.0.0" - strip-bom "^4.0.0" - yargs "^16.0.3" - -jest-serializer@^27.0.6: - version "27.0.6" - resolved "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz#93a6c74e0132b81a2d54623251c46c498bb5bec1" - integrity sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA== - dependencies: - "@types/node" "*" - graceful-fs "^4.2.4" - -jest-snapshot@^27.0.6: - version "27.0.6" - resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.0.6.tgz#f4e6b208bd2e92e888344d78f0f650bcff05a4bf" - integrity sha512-NTHaz8He+ATUagUgE7C/UtFcRoHqR2Gc+KDfhQIyx+VFgwbeEMjeP+ILpUTLosZn/ZtbNdCF5LkVnN/l+V751A== - dependencies: - "@babel/core" "^7.7.2" - "@babel/generator" "^7.7.2" - "@babel/parser" "^7.7.2" - "@babel/plugin-syntax-typescript" "^7.7.2" - "@babel/traverse" "^7.7.2" - "@babel/types" "^7.0.0" - "@jest/transform" "^27.0.6" - "@jest/types" "^27.0.6" - "@types/babel__traverse" "^7.0.4" - "@types/prettier" "^2.1.5" - babel-preset-current-node-syntax "^1.0.0" - chalk "^4.0.0" - expect "^27.0.6" - graceful-fs "^4.2.4" - jest-diff "^27.0.6" - jest-get-type "^27.0.6" - jest-haste-map "^27.0.6" - jest-matcher-utils "^27.0.6" - jest-message-util "^27.0.6" - jest-resolve "^27.0.6" - jest-util "^27.0.6" - natural-compare "^1.4.0" - pretty-format "^27.0.6" - semver "^7.3.2" - -jest-util@^27.0.0, jest-util@^27.0.1: - version "27.0.1" - resolved "https://registry.npmjs.org/jest-util/-/jest-util-27.0.1.tgz#324ed9879d129c1e64f9169a739d6d50d7928769" - integrity sha512-lEw3waSmEOO4ZkwkUlFSvg4es1+8+LIkSGxp/kF60K0+vMR3Dv3O2HMZhcln9NHqSQzpVbsDT6OeMzUPW7DfRg== - dependencies: - "@jest/types" "^27.0.1" - "@types/node" "*" - chalk "^4.0.0" - graceful-fs "^4.2.4" - is-ci "^3.0.0" - picomatch "^2.2.3" - -jest-util@^27.0.6: - version "27.0.6" - resolved "https://registry.npmjs.org/jest-util/-/jest-util-27.0.6.tgz#e8e04eec159de2f4d5f57f795df9cdc091e50297" - integrity sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ== - dependencies: - "@jest/types" "^27.0.6" - "@types/node" "*" - chalk "^4.0.0" - graceful-fs "^4.2.4" - is-ci "^3.0.0" - picomatch "^2.2.3" + "@pkgjs/parseargs" "^0.11.0" -jest-validate@^27.0.6: - version "27.0.6" - resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-27.0.6.tgz#930a527c7a951927df269f43b2dc23262457e2a6" - integrity sha512-yhZZOaMH3Zg6DC83n60pLmdU1DQE46DW+KLozPiPbSbPhlXXaiUTDlhHQhHFpaqIFRrInko1FHXjTRpjWRuWfA== +jake@^10.8.5: + version "10.9.2" + resolved "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz#6ae487e6a69afec3a5e167628996b59f35ae2b7f" + integrity sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA== dependencies: - "@jest/types" "^27.0.6" - camelcase "^6.2.0" - chalk "^4.0.0" - jest-get-type "^27.0.6" - leven "^3.1.0" - pretty-format "^27.0.6" + async "^3.2.3" + chalk "^4.0.2" + filelist "^1.0.4" + minimatch "^3.1.2" -jest-watcher@^27.0.6: - version "27.0.6" - resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.0.6.tgz#89526f7f9edf1eac4e4be989bcb6dec6b8878d9c" - integrity sha512-/jIoKBhAP00/iMGnTwUBLgvxkn7vsOweDrOTSPzc7X9uOyUtJIDthQBTI1EXz90bdkrxorUZVhJwiB69gcHtYQ== +"jest-diff@>=29.4.3 < 30", jest-diff@^29.4.1: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" + integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== dependencies: - "@jest/test-result" "^27.0.6" - "@jest/types" "^27.0.6" - "@types/node" "*" - ansi-escapes "^4.2.1" chalk "^4.0.0" - jest-util "^27.0.6" - string-length "^4.0.1" + diff-sequences "^29.6.3" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" -jest-worker@^27.0.6: - version "27.0.6" - resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.0.6.tgz#a5fdb1e14ad34eb228cfe162d9f729cdbfa28aed" - integrity sha512-qupxcj/dRuA3xHPMUd40gr2EaAurFbkwzOh7wfPaeE9id7hyjURRQoqNfHifHK3XjJU6YJJUQKILGUnwGPEOCA== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" +jest-get-type@^29.6.3: + version "29.6.3" + resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" + integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== -jest@27.0.6: - version "27.0.6" - resolved "https://registry.npmjs.org/jest/-/jest-27.0.6.tgz#10517b2a628f0409087fbf473db44777d7a04505" - integrity sha512-EjV8aETrsD0wHl7CKMibKwQNQc3gIRBXlTikBmmHUeVMKaPFxdcUIBfoDqTSXDoGJIivAYGqCWVlzCSaVjPQsA== - dependencies: - "@jest/core" "^27.0.6" - import-local "^3.0.2" - jest-cli "^27.0.6" +jiti@^2.4.1: + version "2.4.2" + resolved "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz#d19b7732ebb6116b06e2038da74a55366faef560" + integrity sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A== js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@^3.13.1: +js-tokens@^9.0.1: + version "9.0.1" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz#2ec43964658435296f6761b34e10671c2d9527f4" + integrity sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ== + +js-yaml@4.1.0, js-yaml@^4.0.0, js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +js-yaml@^3.10.0, js-yaml@^3.13.1: version "3.14.1" resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== @@ -6789,58 +5017,20 @@ js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= - -jsdom@^16.6.0: - version "16.6.0" - resolved "https://registry.npmjs.org/jsdom/-/jsdom-16.6.0.tgz#f79b3786682065492a3da6a60a4695da983805ac" - integrity sha512-Ty1vmF4NHJkolaEmdjtxTfSfkdb8Ywarwf63f+F8/mDD1uLSSWDxDuMiZxiPhwunLrn9LOSVItWj4bLYsLN3Dg== - dependencies: - abab "^2.0.5" - acorn "^8.2.4" - acorn-globals "^6.0.0" - cssom "^0.4.4" - cssstyle "^2.3.0" - data-urls "^2.0.0" - decimal.js "^10.2.1" - domexception "^2.0.1" - escodegen "^2.0.0" - form-data "^3.0.0" - html-encoding-sniffer "^2.0.1" - http-proxy-agent "^4.0.1" - https-proxy-agent "^5.0.0" - is-potential-custom-element-name "^1.0.1" - nwsapi "^2.2.0" - parse5 "6.0.1" - saxes "^5.0.1" - symbol-tree "^3.2.4" - tough-cookie "^4.0.0" - w3c-hr-time "^1.0.2" - w3c-xmlserializer "^2.0.0" - webidl-conversions "^6.1.0" - whatwg-encoding "^1.0.5" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.5.0" - ws "^7.4.5" - xml-name-validator "^3.0.0" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= - -json-buffer@3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" - integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= +jsbn@1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040" + integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A== + +jsesc@^3.0.2: + version "3.1.0" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz#74d335a234f67ed19907fdadfac7ccf9d409825d" + integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA== + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== json-parse-better-errors@^1.0.1: version "1.0.2" @@ -6852,6 +5042,11 @@ json-parse-even-better-errors@^2.3.0: resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== +json-parse-even-better-errors@^3.0.0, json-parse-even-better-errors@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz#b43d35e89c0f3be6b5fbbe9dc6c82467b30c28da" + integrity sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ== + json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" @@ -6862,144 +5057,164 @@ json-schema-traverse@^1.0.0: resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= - json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== -json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: +json-stringify-nice@^1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz#2c937962b80181d3f317dd39aa323e14f5a60a67" + integrity sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw== + +json-stringify-safe@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== -json5@2.x: - version "2.1.3" - resolved "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" - integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== - dependencies: - minimist "^1.2.5" +json5@^2.2.2, json5@^2.2.3: + version "2.2.3" + resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== - dependencies: - minimist "^1.2.0" +jsonc-parser@3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" + integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== -json5@^2.1.2: - version "2.2.0" - resolved "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" - integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== +jsonc@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/jsonc/-/jsonc-2.0.0.tgz#9e2a25100d164a9bb864c57517563717fa882551" + integrity sha512-B281bLCT2TRMQa+AQUQY5AGcqSOXBOKaYGP4wDzoA/+QswUfN8sODektbPEs9Baq7LGKun5jQbNFpzwGuVYKhw== dependencies: - minimist "^1.2.5" - -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= - optionalDependencies: - graceful-fs "^4.1.6" + fast-safe-stringify "^2.0.6" + graceful-fs "^4.1.15" + mkdirp "^0.5.1" + parse-json "^4.0.0" + strip-bom "^4.0.0" + strip-json-comments "^3.0.1" jsonfile@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz#98966cba214378c8c84b82e085907b40bf614179" - integrity sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg== + version "6.1.0" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== dependencies: - universalify "^1.0.0" + universalify "^2.0.0" optionalDependencies: graceful-fs "^4.1.6" jsonparse@^1.2.0, jsonparse@^1.3.1: version "1.3.1" resolved "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" - integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= - -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" + integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== -keyv@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" - integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== - dependencies: - json-buffer "3.0.0" +just-diff-apply@^5.2.0: + version "5.5.0" + resolved "https://registry.npmjs.org/just-diff-apply/-/just-diff-apply-5.5.0.tgz#771c2ca9fa69f3d2b54e7c3f5c1dfcbcc47f9f0f" + integrity sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw== -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - dependencies: - is-buffer "^1.1.5" +just-diff@^6.0.0: + version "6.0.2" + resolved "https://registry.npmjs.org/just-diff/-/just-diff-6.0.2.tgz#03b65908543ac0521caf6d8eb85035f7d27ea285" + integrity sha512-S59eriX5u3/QhMNq3v/gm8Kd0w8OS6Tz2FS1NG4blv+z0MuQcBRJyFWjdovM0Rad4/P4aUPFtnkNjMjyMlMSYA== -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= +keyv@^4.5.4: + version "4.5.4" + resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + json-buffer "3.0.1" -kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: +kind-of@^6.0.2, kind-of@^6.0.3: version "6.0.3" resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== -kleur@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== - -latest-version@^5.0.0: - version "5.1.0" - resolved "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" - integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== - dependencies: - package-json "^6.3.0" - -lerna@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/lerna/-/lerna-4.0.0.tgz#b139d685d50ea0ca1be87713a7c2f44a5b678e9e" - integrity sha512-DD/i1znurfOmNJb0OBw66NmNqiM8kF6uIrzrJ0wGE3VNdzeOhz9ziWLYiRaZDGGwgbcjOo6eIfcx9O5Qynz+kg== - dependencies: - "@lerna/add" "4.0.0" - "@lerna/bootstrap" "4.0.0" - "@lerna/changed" "4.0.0" - "@lerna/clean" "4.0.0" - "@lerna/cli" "4.0.0" - "@lerna/create" "4.0.0" - "@lerna/diff" "4.0.0" - "@lerna/exec" "4.0.0" - "@lerna/import" "4.0.0" - "@lerna/info" "4.0.0" - "@lerna/init" "4.0.0" - "@lerna/link" "4.0.0" - "@lerna/list" "4.0.0" - "@lerna/publish" "4.0.0" - "@lerna/run" "4.0.0" - "@lerna/version" "4.0.0" - import-local "^3.0.2" - npmlog "^4.1.2" - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== +lerna@^8.2.0: + version "8.2.3" + resolved "https://registry.npmjs.org/lerna/-/lerna-8.2.3.tgz#0a9c07eda4cfac84a480b3e66915189ccfb5bd2c" + integrity sha512-rmuDU+92eWUnnyaPg3Ise339pTxF+r2hu8ky/soCfbGpUoW4kCwsDza3P/LtQJWrKwZWHcosEitfYvxGUWZ16A== + dependencies: + "@lerna/create" "8.2.3" + "@npmcli/arborist" "7.5.4" + "@npmcli/package-json" "5.2.0" + "@npmcli/run-script" "8.1.0" + "@nx/devkit" ">=17.1.2 < 21" + "@octokit/plugin-enterprise-rest" "6.0.1" + "@octokit/rest" "20.1.2" + aproba "2.0.0" + byte-size "8.1.1" + chalk "4.1.0" + clone-deep "4.0.1" + cmd-shim "6.0.3" + color-support "1.1.3" + columnify "1.6.0" + console-control-strings "^1.1.0" + conventional-changelog-angular "7.0.0" + conventional-changelog-core "5.0.1" + conventional-recommended-bump "7.0.1" + cosmiconfig "9.0.0" + dedent "1.5.3" + envinfo "7.13.0" + execa "5.0.0" + fs-extra "^11.2.0" + get-port "5.1.1" + get-stream "6.0.0" + git-url-parse "14.0.0" + glob-parent "6.0.2" + graceful-fs "4.2.11" + has-unicode "2.0.1" + import-local "3.1.0" + ini "^1.3.8" + init-package-json "6.0.3" + inquirer "^8.2.4" + is-ci "3.0.1" + is-stream "2.0.0" + jest-diff ">=29.4.3 < 30" + js-yaml "4.1.0" + libnpmaccess "8.0.6" + libnpmpublish "9.0.9" + load-json-file "6.2.0" + lodash "^4.17.21" + make-dir "4.0.0" + minimatch "3.0.5" + multimatch "5.0.0" + node-fetch "2.6.7" + npm-package-arg "11.0.2" + npm-packlist "8.0.2" + npm-registry-fetch "^17.1.0" + nx ">=17.1.2 < 21" + p-map "4.0.0" + p-map-series "2.1.0" + p-pipe "3.1.0" + p-queue "6.6.2" + p-reduce "2.1.0" + p-waterfall "2.1.1" + pacote "^18.0.6" + pify "5.0.0" + read-cmd-shim "4.0.0" + resolve-from "5.0.0" + rimraf "^4.4.1" + semver "^7.3.8" + set-blocking "^2.0.0" + signal-exit "3.0.7" + slash "3.0.0" + ssri "^10.0.6" + string-width "^4.2.3" + tar "6.2.1" + temp-dir "1.0.0" + through "2.3.8" + tinyglobby "0.2.12" + typescript ">=3 < 6" + upath "2.0.1" + uuid "^10.0.0" + validate-npm-package-license "3.0.4" + validate-npm-package-name "5.0.1" + wide-align "1.1.5" + write-file-atomic "5.0.1" + write-pkg "4.0.0" + yargs "17.7.2" + yargs-parser "21.1.1" levn@^0.4.1: version "0.4.1" @@ -7009,138 +5224,99 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -libnpmaccess@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-4.0.1.tgz#17e842e03bef759854adf6eb6c2ede32e782639f" - integrity sha512-ZiAgvfUbvmkHoMTzdwmNWCrQRsDkOC+aM5BDfO0C9aOSwF3R1LdFDBD+Rer1KWtsoQYO35nXgmMR7OUHpDRxyA== - dependencies: - aproba "^2.0.0" - minipass "^3.1.1" - npm-package-arg "^8.0.0" - npm-registry-fetch "^9.0.0" - -libnpmpublish@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-4.0.0.tgz#ad6413914e0dfd78df868ce14ba3d3a4cc8b385b" - integrity sha512-2RwYXRfZAB1x/9udKpZmqEzSqNd7ouBRU52jyG14/xG8EF+O9A62d7/XVR3iABEQHf1iYhkm0Oq9iXjrL3tsXA== - dependencies: - normalize-package-data "^3.0.0" - npm-package-arg "^8.1.0" - npm-registry-fetch "^9.0.0" - semver "^7.1.3" - ssri "^8.0.0" - -lines-and-columns@^1.1.6: - version "1.1.6" - resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" - integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= - -lint-staged@11.1.1: - version "11.1.1" - resolved "https://registry.npmjs.org/lint-staged/-/lint-staged-11.1.1.tgz#9c2018b872654cf80b2b1ff5a10b6b74aef6e300" - integrity sha512-eTNGe6i78PSUUH2BZi1gZmGmNfb8IeN4z2OzMYxSZ1qnP1WXKn1E7D+OHwLbRDm/wQINnzIj0bsKJ6lLVSuZiQ== - dependencies: - chalk "^4.1.1" - cli-truncate "^2.1.0" - commander "^7.2.0" - cosmiconfig "^7.0.0" - debug "^4.3.1" - dedent "^0.7.0" - enquirer "^2.3.6" - execa "^5.0.0" - listr2 "^3.8.2" - log-symbols "^4.1.0" - micromatch "^4.0.4" - normalize-path "^3.0.0" - please-upgrade-node "^3.2.0" - string-argv "0.3.1" - stringify-object "^3.3.0" - -listr2@^3.8.2: - version "3.8.2" - resolved "https://registry.npmjs.org/listr2/-/listr2-3.8.2.tgz#99b138ad1cfb08f1b0aacd422972e49b2d814b99" - integrity sha512-E28Fw7Zd3HQlCJKzb9a8C8M0HtFWQeucE+S8YrSrqZObuCLPRHMRrR8gNmYt65cU9orXYHwvN5agXC36lYt7VQ== - dependencies: - chalk "^4.1.1" - cli-truncate "^2.1.0" - figures "^3.2.0" - indent-string "^4.0.0" - log-update "^4.0.0" - p-map "^4.0.0" - rxjs "^6.6.7" - through "^2.3.8" - wrap-ansi "^7.0.0" - -livereload-js@^3.3.1: - version "3.3.1" - resolved "https://registry.npmjs.org/livereload-js/-/livereload-js-3.3.1.tgz#61f887468086762e61fb2987412cf9d1dda99202" - integrity sha512-CBu1gTEfzVhlOK1WASKAAJ9Qx1fHECTq0SUB67sfxwQssopTyvzqTlgl+c0h9pZ6V+Fzd2rc510ppuNusg9teQ== +libnpmaccess@8.0.6: + version "8.0.6" + resolved "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-8.0.6.tgz#73be4c236258babc0a0bca6d3b6a93a6adf937cf" + integrity sha512-uM8DHDEfYG6G5gVivVl+yQd4pH3uRclHC59lzIbSvy7b5FEwR+mU49Zq1jEyRtRFv7+M99mUW9S0wL/4laT4lw== + dependencies: + npm-package-arg "^11.0.2" + npm-registry-fetch "^17.0.1" + +libnpmpublish@9.0.9: + version "9.0.9" + resolved "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-9.0.9.tgz#e737378c09f09738377d2a276734be35cffb85e2" + integrity sha512-26zzwoBNAvX9AWOPiqqF6FG4HrSCPsHFkQm7nT+xU1ggAujL/eae81RnCv4CJ2In9q9fh10B88sYSzKCUh/Ghg== + dependencies: + ci-info "^4.0.0" + normalize-package-data "^6.0.1" + npm-package-arg "^11.0.2" + npm-registry-fetch "^17.0.1" + proc-log "^4.2.0" + semver "^7.3.7" + sigstore "^2.2.0" + ssri "^10.0.6" + +lilconfig@^3.1.3: + version "3.1.3" + resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz#a1bcfd6257f9585bf5ae14ceeebb7b559025e4c4" + integrity sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw== -livereload@^0.9.1: - version "0.9.2" - resolved "https://registry.npmjs.org/livereload/-/livereload-0.9.2.tgz#718d219ba8c796c4c8dda70ed62186f559da5c72" - integrity sha512-pDsYKwFBCm663fyYBgqQP8oHvJyL2YPHeVLnrDoWAL7p9Tz1ep/P5LCKL5EfmGmBsFok3N5ZqvBYgoUdod5slg== - dependencies: - chokidar "^3.5.0" - livereload-js "^3.3.1" - opts ">= 1.2.0" - ws "^7.4.3" +lines-and-columns@2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz#b2f0badedb556b747020ab8ea7f0373e22efac1b" + integrity sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w== -load-json-file@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" - integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +lint-staged@16.1.2: + version "16.1.2" + resolved "https://registry.npmjs.org/lint-staged/-/lint-staged-16.1.2.tgz#8cb84daa844f39c7a9790dd2c0caa327125ef059" + integrity sha512-sQKw2Si2g9KUZNY3XNvRuDq4UJqpHwF0/FQzZR2M7I5MvtpWvibikCjUVJzZdGE0ByurEl3KQNvsGetd1ty1/Q== + dependencies: + chalk "^5.4.1" + commander "^14.0.0" + debug "^4.4.1" + lilconfig "^3.1.3" + listr2 "^8.3.3" + micromatch "^4.0.8" + nano-spawn "^1.0.2" + pidtree "^0.6.0" + string-argv "^0.3.2" + yaml "^2.8.0" + +listr2@^8.3.3: + version "8.3.3" + resolved "https://registry.npmjs.org/listr2/-/listr2-8.3.3.tgz#815fc8f738260ff220981bf9e866b3e11e8121bf" + integrity sha512-LWzX2KsqcB1wqQ4AHgYb4RsDXauQiqhjLk+6hjbaeHG4zpjjVAB6wC/gz6X0l+Du1cN3pUB5ZlrvTbhGSNnUQQ== + dependencies: + cli-truncate "^4.0.0" + colorette "^2.0.20" + eventemitter3 "^5.0.1" + log-update "^6.1.0" + rfdc "^1.4.1" + wrap-ansi "^9.0.0" + +load-json-file@6.2.0: + version "6.2.0" + resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-6.2.0.tgz#5c7770b42cafa97074ca2848707c61662f4251a1" + integrity sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ== dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - pinkie-promise "^2.0.0" - strip-bom "^2.0.0" + graceful-fs "^4.1.15" + parse-json "^5.0.0" + strip-bom "^4.0.0" + type-fest "^0.6.0" load-json-file@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" - integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= + integrity sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw== dependencies: graceful-fs "^4.1.2" parse-json "^4.0.0" pify "^3.0.0" strip-bom "^3.0.0" -load-json-file@^6.2.0: - version "6.2.0" - resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-6.2.0.tgz#5c7770b42cafa97074ca2848707c61662f4251a1" - integrity sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ== - dependencies: - graceful-fs "^4.1.15" - parse-json "^5.0.0" - strip-bom "^4.0.0" - type-fest "^0.6.0" - locate-path@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + integrity sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA== dependencies: p-locate "^2.0.0" path-exists "^3.0.0" -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - locate-path@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" @@ -7155,67 +5331,84 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" -lodash._reinterpolate@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" - integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= +locate-path@^7.2.0: + version "7.2.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz#69cb1779bd90b35ab1e771e1f2f89a202c2a8a8a" + integrity sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA== + dependencies: + p-locate "^6.0.0" + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== lodash.clonedeep@^4.5.0: version "4.5.0" resolved "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" - integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= + integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ== -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= +lodash.isfunction@^3.0.9: + version "3.0.9" + resolved "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz#06de25df4db327ac931981d1bdb067e5af68d051" + integrity sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw== lodash.ismatch@^4.4.0: version "4.4.0" resolved "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" - integrity sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc= + integrity sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g== + +lodash.isplainobject@^4.0.6: + version "4.0.6" + resolved "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== + +lodash.kebabcase@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" + integrity sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g== lodash.map@^4.5.1: version "4.6.0" resolved "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3" - integrity sha1-dx7Hg540c9nEzeKLGTlMNWL09tM= + integrity sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q== lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash.sortby@^4.7.0: - version "4.7.0" - resolved "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" - integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= +lodash.mergewith@^4.6.2: + version "4.6.2" + resolved "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz#617121f89ac55f59047c7aec1ccd6654c6590f55" + integrity sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ== -lodash.template@^4.0.2, lodash.template@^4.5.0: - version "4.5.0" - resolved "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" - integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== - dependencies: - lodash._reinterpolate "^3.0.0" - lodash.templatesettings "^4.0.0" +lodash.snakecase@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d" + integrity sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw== -lodash.templatesettings@^4.0.0: - version "4.2.0" - resolved "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" - integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== - dependencies: - lodash._reinterpolate "^3.0.0" +lodash.startcase@^4.4.0: + version "4.4.0" + resolved "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz#9436e34ed26093ed7ffae1936144350915d9add8" + integrity sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg== + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== -lodash.truncate@^4.4.2: - version "4.4.2" - resolved "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" - integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= +lodash.upperfirst@^4.3.1: + version "4.3.1" + resolved "https://registry.npmjs.org/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz#1365edf431480481ef0d1c68957a5ed99d49f7ce" + integrity sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg== -lodash@4.17.15, lodash@4.x, lodash@^3.3.1, lodash@^4.17.12, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.5.1, lodash@^4.7.0: +lodash@4.17.21, lodash@^4.17.21: version "4.17.21" resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -log-symbols@^4.1.0: +log-symbols@^4.0.0, log-symbols@^4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== @@ -7223,46 +5416,31 @@ log-symbols@^4.1.0: chalk "^4.1.0" is-unicode-supported "^0.1.0" -log-update@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/log-update/-/log-update-1.0.2.tgz#19929f64c4093d2d2e7075a1dad8af59c296b8d1" - integrity sha1-GZKfZMQJPS0ucHWh2tivWcKWuNE= - dependencies: - ansi-escapes "^1.0.0" - cli-cursor "^1.0.2" - -log-update@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" - integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== +log-update@^6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz#1a04ff38166f94647ae1af562f4bd6a15b1b7cd4" + integrity sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w== dependencies: - ansi-escapes "^4.3.0" - cli-cursor "^3.1.0" - slice-ansi "^4.0.0" - wrap-ansi "^6.2.0" + ansi-escapes "^7.0.0" + cli-cursor "^5.0.0" + slice-ansi "^7.1.0" + strip-ansi "^7.1.0" + wrap-ansi "^9.0.0" longest@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/longest/-/longest-2.0.1.tgz#781e183296aa94f6d4d916dc335d0d17aefa23f8" - integrity sha1-eB4YMpaqlPbU2RbcM10NF676I/g= + integrity sha512-Ajzxb8CM6WAnFjgiloPsI3bF+WCxcvhdIG3KNA2KN962+tdBsHcuQ4k4qX/EcS/2CRkcc0iAkR956Nib6aXU/Q== -loud-rejection@^1.0.0: - version "1.6.0" - resolved "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" - integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= - dependencies: - currently-unhandled "^0.4.1" - signal-exit "^3.0.0" - -lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" - integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== +loupe@^3.1.0, loupe@^3.1.4: + version "3.1.4" + resolved "https://registry.npmjs.org/loupe/-/loupe-3.1.4.tgz#784a0060545cb38778ffb19ccde44d7870d5fdd9" + integrity sha512-wJzkKwJrheKtknCOKNEtDK4iqg/MxmZheEMtSTYvnzRdEYaZzmgH976nenp8WdJRdx5Vc1X/9MO0Oszl6ezeXg== -lowercase-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" - integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== +lru-cache@^10.0.1, lru-cache@^10.2.0, lru-cache@^10.2.2: + version "10.4.3" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" + integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== lru-cache@^5.1.1: version "5.1.1" @@ -7278,6 +5456,29 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" +magic-string@^0.30.17: + version "0.30.17" + resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz#450a449673d2460e5bbcfba9a61916a1714c7453" + integrity sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA== + dependencies: + "@jridgewell/sourcemap-codec" "^1.5.0" + +magicast@^0.3.5: + version "0.3.5" + resolved "https://registry.npmjs.org/magicast/-/magicast-0.3.5.tgz#8301c3c7d66704a0771eb1bad74274f0ec036739" + integrity sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ== + dependencies: + "@babel/parser" "^7.25.4" + "@babel/types" "^7.25.4" + source-map-js "^1.2.0" + +make-dir@4.0.0, make-dir@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" + integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== + dependencies: + semver "^7.5.3" + make-dir@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" @@ -7286,115 +5487,65 @@ make-dir@^2.1.0: pify "^4.0.1" semver "^5.6.0" -make-dir@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== +make-fetch-happen@^13.0.0, make-fetch-happen@^13.0.1: + version "13.0.1" + resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.1.tgz#273ba2f78f45e1f3a6dca91cede87d9fa4821e36" + integrity sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA== dependencies: - semver "^6.0.0" - -make-error@1.x: - version "1.3.5" - resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8" - integrity sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g== - -make-fetch-happen@^8.0.9: - version "8.0.14" - resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-8.0.14.tgz#aaba73ae0ab5586ad8eaa68bd83332669393e222" - integrity sha512-EsS89h6l4vbfJEtBZnENTOFk8mCRpY5ru36Xe5bcX1KYIli2mkSHqoFsp5O1wMDvTJJzxe/4THpCTtygjeeGWQ== - dependencies: - agentkeepalive "^4.1.3" - cacache "^15.0.5" - http-cache-semantics "^4.1.0" - http-proxy-agent "^4.0.1" - https-proxy-agent "^5.0.0" + "@npmcli/agent" "^2.0.0" + cacache "^18.0.0" + http-cache-semantics "^4.1.1" is-lambda "^1.0.1" - lru-cache "^6.0.0" - minipass "^3.1.3" - minipass-collect "^1.0.2" - minipass-fetch "^1.3.2" + minipass "^7.0.2" + minipass-fetch "^3.0.0" minipass-flush "^1.0.5" minipass-pipeline "^1.2.4" + negotiator "^0.6.3" + proc-log "^4.2.0" promise-retry "^2.0.1" - socks-proxy-agent "^5.0.0" - ssri "^8.0.0" + ssri "^10.0.0" -makeerror@1.0.x: - version "1.0.11" - resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" - integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= - dependencies: - tmpl "1.0.x" - -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= - -map-obj@^1.0.0, map-obj@^1.0.1: +map-obj@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" - integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= - -map-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz#a65cd29087a92598b8791257a523e021222ac1f9" - integrity sha1-plzSkIepJZi4eRJXpSPgISIqwfk= + integrity sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg== map-obj@^4.0.0: - version "4.1.0" - resolved "https://registry.npmjs.org/map-obj/-/map-obj-4.1.0.tgz#b91221b542734b9f14256c0132c897c5d7256fd5" - integrity sha512-glc9y00wgtwcDmp7GaE/0b0OnxpNJsVf3ael/An6Fe2Q51LLwN1er6sdomLRzz5h0+yMpiYLhWYF5R7HeqVd4g== - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= - dependencies: - object-visit "^1.0.0" - -marked@^1.2.9: - version "1.2.9" - resolved "https://registry.npmjs.org/marked/-/marked-1.2.9.tgz#53786f8b05d4c01a2a5a76b7d1ec9943d29d72dc" - integrity sha512-H8lIX2SvyitGX+TRdtS06m1jHMijKN/XjfH6Ooii9fvxMlh8QdqBfBDkGUpMWH2kQNrtixjzYUa3SH8ROTgRRw== + version "4.3.0" + resolved "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" + integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== -medium-zoom@^1.0.6: - version "1.0.6" - resolved "https://registry.npmjs.org/medium-zoom/-/medium-zoom-1.0.6.tgz#9247f21ca9313d8bbe9420aca153a410df08d027" - integrity sha512-UdiUWfvz9fZMg1pzf4dcuqA0W079o0mpqbTnOz5ip4VGYX96QjmbM+OgOU/0uOzAytxC0Ny4z+VcYQnhdifimg== - -meow@^3.3.0: - version "3.7.0" - resolved "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" - integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs= - dependencies: - camelcase-keys "^2.0.0" - decamelize "^1.1.2" - loud-rejection "^1.0.0" - map-obj "^1.0.1" - minimist "^1.1.3" - normalize-package-data "^2.3.4" - object-assign "^4.0.1" - read-pkg-up "^1.0.1" - redent "^1.0.0" - trim-newlines "^1.0.0" - -meow@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/meow/-/meow-5.0.0.tgz#dfc73d63a9afc714a5e371760eb5c88b91078aa4" - integrity sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig== - dependencies: - camelcase-keys "^4.0.0" - decamelize-keys "^1.0.0" - loud-rejection "^1.0.0" - minimist-options "^3.0.1" - normalize-package-data "^2.3.4" - read-pkg-up "^3.0.0" - redent "^2.0.0" - trim-newlines "^2.0.0" - yargs-parser "^10.0.0" +mark.js@8.11.1: + version "8.11.1" + resolved "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz#180f1f9ebef8b0e638e4166ad52db879beb2ffc5" + integrity sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ== -meow@^8.0.0: +math-intrinsics@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" + integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== + +mdast-util-to-hast@^13.0.0: + version "13.2.0" + resolved "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz#5ca58e5b921cc0a3ded1bc02eed79a4fe4fe41f4" + integrity sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA== + dependencies: + "@types/hast" "^3.0.0" + "@types/mdast" "^4.0.0" + "@ungap/structured-clone" "^1.0.0" + devlop "^1.0.0" + micromark-util-sanitize-uri "^2.0.0" + trim-lines "^3.0.0" + unist-util-position "^5.0.0" + unist-util-visit "^5.0.0" + vfile "^6.0.0" + +meow@^12.0.1: + version "12.1.1" + resolved "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz#e558dddbab12477b69b2e9a2728c327f191bace6" + integrity sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw== + +meow@^8.1.2: version "8.1.2" resolved "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz#bcbe45bda0ee1729d350c03cffc8395a36c4e897" integrity sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q== @@ -7421,87 +5572,127 @@ merge2@^1.3.0: resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -merge@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/merge/-/merge-1.2.1.tgz#38bebf80c3220a8a487b6fcfb3941bb11720c145" - integrity sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ== - -merge@^2.1.0: +merge@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/merge/-/merge-2.1.1.tgz#59ef4bf7e0b3e879186436e8481c06a6c162ca98" integrity sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w== -micromatch@^3.0.4: - version "3.1.10" - resolved "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" +micromark-util-character@^2.0.0: + version "2.1.1" + resolved "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz#2f987831a40d4c510ac261e89852c4e9703ccda6" + integrity sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q== + dependencies: + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" -micromatch@^4.0.2, micromatch@^4.0.4: - version "4.0.4" - resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" - integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== +micromark-util-encode@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz#0d51d1c095551cfaac368326963cf55f15f540b8" + integrity sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw== + +micromark-util-sanitize-uri@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz#ab89789b818a58752b73d6b55238621b7faa8fd7" + integrity sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ== dependencies: - braces "^3.0.1" - picomatch "^2.2.3" + micromark-util-character "^2.0.0" + micromark-util-encode "^2.0.0" + micromark-util-symbol "^2.0.0" + +micromark-util-symbol@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz#e5da494e8eb2b071a0d08fb34f6cefec6c0a19b8" + integrity sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q== -mime-db@1.42.0: - version "1.42.0" - resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.42.0.tgz#3e252907b4c7adb906597b4b65636272cf9e7bac" - integrity sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ== +micromark-util-types@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz#f00225f5f5a0ebc3254f96c36b6605c4b393908e" + integrity sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA== -mime-types@^2.1.12, mime-types@~2.1.19: - version "2.1.25" - resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.25.tgz#39772d46621f93e2a80a856c53b86a62156a6437" - integrity sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg== +micromatch@^4.0.2, micromatch@^4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== dependencies: - mime-db "1.42.0" + braces "^3.0.3" + picomatch "^2.3.1" -mime@1.6.0: - version "1.6.0" - resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -mimic-response@^1.0.0, mimic-response@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" - integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== +mimic-function@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz#acbe2b3349f99b9deaca7fb70e48b83e94e67076" + integrity sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA== min-indent@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== -minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== +minimatch@3.0.5: + version "3.0.5" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz#4da8f1290ee0f0f8e83d60ca69f8f134068604a3" + integrity sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@9.0.3: + version "9.0.3" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" + integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" +minimatch@^5.0.1: + version "5.1.6" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^8.0.2: + version "8.0.4" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz#847c1b25c014d4e9a7f68aaf63dedd668a626229" + integrity sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^9.0.0, minimatch@^9.0.4: + version "9.0.5" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" + +"minimatch@^9.0.3 || ^10.0.1": + version "10.0.3" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz#cf7a0314a16c4d9ab73a7730a0e8e3c3502d47aa" + integrity sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw== + dependencies: + "@isaacs/brace-expansion" "^5.0.0" + minimist-options@4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" @@ -7511,46 +5702,33 @@ minimist-options@4.1.0: is-plain-obj "^1.1.0" kind-of "^6.0.3" -minimist-options@^3.0.1: - version "3.0.2" - resolved "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz#fba4c8191339e13ecf4d61beb03f070103f3d954" - integrity sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ== - dependencies: - arrify "^1.0.1" - is-plain-obj "^1.1.0" - -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= - -minimist@1.2.5, minimist@^1.2.0, minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== +minimist@1.2.7: + version "1.2.7" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" + integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== -minimist@^1.1.3: - version "1.2.0" - resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= +minimist@^1.2.5, minimist@^1.2.6, minimist@^1.2.8: + version "1.2.8" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== -minipass-collect@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" - integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== +minipass-collect@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz#1621bc77e12258a12c60d34e2276ec5c20680863" + integrity sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw== dependencies: - minipass "^3.0.0" + minipass "^7.0.3" -minipass-fetch@^1.3.0, minipass-fetch@^1.3.2: - version "1.3.3" - resolved "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.3.3.tgz#34c7cea038c817a8658461bf35174551dce17a0a" - integrity sha512-akCrLDWfbdAWkMLBxJEeWTdNsjML+dt5YgOI4gJ53vuO0vrmYQkUPxa6j6V65s9CcePIr2SSWqjT2EcrNseryQ== +minipass-fetch@^3.0.0: + version "3.0.5" + resolved "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz#f0f97e40580affc4a35cc4a1349f05ae36cb1e4c" + integrity sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg== dependencies: - minipass "^3.1.0" + minipass "^7.0.3" minipass-sized "^1.0.3" - minizlib "^2.0.0" + minizlib "^2.1.2" optionalDependencies: - encoding "^0.1.12" + encoding "^0.1.13" minipass-flush@^1.0.5: version "1.0.5" @@ -7559,15 +5737,7 @@ minipass-flush@^1.0.5: dependencies: minipass "^3.0.0" -minipass-json-stream@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz#7edbb92588fbfc2ff1db2fc10397acb7b6b44aa7" - integrity sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg== - dependencies: - jsonparse "^1.3.1" - minipass "^3.0.0" - -minipass-pipeline@^1.2.2, minipass-pipeline@^1.2.4: +minipass-pipeline@^1.2.4: version "1.2.4" resolved "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== @@ -7581,29 +5751,34 @@ minipass-sized@^1.0.3: dependencies: minipass "^3.0.0" -minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: - version "2.9.0" - resolved "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" - integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - -minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3: - version "3.1.3" - resolved "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" - integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== +minipass@^3.0.0: + version "3.3.6" + resolved "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" + integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== dependencies: yallist "^4.0.0" -minizlib@^1.2.1: - version "1.3.3" - resolved "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" - integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== - dependencies: - minipass "^2.9.0" +minipass@^4.2.4: + version "4.2.8" + resolved "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz#f0010f64393ecfc1d1ccb5f582bcaf45f48e1a3a" + integrity sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ== + +minipass@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" + integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== + +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.2, minipass@^7.0.3, minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== + +minisearch@^7.1.1: + version "7.1.2" + resolved "https://registry.npmjs.org/minisearch/-/minisearch-7.1.2.tgz#296ee8d1906cc378f7e57a3a71f07e5205a75df5" + integrity sha512-R1Pd9eF+MD5JYDDSPAp/q1ougKglm14uEkPMvQ/05RGmx6G9wvmLTrTI/Q5iPNJLYqNdsDQ7qTGIcNWR+FrHmA== -minizlib@^2.0.0, minizlib@^2.1.1: +minizlib@^2.1.1, minizlib@^2.1.2: version "2.1.2" resolved "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== @@ -7611,73 +5786,34 @@ minizlib@^2.0.0, minizlib@^2.1.1: minipass "^3.0.0" yallist "^4.0.0" -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -mkdirp-classic@^0.5.2: - version "0.5.3" - resolved "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" - integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== +mitt@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz#ea36cf0cc30403601ae074c8f77b7092cdab36d1" + integrity sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw== -mkdirp-infer-owner@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz#55d3b368e7d89065c38f32fd38e638f0ab61d316" - integrity sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw== +mkdirp@^0.5.1: + version "0.5.6" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== dependencies: - chownr "^2.0.0" - infer-owner "^1.0.4" - mkdirp "^1.0.3" + minimist "^1.2.6" -mkdirp@1.x, mkdirp@^1.0.3, mkdirp@^1.0.4: +mkdirp@^1.0.3: version "1.0.4" resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -mkdirp@^0.5.0: - version "0.5.1" - resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= - dependencies: - minimist "0.0.8" - -mkdirp@^0.5.1: - version "0.5.5" - resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== - dependencies: - minimist "^1.2.5" - -modify-values@^1.0.0: +modify-values@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== -ms@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -ms@2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - -ms@2.1.2, ms@^2.0.0: - version "2.1.2" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@^2.1.1: +ms@^2.1.3: version "2.1.3" resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -multimatch@^5.0.0: +multimatch@5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz#932b800963cea7a31a033328fa1e0c3a1874dbe6" integrity sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA== @@ -7688,127 +5824,87 @@ multimatch@^5.0.0: arrify "^2.0.1" minimatch "^3.0.4" -mute-stream@0.0.5: - version "0.0.5" - resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0" - integrity sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA= - -mute-stream@0.0.7: - version "0.0.7" - resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= - -mute-stream@0.0.8, mute-stream@~0.0.4: +mute-stream@0.0.8: version "0.0.8" resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" +mute-stream@1.0.0, mute-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz#e31bd9fe62f0aed23520aa4324ea6671531e013e" + integrity sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA== + +nano-spawn@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/nano-spawn/-/nano-spawn-1.0.2.tgz#9853795681f0e96ef6f39104c2e4347b6ba79bf6" + integrity sha512-21t+ozMQDAL/UGgQVBbZ/xXvNO10++ZPuTmKRO8k9V3AClVRht49ahtDjfY8l1q6nSHOrE5ASfthzH3ol6R/hg== + +nanoid@^3.3.11: + version "3.3.11" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b" + integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== + +napi-postinstall@^0.2.4: + version "0.2.4" + resolved "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.2.4.tgz#419697d0288cb524623e422f919624f22a5e4028" + integrity sha512-ZEzHJwBhZ8qQSbknHqYcdtQVr8zUgGyM/q6h6qAyhtyVMNrSgDhrC4disf03dYW0e+czXyLnZINnCTEkWy0eJg== natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= - -neo-async@^2.6.0: - version "2.6.1" - resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" - integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== -nested-error-stacks@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz#0fbdcf3e13fe4994781280524f8b96b0cdff9c61" - integrity sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug== +negotiator@^0.6.3: + version "0.6.4" + resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz#777948e2452651c570b712dd01c23e262713fff7" + integrity sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w== -node-fetch@^2.6.0, node-fetch@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" - integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== +neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== -node-gyp@^5.0.2: - version "5.0.7" - resolved "https://registry.npmjs.org/node-gyp/-/node-gyp-5.0.7.tgz#dd4225e735e840cf2870e4037c2ed9c28a31719e" - integrity sha512-K8aByl8OJD51V0VbUURTKsmdswkQQusIvlvmTyhHlIT1hBvaSxzdxpSle857XuXa7uc02UEZx9OR5aDxSWS5Qw== +node-fetch@2.6.7: + version "2.6.7" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== dependencies: - env-paths "^2.2.0" - glob "^7.1.4" - graceful-fs "^4.2.2" - mkdirp "^0.5.1" - nopt "^4.0.1" - npmlog "^4.1.2" - request "^2.88.0" - rimraf "^2.6.3" - semver "^5.7.1" - tar "^4.4.12" - which "^1.3.1" - -node-gyp@^7.1.0: - version "7.1.2" - resolved "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz#21a810aebb187120251c3bcec979af1587b188ae" - integrity sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ== + whatwg-url "^5.0.0" + +node-gyp@^10.0.0: + version "10.3.1" + resolved "https://registry.npmjs.org/node-gyp/-/node-gyp-10.3.1.tgz#1dd1a1a1c6c5c59da1a76aea06a062786b2c8a1a" + integrity sha512-Pp3nFHBThHzVtNY7U6JfPjvT/DTE8+o/4xKsLQtBoU+j2HLsGlhcfzflAoUreaJbNmYnX+LlLi0qjV8kpyO6xQ== dependencies: env-paths "^2.2.0" - glob "^7.1.4" - graceful-fs "^4.2.3" - nopt "^5.0.0" - npmlog "^4.1.2" - request "^2.88.2" - rimraf "^3.0.2" - semver "^7.3.2" - tar "^6.0.2" - which "^2.0.2" - -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= - -node-localstorage@^0.6.0: - version "0.6.0" - resolved "https://registry.npmjs.org/node-localstorage/-/node-localstorage-0.6.0.tgz#45a0601c6932dfde6644a23361f1be173c75d3af" - integrity sha1-RaBgHGky395mRKIzYfG+Fzx1068= - -node-modules-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" - integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= + exponential-backoff "^3.1.1" + glob "^10.3.10" + graceful-fs "^4.2.6" + make-fetch-happen "^13.0.0" + nopt "^7.0.0" + proc-log "^4.1.0" + semver "^7.3.5" + tar "^6.2.1" + which "^4.0.0" -node-releases@^1.1.71: - version "1.1.73" - resolved "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz#dd4e81ddd5277ff846b80b52bb40c49edf7a7b20" - integrity sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg== +node-machine-id@1.1.12: + version "1.1.12" + resolved "https://registry.npmjs.org/node-machine-id/-/node-machine-id-1.1.12.tgz#37904eee1e59b320bb9c5d6c0a59f3b469cb6267" + integrity sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ== -nopt@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" - integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= - dependencies: - abbrev "1" - osenv "^0.1.4" +node-releases@^2.0.19: + version "2.0.19" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314" + integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw== -nopt@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" - integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== +nopt@^7.0.0, nopt@^7.2.1: + version "7.2.1" + resolved "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz#1cac0eab9b8e97c9093338446eddd40b2c8ca1e7" + integrity sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w== dependencies: - abbrev "1" + abbrev "^2.0.0" -normalize-package-data@^2.0.0, normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.5.0: +normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== @@ -7818,342 +5914,242 @@ normalize-package-data@^2.0.0, normalize-package-data@^2.3.0, normalize-package- semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-package-data@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.0.tgz#1f8a7c423b3d2e85eb36985eaf81de381d01301a" - integrity sha512-6lUjEI0d3v6kFrtgA/lOx4zHCWULXsFNIjHolnZCKCTLA6m/G625cdn3O7eNmT0iD3jfo6HZ9cdImGZwf21prw== - dependencies: - hosted-git-info "^3.0.6" - resolve "^1.17.0" - semver "^7.3.2" - validate-npm-package-license "^3.0.1" - -normalize-package-data@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.2.tgz#cae5c410ae2434f9a6c1baa65d5bc3b9366c8699" - integrity sha512-6CdZocmfGaKnIHPVFhJJZ3GuR8SsLKvDANFp47Jmy51aKIr8akjAWTSxtpI+MBgBFdSMRyo4hMpDlT6dTffgZg== +normalize-package-data@^3.0.0, normalize-package-data@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e" + integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== dependencies: hosted-git-info "^4.0.1" - resolve "^1.20.0" + is-core-module "^2.5.0" semver "^7.3.4" validate-npm-package-license "^3.0.1" -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -normalize-url@^3.3.0: - version "3.3.0" - resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" - integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== - -normalize-url@^4.1.0: - version "4.5.0" - resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" - integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== - -npm-bundled@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" - integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== - dependencies: - npm-normalize-package-bin "^1.0.1" - -npm-install-checks@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-4.0.0.tgz#a37facc763a2fde0497ef2c6d0ac7c3fbe00d7b4" - integrity sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w== - dependencies: - semver "^7.1.1" - -npm-lifecycle@^3.1.5: - version "3.1.5" - resolved "https://registry.npmjs.org/npm-lifecycle/-/npm-lifecycle-3.1.5.tgz#9882d3642b8c82c815782a12e6a1bfeed0026309" - integrity sha512-lDLVkjfZmvmfvpvBzA4vzee9cn+Me4orq0QF8glbswJVEbIcSNWib7qGOffolysc3teCqbbPZZkzbr3GQZTL1g== - dependencies: - byline "^5.0.0" - graceful-fs "^4.1.15" - node-gyp "^5.0.2" - resolve-from "^4.0.0" - slide "^1.1.6" - uid-number "0.0.6" - umask "^1.1.0" - which "^1.3.1" - -npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" - integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== - -npm-package-arg@^8.0.0, npm-package-arg@^8.0.1: - version "8.1.1" - resolved "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.1.tgz#00ebf16ac395c63318e67ce66780a06db6df1b04" - integrity sha512-CsP95FhWQDwNqiYS+Q0mZ7FAEDytDZAkNxQqea6IaAFJTAY9Lhhqyl0irU/6PMc7BGfUmnsbHcqxJD7XuVM/rg== - dependencies: - hosted-git-info "^3.0.6" - semver "^7.0.0" - validate-npm-package-name "^3.0.0" - -npm-package-arg@^8.1.0: - version "8.1.0" - resolved "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.0.tgz#b5f6319418c3246a1c38e1a8fbaa06231bc5308f" - integrity sha512-/ep6QDxBkm9HvOhOg0heitSd7JHA1U7y1qhhlRlteYYAi9Pdb/ZV7FW5aHpkrpM8+P+4p/jjR8zCyKPBMBjSig== - dependencies: - hosted-git-info "^3.0.6" - semver "^7.0.0" - validate-npm-package-name "^3.0.0" - -npm-packlist@^2.1.4: - version "2.1.4" - resolved "https://registry.npmjs.org/npm-packlist/-/npm-packlist-2.1.4.tgz#40e96b2b43787d0546a574542d01e066640d09da" - integrity sha512-Qzg2pvXC9U4I4fLnUrBmcIT4x0woLtUgxUi9eC+Zrcv1Xx5eamytGAfbDWQ67j7xOcQ2VW1I3su9smVTIdu7Hw== - dependencies: - glob "^7.1.6" - ignore-walk "^3.0.3" - npm-bundled "^1.1.1" - npm-normalize-package-bin "^1.0.1" - -npm-pick-manifest@^6.0.0: - version "6.1.0" - resolved "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.0.tgz#2befed87b0fce956790f62d32afb56d7539c022a" - integrity sha512-ygs4k6f54ZxJXrzT0x34NybRlLeZ4+6nECAIbr2i0foTnijtS1TJiyzpqtuUAJOps/hO0tNDr8fRV5g+BtRlTw== - dependencies: - npm-install-checks "^4.0.0" - npm-package-arg "^8.0.0" - semver "^7.0.0" - -npm-registry-fetch@^9.0.0: - version "9.0.0" - resolved "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-9.0.0.tgz#86f3feb4ce00313bc0b8f1f8f69daae6face1661" - integrity sha512-PuFYYtnQ8IyVl6ib9d3PepeehcUeHN9IO5N/iCRhyg9tStQcqGQBRVHmfmMWPDERU3KwZoHFvbJ4FPXPspvzbA== - dependencies: - "@npmcli/ci-detect" "^1.0.0" - lru-cache "^6.0.0" - make-fetch-happen "^8.0.9" - minipass "^3.1.3" - minipass-fetch "^1.3.0" - minipass-json-stream "^1.0.1" - minizlib "^2.0.0" - npm-package-arg "^8.0.0" - -npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -npmlog@^4.1.2: - version "4.1.2" - resolved "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== +normalize-package-data@^6.0.0, normalize-package-data@^6.0.1: + version "6.0.2" + resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz#a7bc22167fe24025412bcff0a9651eb768b03506" + integrity sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g== dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - -nwsapi@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" - integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== - -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + hosted-git-info "^7.0.0" + semver "^7.3.5" + validate-npm-package-license "^3.0.4" -object-assign@^4.0.1, object-assign@^4.1.0: - version "4.1.1" - resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= +npm-bundled@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.1.tgz#cca73e15560237696254b10170d8f86dad62da25" + integrity sha512-+AvaheE/ww1JEwRHOrn4WHNzOxGtVp+adrg2AeZS/7KuxGUYFuBta98wYpfHBbJp6Tg6j1NKSEVHNcfZzJHQwQ== + dependencies: + npm-normalize-package-bin "^3.0.0" -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= +npm-install-checks@^6.0.0, npm-install-checks@^6.2.0: + version "6.3.0" + resolved "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.3.0.tgz#046552d8920e801fa9f919cad569545d60e826fe" + integrity sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw== dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" + semver "^7.1.1" -object-inspect@^1.10.3, object-inspect@^1.9.0: - version "1.10.3" - resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.3.tgz#c2aa7d2d09f50c99375704f7a0adf24c5782d369" - integrity sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw== +npm-normalize-package-bin@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz#25447e32a9a7de1f51362c61a559233b89947832" + integrity sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ== -object-keys@^1.0.12, object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== +npm-package-arg@11.0.2: + version "11.0.2" + resolved "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.2.tgz#1ef8006c4a9e9204ddde403035f7ff7d718251ca" + integrity sha512-IGN0IAwmhDJwy13Wc8k+4PEbTPhpJnMtfR53ZbOyjkvmEcLS4nCwp6mvMWjS5sUjeiW3mpx6cHmuhKEu9XmcQw== + dependencies: + hosted-git-info "^7.0.0" + proc-log "^4.0.0" + semver "^7.3.5" + validate-npm-package-name "^5.0.0" -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= +npm-package-arg@^11.0.0, npm-package-arg@^11.0.2: + version "11.0.3" + resolved "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.3.tgz#dae0c21199a99feca39ee4bfb074df3adac87e2d" + integrity sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw== dependencies: - isobject "^3.0.0" + hosted-git-info "^7.0.0" + proc-log "^4.0.0" + semver "^7.3.5" + validate-npm-package-name "^5.0.0" -object.assign@^4.1.0, object.assign@^4.1.2: - version "4.1.2" - resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" - integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== +npm-packlist@8.0.2, npm-packlist@^8.0.0: + version "8.0.2" + resolved "https://registry.npmjs.org/npm-packlist/-/npm-packlist-8.0.2.tgz#5b8d1d906d96d21c85ebbeed2cf54147477c8478" + integrity sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA== dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - has-symbols "^1.0.1" - object-keys "^1.1.1" + ignore-walk "^6.0.4" -object.getownpropertydescriptors@^2.0.3: - version "2.1.0" - resolved "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" - integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== +npm-pick-manifest@^9.0.0, npm-pick-manifest@^9.0.1: + version "9.1.0" + resolved "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-9.1.0.tgz#83562afde52b0b07cb6244361788d319ce7e8636" + integrity sha512-nkc+3pIIhqHVQr085X9d2JzPzLyjzQS96zbruppqC9aZRm/x8xx6xhI98gHtsfELP2bE+loHq8ZaHFHhe+NauA== dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" + npm-install-checks "^6.0.0" + npm-normalize-package-bin "^3.0.0" + npm-package-arg "^11.0.0" + semver "^7.3.5" -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= +npm-registry-fetch@^17.0.0, npm-registry-fetch@^17.0.1, npm-registry-fetch@^17.1.0: + version "17.1.0" + resolved "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-17.1.0.tgz#fb69e8e762d456f08bda2f5f169f7638fb92beb1" + integrity sha512-5+bKQRH0J1xG1uZ1zMNvxW0VEyoNWgJpY9UDuluPFLKDfJ9u2JmmjmTJV1srBGQOROfdBMiVvnH2Zvpbm+xkVA== dependencies: - isobject "^3.0.1" + "@npmcli/redact" "^2.0.0" + jsonparse "^1.3.1" + make-fetch-happen "^13.0.0" + minipass "^7.0.2" + minipass-fetch "^3.0.0" + minizlib "^2.1.2" + npm-package-arg "^11.0.0" + proc-log "^4.0.0" -object.values@^1.1.3: - version "1.1.4" - resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.4.tgz#0d273762833e816b693a637d30073e7051535b30" - integrity sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg== +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.2" + path-key "^3.0.0" -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= +"nx@>=17.1.2 < 21": + version "20.8.2" + resolved "https://registry.npmjs.org/nx/-/nx-20.8.2.tgz#c70f504fee1804015034d0f7b2c51871a25bda3a" + integrity sha512-mDKpbH3vEpUFDx0rrLh+tTqLq1PYU8KiD/R7OVZGd1FxQxghx2HOl32MiqNsfPcw6AvKlXhslbwIESV+N55FLQ== dependencies: - ee-first "1.1.1" + "@napi-rs/wasm-runtime" "0.2.4" + "@yarnpkg/lockfile" "^1.1.0" + "@yarnpkg/parsers" "3.0.2" + "@zkochan/js-yaml" "0.0.7" + axios "^1.8.3" + chalk "^4.1.0" + cli-cursor "3.1.0" + cli-spinners "2.6.1" + cliui "^8.0.1" + dotenv "~16.4.5" + dotenv-expand "~11.0.6" + enquirer "~2.3.6" + figures "3.2.0" + flat "^5.0.2" + front-matter "^4.0.2" + ignore "^5.0.4" + jest-diff "^29.4.1" + jsonc-parser "3.2.0" + lines-and-columns "2.0.3" + minimatch "9.0.3" + node-machine-id "1.1.12" + npm-run-path "^4.0.1" + open "^8.4.0" + ora "5.3.0" + resolve.exports "2.0.3" + semver "^7.5.3" + string-width "^4.2.3" + tar-stream "~2.2.0" + tmp "~0.2.1" + tsconfig-paths "^4.1.2" + tslib "^2.3.0" + yaml "^2.6.0" + yargs "^17.6.2" + yargs-parser "21.1.1" + optionalDependencies: + "@nx/nx-darwin-arm64" "20.8.2" + "@nx/nx-darwin-x64" "20.8.2" + "@nx/nx-freebsd-x64" "20.8.2" + "@nx/nx-linux-arm-gnueabihf" "20.8.2" + "@nx/nx-linux-arm64-gnu" "20.8.2" + "@nx/nx-linux-arm64-musl" "20.8.2" + "@nx/nx-linux-x64-gnu" "20.8.2" + "@nx/nx-linux-x64-musl" "20.8.2" + "@nx/nx-win32-arm64-msvc" "20.8.2" + "@nx/nx-win32-x64-msvc" "20.8.2" once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" -onetime@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" - integrity sha1-ofeDj4MUxRbwXs78vEzP4EtO14k= - -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= - dependencies: - mimic-fn "^1.0.0" - -onetime@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" - integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== - dependencies: - mimic-fn "^2.1.0" - -onetime@^5.1.2: +onetime@^5.1.0, onetime@^5.1.2: version "5.1.2" resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" -open@^6.4.0: - version "6.4.0" - resolved "https://registry.npmjs.org/open/-/open-6.4.0.tgz#5c13e96d0dc894686164f18965ecfe889ecfc8a9" - integrity sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg== +onetime@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz#9f16c92d8c9ef5120e3acd9dd9957cceecc1ab60" + integrity sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ== dependencies: - is-wsl "^1.1.0" + mimic-function "^5.0.0" -opencollective-postinstall@^2.0.2: - version "2.0.3" - resolved "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz#7a0fff978f6dbfa4d006238fbac98ed4198c3259" - integrity sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q== - -optionator@^0.8.1: - version "0.8.3" - resolved "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== +oniguruma-to-es@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-3.1.1.tgz#480e4bac4d3bc9439ac0d2124f0725e7a0d76d17" + integrity sha512-bUH8SDvPkH3ho3dvwJwfonjlQ4R80vjyvrU8YpxuROddv55vAEJrTuCuCVUhhsHbtlD9tGGbaNApGQckXhS8iQ== + dependencies: + emoji-regex-xs "^1.0.0" + regex "^6.0.1" + regex-recursion "^6.0.2" + +open@^8.4.0: + version "8.4.2" + resolved "https://registry.npmjs.org/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" + integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + +optionator@^0.9.3: + version "0.9.4" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" + integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== dependencies: deep-is "^0.1.3" fast-levenshtein "^2.0.6" levn "^0.4.1" prelude-ls "^1.2.1" type-check "^0.4.0" - word-wrap "^1.2.3" + word-wrap "^1.2.5" -"opts@>= 1.2.0": - version "2.0.2" - resolved "https://registry.npmjs.org/opts/-/opts-2.0.2.tgz#a17e189fbbfee171da559edd8a42423bc5993ce1" - integrity sha512-k41FwbcLnlgnFh69f4qdUfvDQ+5vaSDnVPFI/y5XuhKRq97EnVVneO9F1ESVCdiVu4fCS2L8usX3mU331hB7pg== +ora@5.3.0: + version "5.3.0" + resolved "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz#fb832899d3a1372fe71c8b2c534bbfe74961bb6f" + integrity sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g== + dependencies: + bl "^4.0.3" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + log-symbols "^4.0.0" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= +ora@^5.4.1: + version "5.4.1" + resolved "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" + integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== + dependencies: + bl "^4.1.0" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + is-unicode-supported "^0.1.0" + log-symbols "^4.1.0" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" -os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: +os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= - -osenv@^0.1.4: - version "0.1.5" - resolved "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - -p-cancelable@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" - integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== - -p-each-series@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/p-each-series/-/p-each-series-2.1.0.tgz#961c8dd3f195ea96c747e636b262b800a6b1af48" - integrity sha512-ZuRs1miPT4HrjFa+9fRfOFXxGJfORgelKV9f9nNOWw2gl6gVsRaVDOQP0+MI0G0wGKns1Yacsu0GjOFbTK0JFQ== - -p-event@^4.1.0: - version "4.2.0" - resolved "https://registry.npmjs.org/p-event/-/p-event-4.2.0.tgz#af4b049c8acd91ae81083ebd1e6f5cae2044c1b5" - integrity sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ== - dependencies: - p-timeout "^3.1.0" + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== p-finally@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== p-limit@^1.1.0: version "1.3.0" @@ -8162,41 +6158,34 @@ p-limit@^1.1.0: dependencies: p-try "^1.0.0" -p-limit@^2.0.0: +p-limit@^2.2.0: version "2.3.0" resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: p-try "^2.0.0" -p-limit@^2.2.0: - version "2.2.2" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz#61279b67721f5287aa1c13a9a7fbbc48c9291b1e" - integrity sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ== +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: - p-try "^2.0.0" + yocto-queue "^0.1.0" -p-limit@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.0.2.tgz#1664e010af3cadc681baafd3e2a437be7b0fb5fe" - integrity sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg== +p-limit@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz#914af6544ed32bfa54670b061cafcbd04984b644" + integrity sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ== dependencies: - p-try "^2.0.0" + yocto-queue "^1.0.0" p-locate@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg== dependencies: p-limit "^1.1.0" -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - p-locate@^4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" @@ -8211,24 +6200,31 @@ p-locate@^5.0.0: dependencies: p-limit "^3.0.2" -p-map-series@^2.1.0: +p-locate@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz#3da9a49d4934b901089dca3302fa65dc5a05c04f" + integrity sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw== + dependencies: + p-limit "^4.0.0" + +p-map-series@2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/p-map-series/-/p-map-series-2.1.0.tgz#7560d4c452d9da0c07e692fdbfe6e2c81a2a91f2" integrity sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q== -p-map@^4.0.0: +p-map@4.0.0, p-map@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== dependencies: aggregate-error "^3.0.0" -p-pipe@^3.1.0: +p-pipe@3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/p-pipe/-/p-pipe-3.1.0.tgz#48b57c922aa2e1af6a6404cb7c6bf0eb9cc8e60e" integrity sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw== -p-queue@^6.6.2: +p-queue@6.6.2: version "6.6.2" resolved "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz#2068a9dcf8e67dd0ec3e7a2bcb76810faa85e426" integrity sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ== @@ -8236,12 +6232,12 @@ p-queue@^6.6.2: eventemitter3 "^4.0.4" p-timeout "^3.2.0" -p-reduce@^2.0.0, p-reduce@^2.1.0: +p-reduce@2.1.0, p-reduce@^2.0.0, p-reduce@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz#09408da49507c6c274faa31f28df334bc712b64a" integrity sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw== -p-timeout@^3.1.0, p-timeout@^3.2.0: +p-timeout@^3.2.0: version "3.2.0" resolved "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== @@ -8251,54 +6247,47 @@ p-timeout@^3.1.0, p-timeout@^3.2.0: p-try@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== p-try@^2.0.0: version "2.2.0" resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -p-waterfall@^2.1.1: +p-waterfall@2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/p-waterfall/-/p-waterfall-2.1.1.tgz#63153a774f472ccdc4eb281cdb2967fcf158b2ee" integrity sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw== dependencies: p-reduce "^2.0.0" -package-json@^6.3.0: - version "6.5.0" - resolved "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" - integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== - dependencies: - got "^9.6.0" - registry-auth-token "^4.0.0" - registry-url "^5.0.0" - semver "^6.2.0" - -pacote@^11.2.6: - version "11.2.7" - resolved "https://registry.npmjs.org/pacote/-/pacote-11.2.7.tgz#a44a9d40d4feac524e9ce78d77e2b390181d8afc" - integrity sha512-ogxPor11v/rnU9ukwLlI2dPx22q9iob1+yZyqSwerKsOvBMhU9e+SJHtxY4y2N0MRH4/5jGsGiRLsZeJWyM4dQ== - dependencies: - "@npmcli/git" "^2.0.1" - "@npmcli/installed-package-contents" "^1.0.6" - "@npmcli/promise-spawn" "^1.2.0" - "@npmcli/run-script" "^1.8.2" - cacache "^15.0.5" - chownr "^2.0.0" - fs-minipass "^2.1.0" - infer-owner "^1.0.4" - minipass "^3.1.3" - mkdirp "^1.0.3" - npm-package-arg "^8.0.1" - npm-packlist "^2.1.4" - npm-pick-manifest "^6.0.0" - npm-registry-fetch "^9.0.0" +package-json-from-dist@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" + integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== + +pacote@^18.0.0, pacote@^18.0.6: + version "18.0.6" + resolved "https://registry.npmjs.org/pacote/-/pacote-18.0.6.tgz#ac28495e24f4cf802ef911d792335e378e86fac7" + integrity sha512-+eK3G27SMwsB8kLIuj4h1FUhHtwiEUo21Tw8wNjmvdlpOEr613edv+8FUsTj/4F/VN5ywGE19X18N7CC2EJk6A== + dependencies: + "@npmcli/git" "^5.0.0" + "@npmcli/installed-package-contents" "^2.0.1" + "@npmcli/package-json" "^5.1.0" + "@npmcli/promise-spawn" "^7.0.0" + "@npmcli/run-script" "^8.0.0" + cacache "^18.0.0" + fs-minipass "^3.0.0" + minipass "^7.0.2" + npm-package-arg "^11.0.0" + npm-packlist "^8.0.0" + npm-pick-manifest "^9.0.0" + npm-registry-fetch "^17.0.0" + proc-log "^4.0.0" promise-retry "^2.0.1" - read-package-json-fast "^2.0.1" - rimraf "^3.0.2" - ssri "^8.0.1" - tar "^6.1.0" + sigstore "^2.2.0" + ssri "^10.0.0" + tar "^6.1.11" parent-module@^1.0.0: version "1.0.1" @@ -8307,42 +6296,24 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parent-require@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/parent-require/-/parent-require-1.0.0.tgz#746a167638083a860b0eef6732cb27ed46c32977" - integrity sha1-dGoWdjgIOoYLDu9nMssn7UbDKXc= - -parse-github-repo-url@^1.3.0: - version "1.4.1" - resolved "https://registry.npmjs.org/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz#9e7d8bb252a6cb6ba42595060b7bf6df3dbc1f50" - integrity sha1-nn2LslKmy2ukJZUGC3v23z28H1A= - -parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" - integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= +parse-conflict-json@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/parse-conflict-json/-/parse-conflict-json-3.0.1.tgz#67dc55312781e62aa2ddb91452c7606d1969960c" + integrity sha512-01TvEktc68vwbJOtWZluyWeVGWjP+bZwXtPDMQVbBKzbJ/vZBif0L69KH1+cHv1SZ6e0FKLvjyHe8mqsIqYOmw== dependencies: - error-ex "^1.2.0" + json-parse-even-better-errors "^3.0.0" + just-diff "^6.0.0" + just-diff-apply "^5.2.0" parse-json@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== dependencies: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" -parse-json@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f" - integrity sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - lines-and-columns "^1.1.6" - -parse-json@^5.2.0: +parse-json@^5.0.0, parse-json@^5.2.0: version "5.2.0" resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== @@ -8352,84 +6323,71 @@ parse-json@^5.2.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" +parse-json@^8.0.0: + version "8.1.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-8.1.0.tgz#91cdc7728004e955af9cb734de5684733b24a717" + integrity sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA== + dependencies: + "@babel/code-frame" "^7.22.13" + index-to-position "^0.1.2" + type-fest "^4.7.1" + parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" - integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= - -parse-path@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/parse-path/-/parse-path-4.0.1.tgz#0ec769704949778cb3b8eda5e994c32073a1adff" - integrity sha512-d7yhga0Oc+PwNXDvQ0Jv1BuWkLVPXcAoQ/WREgd6vNNoKYaW52KI+RdOFjI63wjkmps9yUE8VS4veP+AgpQ/hA== - dependencies: - is-ssh "^1.3.0" - protocols "^1.4.0" + integrity sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q== -parse-url@^5.0.0: - version "5.0.1" - resolved "https://registry.npmjs.org/parse-url/-/parse-url-5.0.1.tgz#99c4084fc11be14141efa41b3d117a96fcb9527f" - integrity sha512-flNUPP27r3vJpROi0/R3/2efgKkyXqnXwyP1KQ2U0SfFRgdizOdWfvrrvJg1LuOoxs7GQhmxJlq23IpQ/BkByg== +parse-path@^7.0.0: + version "7.1.0" + resolved "https://registry.npmjs.org/parse-path/-/parse-path-7.1.0.tgz#41fb513cb122831807a4c7b29c8727947a09d8c6" + integrity sha512-EuCycjZtfPcjWk7KTksnJ5xPMvWGA/6i4zrLYhRG0hGvC3GPU/jGUj3Cy+ZR0v30duV3e23R95T1lE2+lsndSw== dependencies: - is-ssh "^1.3.0" - normalize-url "^3.3.0" - parse-path "^4.0.0" - protocols "^1.4.0" - -parse5@6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" - integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== - -parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + protocols "^2.0.0" -path-exists@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" - integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= +parse-url@^8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/parse-url/-/parse-url-8.1.0.tgz#972e0827ed4b57fc85f0ea6b0d839f0d8a57a57d" + integrity sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w== dependencies: - pinkie-promise "^2.0.0" + parse-path "^7.0.0" path-exists@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== path-exists@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== +path-exists@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz#a6aad9489200b21fab31e49cf09277e5116fb9e7" + integrity sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ== + path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== -path-parse@^1.0.6: +path-parse@^1.0.7: version "1.0.7" resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -path-type@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" - integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= +path-scurry@^1.11.1, path-scurry@^1.6.1: + version "1.11.1" + resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" + integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== dependencies: - graceful-fs "^4.1.2" - pify "^2.0.0" - pinkie-promise "^2.0.0" + lru-cache "^10.2.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" path-type@^3.0.0: version "3.0.0" @@ -8438,79 +6396,66 @@ path-type@^3.0.0: dependencies: pify "^3.0.0" -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== +pathe@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz#3ecbec55421685b70a9da872b2cff3e1cbed1716" + integrity sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w== -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= +pathval@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz#7e2550b422601d4f6b8e26f1301bc8f15a741a25" + integrity sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA== -picomatch@^2.0.4: - version "2.2.2" - resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" - integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== +perfect-debounce@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz#9c2e8bc30b169cc984a58b7d5b28049839591d2a" + integrity sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA== -picomatch@^2.2.1, picomatch@^2.2.3: - version "2.3.0" - resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" - integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== +picocolors@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + +picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +picomatch@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz#77c742931e8f3b8820946c76cd0c1f13730d1dab" + integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg== + +picomatch@^4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz#796c76136d1eead715db1e7bad785dedd695a042" + integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q== + +pidtree@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz#90ad7b6d42d5841e69e0a2419ef38f8883aa057c" + integrity sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g== + +pify@5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f" + integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== -pify@^2.0.0, pify@^2.3.0: +pify@^2.3.0: version "2.3.0" resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== pify@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== pify@^4.0.1: version "4.0.1" resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== -pify@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f" - integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= - -pirates@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" - integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== - dependencies: - node-modules-regexp "^1.0.0" - -pkg-dir@5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz#a02d6aebe6ba133a928f74aec20bafdfe6b8e760" - integrity sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA== - dependencies: - find-up "^5.0.0" - -pkg-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" - integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= - dependencies: - find-up "^2.1.0" - pkg-dir@^4.2.0: version "4.2.0" resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" @@ -8518,104 +6463,83 @@ pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" -pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" - integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= +pkg-dir@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-8.0.0.tgz#8f3de8ba83d46b72a05c80bfd4e579f060fa91e2" + integrity sha512-4peoBq4Wks0riS0z8741NVv+/8IiTvqnZAr8QGgtdifrtpdXbNw/FxRS1l6NFqm4EMzuS0EDqNNx4XGaz8cuyQ== dependencies: - find-up "^2.1.0" + find-up-simple "^1.0.0" -please-upgrade-node@^3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" - integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== +postcss-selector-parser@^6.0.10: + version "6.1.2" + resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz#27ecb41fb0e3b6ba7a1ec84fff347f734c7929de" + integrity sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg== dependencies: - semver-compare "^1.0.0" + cssesc "^3.0.0" + util-deprecate "^1.0.2" -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= +postcss@^8.4.43, postcss@^8.5.6: + version "8.5.6" + resolved "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz#2825006615a619b4f62a9e7426cc120b349a8f3c" + integrity sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg== + dependencies: + nanoid "^3.3.11" + picocolors "^1.1.1" + source-map-js "^1.2.1" + +preact@^10.0.0: + version "10.26.4" + resolved "https://registry.npmjs.org/preact/-/preact-10.26.4.tgz#b514f4249453a4247c82ff6d1267d59b7d78f9f9" + integrity sha512-KJhO7LBFTjP71d83trW+Ilnjbo+ySsaAgCfXOXUlmGzJ4ygYPWmysm77yg4emwfmoz3b22yvH5IsVFHbhUaH5w== prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= - -prepend-http@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" - integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= - -prettier@^2.0.5: - version "2.3.2" - resolved "https://registry.npmjs.org/prettier/-/prettier-2.3.2.tgz#ef280a05ec253712e486233db5c6f23441e7342d" - integrity sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ== - -pretty-format@^26.0.0: - version "26.6.0" - resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.0.tgz#1e1030e3c70e3ac1c568a5fd15627671ea159391" - integrity sha512-Uumr9URVB7bm6SbaByXtx+zGlS+0loDkFMHP0kHahMjmfCtmFY03iqd++5v3Ld6iB5TocVXlBN/T+DXMn9d4BA== - dependencies: - "@jest/types" "^26.6.0" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" - react-is "^16.12.0" - -pretty-format@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" - integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== - dependencies: - "@jest/types" "^26.6.2" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" - react-is "^17.0.1" - -pretty-format@^27.0.1: - version "27.0.1" - resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-27.0.1.tgz#c4094621dfbd3e8ab751964d1cf01edc6f88474d" - integrity sha512-qE+0J6c/gd+R6XTcQgPJMc5hMJNsxzSF5p8iZSbMZ7GQzYGlSLNkh2P80Wa2dbF4gEVUsJEgcrBY+1L2/j265w== - dependencies: - "@jest/types" "^27.0.1" - ansi-regex "^5.0.0" - ansi-styles "^5.0.0" - react-is "^17.0.1" +prettier@^3.5.3: + version "3.6.2" + resolved "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz#ccda02a1003ebbb2bfda6f83a074978f608b9393" + integrity sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ== -pretty-format@^27.0.6: - version "27.0.6" - resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-27.0.6.tgz#ab770c47b2c6f893a21aefc57b75da63ef49a11f" - integrity sha512-8tGD7gBIENgzqA+UBzObyWqQ5B778VIFZA/S66cclyd5YkFLYs2Js7gxDKf0MXtTc9zcS7t1xhdfcElJ3YIvkQ== +pretty-format@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" + integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== dependencies: - "@jest/types" "^27.0.6" - ansi-regex "^5.0.0" + "@jest/schemas" "^29.6.3" ansi-styles "^5.0.0" - react-is "^17.0.1" + react-is "^18.0.0" -prismjs@^1.23.0: - version "1.24.0" - resolved "https://registry.npmjs.org/prismjs/-/prismjs-1.24.0.tgz#0409c30068a6c52c89ef7f1089b3ca4de56be2ac" - integrity sha512-SqV5GRsNqnzCL8k5dfAjCNhUrF3pR0A9lTDSCUZeh/LIshheXJEaP0hwLz2t4XHivd2J/v2HR+gRnigzeKe3cQ== +proc-log@^4.0.0, proc-log@^4.1.0, proc-log@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz#b6f461e4026e75fdfe228b265e9f7a00779d7034" + integrity sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA== process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -progress@^2.0.0: - version "2.0.3" - resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== +proggy@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/proggy/-/proggy-2.0.0.tgz#154bb0e41d3125b518ef6c79782455c2c47d94e1" + integrity sha512-69agxLtnI8xBs9gUGqEnK26UfiexpHy+KUpBQWabiytQjnn5wFY8rklAi7GRfABIuPNnQ/ik48+LGLkYYJcy4A== + +promise-all-reject-late@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz#f8ebf13483e5ca91ad809ccc2fcf25f26f8643c2" + integrity sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw== + +promise-call-limit@^3.0.1: + version "3.0.2" + resolved "https://registry.npmjs.org/promise-call-limit/-/promise-call-limit-3.0.2.tgz#524b7f4b97729ff70417d93d24f46f0265efa4f9" + integrity sha512-mRPQO2T1QQVw11E7+UdCJu7S61eJVWknzml9sC1heAdj1jxl0fWMBypIt9ZOcLFf8FkG995ZD7RnVk7HH72fZw== promise-inflight@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= + integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== promise-retry@^2.0.1: version "2.0.1" @@ -8625,177 +6549,73 @@ promise-retry@^2.0.1: err-code "^2.0.2" retry "^0.12.0" -prompts@^2.0.1: - version "2.3.0" - resolved "https://registry.npmjs.org/prompts/-/prompts-2.3.0.tgz#a444e968fa4cc7e86689a74050685ac8006c4cc4" - integrity sha512-NfbbPPg/74fT7wk2XYQ7hAIp9zJyZp5Fu19iRbORqqy1BhtrkZ0fPafBU+7bmn8ie69DpT0R6QpJIN2oisYjJg== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.3" - -promzard@^0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/promzard/-/promzard-0.3.0.tgz#26a5d6ee8c7dee4cb12208305acfb93ba382a9ee" - integrity sha1-JqXW7ox97kyxIggwWs+5O6OCqe4= +promzard@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/promzard/-/promzard-1.0.2.tgz#2226e7c6508b1da3471008ae17066a7c3251e660" + integrity sha512-2FPputGL+mP3jJ3UZg/Dl9YOkovB7DX0oOr+ck5QbZ5MtORtds8k/BZdn+02peDLI8/YWbmzx34k5fA+fHvCVQ== dependencies: - read "1" - -proto-list@~1.2.1: - version "1.2.4" - resolved "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" - integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= + read "^3.0.1" -protocols@^1.1.0, protocols@^1.4.0: - version "1.4.7" - resolved "https://registry.npmjs.org/protocols/-/protocols-1.4.7.tgz#95f788a4f0e979b291ffefcf5636ad113d037d32" - integrity sha512-Fx65lf9/YDn3hUX08XUc0J8rSux36rEsyiv21ZGUC1mOyeM3lTRpZLcrm8aAolzS4itwVfm7TAPyxC2E5zd6xg== - -psl@^1.1.24, psl@^1.1.28: - version "1.7.0" - resolved "https://registry.npmjs.org/psl/-/psl-1.7.0.tgz#f1c4c47a8ef97167dea5d6bbf4816d736e884a3c" - integrity sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ== +property-information@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/property-information/-/property-information-7.0.0.tgz#3508a6d6b0b8eb3ca6eb2c6623b164d2ed2ab112" + integrity sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg== -psl@^1.1.33: - version "1.8.0" - resolved "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== +protocols@^2.0.0, protocols@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/protocols/-/protocols-2.0.2.tgz#822e8fcdcb3df5356538b3e91bfd890b067fd0a4" + integrity sha512-hHVTzba3wboROl0/aWRRG9dMytgH6ow//STBZh43l/wQgmMhYhOFi0EHWAPtoCz9IAUymsyP0TSBHkhgMEGNnQ== -puka@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/puka/-/puka-1.0.1.tgz#a2df782b7eb4cf9564e4c93a5da422de0dfacc02" - integrity sha512-ssjRZxBd7BT3dte1RR3VoeT2cT/ODH8x+h0rUF1rMqB0srHYf48stSDWfiYakTp5UBZMxroZhB2+ExLDHm7W3g== +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== pump@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + version "3.0.2" + resolved "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz#836f3edd6bc2ee599256c924ffe0d88573ddcbf8" + integrity sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw== dependencies: end-of-stream "^1.1.0" once "^1.3.1" -punycode@^1.4.1: - version "1.4.1" - resolved "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= - -punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -pupa@^2.0.1: - version "2.1.1" - resolved "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62" - integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A== - dependencies: - escape-goat "^2.0.0" - -q@^1.5.1: - version "1.5.1" - resolved "https://registry.npmjs.org/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= - -qs@~6.5.2: - version "6.5.2" - resolved "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== +punycode@^2.1.0: + version "2.3.1" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== -quick-lru@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8" - integrity sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g= - quick-lru@^4.0.1: version "4.0.1" resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== -range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -rc@^1.2.8: - version "1.2.8" - resolved "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - -react-is@^16.12.0: - version "16.12.0" - resolved "https://registry.npmjs.org/react-is/-/react-is-16.12.0.tgz#2cc0fe0fba742d97fd527c42a13bec4eeb06241c" - integrity sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q== - -react-is@^17.0.1: - version "17.0.1" - resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.1.tgz#5b3531bd76a645a4c9fb6e693ed36419e3301339" - integrity sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA== - -read-cmd-shim@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-2.0.0.tgz#4a50a71d6f0965364938e9038476f7eede3928d9" - integrity sha512-HJpV9bQpkl6KwjxlJcBoqu9Ba0PQg8TqSNIOrulGt54a0uup0HtevreFHzYzkm0lpnleRdNBzXznKrgxglEHQw== - -read-package-json-fast@^2.0.1: - version "2.0.2" - resolved "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.2.tgz#2dcb24d9e8dd50fb322042c8c35a954e6cc7ac9e" - integrity sha512-5fyFUyO9B799foVk4n6ylcoAktG/FbE3jwRKxvwaeSrIunaoMc0u81dzXxjeAFKOce7O5KncdfwpGvvs6r5PsQ== - dependencies: - json-parse-even-better-errors "^2.3.0" - npm-normalize-package-bin "^1.0.1" - -read-package-json@^2.0.0: - version "2.1.1" - resolved "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.1.tgz#16aa66c59e7d4dad6288f179dd9295fd59bb98f1" - integrity sha512-dAiqGtVc/q5doFz6096CcnXhpYk0ZN8dEKVkGLU0CsASt8SrgF6SF7OTKAYubfvFhWaqofl+Y8HK19GR8jwW+A== - dependencies: - glob "^7.1.1" - json-parse-better-errors "^1.0.1" - normalize-package-data "^2.0.0" - npm-normalize-package-bin "^1.0.0" - optionalDependencies: - graceful-fs "^4.1.2" - -read-package-json@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/read-package-json/-/read-package-json-3.0.1.tgz#c7108f0b9390257b08c21e3004d2404c806744b9" - integrity sha512-aLcPqxovhJTVJcsnROuuzQvv6oziQx4zd3JvG0vGCL5MjTONUc4uJ90zCBC6R7W7oUKBNoR/F8pkyfVwlbxqng== - dependencies: - glob "^7.1.1" - json-parse-even-better-errors "^2.3.0" - normalize-package-data "^3.0.0" - npm-normalize-package-bin "^1.0.0" +react-is@^18.0.0: + version "18.3.1" + resolved "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" + integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== -read-package-tree@^5.3.1: - version "5.3.1" - resolved "https://registry.npmjs.org/read-package-tree/-/read-package-tree-5.3.1.tgz#a32cb64c7f31eb8a6f31ef06f9cedf74068fe636" - integrity sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw== - dependencies: - read-package-json "^2.0.0" - readdir-scoped-modules "^1.0.0" - util-promisify "^2.1.0" +read-cmd-shim@4.0.0, read-cmd-shim@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-4.0.0.tgz#640a08b473a49043e394ae0c7a34dd822c73b9bb" + integrity sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q== -read-pkg-up@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" - integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= +read-package-json-fast@^3.0.0, read-package-json-fast@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz#394908a9725dc7a5f14e70c8e7556dff1d2b1049" + integrity sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw== dependencies: - find-up "^1.0.0" - read-pkg "^1.0.0" + json-parse-even-better-errors "^3.0.0" + npm-normalize-package-bin "^3.0.0" read-pkg-up@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" - integrity sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc= + integrity sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw== dependencies: find-up "^2.0.0" read-pkg "^3.0.0" @@ -8809,29 +6629,10 @@ read-pkg-up@^7.0.1: read-pkg "^5.2.0" type-fest "^0.8.1" -read-pkg@6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-6.0.0.tgz#a67a7d6a1c2b0c3cd6aa2ea521f40c458a4a504c" - integrity sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q== - dependencies: - "@types/normalize-package-data" "^2.4.0" - normalize-package-data "^3.0.2" - parse-json "^5.2.0" - type-fest "^1.0.1" - -read-pkg@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" - integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= - dependencies: - load-json-file "^1.0.0" - normalize-package-data "^2.3.2" - path-type "^1.0.0" - read-pkg@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" - integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= + integrity sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA== dependencies: load-json-file "^4.0.0" normalize-package-data "^2.3.2" @@ -8847,26 +6648,45 @@ read-pkg@^5.2.0: parse-json "^5.0.0" type-fest "^0.6.0" -read@1, read@~1.0.1: - version "1.0.7" - resolved "https://registry.npmjs.org/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" - integrity sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ= +read-pkg@^9.0.1: + version "9.0.1" + resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.1.tgz#b1b81fb15104f5dbb121b6bbdee9bbc9739f569b" + integrity sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA== + dependencies: + "@types/normalize-package-data" "^2.4.3" + normalize-package-data "^6.0.0" + parse-json "^8.0.0" + type-fest "^4.6.0" + unicorn-magic "^0.1.0" + +read-yaml-file@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/read-yaml-file/-/read-yaml-file-2.1.0.tgz#c5866712db9ef5343b4d02c2413bada53c41c4a9" + integrity sha512-UkRNRIwnhG+y7hpqnycCL/xbTk7+ia9VuVTC0S+zVbwd65DI9eUpRMfsWIGrCWxTU/mi+JW8cHQCrv+zfCbEPQ== + dependencies: + js-yaml "^4.0.0" + strip-bom "^4.0.0" + +read@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/read/-/read-3.0.1.tgz#926808f0f7c83fa95f1ef33c0e2c09dbb28fd192" + integrity sha512-SLBrDU/Srs/9EoWhU5GdbAoxG1GzpQHo/6qiGItaoLJ1thmYpcNIM1qISEUvyHBzfGlWIyd6p2DNi1oV1VmAuw== dependencies: - mute-stream "~0.0.4" + mute-stream "^1.0.0" -"readable-stream@2 || 3", readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.1.1, readable-stream@^3.4.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== +readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.1.1, readable-stream@^3.4.0: + version "3.6.2" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== dependencies: inherits "^2.0.3" string_decoder "^1.1.1" util-deprecate "^1.0.1" -readable-stream@^2.0.6, readable-stream@~2.3.6: - version "2.3.7" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== +readable-stream@~2.3.6: + version "2.3.8" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== dependencies: core-util-is "~1.0.0" inherits "~2.0.3" @@ -8876,55 +6696,6 @@ readable-stream@^2.0.6, readable-stream@~2.3.6: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readdir-scoped-modules@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309" - integrity sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw== - dependencies: - debuglog "^1.0.1" - dezalgo "^1.0.0" - graceful-fs "^4.1.2" - once "^1.3.0" - -readdirp@~3.5.0: - version "3.5.0" - resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" - integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== - dependencies: - picomatch "^2.2.1" - -readline2@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz#41059608ffc154757b715d9989d199ffbf372e35" - integrity sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - mute-stream "0.0.5" - -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= - dependencies: - resolve "^1.1.6" - -redent@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" - integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94= - dependencies: - indent-string "^2.1.0" - strip-indent "^1.0.1" - -redent@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz#c1b2007b42d57eb1389079b3c8333639d5e1ccaa" - integrity sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo= - dependencies: - indent-string "^3.0.0" - strip-indent "^2.0.0" - redent@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" @@ -8933,175 +6704,35 @@ redent@^3.0.0: indent-string "^4.0.0" strip-indent "^3.0.0" -regenerate-unicode-properties@^8.2.0: - version "8.2.0" - resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" - integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== - dependencies: - regenerate "^1.4.0" - -regenerate@^1.4.0: - version "1.4.2" - resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" - integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== - -regenerator-runtime@^0.10.5: - version "0.10.5" - resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" - integrity sha1-M2w+/BIgrc7dosn6tntaeVWjNlg= - -regenerator-runtime@^0.11.0: - version "0.11.1" - resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" - integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== - -regenerator-runtime@^0.13.4: - version "0.13.7" - resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" - integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== - -regenerator-transform@^0.14.2: - version "0.14.5" - resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" - integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== - dependencies: - "@babel/runtime" "^7.8.4" - -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - -regexpp@^3.1.0: - version "3.2.0" - resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" - integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== - -regexpu-core@^4.7.1: - version "4.7.1" - resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6" - integrity sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ== - dependencies: - regenerate "^1.4.0" - regenerate-unicode-properties "^8.2.0" - regjsgen "^0.5.1" - regjsparser "^0.6.4" - unicode-match-property-ecmascript "^1.0.4" - unicode-match-property-value-ecmascript "^1.2.0" - -registry-auth-token@^4.0.0: - version "4.2.1" - resolved "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz#6d7b4006441918972ccd5fedcd41dc322c79b250" - integrity sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw== - dependencies: - rc "^1.2.8" - -registry-url@^5.0.0: - version "5.1.0" - resolved "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" - integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== +regex-recursion@^6.0.2: + version "6.0.2" + resolved "https://registry.npmjs.org/regex-recursion/-/regex-recursion-6.0.2.tgz#a0b1977a74c87f073377b938dbedfab2ea582b33" + integrity sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg== dependencies: - rc "^1.2.8" + regex-utilities "^2.3.0" -regjsgen@^0.5.1: - version "0.5.2" - resolved "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" - integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== +regex-utilities@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz#87163512a15dce2908cf079c8960d5158ff43280" + integrity sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng== -regjsparser@^0.6.4: - version "0.6.9" - resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz#b489eef7c9a2ce43727627011429cf833a7183e6" - integrity sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ== +regex@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/regex/-/regex-6.0.1.tgz#282fa4435d0c700b09c0eb0982b602e05ab6a34f" + integrity sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA== dependencies: - jsesc "~0.5.0" - -repeat-element@^1.1.2: - version "1.1.3" - resolved "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" - integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= - dependencies: - is-finite "^1.0.0" - -request@^2.88.0: - version "2.88.0" - resolved "https://registry.npmjs.org/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" - integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.0" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.4.3" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - -request@^2.88.2: - version "2.88.2" - resolved "https://registry.npmjs.org/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" + regex-utilities "^2.3.0" require-directory@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== -require-from-string@2.0.2, require-from-string@^2.0.2: +require-from-string@^2.0.2: version "2.0.2" resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - resolve-cwd@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" @@ -9112,7 +6743,7 @@ resolve-cwd@^3.0.0: resolve-dir@^1.0.0, resolve-dir@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" - integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= + integrity sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg== dependencies: expand-tilde "^2.0.0" global-modules "^1.0.0" @@ -9127,60 +6758,31 @@ resolve-from@^4.0.0: resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== -resolve-global@1.0.0, resolve-global@^1.0.0: +resolve-pkg-maps@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/resolve-global/-/resolve-global-1.0.0.tgz#a2a79df4af2ca3f49bf77ef9ddacd322dad19255" - integrity sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw== - dependencies: - global-dirs "^0.1.1" + resolved "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" + integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== -resolve-pathname@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd" - integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== - -resolve-pkg@2.0.0: +resolve-pkg@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/resolve-pkg/-/resolve-pkg-2.0.0.tgz#ac06991418a7623edc119084edc98b0e6bf05a41" integrity sha512-+1lzwXehGCXSeryaISr6WujZzowloigEofRB+dj75y9RRa/obVcYgbHJd53tdYw8pvZj8GojXaaENws8Ktw/hQ== dependencies: resolve-from "^5.0.0" -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= - -resolve@^1.1.6, resolve@^1.10.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.20.0: - version "1.20.0" - resolved "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" - integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== - dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" - -responselike@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" - integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= - dependencies: - lowercase-keys "^1.0.0" - -restore-cursor@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" - integrity sha1-NGYfRohjJ/7SmRR5FSJS35LapUE= - dependencies: - exit-hook "^1.0.0" - onetime "^1.0.0" +resolve.exports@2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz#41955e6f1b4013b7586f873749a635dea07ebe3f" + integrity sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A== -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= +resolve@^1.10.0: + version "1.22.10" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" + integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== dependencies: - onetime "^2.0.0" - signal-exit "^3.0.2" + is-core-module "^2.16.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" restore-cursor@^3.1.0: version "3.1.0" @@ -9190,54 +6792,105 @@ restore-cursor@^3.1.0: onetime "^5.1.0" signal-exit "^3.0.2" -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== +restore-cursor@^5.0.0: + version "5.1.0" + resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz#0766d95699efacb14150993f55baf0953ea1ebe7" + integrity sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA== + dependencies: + onetime "^7.0.0" + signal-exit "^4.1.0" retry@^0.12.0: version "0.12.0" resolved "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" - integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= + integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rimraf@^2.6.3: - version "2.7.1" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" + version "1.1.0" + resolved "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz#0fe13b9522e1473f51b558ee796e08f11f9b489f" + integrity sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw== -rimraf@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.1.tgz#48d3d4cb46c80d388ab26cd61b1b466ae9ae225a" - integrity sha512-IQ4ikL8SjBiEDZfk+DFVwqRK8md24RWMEJkdSlgNLkyyAImcjf8SWvU1qFMDOb4igBClbTQ/ugPqXcRwdFTxZw== - dependencies: - glob "^7.1.3" +rfdc@^1.4.1: + version "1.4.1" + resolved "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz#778f76c4fb731d93414e8f925fbecf64cce7f6ca" + integrity sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA== -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== +rimraf@^4.4.1: + version "4.4.1" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz#bd33364f67021c5b79e93d7f4fa0568c7c21b755" + integrity sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og== dependencies: - glob "^7.1.3" + glob "^9.2.0" -run-async@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz#c8ad4a5e110661e402a7d21b530e009f25f8e389" - integrity sha1-yK1KXhEGYeQCp9IbUw4AnyX444k= +rollup@^4.20.0: + version "4.43.0" + resolved "https://registry.npmjs.org/rollup/-/rollup-4.43.0.tgz#275c09119eb7eaf0c3dea040523b81ef43c57b8c" + integrity sha512-wdN2Kd3Twh8MAEOEJZsuxuLKCsBEo4PVNLK6tQWAn10VhsVewQLzcucMgLolRlhFybGxfclbPeEYBaP6RvUFGg== dependencies: - once "^1.3.0" - -run-async@^2.2.0, run-async@^2.4.0: + "@types/estree" "1.0.7" + optionalDependencies: + "@rollup/rollup-android-arm-eabi" "4.43.0" + "@rollup/rollup-android-arm64" "4.43.0" + "@rollup/rollup-darwin-arm64" "4.43.0" + "@rollup/rollup-darwin-x64" "4.43.0" + "@rollup/rollup-freebsd-arm64" "4.43.0" + "@rollup/rollup-freebsd-x64" "4.43.0" + "@rollup/rollup-linux-arm-gnueabihf" "4.43.0" + "@rollup/rollup-linux-arm-musleabihf" "4.43.0" + "@rollup/rollup-linux-arm64-gnu" "4.43.0" + "@rollup/rollup-linux-arm64-musl" "4.43.0" + "@rollup/rollup-linux-loongarch64-gnu" "4.43.0" + "@rollup/rollup-linux-powerpc64le-gnu" "4.43.0" + "@rollup/rollup-linux-riscv64-gnu" "4.43.0" + "@rollup/rollup-linux-riscv64-musl" "4.43.0" + "@rollup/rollup-linux-s390x-gnu" "4.43.0" + "@rollup/rollup-linux-x64-gnu" "4.43.0" + "@rollup/rollup-linux-x64-musl" "4.43.0" + "@rollup/rollup-win32-arm64-msvc" "4.43.0" + "@rollup/rollup-win32-ia32-msvc" "4.43.0" + "@rollup/rollup-win32-x64-msvc" "4.43.0" + fsevents "~2.3.2" + +rollup@^4.43.0: + version "4.50.1" + resolved "https://registry.npmjs.org/rollup/-/rollup-4.50.1.tgz#6f0717c34aacc65cc727eeaaaccc2afc4e4485fd" + integrity sha512-78E9voJHwnXQMiQdiqswVLZwJIzdBKJ1GdI5Zx6XwoFKUIk09/sSrr+05QFzvYb8q6Y9pPV45zzDuYa3907TZA== + dependencies: + "@types/estree" "1.0.8" + optionalDependencies: + "@rollup/rollup-android-arm-eabi" "4.50.1" + "@rollup/rollup-android-arm64" "4.50.1" + "@rollup/rollup-darwin-arm64" "4.50.1" + "@rollup/rollup-darwin-x64" "4.50.1" + "@rollup/rollup-freebsd-arm64" "4.50.1" + "@rollup/rollup-freebsd-x64" "4.50.1" + "@rollup/rollup-linux-arm-gnueabihf" "4.50.1" + "@rollup/rollup-linux-arm-musleabihf" "4.50.1" + "@rollup/rollup-linux-arm64-gnu" "4.50.1" + "@rollup/rollup-linux-arm64-musl" "4.50.1" + "@rollup/rollup-linux-loongarch64-gnu" "4.50.1" + "@rollup/rollup-linux-ppc64-gnu" "4.50.1" + "@rollup/rollup-linux-riscv64-gnu" "4.50.1" + "@rollup/rollup-linux-riscv64-musl" "4.50.1" + "@rollup/rollup-linux-s390x-gnu" "4.50.1" + "@rollup/rollup-linux-x64-gnu" "4.50.1" + "@rollup/rollup-linux-x64-musl" "4.50.1" + "@rollup/rollup-openharmony-arm64" "4.50.1" + "@rollup/rollup-win32-arm64-msvc" "4.50.1" + "@rollup/rollup-win32-ia32-msvc" "4.50.1" + "@rollup/rollup-win32-x64-msvc" "4.50.1" + fsevents "~2.3.2" + +run-async@^2.4.0: version "2.4.1" resolved "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== +run-async@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz#42a432f6d76c689522058984384df28be379daad" + integrity sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q== + run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" @@ -9245,36 +6898,12 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -rx-lite@^3.1.2: - version "3.1.2" - resolved "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102" - integrity sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI= - -rxjs@^6.4.0: - version "6.5.4" - resolved "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz#e0777fe0d184cec7872df147f303572d414e211c" - integrity sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q== - dependencies: - tslib "^1.9.0" - -rxjs@^6.6.0: - version "6.6.6" - resolved "https://registry.npmjs.org/rxjs/-/rxjs-6.6.6.tgz#14d8417aa5a07c5e633995b525e1e3c0dec03b70" - integrity sha512-/oTwee4N4iWzAMAL9xdGKjkEHmIwupR3oXbQjCKywF1BeFohswF3vZdogbmEF6pZkOsXTzWkrZszrWpQTByYVg== +rxjs@^7.2.0, rxjs@^7.5.5, rxjs@^7.8.1: + version "7.8.2" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz#955bc473ed8af11a002a2be52071bf475638607b" + integrity sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA== dependencies: - tslib "^1.9.0" - -rxjs@^6.6.7: - version "6.6.7" - resolved "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" - integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== - dependencies: - tslib "^1.9.0" - -safe-buffer@^5.0.1, safe-buffer@^5.1.2: - version "5.2.0" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" - integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== + tslib "^2.1.0" safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" @@ -9283,115 +6912,33 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1: safe-buffer@~5.2.0: version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= - dependencies: - ret "~0.1.10" - -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": version "2.1.2" resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -saxes@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" - integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== - dependencies: - xmlchars "^2.2.0" - -semver-compare@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" - integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= - -semver-diff@^3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" - integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg== - dependencies: - semver "^6.3.0" - -"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.6.0, semver@^5.7.1: - version "5.7.1" - resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" - integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== +"semver@2 || 3 || 4 || 5", semver@^5.6.0: + version "5.7.2" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== -semver@7.3.5, semver@^7.0.0, semver@^7.1.1, semver@^7.1.3, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: - version "7.3.5" - resolved "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== - dependencies: - lru-cache "^6.0.0" +semver@^6.3.1: + version "6.3.1" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@7.x: - version "7.3.2" - resolved "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" - integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== +semver@^7.0.0, semver@^7.1.1, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.7.1, semver@^7.7.2: + version "7.7.2" + resolved "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58" + integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== -semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -send@0.17.1: - version "0.17.1" - resolved "https://registry.npmjs.org/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" - integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== - dependencies: - debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "~1.7.2" - mime "1.6.0" - ms "2.1.1" - on-finished "~2.3.0" - range-parser "~1.2.1" - statuses "~1.5.0" - -serve-static@^1.12.1: - version "1.14.1" - resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" - integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.17.1" - -set-blocking@^2.0.0, set-blocking@~2.0.0: +set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= - -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -setprototypeof@1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" - integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== shallow-clone@^3.0.0: version "3.0.1" @@ -9412,170 +6959,131 @@ shebang-regex@^3.0.0: resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shelljs@^0.8.3: - version "0.8.4" - resolved "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz#de7684feeb767f8716b326078a8a00875890e3c2" - integrity sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ== - dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.2" +shiki@^2.1.0: + version "2.5.0" + resolved "https://registry.npmjs.org/shiki/-/shiki-2.5.0.tgz#09d01ebf3b0b06580431ce3ddc023320442cf223" + integrity sha512-mI//trrsaiCIPsja5CNfsyNOqgAZUb6VpJA+340toL42UpzQlXpwRV9nch69X6gaUxrr9kaOOa6e3y3uAkGFxQ== + dependencies: + "@shikijs/core" "2.5.0" + "@shikijs/engine-javascript" "2.5.0" + "@shikijs/engine-oniguruma" "2.5.0" + "@shikijs/langs" "2.5.0" + "@shikijs/themes" "2.5.0" + "@shikijs/types" "2.5.0" + "@shikijs/vscode-textmate" "^10.0.2" + "@types/hast" "^3.0.4" + +siginfo@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz#32e76c70b79724e3bb567cb9d543eb858ccfaf30" + integrity sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g== -signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" - integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== +signal-exit@3.0.7, signal-exit@^3.0.2, signal-exit@^3.0.3: + version "3.0.7" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== -sisteransi@^1.0.3: - version "1.0.4" - resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.4.tgz#386713f1ef688c7c0304dc4c0632898941cad2e3" - integrity sha512-/ekMoM4NJ59ivGSfKapeG+FWtrmWvA1p6FBZwXrqojw90vJu8lBmrTxCMuBCydKtkaUe2zt4PlxeTKpjwMbyig== +signal-exit@^4.0.1, signal-exit@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== -slash@^3.0.0: +sigstore@^2.2.0: + version "2.3.1" + resolved "https://registry.npmjs.org/sigstore/-/sigstore-2.3.1.tgz#0755dd2cc4820f2e922506da54d3d628e13bfa39" + integrity sha512-8G+/XDU8wNsJOQS5ysDVO0Etg9/2uA5gR9l4ZwijjlwxBcrU6RPfwi2+jJmbP+Ap1Hlp/nVAaEO4Fj22/SL2gQ== + dependencies: + "@sigstore/bundle" "^2.3.2" + "@sigstore/core" "^1.0.0" + "@sigstore/protobuf-specs" "^0.3.2" + "@sigstore/sign" "^2.3.2" + "@sigstore/tuf" "^2.3.4" + "@sigstore/verify" "^1.2.1" + +slash@3.0.0, slash@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -slice-ansi@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" - integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== +slice-ansi@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz#b73063c57aa96f9cd881654b15294d95d285c42a" + integrity sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ== dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" + ansi-styles "^6.0.0" + is-fullwidth-code-point "^4.0.0" -slice-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" - integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== +slice-ansi@^7.1.0: + version "7.1.0" + resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz#cd6b4655e298a8d1bdeb04250a433094b347b9a9" + integrity sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg== dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - -slide@^1.1.6: - version "1.1.6" - resolved "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" - integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc= + ansi-styles "^6.2.1" + is-fullwidth-code-point "^5.0.0" -smart-buffer@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.1.0.tgz#91605c25d91652f4661ea69ccf45f1b331ca21ba" - integrity sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw== - -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" +smart-buffer@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -socks-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.0.tgz#7c0f364e7b1cf4a7a437e71253bed72e9004be60" - integrity sha512-lEpa1zsWCChxiynk+lCycKuC502RxDWLKJZoIhnxrWNjLSDGYRFflHA1/228VkRcnv9TIb8w98derGbpKxJRgA== +socks-proxy-agent@^8.0.3: + version "8.0.5" + resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz#b9cdb4e7e998509d7659d689ce7697ac21645bee" + integrity sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw== dependencies: - agent-base "6" - debug "4" - socks "^2.3.3" + agent-base "^7.1.2" + debug "^4.3.4" + socks "^2.8.3" -socks@^2.3.3: - version "2.5.1" - resolved "https://registry.npmjs.org/socks/-/socks-2.5.1.tgz#7720640b6b5ec9a07d556419203baa3f0596df5f" - integrity sha512-oZCsJJxapULAYJaEYBSzMcz8m3jqgGrHaGhkmU/o/PQfFWYWxkAaA0UMGImb6s6tEXfKi959X6VJjMMQ3P6TTQ== +socks@^2.8.3: + version "2.8.5" + resolved "https://registry.npmjs.org/socks/-/socks-2.8.5.tgz#bfe18f5ead1efc93f5ec90c79fa8bdccbcee2e64" + integrity sha512-iF+tNDQla22geJdTyJB1wM/qrX9DMRwWrciEPwWLPRWAUEM8sQiyxgckLxWT1f7+9VabJS0jTGGr4QgBuvi6Ww== dependencies: - ip "^1.1.5" - smart-buffer "^4.1.0" + ip-address "^9.0.5" + smart-buffer "^4.2.0" sort-keys@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" - integrity sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg= + integrity sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg== dependencies: is-plain-obj "^1.0.0" -sort-keys@^4.0.0: +sort-keys@^4.2.0: version "4.2.0" resolved "https://registry.npmjs.org/sort-keys/-/sort-keys-4.2.0.tgz#6b7638cee42c506fff8c1cecde7376d21315be18" integrity sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg== dependencies: is-plain-obj "^2.0.0" -source-map-resolve@^0.5.0: - version "0.5.3" - resolved "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-support@^0.5.6: - version "0.5.16" - resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" - integrity sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-url@^0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" - integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= - -source-map@^0.5.0, source-map@^0.5.6: - version "0.5.7" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= +source-map-js@^1.2.0, source-map-js@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: +source-map@^0.6.1: version "0.6.1" resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.7.3: - version "0.7.3" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== +space-separated-tokens@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz#1ecd9d2350a3844572c3f4a312bceb018348859f" + integrity sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q== spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + version "3.2.0" + resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" + integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== dependencies: spdx-expression-parse "^3.0.0" spdx-license-ids "^3.0.0" spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + version "2.5.0" + resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz#5d607d27fc806f66d7b64a766650fa890f04ed66" + integrity sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w== spdx-expression-parse@^3.0.0: version "3.0.1" @@ -9586,152 +7094,125 @@ spdx-expression-parse@^3.0.0: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.9" - resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz#8a595135def9592bda69709474f1cbeea7c2467f" - integrity sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ== - -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" + version "3.0.21" + resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.21.tgz#6d6e980c9df2b6fc905343a3b2d702a6239536c3" + integrity sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg== -split2@^2.0.0: - version "2.2.0" - resolved "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz#186b2575bcf83e85b7d18465756238ee4ee42493" - integrity sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw== - dependencies: - through2 "^2.0.2" +speakingurl@^14.0.1: + version "14.0.1" + resolved "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz#f37ec8ddc4ab98e9600c1c9ec324a8c48d772a53" + integrity sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ== -split2@^3.0.0: +split2@^3.2.2: version "3.2.2" resolved "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" integrity sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== dependencies: readable-stream "^3.0.0" -split@^1.0.0: +split2@^4.0.0: + version "4.2.0" + resolved "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" + integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== + +split@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== dependencies: through "2" +sprintf-js@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a" + integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA== + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - -sshpk@^1.7.0: - version "1.16.1" - resolved "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" - -ssri@^8.0.0, ssri@^8.0.1: - version "8.0.1" - resolved "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" - integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== - dependencies: - minipass "^3.1.1" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== -stack-utils@^2.0.3: - version "2.0.3" - resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.3.tgz#cd5f030126ff116b78ccb3c027fe302713b61277" - integrity sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw== +ssri@^10.0.0, ssri@^10.0.6: + version "10.0.6" + resolved "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz#a8aade2de60ba2bce8688e3fa349bad05c7dc1e5" + integrity sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ== dependencies: - escape-string-regexp "^2.0.0" + minipass "^7.0.3" -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" +stable-hash-x@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/stable-hash-x/-/stable-hash-x-0.1.1.tgz#1dc602f65183ef049a44a9be4fce249a4c71fc84" + integrity sha512-l0x1D6vhnsNUGPFVDx45eif0y6eedVC8nm5uACTrVFJFtl2mLRW17aWtVyxFCpn5t94VUPkjU8vSLwIuwwqtJQ== -"statuses@>= 1.5.0 < 2", statuses@~1.5.0: - version "1.5.0" - resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= +stable-hash-x@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/stable-hash-x/-/stable-hash-x-0.2.0.tgz#dfd76bfa5d839a7470125c6a6b3c8b22061793e9" + integrity sha512-o3yWv49B/o4QZk5ZcsALc6t0+eCelPc44zZsLtCQnZPDwFpDYSWcDnrv2TtMmMbQ7uKo3J0HTURCqckw23czNQ== -string-argv@0.3.1: - version "0.3.1" - resolved "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" - integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== +stackback@0.0.2: + version "0.0.2" + resolved "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz#1ac8a0d9483848d1695e418b6d031a3c3ce68e3b" + integrity sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw== -string-length@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.1.tgz#4a973bf31ef77c4edbceadd6af2611996985f8a1" - integrity sha512-PKyXUd0LK0ePjSOnWn34V2uD6acUWev9uy0Ft05k0E8xRW+SKcA0F7eMr7h5xlzfn+4O3N+55rduYyet3Jk+jw== - dependencies: - char-regex "^1.0.2" - strip-ansi "^6.0.0" +std-env@^3.9.0: + version "3.9.0" + resolved "https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz#1a6f7243b339dca4c9fd55e1c7504c77ef23e8f1" + integrity sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw== -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= +streamx@^2.15.0, streamx@^2.21.0: + version "2.22.0" + resolved "https://registry.npmjs.org/streamx/-/streamx-2.22.0.tgz#cd7b5e57c95aaef0ff9b2aef7905afa62ec6e4a7" + integrity sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw== dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" + fast-fifo "^1.3.2" + text-decoder "^1.1.0" + optionalDependencies: + bare-events "^2.2.0" -"string-width@^1.0.2 || 2", string-width@^2.1.0: - version "2.1.1" - resolved "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" +string-argv@^0.3.2: + version "0.3.2" + resolved "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz#2b6d0ef24b656274d957d54e0a4bbf6153dc02b6" + integrity sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q== -string-width@^3.0.0, string-width@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" -string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0: - version "4.2.2" - resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" - integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: emoji-regex "^8.0.0" is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.0" + strip-ansi "^6.0.1" -string.prototype.trimend@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" - integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" -string.prototype.trimstart@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" - integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== +string-width@^7.0.0: + version "7.2.0" + resolved "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz#b5bb8e2165ce275d4d43476dd2700ad9091db6dc" + integrity sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ== dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" + emoji-regex "^10.3.0" + get-east-asian-width "^1.0.0" + strip-ansi "^7.1.0" string_decoder@^1.1.1: version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== dependencies: safe-buffer "~5.2.0" @@ -9743,77 +7224,55 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -stringify-object@^3.3.0: - version "3.3.0" - resolved "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" - integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== - dependencies: - get-own-enumerable-property-symbols "^3.0.0" - is-obj "^1.0.1" - is-regexp "^1.0.0" - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= +stringify-entities@^4.0.0: + version "4.0.4" + resolved "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz#b3b79ef5f277cc4ac73caeb0236c5ba939b3a4f3" + integrity sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg== dependencies: - ansi-regex "^2.0.0" + character-entities-html4 "^2.0.0" + character-entities-legacy "^3.0.0" -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: - ansi-regex "^3.0.0" + ansi-regex "^5.0.1" -strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: - ansi-regex "^4.1.0" + ansi-regex "^5.0.1" -strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== +strip-ansi@^7.0.1, strip-ansi@^7.1.0: + version "7.1.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== dependencies: - ansi-regex "^5.0.0" + ansi-regex "^6.0.1" strip-bom@4.0.0, strip-bom@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== -strip-bom@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" - integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= - dependencies: - is-utf8 "^0.2.0" - strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== + +strip-comments-strings@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/strip-comments-strings/-/strip-comments-strings-1.2.0.tgz#b19a1382e8f69a704ef61ad5069c29721c20aaad" + integrity sha512-zwF4bmnyEjZwRhaak9jUWNxc0DoeKBJ7lwSN/LEc8dQXZcUFG6auaaTQJokQWXopLdM3iTx01nQT8E4aL29DAQ== strip-final-newline@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== -strip-indent@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" - integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI= - dependencies: - get-stdin "^4.0.1" - -strip-indent@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" - integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g= - strip-indent@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" @@ -9821,34 +7280,24 @@ strip-indent@^3.0.0: dependencies: min-indent "^1.0.0" -strip-json-comments@3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" - integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== - -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: +strip-json-comments@3.1.1, strip-json-comments@^3.0.1, strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= - -strong-log-transformer@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz#0f5ed78d325e0421ac6f90f7f10e691d6ae3ae10" - integrity sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA== +strip-literal@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/strip-literal/-/strip-literal-3.0.0.tgz#ce9c452a91a0af2876ed1ae4e583539a353df3fc" + integrity sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA== dependencies: - duplexer "^0.1.1" - minimist "^1.2.0" - through "^2.3.4" + js-tokens "^9.0.1" -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= +superjson@^2.2.1: + version "2.2.2" + resolved "https://registry.npmjs.org/superjson/-/superjson-2.2.2.tgz#9d52bf0bf6b5751a3c3472f1292e714782ba3173" + integrity sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q== + dependencies: + copy-anything "^3.0.2" supports-color@^5.3.0: version "5.5.0" @@ -9857,13 +7306,6 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -supports-color@^7.0.0: - version "7.1.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" - integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== - dependencies: - has-flag "^4.0.0" - supports-color@^7.1.0: version "7.2.0" resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" @@ -9871,52 +7313,40 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" -supports-color@^8.0.0: - version "8.1.1" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - -supports-hyperlinks@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.0.0.tgz#b1b94a159e9df00b0a554b2d5f0e0a89690334b0" - integrity sha512-bFhn0MQ8qefLyJ3K7PpHiPUTuTVPWw6RXfaMeV6xgJLXtBbszyboz1bvGTVv4R0YpQm2DqlXXn0fFHhxUHVE5w== - dependencies: - has-flag "^4.0.0" - supports-color "^7.0.0" +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -symbol-tree@^3.2.4: - version "3.2.4" - resolved "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" - integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== +tabbable@^6.2.0: + version "6.2.0" + resolved "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz#732fb62bc0175cfcec257330be187dcfba1f3b97" + integrity sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew== -table@^6.0.9: - version "6.7.1" - resolved "https://registry.npmjs.org/table/-/table-6.7.1.tgz#ee05592b7143831a8c94f3cee6aae4c1ccef33e2" - integrity sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg== +tar-fs@^3.0.5: + version "3.1.1" + resolved "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.1.tgz#4f164e59fb60f103d472360731e8c6bb4a7fe9ef" + integrity sha512-LZA0oaPOc2fVo82Txf3gw+AkEd38szODlptMYejQUhndHMLQ9M059uXR+AfS7DNo0NpINvSqDsvyaCrBVkptWg== dependencies: - ajv "^8.0.1" - lodash.clonedeep "^4.5.0" - lodash.truncate "^4.4.2" - slice-ansi "^4.0.0" - string-width "^4.2.0" - strip-ansi "^6.0.0" + pump "^3.0.0" + tar-stream "^3.1.5" + optionalDependencies: + bare-fs "^4.0.1" + bare-path "^3.0.0" -tar-fs@2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" - integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== +tar-stream@^3.1.5: + version "3.1.7" + resolved "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz#24b3fb5eabada19fe7338ed6d26e5f7c482e792b" + integrity sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ== dependencies: - chownr "^1.1.1" - mkdirp-classic "^0.5.2" - pump "^3.0.0" - tar-stream "^2.1.4" + b4a "^1.6.4" + fast-fifo "^1.2.0" + streamx "^2.15.0" -tar-stream@^2.1.4: - version "2.1.4" - resolved "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.4.tgz#c4fb1a11eb0da29b893a5b25476397ba2d053bfa" - integrity sha512-o3pS2zlG4gxr67GmFYBLlq+dM8gyRGUOvsrHclSkvtVtQbjV0s/+ZE8OpICbaj8clrX3tjeHngYGP7rweaBnuw== +tar-stream@~2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" + integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== dependencies: bl "^4.0.3" end-of-stream "^1.4.1" @@ -9924,85 +7354,50 @@ tar-stream@^2.1.4: inherits "^2.0.3" readable-stream "^3.1.1" -tar@^4.4.12: - version "4.4.13" - resolved "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" - integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== - dependencies: - chownr "^1.1.1" - fs-minipass "^1.2.5" - minipass "^2.8.6" - minizlib "^1.2.1" - mkdirp "^0.5.0" - safe-buffer "^5.1.2" - yallist "^3.0.3" - -tar@^6.0.2, tar@^6.1.0: - version "6.1.0" - resolved "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz#d1724e9bcc04b977b18d5c573b333a2207229a83" - integrity sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA== +tar@6.2.1, tar@^6.1.11, tar@^6.2.1: + version "6.2.1" + resolved "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" + integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== dependencies: chownr "^2.0.0" fs-minipass "^2.0.0" - minipass "^3.0.0" + minipass "^5.0.0" minizlib "^2.1.1" mkdirp "^1.0.3" yallist "^4.0.0" -temp-dir@^1.0.0: +temp-dir@1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" - integrity sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0= - -temp-write@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/temp-write/-/temp-write-4.0.0.tgz#cd2e0825fc826ae72d201dc26eef3bf7e6fc9320" - integrity sha512-HIeWmj77uOOHb0QX7siN3OtwV3CTntquin6TNVg6SHOqCP3hYKmox90eeFOGaY1MqJ9WYDDjkyZrW6qS5AWpbw== - dependencies: - graceful-fs "^4.1.15" - is-stream "^2.0.0" - make-dir "^3.0.0" - temp-dir "^1.0.0" - uuid "^3.3.2" - -term-size@^2.1.0: - version "2.2.1" - resolved "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" - integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== + resolved "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" + integrity sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ== -terminal-link@^2.0.0: - version "2.1.1" - resolved "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" - integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== +test-exclude@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.1.tgz#20b3ba4906ac20994e275bbcafd68d510264c2a2" + integrity sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg== dependencies: - ansi-escapes "^4.2.1" - supports-hyperlinks "^2.0.0" + "@istanbuljs/schema" "^0.1.2" + glob "^10.4.1" + minimatch "^9.0.4" -test-exclude@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" - integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== +text-decoder@^1.1.0: + version "1.2.3" + resolved "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz#b19da364d981b2326d5f43099c310cc80d770c65" + integrity sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA== dependencies: - "@istanbuljs/schema" "^0.1.2" - glob "^7.1.4" - minimatch "^3.0.4" + b4a "^1.6.4" text-extensions@^1.0.0: version "1.9.0" resolved "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= - -throat@^6.0.0, throat@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz#d514fedad95740c12c2d7fc70ea863eb51ade375" - integrity sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w== +text-extensions@^2.0.0: + version "2.4.0" + resolved "https://registry.npmjs.org/text-extensions/-/text-extensions-2.4.0.tgz#a1cfcc50cf34da41bfd047cc744f804d1680ea34" + integrity sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g== -through2@^2.0.0, through2@^2.0.2: +through2@^2.0.0: version "2.0.5" resolved "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== @@ -10010,36 +7405,64 @@ through2@^2.0.0, through2@^2.0.2: readable-stream "~2.3.6" xtend "~4.0.1" -through2@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz#39276e713c3302edf9e388dd9c812dd3b825bd5a" - integrity sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww== +through@2, through@2.3.8, "through@>=2.2.7 <3", through@^2.3.6: + version "2.3.8" + resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + +tinybench@^2.9.0: + version "2.9.0" + resolved "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz#103c9f8ba6d7237a47ab6dd1dcff77251863426b" + integrity sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg== + +tinyexec@^0.3.2: + version "0.3.2" + resolved "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz#941794e657a85e496577995c6eef66f53f42b3d2" + integrity sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA== + +tinyexec@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.1.tgz#70c31ab7abbb4aea0a24f55d120e5990bfa1e0b1" + integrity sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw== + +tinyglobby@0.2.12: + version "0.2.12" + resolved "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.12.tgz#ac941a42e0c5773bd0b5d08f32de82e74a1a61b5" + integrity sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww== dependencies: - readable-stream "2 || 3" + fdir "^6.4.3" + picomatch "^4.0.2" -through2@^4.0.0: - version "4.0.2" - resolved "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz#a7ce3ac2a7a8b0b966c80e7c49f0484c3b239764" - integrity sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw== +tinyglobby@^0.2.14: + version "0.2.14" + resolved "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz#5280b0cf3f972b050e74ae88406c0a6a58f4079d" + integrity sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ== dependencies: - readable-stream "3" + fdir "^6.4.4" + picomatch "^4.0.2" -through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6, through@^2.3.8: - version "2.3.8" - resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= +tinyglobby@^0.2.15: + version "0.2.15" + resolved "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz#e228dd1e638cea993d2fdb4fcd2d4602a79951c2" + integrity sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ== + dependencies: + fdir "^6.5.0" + picomatch "^4.0.3" -tinydate@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/tinydate/-/tinydate-1.3.0.tgz#e6ca8e5a22b51bb4ea1c3a2a4fd1352dbd4c57fb" - integrity sha512-7cR8rLy2QhYHpsBDBVYnnWXm8uRTr38RoZakFSW7Bs7PzfMPNZthuMLkwqZv7MTu8lhQ91cOFYS5a7iFj2oR3w== +tinypool@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz#059f2d042bd37567fbc017d3d426bdd2a2612591" + integrity sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg== -tmp@0.2.1: - version "0.2.1" - resolved "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" - integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== - dependencies: - rimraf "^3.0.0" +tinyrainbow@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz#9509b2162436315e80e3eee0fcce4474d2444294" + integrity sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw== + +tinyspy@^4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.3.tgz#d1d0f0602f4c15f1aae083a34d6d0df3363b1b52" + integrity sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A== tmp@^0.0.33: version "0.0.33" @@ -10048,35 +7471,10 @@ tmp@^0.0.33: dependencies: os-tmpdir "~1.0.2" -tmpl@1.0.x: - version "1.0.4" - resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" - integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= - -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= - dependencies: - kind-of "^3.0.2" - -to-readable-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" - integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" +tmp@^0.2.1, tmp@~0.2.1: + version "0.2.4" + resolved "https://registry.npmjs.org/tmp/-/tmp-0.2.4.tgz#c6db987a2ccc97f812f17137b36af2b6521b0d13" + integrity sha512-UdiSoX6ypifLmrfQ/XfiawN6hkjSBpCjhKxxZcWlUUmoXLaCKQU0bx4HF/tdDK2uzRuchf1txGvrWBzYREssoQ== to-regex-range@^5.0.1: version "5.0.1" @@ -10085,132 +7483,53 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -toidentifier@1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" - integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== - -tough-cookie@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" - integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== - dependencies: - psl "^1.1.33" - punycode "^2.1.1" - universalify "^0.1.2" - -tough-cookie@~2.4.3: - version "2.4.3" - resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" - integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== - dependencies: - psl "^1.1.24" - punycode "^1.4.1" - -tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - -tr46@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/tr46/-/tr46-2.0.2.tgz#03273586def1595ae08fedb38d7733cee91d2479" - integrity sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg== - dependencies: - punycode "^2.1.1" +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== -trim-newlines@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" - integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= +treeverse@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/treeverse/-/treeverse-3.0.0.tgz#dd82de9eb602115c6ebd77a574aae67003cb48c8" + integrity sha512-gcANaAnd2QDZFmHFEOF4k7uc1J/6a6z3DJMd/QwEyxLoKGiptJRwid582r7QIsFlFMIZ3SnxfS52S4hm2DHkuQ== -trim-newlines@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz#b403d0b91be50c331dfc4b82eeceb22c3de16d20" - integrity sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA= +trim-lines@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz#d802e332a07df861c48802c04321017b1bd87338" + integrity sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg== trim-newlines@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.0.tgz#79726304a6a898aa8373427298d54c2ee8b1cb30" - integrity sha512-C4+gOpvmxaSMKuEf9Qc134F1ZuOHVXKRbtEflf4NTtuuJDEIJ9p5PXsalL8SkeRw+qit1Mo+yuvMPAKwWg/1hA== + version "3.0.1" + resolved "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" + integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== -trim-off-newlines@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3" - integrity sha1-n5up2e+odkw4dpi8v+sshI8RrbM= - -ts-jest@27.0.4: - version "27.0.4" - resolved "https://registry.npmjs.org/ts-jest/-/ts-jest-27.0.4.tgz#df49683535831560ccb58f94c023d831b1b80df0" - integrity sha512-c4E1ECy9Xz2WGfTMyHbSaArlIva7Wi2p43QOMmCqjSSjHP06KXv+aT+eSY+yZMuqsMi3k7pyGsGj2q5oSl5WfQ== - dependencies: - bs-logger "0.x" - buffer-from "1.x" - fast-json-stable-stringify "2.x" - jest-util "^27.0.0" - json5 "2.x" - lodash "4.x" - make-error "1.x" - mkdirp "1.x" - semver "7.x" - yargs-parser "20.x" - -tsconfig-paths@^3.9.0: - version "3.9.0" - resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b" - integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw== +ts-api-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz#595f7094e46eed364c13fd23e75f9513d29baf91" + integrity sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ== + +tsconfig-paths@^4.1.2: + version "4.2.0" + resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz#ef78e19039133446d244beac0fd6a1632e2d107c" + integrity sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg== dependencies: - "@types/json5" "^0.0.29" - json5 "^1.0.1" - minimist "^1.2.0" + json5 "^2.2.2" + minimist "^1.2.6" strip-bom "^3.0.0" -tslib@^1.8.1: - version "1.14.1" - resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tslib@^1.9.0: - version "1.13.0" - resolved "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" - integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== - -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" +tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0: + version "2.8.1" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= +tuf-js@^2.2.1: + version "2.2.1" + resolved "https://registry.npmjs.org/tuf-js/-/tuf-js-2.2.1.tgz#fdd8794b644af1a75c7aaa2b197ddffeb2911b56" + integrity sha512-GwIJau9XaA8nLVbUXsN3IlFi7WmQ48gBUrl3FTkkL/XLu/POhBzfmX9hd33FNMX1qAsfl6ozO1iMmW9NC8YniA== dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= - -tweezer.js@^1.4.0: - version "1.5.0" - resolved "https://registry.npmjs.org/tweezer.js/-/tweezer.js-1.5.0.tgz#ca50ac5215022203fd3be4d28617e8e2305f5c0c" - integrity sha512-aSiJz7rGWNAQq7hjMK9ZYDuEawXupcCWgl3woQQSoDP2Oh8O4srWb/uO1PzzHIsrPEOqrjJ2sUb9FERfzuBabQ== + "@tufjs/models" "2.0.1" + debug "^4.3.4" + make-fetch-happen "^13.0.1" type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" @@ -10219,32 +7538,15 @@ type-check@^0.4.0, type-check@~0.4.0: dependencies: prelude-ls "^1.2.1" -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= - dependencies: - prelude-ls "~1.1.2" - -type-detect@4.0.8: - version "4.0.8" - resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - -type-fest@^0.11.0: - version "0.11.0" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" - integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== - type-fest@^0.18.0: version "0.18.1" resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== type-fest@^0.4.1: version "0.4.1" @@ -10261,166 +7563,142 @@ type-fest@^0.8.1: resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== -type-fest@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-1.0.1.tgz#2494455e65c59170ec98bdda05b7d7184f5b74ad" - integrity sha512-+UTPE7JT3O+sUpRroRgQAbbSfIRBwOHh+o/oruB1JJE6g6uBm3Y0D82fO3xu8VHfxJLQjeRp0PEY6mRmh/lElA== - -typedarray-to-buffer@^3.1.5: - version "3.1.5" - resolved "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== - dependencies: - is-typedarray "^1.0.0" +type-fest@^4.6.0, type-fest@^4.7.1: + version "4.37.0" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-4.37.0.tgz#7cf008bf77b63a33f7ca014fa2a3f09fd69e8937" + integrity sha512-S/5/0kFftkq27FPNye0XM1e2NsnoD/3FS+pBmbjmmtLT6I+i344KoOf7pvXreaFsDamWeaJX55nczA1m5PsBDg== typedarray@^0.0.6: version "0.0.6" resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= + integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== -typescript@4.3.5: - version "4.3.5" - resolved "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz#4d1c37cc16e893973c45a06886b7113234f119f4" - integrity sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA== +"typescript@>=3 < 6", typescript@^5.2.2: + version "5.8.3" + resolved "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz#92f8a3e5e3cf497356f4178c34cd65a7f5e8440e" + integrity sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ== uglify-js@^3.1.4: - version "3.7.3" - resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.7.3.tgz#f918fce9182f466d5140f24bb0ff35c2d32dcc6a" - integrity sha512-7tINm46/3puUA4hCkKYo4Xdts+JDaVC9ZPRcG8Xw9R4nhO/gZgUM3TENq8IF4Vatk8qCig4MzP/c8G4u2BkVQg== - dependencies: - commander "~2.20.3" - source-map "~0.6.1" + version "3.19.3" + resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz#82315e9bbc6f2b25888858acd1fff8441035b77f" + integrity sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ== -uid-number@0.0.6: - version "0.0.6" - resolved "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" - integrity sha1-DqEOgDXo61uOREnwbaHHMGY7qoE= - -umask@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d" - integrity sha1-8pzr8B31F5ErtY/5xOUP3o4zMg0= +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== -unbox-primitive@^1.0.0, unbox-primitive@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" - integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== - dependencies: - function-bind "^1.1.1" - has-bigints "^1.0.1" - has-symbols "^1.0.2" - which-boxed-primitive "^1.0.2" +undici-types@~7.8.0: + version "7.8.0" + resolved "https://registry.npmjs.org/undici-types/-/undici-types-7.8.0.tgz#de00b85b710c54122e44fbfd911f8d70174cd294" + integrity sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw== -unicode-canonical-property-names-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" - integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== +unicorn-magic@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz#1bb9a51c823aaf9d73a8bfcd3d1a23dde94b0ce4" + integrity sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ== -unicode-match-property-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" - integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== +unique-filename@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz#48ba7a5a16849f5080d26c760c86cf5cf05770ea" + integrity sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g== dependencies: - unicode-canonical-property-names-ecmascript "^1.0.4" - unicode-property-aliases-ecmascript "^1.0.4" + unique-slug "^4.0.0" -unicode-match-property-value-ecmascript@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" - integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== +unique-slug@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz#6bae6bb16be91351badd24cdce741f892a6532e3" + integrity sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ== + dependencies: + imurmurhash "^0.1.4" -unicode-property-aliases-ecmascript@^1.0.4: - version "1.1.0" - resolved "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" - integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== +unist-util-is@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz#b775956486aff107a9ded971d996c173374be424" + integrity sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw== + dependencies: + "@types/unist" "^3.0.0" -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== +unist-util-position@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz#678f20ab5ca1207a97d7ea8a388373c9cf896be4" + integrity sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA== dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" + "@types/unist" "^3.0.0" -unique-filename@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" - integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== +unist-util-stringify-position@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz#449c6e21a880e0855bf5aabadeb3a740314abac2" + integrity sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ== dependencies: - unique-slug "^2.0.0" + "@types/unist" "^3.0.0" -unique-slug@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" - integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== +unist-util-visit-parents@^6.0.0: + version "6.0.1" + resolved "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz#4d5f85755c3b8f0dc69e21eca5d6d82d22162815" + integrity sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw== dependencies: - imurmurhash "^0.1.4" + "@types/unist" "^3.0.0" + unist-util-is "^6.0.0" -unique-string@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" - integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== +unist-util-visit@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz#a7de1f31f72ffd3519ea71814cccf5fd6a9217d6" + integrity sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg== dependencies: - crypto-random-string "^2.0.0" + "@types/unist" "^3.0.0" + unist-util-is "^6.0.0" + unist-util-visit-parents "^6.0.0" universal-user-agent@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee" - integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w== - -universalify@^0.1.0, universalify@^0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -universalify@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" - integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== + version "6.0.1" + resolved "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz#15f20f55da3c930c57bddbf1734c6654d5fd35aa" + integrity sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ== universalify@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" - integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== - -unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + version "2.0.1" + resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" + integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= +unrs-resolver@^1.7.11, unrs-resolver@^1.9.2: + version "1.9.2" + resolved "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.9.2.tgz#1a7c73335a5e510643664d7bb4bb6f5c28782e36" + integrity sha512-VUyWiTNQD7itdiMuJy+EuLEErLj3uwX/EpHQF8EOf33Dq3Ju6VW1GXm+swk6+1h7a49uv9fKZ+dft9jU7esdLA== dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -upath@^2.0.1: + napi-postinstall "^0.2.4" + optionalDependencies: + "@unrs/resolver-binding-android-arm-eabi" "1.9.2" + "@unrs/resolver-binding-android-arm64" "1.9.2" + "@unrs/resolver-binding-darwin-arm64" "1.9.2" + "@unrs/resolver-binding-darwin-x64" "1.9.2" + "@unrs/resolver-binding-freebsd-x64" "1.9.2" + "@unrs/resolver-binding-linux-arm-gnueabihf" "1.9.2" + "@unrs/resolver-binding-linux-arm-musleabihf" "1.9.2" + "@unrs/resolver-binding-linux-arm64-gnu" "1.9.2" + "@unrs/resolver-binding-linux-arm64-musl" "1.9.2" + "@unrs/resolver-binding-linux-ppc64-gnu" "1.9.2" + "@unrs/resolver-binding-linux-riscv64-gnu" "1.9.2" + "@unrs/resolver-binding-linux-riscv64-musl" "1.9.2" + "@unrs/resolver-binding-linux-s390x-gnu" "1.9.2" + "@unrs/resolver-binding-linux-x64-gnu" "1.9.2" + "@unrs/resolver-binding-linux-x64-musl" "1.9.2" + "@unrs/resolver-binding-wasm32-wasi" "1.9.2" + "@unrs/resolver-binding-win32-arm64-msvc" "1.9.2" + "@unrs/resolver-binding-win32-ia32-msvc" "1.9.2" + "@unrs/resolver-binding-win32-x64-msvc" "1.9.2" + +upath@2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz#50c73dea68d6f6b990f51d279ce6081665d61a8b" integrity sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w== -update-notifier@^4.1.0: - version "4.1.3" - resolved "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.3.tgz#be86ee13e8ce48fb50043ff72057b5bd598e1ea3" - integrity sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A== - dependencies: - boxen "^4.2.0" - chalk "^3.0.0" - configstore "^5.0.1" - has-yarn "^2.1.0" - import-lazy "^2.1.0" - is-ci "^2.0.0" - is-installed-globally "^0.3.1" - is-npm "^4.0.0" - is-yarn-global "^0.3.0" - latest-version "^5.0.0" - pupa "^2.0.1" - semver-diff "^3.1.1" - xdg-basedir "^4.0.0" +update-browserslist-db@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz#348377dd245216f9e7060ff50b15a1b740b75420" + integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw== + dependencies: + escalade "^3.2.0" + picocolors "^1.1.1" uri-js@^4.2.2: version "4.4.1" @@ -10429,60 +7707,17 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - -url-parse-lax@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" - integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= - dependencies: - prepend-http "^2.0.0" - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.npmjs.org/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - -util-deprecate@^1.0.1, util-deprecate@~1.0.1: +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -util-promisify@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/util-promisify/-/util-promisify-2.1.0.tgz#3c2236476c4d32c5ff3c47002add7c13b9a82a53" - integrity sha1-PCI2R2xNMsX/PEcAKt18E7moKlM= - dependencies: - object.getownpropertydescriptors "^2.0.3" - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= - -uuid@^3.3.2: - version "3.3.3" - resolved "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866" - integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ== - -v8-compile-cache@^2.0.3: - version "2.3.0" - resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" - integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== -v8-to-istanbul@^8.0.0: - version "8.0.0" - resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.0.0.tgz#4229f2a99e367f3f018fa1d5c2b8ec684667c69c" - integrity sha512-LkmXi8UUNxnCC+JlH7/fsfsKr5AU110l+SYGJimWNkWhxbN5EyeOtm1MJ0hhvqMMOhGwBj1Fp70Yv9i+hX0QAg== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^1.6.0" - source-map "^0.7.3" +uuid@^10.0.0: + version "10.0.0" + resolved "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz#5a95aa454e6e002725c79055fd42aaba30ca6294" + integrity sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ== -validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: +validate-npm-package-license@3.0.4, validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: version "3.0.4" resolved "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== @@ -10490,187 +7725,213 @@ validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" -validate-npm-package-name@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" - integrity sha1-X6kS2B630MdK/BQN5zF/DKffQ34= - dependencies: - builtins "^1.0.3" - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - -vorpal@^1.12.0: - version "1.12.0" - resolved "https://registry.npmjs.org/vorpal/-/vorpal-1.12.0.tgz#4be7b2a4e48f8fcfc9cf3648c419d311c522159d" - integrity sha1-S+eypOSPj8/JzzZIxBnTEcUiFZ0= - dependencies: - babel-polyfill "^6.3.14" - chalk "^1.1.0" - in-publish "^2.0.0" - inquirer "0.11.0" - lodash "^4.5.1" - log-update "^1.0.2" - minimist "^1.2.0" - node-localstorage "^0.6.0" - strip-ansi "^3.0.0" - wrap-ansi "^2.0.0" - -w3c-hr-time@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" - integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== +validate-npm-package-name@5.0.1, validate-npm-package-name@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz#a316573e9b49f3ccd90dbb6eb52b3f06c6d604e8" + integrity sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ== + +vfile-message@^4.0.0: + version "4.0.2" + resolved "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz#c883c9f677c72c166362fd635f21fc165a7d1181" + integrity sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw== dependencies: - browser-process-hrtime "^1.0.0" + "@types/unist" "^3.0.0" + unist-util-stringify-position "^4.0.0" -w3c-xmlserializer@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" - integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== +vfile@^6.0.0: + version "6.0.3" + resolved "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz#3652ab1c496531852bf55a6bac57af981ebc38ab" + integrity sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q== dependencies: - xml-name-validator "^3.0.0" + "@types/unist" "^3.0.0" + vfile-message "^4.0.0" -walker@^1.0.7: - version "1.0.7" - resolved "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" - integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= +vite-node@3.2.4: + version "3.2.4" + resolved "https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz#f3676d94c4af1e76898c162c92728bca65f7bb07" + integrity sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg== + dependencies: + cac "^6.7.14" + debug "^4.4.1" + es-module-lexer "^1.7.0" + pathe "^2.0.3" + vite "^5.0.0 || ^6.0.0 || ^7.0.0-0" + +"vite@^5.0.0 || ^6.0.0 || ^7.0.0-0": + version "7.1.5" + resolved "https://registry.npmjs.org/vite/-/vite-7.1.5.tgz#4dbcb48c6313116689be540466fc80faa377be38" + integrity sha512-4cKBO9wR75r0BeIWWWId9XK9Lj6La5X846Zw9dFfzMRw38IlTk2iCcUt6hsyiDRcPidc55ZParFYDXi0nXOeLQ== + dependencies: + esbuild "^0.25.0" + fdir "^6.5.0" + picomatch "^4.0.3" + postcss "^8.5.6" + rollup "^4.43.0" + tinyglobby "^0.2.15" + optionalDependencies: + fsevents "~2.3.3" + +vite@^5.4.14: + version "5.4.20" + resolved "https://registry.npmjs.org/vite/-/vite-5.4.20.tgz#3267a5e03f21212f44edfd72758138e8fcecd76a" + integrity sha512-j3lYzGC3P+B5Yfy/pfKNgVEg4+UtcIJcVRt2cDjIOmhLourAqPqf8P7acgxeiSgUB7E3p2P8/3gNIgDLpwzs4g== dependencies: - makeerror "1.0.x" + esbuild "^0.21.3" + postcss "^8.4.43" + rollup "^4.20.0" + optionalDependencies: + fsevents "~2.3.3" + +vitepress-plugin-tabs@^0.7.0: + version "0.7.1" + resolved "https://registry.npmjs.org/vitepress-plugin-tabs/-/vitepress-plugin-tabs-0.7.1.tgz#73e0537fee5bac1fa00c941165241eb941b13a80" + integrity sha512-jxJvsicxnMSIYX9b8mAFLD2nwyKUcMO10dEt4nDSbinZhM8cGvAmMFOHPdf6TBX6gYZRl+/++/iYHtoM14fERQ== + +vitepress@^1.3.4: + version "1.6.3" + resolved "https://registry.npmjs.org/vitepress/-/vitepress-1.6.3.tgz#4e4662ce2ad55ef64604ecf4f96231a8da2fe9ba" + integrity sha512-fCkfdOk8yRZT8GD9BFqusW3+GggWYZ/rYncOfmgcDtP3ualNHCAg+Robxp2/6xfH1WwPHtGpPwv7mbA3qomtBw== + dependencies: + "@docsearch/css" "3.8.2" + "@docsearch/js" "3.8.2" + "@iconify-json/simple-icons" "^1.2.21" + "@shikijs/core" "^2.1.0" + "@shikijs/transformers" "^2.1.0" + "@shikijs/types" "^2.1.0" + "@types/markdown-it" "^14.1.2" + "@vitejs/plugin-vue" "^5.2.1" + "@vue/devtools-api" "^7.7.0" + "@vue/shared" "^3.5.13" + "@vueuse/core" "^12.4.0" + "@vueuse/integrations" "^12.4.0" + focus-trap "^7.6.4" + mark.js "8.11.1" + minisearch "^7.1.1" + shiki "^2.1.0" + vite "^5.4.14" + vue "^3.5.13" + +vitest@^3.0.0: + version "3.2.4" + resolved "https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz#0637b903ad79d1539a25bc34c0ed54b5c67702ea" + integrity sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A== + dependencies: + "@types/chai" "^5.2.2" + "@vitest/expect" "3.2.4" + "@vitest/mocker" "3.2.4" + "@vitest/pretty-format" "^3.2.4" + "@vitest/runner" "3.2.4" + "@vitest/snapshot" "3.2.4" + "@vitest/spy" "3.2.4" + "@vitest/utils" "3.2.4" + chai "^5.2.0" + debug "^4.4.1" + expect-type "^1.2.1" + magic-string "^0.30.17" + pathe "^2.0.3" + picomatch "^4.0.2" + std-env "^3.9.0" + tinybench "^2.9.0" + tinyexec "^0.3.2" + tinyglobby "^0.2.14" + tinypool "^1.1.1" + tinyrainbow "^2.0.0" + vite "^5.0.0 || ^6.0.0 || ^7.0.0-0" + vite-node "3.2.4" + why-is-node-running "^2.3.0" + +vue@^3.5.0, vue@^3.5.13: + version "3.5.18" + resolved "https://registry.npmjs.org/vue/-/vue-3.5.18.tgz#3d622425ad1391a2b0138323211ec784f4415686" + integrity sha512-7W4Y4ZbMiQ3SEo+m9lnoNpV9xG7QVMLa+/0RFwwiAVkeYoyGXqWE85jabU4pllJNUzqfLShJ5YLptewhCWUgNA== + dependencies: + "@vue/compiler-dom" "3.5.18" + "@vue/compiler-sfc" "3.5.18" + "@vue/runtime-dom" "3.5.18" + "@vue/server-renderer" "3.5.18" + "@vue/shared" "3.5.18" + +walk-up-path@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/walk-up-path/-/walk-up-path-3.0.1.tgz#c8d78d5375b4966c717eb17ada73dbd41490e886" + integrity sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA== -wcwidth@^1.0.0: +wcwidth@^1.0.0, wcwidth@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= + integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== dependencies: defaults "^1.0.3" -webidl-conversions@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" - integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== - -webidl-conversions@^6.1.0: - version "6.1.0" - resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" - integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== - -whatwg-encoding@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" - integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== - dependencies: - iconv-lite "0.4.24" - -whatwg-mimetype@^2.3.0: - version "2.3.0" - resolved "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" - integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== - -whatwg-url@^8.0.0: - version "8.2.2" - resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.2.2.tgz#85e7f9795108b53d554cec640b2e8aee2a0d4bfd" - integrity sha512-PcVnO6NiewhkmzV0qn7A+UZ9Xx4maNTI+O+TShmfE4pqjoCMwUMjkvoNhNHPTvgR7QH9Xt3R13iHuWy2sToFxQ== - dependencies: - lodash.sortby "^4.7.0" - tr46 "^2.0.2" - webidl-conversions "^6.1.0" - -whatwg-url@^8.4.0: - version "8.4.0" - resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.4.0.tgz#50fb9615b05469591d2b2bd6dfaed2942ed72837" - integrity sha512-vwTUFf6V4zhcPkWp/4CQPr1TW9Ml6SF4lVyaIMBdJw5i6qUUJ1QWM4Z6YYVkfka0OUIzVo/0aNtGVGk256IKWw== - dependencies: - lodash.sortby "^4.7.0" - tr46 "^2.0.2" - webidl-conversions "^6.1.0" - -whatwg-url@^8.5.0: - version "8.5.0" - resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.5.0.tgz#7752b8464fc0903fec89aa9846fc9efe07351fd3" - integrity sha512-fy+R77xWv0AiqfLl4nuGUlQ3/6b5uNfQ4WAbGQVMYshCTCCPK9psC1nWh3XHuxGVCtlcDDQPQW1csmmIQo+fwg== - dependencies: - lodash "^4.7.0" - tr46 "^2.0.2" - webidl-conversions "^6.1.0" +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== -which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" + tr46 "~0.0.3" + webidl-conversions "^3.0.0" -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= - -which@^1.2.14, which@^1.3.1: +which@^1.2.14: version "1.3.1" resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== dependencies: isexe "^2.0.0" -which@^2.0.1, which@^2.0.2: +which@^2.0.1: version "2.0.2" resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" -wide-align@^1.1.0: - version "1.1.3" - resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== +which@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/which/-/which-4.0.0.tgz#cd60b5e74503a3fbcfbf6cd6b4138a8bae644c1a" + integrity sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg== dependencies: - string-width "^1.0.2 || 2" + isexe "^3.1.1" -widest-line@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" - integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== +why-is-node-running@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz#a3f69a97107f494b3cdc3bdddd883a7d65cebf04" + integrity sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w== dependencies: - string-width "^4.0.0" + siginfo "^2.0.0" + stackback "0.0.2" -word-wrap@^1.0.3, word-wrap@^1.2.3, word-wrap@~1.2.3: - version "1.2.3" - resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== +wide-align@1.1.5: + version "1.1.5" + resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" + integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== + dependencies: + string-width "^1.0.2 || 2 || 3 || 4" + +word-wrap@^1.0.3, word-wrap@^1.2.5: + version "1.2.5" + resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" + integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== wordwrap@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= - -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" + integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" -wrap-ansi@^6.2.0: +wrap-ansi@^6.0.1, wrap-ansi@^6.2.0: version "6.2.0" resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== @@ -10688,10 +7949,36 @@ wrap-ansi@^7.0.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + +wrap-ansi@^9.0.0: + version "9.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz#1a3dc8b70d85eeb8398ddfb1e4a02cd186e58b3e" + integrity sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q== + dependencies: + ansi-styles "^6.2.1" + string-width "^7.0.0" + strip-ansi "^7.1.0" + wrappy@1: version "1.0.2" resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +write-file-atomic@5.0.1, write-file-atomic@^5.0.0, write-file-atomic@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz#68df4717c55c6fa4281a7860b4c2ba0a6d2b11e7" + integrity sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^4.0.1" write-file-atomic@^2.4.2: version "2.4.3" @@ -10702,16 +7989,6 @@ write-file-atomic@^2.4.2: imurmurhash "^0.1.4" signal-exit "^3.0.2" -write-file-atomic@^3.0.0, write-file-atomic@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" - integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== - dependencies: - imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" - write-json-file@^3.2.0: version "3.2.0" resolved "https://registry.npmjs.org/write-json-file/-/write-json-file-3.2.0.tgz#65bbdc9ecd8a1458e15952770ccbadfcff5fe62a" @@ -10724,19 +8001,7 @@ write-json-file@^3.2.0: sort-keys "^2.0.0" write-file-atomic "^2.4.2" -write-json-file@^4.3.0: - version "4.3.0" - resolved "https://registry.npmjs.org/write-json-file/-/write-json-file-4.3.0.tgz#908493d6fd23225344af324016e4ca8f702dd12d" - integrity sha512-PxiShnxf0IlnQuMYOPPhPkhExoCQuTUNPOa/2JWCYTmBquU9njyyDuwRKN26IZBlp4yn1nt+Agh2HOOBl+55HQ== - dependencies: - detect-indent "^6.0.0" - graceful-fs "^4.1.15" - is-plain-obj "^2.0.0" - make-dir "^3.0.0" - sort-keys "^4.0.0" - write-file-atomic "^3.0.0" - -write-pkg@^4.0.0: +write-pkg@4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/write-pkg/-/write-pkg-4.0.0.tgz#675cc04ef6c11faacbbc7771b24c0abbf2a20039" integrity sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA== @@ -10745,42 +8010,25 @@ write-pkg@^4.0.0: type-fest "^0.4.1" write-json-file "^3.2.0" -ws@^7.4.3, ws@^7.4.5: - version "7.4.6" - resolved "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" - integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== - -xdg-basedir@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" - integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== - -xml-name-validator@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" - integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== - -xmlchars@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" - integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== +write-yaml-file@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/write-yaml-file/-/write-yaml-file-5.0.0.tgz#3764885331139f4dfed415c652eabb97942b91cc" + integrity sha512-FdNA4RyH1L43TlvGG8qOMIfcEczwA5ij+zLXUy3Z83CjxhLvcV7/Q/8pk22wnCgYw7PJhtK+7lhO+qqyT4NdvQ== + dependencies: + js-yaml "^4.1.0" + write-file-atomic "^5.0.1" xtend@~4.0.1: version "4.0.2" resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== -y18n@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4" - integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ== - y18n@^5.0.5: - version "5.0.5" - resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz#8769ec08d03b1ea2df2500acef561743bbb9ab18" - integrity sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg== + version "5.0.8" + resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== -yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: +yallist@^3.0.2: version "3.1.1" resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== @@ -10790,79 +8038,38 @@ yallist@^4.0.0: resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yaml@^1.10.0: - version "1.10.0" - resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" - integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== +yaml@^2.6.0, yaml@^2.8.0: + version "2.8.0" + resolved "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz#15f8c9866211bdc2d3781a0890e44d4fa1a5fff6" + integrity sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ== -yargonaut@^1.1.2: - version "1.1.4" - resolved "https://registry.npmjs.org/yargonaut/-/yargonaut-1.1.4.tgz#c64f56432c7465271221f53f5cc517890c3d6e0c" - integrity sha512-rHgFmbgXAAzl+1nngqOcwEljqHGG9uUZoPjsdZEs1w5JW9RXYzrSvH/u70C1JE5qFi0qjsdhnUX/dJRpWqitSA== - dependencies: - chalk "^1.1.1" - figlet "^1.1.1" - parent-require "^1.0.0" - -yargs-parser@20.2.4, yargs-parser@20.x, yargs-parser@^20.2.2: - version "20.2.4" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" - integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== - -yargs-parser@^10.0.0: - version "10.1.0" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" - integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== - dependencies: - camelcase "^4.1.0" - -yargs-parser@^15.0.1: - version "15.0.1" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.1.tgz#54786af40b820dcb2fb8025b11b4d659d76323b3" - integrity sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^20.2.3: - version "20.2.6" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.6.tgz#69f920addf61aafc0b8b89002f5d66e28f2d8b20" - integrity sha512-AP1+fQIWSM/sMiET8fyayjx/J+JmTPt2Mr0FkrgqB4todtfa53sOsrSAcIrJRD5XS20bKUwaDIuMkWKCEiQLKA== - -yargs@^14.2.0: - version "14.2.3" - resolved "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz#1a1c3edced1afb2a2fea33604bc6d1d8d688a414" - integrity sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg== - dependencies: - cliui "^5.0.0" - decamelize "^1.2.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^15.0.1" +yargs-parser@21.1.1, yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== -yargs@^16.0.3, yargs@^16.2.0: - version "16.2.0" - resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== +yargs-parser@^20.2.2, yargs-parser@^20.2.3: + version "20.2.9" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs@17.7.2, yargs@^17.0.0, yargs@^17.6.2: + version "17.7.2" + resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== dependencies: - cliui "^7.0.2" + cliui "^8.0.1" escalade "^3.1.1" get-caller-file "^2.0.5" require-directory "^2.1.1" - string-width "^4.2.0" + string-width "^4.2.3" y18n "^5.0.5" - yargs-parser "^20.2.2" + yargs-parser "^21.1.1" -yargs@^17.0.0: - version "17.0.0" - resolved "https://registry.npmjs.org/yargs/-/yargs-17.0.0.tgz#147db33e222e8e6a7829df5f2ae696b58d1c82bf" - integrity sha512-gbtedDPfBgG40iLbaRXhqYJycUYqFVZQLIxl1cG5Ez/xZL/47TetSYzPSIixkWa36GKHr9D/o/oSG1vHXF4zTw== +yargs@^16.2.0: + version "16.2.0" + resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== dependencies: cliui "^7.0.2" escalade "^3.1.1" @@ -10871,3 +8078,23 @@ yargs@^17.0.0: string-width "^4.2.0" y18n "^5.0.5" yargs-parser "^20.2.2" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +yocto-queue@^1.0.0: + version "1.1.1" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz#fef65ce3ac9f8a32ceac5a634f74e17e5b232110" + integrity sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g== + +yoctocolors-cjs@^2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz#f4b905a840a37506813a7acaa28febe97767a242" + integrity sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA== + +zwitch@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz#c827d4b0acb76fc3e685a4c6ec2902d51070e9d7" + integrity sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==