mirror of
https://github.com/super-linter/super-linter.git
synced 2024-12-21 14:52:09 -05:00
feat: lint commit messages with commitlint (#6118)
Add support to run Commitlint against commit messages. It supports the current modes: - Lint the commit message of the last commit - Lint the commit messages of the pushed commits in case there is more than one pushed commit This commit also removes stuff that we used to run commitlint as a standalone tool because we can now use the commitlint instance that Super-linter ships: - lint-commit steps in lint-commit the GitHub Actions workflow - lint-commit Make target - commitlint and its dependencies in package.json and package-lock.json
This commit is contained in:
parent
b526effb8b
commit
5d6e3fcecc
26 changed files with 971 additions and 994 deletions
37
.github/workflows/lint-commit.yaml
vendored
37
.github/workflows/lint-commit.yaml
vendored
|
@ -35,40 +35,3 @@ jobs:
|
|||
else
|
||||
echo "This pull request contains ${commit_count} commit."
|
||||
fi
|
||||
|
||||
- name: Set commit metadata
|
||||
run: |
|
||||
SET_INTERVAL_VALUES="true"
|
||||
if [[ ${{ github.event_name }} == 'push' ]] || [[ ${{ github.event_name }} == 'merge_group' ]]; then
|
||||
echo "Using default commit metadata"
|
||||
SET_INTERVAL_VALUES="false"
|
||||
elif [[ ${{ github.event_name }} == 'pull_request' ]]; then
|
||||
FROM_INTERVAL_COMMITLINT=${{ github.event.pull_request.head.sha }}~${{ github.event.pull_request.commits }}
|
||||
TO_INTERVAL_COMMITLINT=${{ github.event.pull_request.head.sha }}
|
||||
else
|
||||
echo "[ERROR] Event not supported when setting commit metadata"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "${SET_INTERVAL_VALUES}" == "true" ]; then
|
||||
if [ -z "${FROM_INTERVAL_COMMITLINT}" ]; then
|
||||
echo "[ERROR] FROM_INTERVAL_COMMITLINT is empty"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "${TO_INTERVAL_COMMITLINT}" ]; then
|
||||
echo "[ERROR] TO_INTERVAL_COMMITLINT is empty"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
{
|
||||
echo "FROM_INTERVAL_COMMITLINT=${FROM_INTERVAL_COMMITLINT}"
|
||||
echo "TO_INTERVAL_COMMITLINT=${TO_INTERVAL_COMMITLINT}"
|
||||
} >> "${GITHUB_ENV}"
|
||||
else
|
||||
echo "Skip updating GITHUB_ENV. SET_INTERVAL_VALUES: ${SET_INTERVAL_VALUES}"
|
||||
fi
|
||||
|
||||
- name: Validate commits
|
||||
run: |
|
||||
make lint-commits
|
||||
|
|
21
Makefile
21
Makefile
|
@ -175,6 +175,7 @@ test-actions-runner-debug: ## Run super-linter with ACTIONS_RUNNER_DEBUG=true
|
|||
-e ENABLE_GITHUB_ACTIONS_GROUP_TITLE=true \
|
||||
-e DEFAULT_BRANCH=main \
|
||||
-e USE_FIND_ALGORITHM=true \
|
||||
-e VALIDATE_GIT_COMMITLINT=false \
|
||||
-v "$(CURDIR)/.github":/tmp/lint/.github \
|
||||
--rm \
|
||||
$(SUPER_LINTER_TEST_CONTAINER_URL)
|
||||
|
@ -187,6 +188,7 @@ test-actions-steps-debug: ## Run super-linter with ACTIONS_STEPS_DEBUG=true
|
|||
-e ENABLE_GITHUB_ACTIONS_GROUP_TITLE=true \
|
||||
-e DEFAULT_BRANCH=main \
|
||||
-e USE_FIND_ALGORITHM=true \
|
||||
-e VALIDATE_GIT_COMMITLINT=false \
|
||||
-v "$(CURDIR)/.github":/tmp/lint/.github \
|
||||
--rm \
|
||||
$(SUPER_LINTER_TEST_CONTAINER_URL)
|
||||
|
@ -199,6 +201,7 @@ test-runner-debug: ## Run super-linter with RUNNER_DEBUG=1
|
|||
-e ENABLE_GITHUB_ACTIONS_GROUP_TITLE=true \
|
||||
-e DEFAULT_BRANCH=main \
|
||||
-e USE_FIND_ALGORITHM=true \
|
||||
-e VALIDATE_GIT_COMMITLINT=false \
|
||||
-v "$(CURDIR)/.github":/tmp/lint/.github \
|
||||
--rm \
|
||||
$(SUPER_LINTER_TEST_CONTAINER_URL)
|
||||
|
@ -211,6 +214,7 @@ test-find: ## Run super-linter on a subdirectory with USE_FIND_ALGORITHM=true
|
|||
-e ENABLE_GITHUB_ACTIONS_GROUP_TITLE=true \
|
||||
-e DEFAULT_BRANCH=main \
|
||||
-e USE_FIND_ALGORITHM=true \
|
||||
-e VALIDATE_GIT_COMMITLINT=false \
|
||||
-v "$(CURDIR)/.github":/tmp/lint/.github \
|
||||
--rm \
|
||||
$(SUPER_LINTER_TEST_CONTAINER_URL)
|
||||
|
@ -227,6 +231,7 @@ test-non-default-workdir: ## Run super-linter with DEFAULT_WORKSPACE set
|
|||
-e DEFAULT_WORKSPACE=/tmp/not-default-workspace \
|
||||
-e USE_FIND_ALGORITHM=true \
|
||||
-e VALIDATE_ALL_CODEBASE=true \
|
||||
-e VALIDATE_GIT_COMMITLINT=false \
|
||||
-v $(CURDIR)/.github:/tmp/not-default-workspace/.github \
|
||||
--rm \
|
||||
$(SUPER_LINTER_TEST_CONTAINER_URL)
|
||||
|
@ -433,6 +438,7 @@ test-linter-commands: ## Test linterCommands
|
|||
# Run this test against a small directory because we're only interested in
|
||||
# loading default configuration files. The directory that we run super-linter
|
||||
# against should not be .github because that includes default linter rules.
|
||||
# Disable commitlint because the workspace is not a Git repository.
|
||||
.PHONY: test-default-config-files
|
||||
test-default-config-files: ## Test default configuration files loading
|
||||
docker run \
|
||||
|
@ -441,6 +447,7 @@ test-default-config-files: ## Test default configuration files loading
|
|||
-e ENABLE_GITHUB_ACTIONS_GROUP_TITLE=true \
|
||||
-e DEFAULT_BRANCH=main \
|
||||
-e USE_FIND_ALGORITHM=true \
|
||||
-e VALIDATE_GIT_COMMITLINT=false \
|
||||
-v "$(CURDIR)/docs":/tmp/lint \
|
||||
--rm \
|
||||
$(SUPER_LINTER_TEST_CONTAINER_URL)
|
||||
|
@ -454,6 +461,7 @@ test-custom-ssl-cert: ## Test the configuration of a custom SSL/TLS certificate
|
|||
-e DEFAULT_BRANCH=main \
|
||||
-e USE_FIND_ALGORITHM=true \
|
||||
-e SSL_CERT_SECRET="$(shell cat test/data/ssl-certificate/rootCA-test.crt)" \
|
||||
-e VALIDATE_GIT_COMMITLINT=false \
|
||||
-v "$(CURDIR)/docs":/tmp/lint \
|
||||
--rm \
|
||||
$(SUPER_LINTER_TEST_CONTAINER_URL)
|
||||
|
@ -592,19 +600,6 @@ build-dev-container-image: docker-dev-container-build-check ## Build commit lint
|
|||
--build-arg UID=$(shell id -u) \
|
||||
-t ${DEV_CONTAINER_URL} "${CURDIR}/dev-dependencies"
|
||||
|
||||
.PHONY: lint-commits
|
||||
lint-commits: build-dev-container-image ## Lint commits
|
||||
docker run \
|
||||
-v "$(CURDIR):/source-repository" \
|
||||
--rm \
|
||||
${DEV_CONTAINER_URL} \
|
||||
commitlint \
|
||||
--config .github/linters/commitlint.config.js \
|
||||
--cwd /source-repository \
|
||||
--from ${FROM_INTERVAL_COMMITLINT} \
|
||||
--to ${TO_INTERVAL_COMMITLINT} \
|
||||
--verbose
|
||||
|
||||
.PHONY: release-please-dry-run
|
||||
release-please-dry-run: build-dev-container-image check-github-token ## Run release-please in dry-run mode to preview the release pull request
|
||||
@echo "Running release-please against branch: ${RELEASE_PLEASE_TARGET_BRANCH}"; \
|
||||
|
|
10
README.md
10
README.md
|
@ -64,6 +64,7 @@ Super-linter supports the following tools:
|
|||
| **CSS**, **SCSS**, **Sass** | [stylelint](https://stylelint.io/) | [Prettier](https://prettier.io/) |
|
||||
| **Clojure** | [clj-kondo](https://github.com/borkdude/clj-kondo) | |
|
||||
| **CoffeeScript** | [coffeelint](https://coffeelint.github.io/) | |
|
||||
| **Commit messages** | [commitlint](https://commitlint.js.org/) | |
|
||||
| **Copy/paste detection** | [jscpd](https://github.com/kucherenko/jscpd) | N/A |
|
||||
| **Dart** | [dart analyze command](https://dart.dev/guides/language/analysis-options) | |
|
||||
| **Dockerfile** | [Haskell Dockerfile Linter (Hadolint)](https://github.com/hadolint/hadolint), [Checkov](https://www.checkov.io/) | |
|
||||
|
@ -218,8 +219,10 @@ You can configure Super-linter using the following environment variables:
|
|||
| **DISABLE_ERRORS** | `false` | Flag to have the linter complete with exit code 0 even if errors were detected. |
|
||||
| **DOCKERFILE_HADOLINT_FILE_NAME** | `.hadolint.yaml` | Filename for [hadolint configuration](https://github.com/hadolint/hadolint) (ex: `.hadolintlintrc.yaml`) |
|
||||
| **EDITORCONFIG_FILE_NAME** | `.ecrc` | Filename for [editorconfig-checker configuration](https://github.com/editorconfig-checker/editorconfig-checker) |
|
||||
| **ENABLE_COMMITLINT_STRICT_MODE** | `false` | If set to `true`, enables [commitlint strict mode](https://commitlint.js.org/reference/cli.html). |
|
||||
| **ENABLE_GITHUB_ACTIONS_GROUP_TITLE** | `false` if `RUN_LOCAL=true`, `true` otherwise | Flag to enable [GitHub Actions log grouping](https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#grouping-log-lines). |
|
||||
| **ENABLE_GITHUB_ACTIONS_STEP_SUMMARY** | `false` if `RUN_LOCAL=true`, `true` otherwise | Flag to enable [GitHub Actions job summary](https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary) for the Super-linter action. For more information, see [Summary outputs](#summary-outputs). |
|
||||
| **ENFORCE_COMMITLINT_CONFIGURATION_CHECK** | `false` | If set to `true` and `VALIDATE_GIT_COMMITLINT` is set to `true`, Super-linter exits with an error if there's no commitlint configuration file. Otherwise, Super-linter emits a warning and forcefully sets `VALIDATE_GIT_COMMITLINT` to `false`. |
|
||||
| **FILTER_REGEX_EXCLUDE** | not set | Regular expression defining which files will be excluded from linting (ex: `.*src/test.*`). Not setting this variable means to process all files. Jscpd and Checkov ignore this variable. Use their include and ignore features to select or ignore the files to lint. |
|
||||
| **FILTER_REGEX_INCLUDE** | not set | Regular expression defining which files will be processed by linters (ex: `.*src/.*`). Not setting this variable means to process all files. `FILTER_REGEX_INCLUDE` is evaluated before `FILTER_REGEX_EXCLUDE`. Jscpd and Checkov ignore this variable. Use their include and ignore features to select or ignore the files to lint. |
|
||||
| **FIX_ANSIBLE** | `false` | Option to enable fix mode for `ANSIBLE`. |
|
||||
|
@ -325,7 +328,7 @@ You can configure Super-linter using the following environment variables:
|
|||
| **TYPESCRIPT_ES_CONFIG_FILE** | `.eslintrc.yml` | Filename for [ESLint configuration](https://eslint.org/docs/user-guide/configuring#configuration-file-formats) (ex: `.eslintrc.yml`, `.eslintrc.json`) |
|
||||
| **TYPESCRIPT_STANDARD_TSCONFIG_FILE** | `${DEFAULT_WORKSPACE}/tsconfig.json` | Path to the [TypeScript project configuration](https://www.typescriptlang.org/docs/handbook/tsconfig-json.html) in [ts-standard](https://github.com/standard/ts-standard). The path is relative to `DEFAULT_WORKSPACE` |
|
||||
| **USE_FIND_ALGORITHM** | `false` | By default, we use `git diff` to find all files in the workspace and what has been updated, this would enable the Linux `find` method instead to find all files to lint |
|
||||
| **VALIDATE_ALL_CODEBASE** | `true` | Will parse the entire repository and find all files to validate across all types. **NOTE:** When set to `false`, only **new** or **edited** files will be parsed for validation. |
|
||||
| **VALIDATE_ALL_CODEBASE** | `true` | Will parse the entire repository and find all files to validate across all types. **NOTE:** When set to`false`, only **new** or **edited** files will be parsed for validation. |
|
||||
| **VALIDATE_ANSIBLE** | `true` | Flag to enable or disable the linting process of the Ansible language. |
|
||||
| **VALIDATE_ARM** | `true` | Flag to enable or disable the linting process of the ARM language. |
|
||||
| **VALIDATE_BASH** | `true` | Flag to enable or disable the linting process of the Bash language. |
|
||||
|
@ -347,11 +350,12 @@ You can configure Super-linter using the following environment variables:
|
|||
| **VALIDATE_EDITORCONFIG** | `true` | Flag to enable or disable the linting process with the EditorConfig. |
|
||||
| **VALIDATE_ENV** | `true` | Flag to enable or disable the linting process of the ENV language. |
|
||||
| **VALIDATE_GHERKIN** | `true` | Flag to enable or disable the linting process of the Gherkin language. |
|
||||
| **VALIDATE_GIT_COMMITLINT** | `true` | Option to enable or disable the linting process of Git commits with commitlint. commitlint needs a configuration file to work. Also, see the `ENFORCE_COMMITLINT_CONFIGURATION_CHECK` and the `ENABLE_COMMITLINT_STRICT_MODE` variables. |
|
||||
| **VALIDATE_GIT_MERGE_CONFLICT_MARKERS** | `true` | Option to enable or disable checking if files contain Git merge conflict markers. |
|
||||
| **VALIDATE_GITHUB_ACTIONS** | `true` | Flag to enable or disable the linting process of the GitHub Actions. |
|
||||
| **VALIDATE_GITLEAKS** | `true` | Flag to enable or disable the linting process of the secrets. |
|
||||
| **VALIDATE_GO** | `true` | Flag to enable or disable the linting process of the individual Golang files. Set this to `false` if you want to lint Go modules. See the `VALIDATE_GO_MODULES` variable. |
|
||||
| **VALIDATE_GO_MODULES** | `true` | Flag to enable or disable the linting process of Go modules. Super-linter considers a directory to be a Go module if it contains a file named `go.mod`. |
|
||||
| **VALIDATE_GO_MODULES** | `true` | Flag to enable or disable the linting process of Go modules. Super-linter considers a directory to be a Go module if it contains a file named`go.mod`. |
|
||||
| **VALIDATE_GO_RELEASER** | `true` | Flag to enable or disable the linting process of the GoReleaser config file. |
|
||||
| **VALIDATE_GRAPHQL_PRETTIER** | `true` | Flag to enable or disable checking the formatting of GraphQL files with Prettier. |
|
||||
| **VALIDATE_GOOGLE_JAVA_FORMAT** | `true` | Flag to enable or disable the linting process of the Java language. (Utilizing: google-java-format) |
|
||||
|
@ -420,7 +424,7 @@ You can configure Super-linter using the following environment variables:
|
|||
| **VALIDATE_XML** | `true` | Flag to enable or disable the linting process of the XML language. |
|
||||
| **VALIDATE_YAML** | `true` | Flag to enable or disable the linting process of the YAML language. |
|
||||
| **VALIDATE_YAML_PRETTIER** | `true` | Flag to enable or disable checking the formatting of YAML files with Prettier. |
|
||||
| **YAML_CONFIG_FILE** | `.yaml-lint.yml` | Filename for [Yamllint configuration](https://yamllint.readthedocs.io/en/stable/configuration.html) (ex: `.yaml-lint.yml`, `.yamllint.yml`) |
|
||||
| **YAML_CONFIG_FILE** | `.yaml-lint.yml` | Filename for [Yamllint configuration](https://yamllint.readthedocs.io/en/stable/configuration.html) (ex:`.yaml-lint.yml`, `.yamllint.yml`) |
|
||||
| **YAML_ERROR_ON_WARNING** | `false` | Flag to enable or disable the error on warning for Yamllint. |
|
||||
|
||||
The `VALIDATE_[LANGUAGE]` variables work as follows:
|
||||
|
|
747
dependencies/package-lock.json
generated
vendored
747
dependencies/package-lock.json
generated
vendored
|
@ -10,11 +10,13 @@
|
|||
"@babel/preset-react": "^7.24.7",
|
||||
"@babel/preset-typescript": "^7.24.7",
|
||||
"@coffeelint/cli": "^5.2.11",
|
||||
"@commitlint/config-conventional": "^19.5.0",
|
||||
"@ibm/tekton-lint": "^1.1.0",
|
||||
"@react-native/eslint-config": "^0.75.2",
|
||||
"@stoplight/spectral-cli": "^6.11.1",
|
||||
"@typescript-eslint/eslint-plugin": "^7.16.1",
|
||||
"asl-validator": "^3.8.3",
|
||||
"commitlint": "^19.5.0",
|
||||
"eslint": "^8.57.0",
|
||||
"eslint-config-airbnb": "^19.0.4",
|
||||
"eslint-config-prettier": "^9.1.0",
|
||||
|
@ -3282,6 +3284,459 @@
|
|||
"node": ">=0.1.90"
|
||||
}
|
||||
},
|
||||
"node_modules/@commitlint/cli": {
|
||||
"version": "19.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-19.5.0.tgz",
|
||||
"integrity": "sha512-gaGqSliGwB86MDmAAKAtV9SV1SHdmN8pnGq4EJU4+hLisQ7IFfx4jvU4s+pk6tl0+9bv6yT+CaZkufOinkSJIQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@commitlint/format": "^19.5.0",
|
||||
"@commitlint/lint": "^19.5.0",
|
||||
"@commitlint/load": "^19.5.0",
|
||||
"@commitlint/read": "^19.5.0",
|
||||
"@commitlint/types": "^19.5.0",
|
||||
"tinyexec": "^0.3.0",
|
||||
"yargs": "^17.0.0"
|
||||
},
|
||||
"bin": {
|
||||
"commitlint": "cli.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=v18"
|
||||
}
|
||||
},
|
||||
"node_modules/@commitlint/config-conventional": {
|
||||
"version": "19.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-19.5.0.tgz",
|
||||
"integrity": "sha512-OBhdtJyHNPryZKg0fFpZNOBM1ZDbntMvqMuSmpfyP86XSfwzGw4CaoYRG4RutUPg0BTK07VMRIkNJT6wi2zthg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@commitlint/types": "^19.5.0",
|
||||
"conventional-changelog-conventionalcommits": "^7.0.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=v18"
|
||||
}
|
||||
},
|
||||
"node_modules/@commitlint/config-validator": {
|
||||
"version": "19.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-19.5.0.tgz",
|
||||
"integrity": "sha512-CHtj92H5rdhKt17RmgALhfQt95VayrUo2tSqY9g2w+laAXyk7K/Ef6uPm9tn5qSIwSmrLjKaXK9eiNuxmQrDBw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@commitlint/types": "^19.5.0",
|
||||
"ajv": "^8.11.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=v18"
|
||||
}
|
||||
},
|
||||
"node_modules/@commitlint/ensure": {
|
||||
"version": "19.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-19.5.0.tgz",
|
||||
"integrity": "sha512-Kv0pYZeMrdg48bHFEU5KKcccRfKmISSm9MvgIgkpI6m+ohFTB55qZlBW6eYqh/XDfRuIO0x4zSmvBjmOwWTwkg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@commitlint/types": "^19.5.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"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=v18"
|
||||
}
|
||||
},
|
||||
"node_modules/@commitlint/execute-rule": {
|
||||
"version": "19.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-19.5.0.tgz",
|
||||
"integrity": "sha512-aqyGgytXhl2ejlk+/rfgtwpPexYyri4t8/n4ku6rRJoRhGZpLFMqrZ+YaubeGysCP6oz4mMA34YSTaSOKEeNrg==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=v18"
|
||||
}
|
||||
},
|
||||
"node_modules/@commitlint/format": {
|
||||
"version": "19.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@commitlint/format/-/format-19.5.0.tgz",
|
||||
"integrity": "sha512-yNy088miE52stCI3dhG/vvxFo9e4jFkU1Mj3xECfzp/bIS/JUay4491huAlVcffOoMK1cd296q0W92NlER6r3A==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@commitlint/types": "^19.5.0",
|
||||
"chalk": "^5.3.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=v18"
|
||||
}
|
||||
},
|
||||
"node_modules/@commitlint/format/node_modules/chalk": {
|
||||
"version": "5.3.0",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz",
|
||||
"integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": "^12.17.0 || ^14.13 || >=16.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/chalk/chalk?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/@commitlint/is-ignored": {
|
||||
"version": "19.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-19.5.0.tgz",
|
||||
"integrity": "sha512-0XQ7Llsf9iL/ANtwyZ6G0NGp5Y3EQ8eDQSxv/SRcfJ0awlBY4tHFAvwWbw66FVUaWICH7iE5en+FD9TQsokZ5w==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@commitlint/types": "^19.5.0",
|
||||
"semver": "^7.6.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=v18"
|
||||
}
|
||||
},
|
||||
"node_modules/@commitlint/lint": {
|
||||
"version": "19.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-19.5.0.tgz",
|
||||
"integrity": "sha512-cAAQwJcRtiBxQWO0eprrAbOurtJz8U6MgYqLz+p9kLElirzSCc0vGMcyCaA1O7AqBuxo11l1XsY3FhOFowLAAg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@commitlint/is-ignored": "^19.5.0",
|
||||
"@commitlint/parse": "^19.5.0",
|
||||
"@commitlint/rules": "^19.5.0",
|
||||
"@commitlint/types": "^19.5.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=v18"
|
||||
}
|
||||
},
|
||||
"node_modules/@commitlint/load": {
|
||||
"version": "19.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@commitlint/load/-/load-19.5.0.tgz",
|
||||
"integrity": "sha512-INOUhkL/qaKqwcTUvCE8iIUf5XHsEPCLY9looJ/ipzi7jtGhgmtH7OOFiNvwYgH7mA8osUWOUDV8t4E2HAi4xA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@commitlint/config-validator": "^19.5.0",
|
||||
"@commitlint/execute-rule": "^19.5.0",
|
||||
"@commitlint/resolve-extends": "^19.5.0",
|
||||
"@commitlint/types": "^19.5.0",
|
||||
"chalk": "^5.3.0",
|
||||
"cosmiconfig": "^9.0.0",
|
||||
"cosmiconfig-typescript-loader": "^5.0.0",
|
||||
"lodash.isplainobject": "^4.0.6",
|
||||
"lodash.merge": "^4.6.2",
|
||||
"lodash.uniq": "^4.5.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=v18"
|
||||
}
|
||||
},
|
||||
"node_modules/@commitlint/load/node_modules/chalk": {
|
||||
"version": "5.3.0",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz",
|
||||
"integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": "^12.17.0 || ^14.13 || >=16.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/chalk/chalk?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/@commitlint/load/node_modules/cosmiconfig": {
|
||||
"version": "9.0.0",
|
||||
"resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz",
|
||||
"integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"env-paths": "^2.2.1",
|
||||
"import-fresh": "^3.3.0",
|
||||
"js-yaml": "^4.1.0",
|
||||
"parse-json": "^5.2.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/d-fischer"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"typescript": ">=4.9.5"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"typescript": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/@commitlint/load/node_modules/parse-json": {
|
||||
"version": "5.2.0",
|
||||
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
|
||||
"integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/code-frame": "^7.0.0",
|
||||
"error-ex": "^1.3.1",
|
||||
"json-parse-even-better-errors": "^2.3.0",
|
||||
"lines-and-columns": "^1.1.6"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/@commitlint/message": {
|
||||
"version": "19.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@commitlint/message/-/message-19.5.0.tgz",
|
||||
"integrity": "sha512-R7AM4YnbxN1Joj1tMfCyBryOC5aNJBdxadTZkuqtWi3Xj0kMdutq16XQwuoGbIzL2Pk62TALV1fZDCv36+JhTQ==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=v18"
|
||||
}
|
||||
},
|
||||
"node_modules/@commitlint/parse": {
|
||||
"version": "19.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-19.5.0.tgz",
|
||||
"integrity": "sha512-cZ/IxfAlfWYhAQV0TwcbdR1Oc0/r0Ik1GEessDJ3Lbuma/MRO8FRQX76eurcXtmhJC//rj52ZSZuXUg0oIX0Fw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@commitlint/types": "^19.5.0",
|
||||
"conventional-changelog-angular": "^7.0.0",
|
||||
"conventional-commits-parser": "^5.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=v18"
|
||||
}
|
||||
},
|
||||
"node_modules/@commitlint/read": {
|
||||
"version": "19.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@commitlint/read/-/read-19.5.0.tgz",
|
||||
"integrity": "sha512-TjS3HLPsLsxFPQj6jou8/CZFAmOP2y+6V4PGYt3ihbQKTY1Jnv0QG28WRKl/d1ha6zLODPZqsxLEov52dhR9BQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@commitlint/top-level": "^19.5.0",
|
||||
"@commitlint/types": "^19.5.0",
|
||||
"git-raw-commits": "^4.0.0",
|
||||
"minimist": "^1.2.8",
|
||||
"tinyexec": "^0.3.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=v18"
|
||||
}
|
||||
},
|
||||
"node_modules/@commitlint/read/node_modules/dargs": {
|
||||
"version": "8.1.0",
|
||||
"resolved": "https://registry.npmjs.org/dargs/-/dargs-8.1.0.tgz",
|
||||
"integrity": "sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/@commitlint/read/node_modules/git-raw-commits": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-4.0.0.tgz",
|
||||
"integrity": "sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"dargs": "^8.0.0",
|
||||
"meow": "^12.0.1",
|
||||
"split2": "^4.0.0"
|
||||
},
|
||||
"bin": {
|
||||
"git-raw-commits": "cli.mjs"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=16"
|
||||
}
|
||||
},
|
||||
"node_modules/@commitlint/read/node_modules/meow": {
|
||||
"version": "12.1.1",
|
||||
"resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz",
|
||||
"integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=16.10"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/@commitlint/resolve-extends": {
|
||||
"version": "19.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-19.5.0.tgz",
|
||||
"integrity": "sha512-CU/GscZhCUsJwcKTJS9Ndh3AKGZTNFIOoQB2n8CmFnizE0VnEuJoum+COW+C1lNABEeqk6ssfc1Kkalm4bDklA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@commitlint/config-validator": "^19.5.0",
|
||||
"@commitlint/types": "^19.5.0",
|
||||
"global-directory": "^4.0.1",
|
||||
"import-meta-resolve": "^4.0.0",
|
||||
"lodash.mergewith": "^4.6.2",
|
||||
"resolve-from": "^5.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=v18"
|
||||
}
|
||||
},
|
||||
"node_modules/@commitlint/resolve-extends/node_modules/resolve-from": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
|
||||
"integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/@commitlint/rules": {
|
||||
"version": "19.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-19.5.0.tgz",
|
||||
"integrity": "sha512-hDW5TPyf/h1/EufSHEKSp6Hs+YVsDMHazfJ2azIk9tHPXS6UqSz1dIRs1gpqS3eMXgtkT7JH6TW4IShdqOwhAw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@commitlint/ensure": "^19.5.0",
|
||||
"@commitlint/message": "^19.5.0",
|
||||
"@commitlint/to-lines": "^19.5.0",
|
||||
"@commitlint/types": "^19.5.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=v18"
|
||||
}
|
||||
},
|
||||
"node_modules/@commitlint/to-lines": {
|
||||
"version": "19.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-19.5.0.tgz",
|
||||
"integrity": "sha512-R772oj3NHPkodOSRZ9bBVNq224DOxQtNef5Pl8l2M8ZnkkzQfeSTr4uxawV2Sd3ui05dUVzvLNnzenDBO1KBeQ==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=v18"
|
||||
}
|
||||
},
|
||||
"node_modules/@commitlint/top-level": {
|
||||
"version": "19.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-19.5.0.tgz",
|
||||
"integrity": "sha512-IP1YLmGAk0yWrImPRRc578I3dDUI5A2UBJx9FbSOjxe9sTlzFiwVJ+zeMLgAtHMtGZsC8LUnzmW1qRemkFU4ng==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"find-up": "^7.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=v18"
|
||||
}
|
||||
},
|
||||
"node_modules/@commitlint/top-level/node_modules/find-up": {
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/find-up/-/find-up-7.0.0.tgz",
|
||||
"integrity": "sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"locate-path": "^7.2.0",
|
||||
"path-exists": "^5.0.0",
|
||||
"unicorn-magic": "^0.1.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/@commitlint/top-level/node_modules/locate-path": {
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz",
|
||||
"integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"p-locate": "^6.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/@commitlint/top-level/node_modules/p-limit": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz",
|
||||
"integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"yocto-queue": "^1.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/@commitlint/top-level/node_modules/p-locate": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz",
|
||||
"integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"p-limit": "^4.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/@commitlint/top-level/node_modules/path-exists": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz",
|
||||
"integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@commitlint/top-level/node_modules/yocto-queue": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz",
|
||||
"integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=12.20"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/@commitlint/types": {
|
||||
"version": "19.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@commitlint/types/-/types-19.5.0.tgz",
|
||||
"integrity": "sha512-DSHae2obMSMkAtTBSOulg5X7/z+rGLxcXQIkg3OmWvY6wifojge5uVMydfhUvs7yQj+V7jNmRZ2Xzl8GJyqRgg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@types/conventional-commits-parser": "^5.0.0",
|
||||
"chalk": "^5.3.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=v18"
|
||||
}
|
||||
},
|
||||
"node_modules/@commitlint/types/node_modules/chalk": {
|
||||
"version": "5.3.0",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz",
|
||||
"integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": "^12.17.0 || ^14.13 || >=16.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/chalk/chalk?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/@csstools/css-parser-algorithms": {
|
||||
"version": "2.3.1",
|
||||
"resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.3.1.tgz",
|
||||
|
@ -6701,6 +7156,15 @@
|
|||
"@types/responselike": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/conventional-commits-parser": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz",
|
||||
"integrity": "sha512-loB369iXNmAZglwWATL+WRe+CRMmmBPtpolYzIebFaX4YA3x+BEfLqhUAV9WanycKI3TG1IMr5bMJDajDKLlUQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@types/node": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/emscripten": {
|
||||
"version": "1.39.13",
|
||||
"resolved": "https://registry.npmjs.org/@types/emscripten/-/emscripten-1.39.13.tgz",
|
||||
|
@ -7974,6 +8438,12 @@
|
|||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/array-ify": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz",
|
||||
"integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/array-includes": {
|
||||
"version": "3.1.8",
|
||||
"resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz",
|
||||
|
@ -9259,6 +9729,22 @@
|
|||
"node": ">= 6"
|
||||
}
|
||||
},
|
||||
"node_modules/commitlint": {
|
||||
"version": "19.5.0",
|
||||
"resolved": "https://registry.npmjs.org/commitlint/-/commitlint-19.5.0.tgz",
|
||||
"integrity": "sha512-lCtwxgFulvMnCgBc8MVPlVMf+PNOqQSBhHpEnjV2JjEQEAhxjVDtC7IeuEtR+hHpGvHt6CwlLtm3uZNyEby5dQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@commitlint/cli": "^19.5.0",
|
||||
"@commitlint/types": "^19.5.0"
|
||||
},
|
||||
"bin": {
|
||||
"commitlint": "cli.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=v18"
|
||||
}
|
||||
},
|
||||
"node_modules/common-tags": {
|
||||
"version": "1.8.2",
|
||||
"resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz",
|
||||
|
@ -9272,6 +9758,16 @@
|
|||
"resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
|
||||
"integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg=="
|
||||
},
|
||||
"node_modules/compare-func": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz",
|
||||
"integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"array-ify": "^1.0.0",
|
||||
"dot-prop": "^5.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/concat-map": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
||||
|
@ -9291,6 +9787,30 @@
|
|||
"@babel/types": "^7.6.1"
|
||||
}
|
||||
},
|
||||
"node_modules/conventional-changelog-angular": {
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz",
|
||||
"integrity": "sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"compare-func": "^2.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=16"
|
||||
}
|
||||
},
|
||||
"node_modules/conventional-changelog-conventionalcommits": {
|
||||
"version": "7.0.2",
|
||||
"resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-7.0.2.tgz",
|
||||
"integrity": "sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"compare-func": "^2.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=16"
|
||||
}
|
||||
},
|
||||
"node_modules/conventional-commits-detector": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/conventional-commits-detector/-/conventional-commits-detector-1.0.3.tgz",
|
||||
|
@ -9585,6 +10105,36 @@
|
|||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/conventional-commits-parser": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz",
|
||||
"integrity": "sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"is-text-path": "^2.0.0",
|
||||
"JSONStream": "^1.3.5",
|
||||
"meow": "^12.0.1",
|
||||
"split2": "^4.0.0"
|
||||
},
|
||||
"bin": {
|
||||
"conventional-commits-parser": "cli.mjs"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=16"
|
||||
}
|
||||
},
|
||||
"node_modules/conventional-commits-parser/node_modules/meow": {
|
||||
"version": "12.1.1",
|
||||
"resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz",
|
||||
"integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=16.10"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/convert-source-map": {
|
||||
"version": "1.9.0",
|
||||
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
|
||||
|
@ -9644,6 +10194,23 @@
|
|||
"url": "https://github.com/sponsors/d-fischer"
|
||||
}
|
||||
},
|
||||
"node_modules/cosmiconfig-typescript-loader": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-5.0.0.tgz",
|
||||
"integrity": "sha512-+8cK7jRAReYkMwMiG+bxhcNKiHJDM6bR9FD/nGBXOWdMLuYawjF5cGrtLilJ+LGd3ZjCXnJjR5DkfWPoIVlqJA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"jiti": "^1.19.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=v16"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@types/node": "*",
|
||||
"cosmiconfig": ">=8.2",
|
||||
"typescript": ">=4"
|
||||
}
|
||||
},
|
||||
"node_modules/cosmiconfig/node_modules/parse-json": {
|
||||
"version": "5.2.0",
|
||||
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
|
||||
|
@ -10269,6 +10836,27 @@
|
|||
"url": "https://github.com/fb55/domutils?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/dot-prop": {
|
||||
"version": "5.3.0",
|
||||
"resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz",
|
||||
"integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"is-obj": "^2.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/dot-prop/node_modules/is-obj": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
|
||||
"integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/dotenv": {
|
||||
"version": "16.4.5",
|
||||
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz",
|
||||
|
@ -10468,7 +11056,6 @@
|
|||
"version": "2.2.1",
|
||||
"resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
|
||||
"integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
|
||||
"optional": true,
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
|
@ -12919,6 +13506,30 @@
|
|||
"node": ">=10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/global-directory": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz",
|
||||
"integrity": "sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"ini": "4.1.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/global-directory/node_modules/ini": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz",
|
||||
"integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==",
|
||||
"license": "ISC",
|
||||
"engines": {
|
||||
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/global-modules": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz",
|
||||
|
@ -13496,6 +14107,16 @@
|
|||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/import-meta-resolve": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz",
|
||||
"integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==",
|
||||
"license": "MIT",
|
||||
"funding": {
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/wooorm"
|
||||
}
|
||||
},
|
||||
"node_modules/imurmurhash": {
|
||||
"version": "0.1.4",
|
||||
"resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
|
||||
|
@ -14114,6 +14735,18 @@
|
|||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/is-text-path": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz",
|
||||
"integrity": "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"text-extensions": "^2.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/is-typed-array": {
|
||||
"version": "1.1.13",
|
||||
"resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz",
|
||||
|
@ -14295,6 +14928,15 @@
|
|||
"url": "https://github.com/chalk/supports-color?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/jiti": {
|
||||
"version": "1.21.6",
|
||||
"resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz",
|
||||
"integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==",
|
||||
"license": "MIT",
|
||||
"bin": {
|
||||
"jiti": "bin/jiti.js"
|
||||
}
|
||||
},
|
||||
"node_modules/joycon": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz",
|
||||
|
@ -14517,6 +15159,15 @@
|
|||
"graceful-fs": "^4.1.6"
|
||||
}
|
||||
},
|
||||
"node_modules/jsonparse": {
|
||||
"version": "1.3.1",
|
||||
"resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
|
||||
"integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==",
|
||||
"engines": [
|
||||
"node >= 0.2.0"
|
||||
],
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/jsonpath-plus": {
|
||||
"version": "7.1.0",
|
||||
"resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-7.1.0.tgz",
|
||||
|
@ -14533,6 +15184,22 @@
|
|||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/JSONStream": {
|
||||
"version": "1.3.5",
|
||||
"resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz",
|
||||
"integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==",
|
||||
"license": "(MIT OR Apache-2.0)",
|
||||
"dependencies": {
|
||||
"jsonparse": "^1.2.0",
|
||||
"through": ">=2.2.7 <3"
|
||||
},
|
||||
"bin": {
|
||||
"JSONStream": "bin.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/jstransformer": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz",
|
||||
|
@ -14746,21 +15413,57 @@
|
|||
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
|
||||
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
|
||||
},
|
||||
"node_modules/lodash.camelcase": {
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
|
||||
"integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/lodash.debounce": {
|
||||
"version": "4.0.8",
|
||||
"resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
|
||||
"integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow=="
|
||||
},
|
||||
"node_modules/lodash.isplainobject": {
|
||||
"version": "4.0.6",
|
||||
"resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
|
||||
"integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/lodash.kebabcase": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz",
|
||||
"integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/lodash.merge": {
|
||||
"version": "4.6.2",
|
||||
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
|
||||
"integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="
|
||||
},
|
||||
"node_modules/lodash.mergewith": {
|
||||
"version": "4.6.2",
|
||||
"resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz",
|
||||
"integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/lodash.snakecase": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz",
|
||||
"integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/lodash.sortby": {
|
||||
"version": "4.7.0",
|
||||
"resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
|
||||
"integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg="
|
||||
},
|
||||
"node_modules/lodash.startcase": {
|
||||
"version": "4.4.0",
|
||||
"resolved": "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz",
|
||||
"integrity": "sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/lodash.topath": {
|
||||
"version": "4.5.2",
|
||||
"resolved": "https://registry.npmjs.org/lodash.topath/-/lodash.topath-4.5.2.tgz",
|
||||
|
@ -14781,6 +15484,12 @@
|
|||
"resolved": "https://registry.npmjs.org/lodash.uniqwith/-/lodash.uniqwith-4.5.0.tgz",
|
||||
"integrity": "sha1-egy/ZfQ7WShiWp1NDcVLGMrcfvM="
|
||||
},
|
||||
"node_modules/lodash.upperfirst": {
|
||||
"version": "4.3.1",
|
||||
"resolved": "https://registry.npmjs.org/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz",
|
||||
"integrity": "sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/long": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
|
||||
|
@ -20393,6 +21102,18 @@
|
|||
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
|
||||
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
|
||||
},
|
||||
"node_modules/text-extensions": {
|
||||
"version": "2.4.0",
|
||||
"resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-2.4.0.tgz",
|
||||
"integrity": "sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/text-table": {
|
||||
"version": "0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
|
||||
|
@ -20827,6 +21548,12 @@
|
|||
"real-require": "^0.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/through": {
|
||||
"version": "2.3.8",
|
||||
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
|
||||
"integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/through2": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz",
|
||||
|
@ -20897,6 +21624,12 @@
|
|||
"node": ">= 6"
|
||||
}
|
||||
},
|
||||
"node_modules/tinyexec": {
|
||||
"version": "0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.0.tgz",
|
||||
"integrity": "sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/tinylogic": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/tinylogic/-/tinylogic-2.0.0.tgz",
|
||||
|
@ -21533,6 +22266,18 @@
|
|||
"node": ">=4"
|
||||
}
|
||||
},
|
||||
"node_modules/unicorn-magic": {
|
||||
"version": "0.1.0",
|
||||
"resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz",
|
||||
"integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/unified": {
|
||||
"version": "9.2.2",
|
||||
"resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz",
|
||||
|
|
2
dependencies/package.json
vendored
2
dependencies/package.json
vendored
|
@ -5,11 +5,13 @@
|
|||
"@babel/preset-react": "^7.24.7",
|
||||
"@babel/preset-typescript": "^7.24.7",
|
||||
"@coffeelint/cli": "^5.2.11",
|
||||
"@commitlint/config-conventional": "^19.5.0",
|
||||
"@ibm/tekton-lint": "^1.1.0",
|
||||
"@react-native/eslint-config": "^0.75.2",
|
||||
"@stoplight/spectral-cli": "^6.11.1",
|
||||
"@typescript-eslint/eslint-plugin": "^7.16.1",
|
||||
"asl-validator": "^3.8.3",
|
||||
"commitlint": "^19.5.0",
|
||||
"eslint": "^8.57.0",
|
||||
"eslint-config-airbnb": "^19.0.4",
|
||||
"eslint-config-prettier": "^9.1.0",
|
||||
|
|
|
@ -20,8 +20,7 @@ ENV PATH="${NODE_PATH}/.bin:${PATH}"
|
|||
|
||||
# Split this from the previous RUN instruction so we can cache the costly installation step
|
||||
# hadolint ignore=DL3059
|
||||
RUN commitlint --version \
|
||||
&& release-please --version \
|
||||
RUN release-please --version \
|
||||
&& git config --global --add safe.directory /source-repository
|
||||
|
||||
ARG USERNAME=super-linter-dev
|
||||
|
|
924
dev-dependencies/package-lock.json
generated
924
dev-dependencies/package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
@ -1,10 +1,8 @@
|
|||
{
|
||||
"name": "commitlint-container-image",
|
||||
"name": "super-linter-dev-tools-container-image",
|
||||
"private": true,
|
||||
"version": "0.0.1-local",
|
||||
"dependencies": {
|
||||
"@commitlint/cli": "^19.4.0",
|
||||
"@commitlint/config-conventional": "^19.2.2",
|
||||
"release-please": "^16.12.0"
|
||||
},
|
||||
"license": "MIT"
|
||||
|
|
|
@ -118,6 +118,18 @@ function BuildFileList() {
|
|||
debug "DEFAULT_JSCPD_TEST_CASE_DIRECTORY: ${DEFAULT_JSCPD_TEST_CASE_DIRECTORY}"
|
||||
RAW_FILE_ARRAY+=("${DEFAULT_JSCPD_TEST_CASE_DIRECTORY}/bad")
|
||||
RAW_FILE_ARRAY+=("${DEFAULT_JSCPD_TEST_CASE_DIRECTORY}/good")
|
||||
|
||||
debug "Adding test case directories to the list of directories to analyze with Commitlint."
|
||||
DEFAULT_GIT_COMMITLINT_TEST_CASE_DIRECTORY="${GITHUB_WORKSPACE}/${TEST_CASE_FOLDER}/git_commitlint"
|
||||
# We need this for parallel
|
||||
export DEFAULT_GIT_COMMITLINT_TEST_CASE_DIRECTORY
|
||||
debug "DEFAULT_GIT_COMMITLINT_TEST_CASE_DIRECTORY: ${DEFAULT_GIT_COMMITLINT_TEST_CASE_DIRECTORY}"
|
||||
RAW_FILE_ARRAY+=("${DEFAULT_GIT_COMMITLINT_TEST_CASE_DIRECTORY}/bad")
|
||||
RAW_FILE_ARRAY+=("${DEFAULT_GIT_COMMITLINT_TEST_CASE_DIRECTORY}/good")
|
||||
# Commitlint uses Git to get commit data, so the dynamically created test case repositories
|
||||
# need to be marked as safe
|
||||
git config --global --add safe.directory "${DEFAULT_GIT_COMMITLINT_TEST_CASE_DIRECTORY}/bad"
|
||||
git config --global --add safe.directory "${DEFAULT_GIT_COMMITLINT_TEST_CASE_DIRECTORY}/good"
|
||||
fi
|
||||
|
||||
debug "Add GITHUB_WORKSPACE (${GITHUB_WORKSPACE}) to the list of files to lint because we might need it for linters that lint the whole workspace"
|
||||
|
@ -239,10 +251,13 @@ BuildFileArrays() {
|
|||
echo "${FILE}" >>"${FILE_ARRAYS_DIRECTORY_PATH}/file-array-CHECKOV"
|
||||
fi
|
||||
|
||||
# JSCPD test cases are handled below because we first need to exclude non-relevant test cases
|
||||
# Test cases for these languages are handled below because we first need to exclude non-relevant test cases
|
||||
if [[ "${TEST_CASE_RUN}" == "false" ]]; then
|
||||
debug "Add ${FILE} to the list of items to lint with JSCPD"
|
||||
echo "${FILE}" >>"${FILE_ARRAYS_DIRECTORY_PATH}/file-array-JSCPD"
|
||||
|
||||
debug "Add ${FILE} to the list of items to lint with Commitlint"
|
||||
echo "${FILE}" >>"${FILE_ARRAYS_DIRECTORY_PATH}/file-array-GIT_COMMITLINT"
|
||||
fi
|
||||
|
||||
# Handle the corner case where FILE=${GITHUB_WORKSPACE}, and the user set
|
||||
|
@ -311,6 +326,12 @@ BuildFileArrays() {
|
|||
echo "${FILE}" >>"${FILE_ARRAYS_DIRECTORY_PATH}/file-array-JSCPD"
|
||||
fi
|
||||
|
||||
# Handle Commitlint test cases
|
||||
if [[ "${TEST_CASE_RUN}" == "true" ]] && [[ "${FILE}" =~ .*${DEFAULT_GIT_COMMITLINT_TEST_CASE_DIRECTORY}.* ]] && [[ -d "${FILE}" ]]; then
|
||||
debug "${FILE} is a test case for Commitlint. Adding it to the list of items to lint with Commitlint"
|
||||
echo "${FILE}" >>"${FILE_ARRAYS_DIRECTORY_PATH}/file-array-GIT_COMMITLINT"
|
||||
fi
|
||||
|
||||
# See https://docs.renovatebot.com/configuration-options/
|
||||
if [[ "${BASE_FILE}" =~ renovate.json5? ]] ||
|
||||
[ "${BASE_FILE}" == ".renovaterc" ] || [[ "${BASE_FILE}" =~ .renovaterc.json5? ]]; then
|
||||
|
|
|
@ -68,6 +68,15 @@ if [ -n "${GITLEAKS_LOG_LEVEL:-}" ]; then
|
|||
fi
|
||||
LINTER_COMMANDS_ARRAY_GITLEAKS+=(--source)
|
||||
LINTER_COMMANDS_ARRAY_GHERKIN=(gherkin-lint -c "${GHERKIN_LINTER_RULES}")
|
||||
LINTER_COMMANDS_ARRAY_GIT_COMMITLINT=(commitlint --verbose --cwd "{}")
|
||||
if [[ -n "${GITHUB_BEFORE_SHA:-}" ]]; then
|
||||
LINTER_COMMANDS_ARRAY_GIT_COMMITLINT+=(--from "${GITHUB_BEFORE_SHA}" --to "${GITHUB_SHA}")
|
||||
else
|
||||
LINTER_COMMANDS_ARRAY_GIT_COMMITLINT+=(--last)
|
||||
fi
|
||||
if [ "${ENABLE_COMMITLINT_STRICT_MODE:-}" == 'true' ]; then
|
||||
LINTER_COMMANDS_ARRAY_GIT_COMMITLINT+=("${COMMITLINT_STRICT_MODE_OPTIONS[@]}")
|
||||
fi
|
||||
LINTER_COMMANDS_ARRAY_GIT_MERGE_CONFLICT_MARKERS=(git-merge-conflict-markers)
|
||||
LINTER_COMMANDS_ARRAY_GO=(golangci-lint run -c "${GO_LINTER_RULES}" --fast)
|
||||
LINTER_COMMANDS_ARRAY_GO_MODULES=(golangci-lint run --allow-parallel-runners -c "${GO_LINTER_RULES}")
|
||||
|
|
|
@ -5,8 +5,10 @@ function ValidateBooleanConfigurationVariables() {
|
|||
ValidateBooleanVariable "BASH_EXEC_IGNORE_LIBRARIES" "${BASH_EXEC_IGNORE_LIBRARIES}"
|
||||
ValidateBooleanVariable "CREATE_LOG_FILE" "${CREATE_LOG_FILE}"
|
||||
ValidateBooleanVariable "DISABLE_ERRORS" "${DISABLE_ERRORS}"
|
||||
ValidateBooleanVariable "ENABLE_COMMITLINT_STRICT_MODE" "${ENABLE_COMMITLINT_STRICT_MODE}"
|
||||
ValidateBooleanVariable "ENABLE_GITHUB_ACTIONS_GROUP_TITLE" "${ENABLE_GITHUB_ACTIONS_GROUP_TITLE}"
|
||||
ValidateBooleanVariable "ENABLE_GITHUB_ACTIONS_STEP_SUMMARY" "${ENABLE_GITHUB_ACTIONS_STEP_SUMMARY}"
|
||||
ValidateBooleanVariable "ENFORCE_COMMITLINT_CONFIGURATION_CHECK" "${ENFORCE_COMMITLINT_CONFIGURATION_CHECK}"
|
||||
ValidateBooleanVariable "FIX_MODE_ENABLED" "${FIX_MODE_ENABLED}"
|
||||
ValidateBooleanVariable "FIX_MODE_TEST_CASE_RUN" "${FIX_MODE_TEST_CASE_RUN}"
|
||||
ValidateBooleanVariable "IGNORE_GENERATED_FILES" "${IGNORE_GENERATED_FILES}"
|
||||
|
@ -374,6 +376,37 @@ function ValidateSuperLinterSummaryOutputPath() {
|
|||
debug "Super-linter summary ouput path passed validation"
|
||||
}
|
||||
|
||||
ValidateCommitlintConfiguration() {
|
||||
local GITHUB_WORKSPACE="${1}"
|
||||
local ENFORCE_COMMITLINT_CONFIGURATION_CHECK="${2}"
|
||||
|
||||
debug "Validating Commitlint configuration. Enforce commitlint configuration check: ${ENFORCE_COMMITLINT_CONFIGURATION_CHECK}"
|
||||
|
||||
if [[ "${VALIDATE_GIT_COMMITLINT}" == "true" ]]; then
|
||||
local COMMITLINT_VERSION_CHECK_OUTPUT
|
||||
COMMITLINT_VERSION_CHECK_OUTPUT="$(commitlint --cwd "${GITHUB_WORKSPACE}" --last)"
|
||||
local COMMITLINT_EXIT_CODE=$?
|
||||
debug "Commitlint configuration check output:\n${COMMITLINT_VERSION_CHECK_OUTPUT}"
|
||||
# Commitlint exits with 9 if no configuration file is avaialble.
|
||||
# Ref: https://github.com/conventional-changelog/commitlint/pull/4143
|
||||
# Ref: https://commitlint.js.org/reference/cli.html
|
||||
# Set this here so we can reuse this variable for tests
|
||||
COMMITLINT_EXIT_CODE_CONFIGURATION_ERROR=9
|
||||
if [[ ${COMMITLINT_EXIT_CODE} -eq ${COMMITLINT_EXIT_CODE_CONFIGURATION_ERROR} ]]; then
|
||||
warn "Git commit message validation with commitlint is enabled, but no commitlint configuration file is available. Disabling commitlint. To suppress this message, either disable Git commit validation by setting VALIDATE_GIT_COMMITLINT to false in your Super-linter configuration, or provide a commitlint configuration file."
|
||||
VALIDATE_GIT_COMMITLINT="false"
|
||||
export VALIDATE_GIT_COMMITLINT
|
||||
|
||||
if [[ "${ENFORCE_COMMITLINT_CONFIGURATION_CHECK}" == "true" ]]; then
|
||||
info "Commitlint configuration check enforcement is enabled. Exiting with an error because the commitlint configuration check failed."
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
else
|
||||
debug "Commitlint is disabled. Skipping commitlint configuration validation"
|
||||
fi
|
||||
}
|
||||
|
||||
function WarnIfVariableIsSet() {
|
||||
local INPUT_VARIABLE="${1}"
|
||||
shift
|
||||
|
|
|
@ -14,6 +14,7 @@ LANGUAGE_ARRAY=('ANSIBLE' 'ARM' 'BASH' 'BASH_EXEC' 'CHECKOV' 'CLANG_FORMAT'
|
|||
'ENV'
|
||||
'GITHUB_ACTIONS'
|
||||
'GITLEAKS' 'GHERKIN'
|
||||
"GIT_COMMITLINT"
|
||||
"GIT_MERGE_CONFLICT_MARKERS"
|
||||
'GO' 'GO_MODULES' 'GO_RELEASER' 'GOOGLE_JAVA_FORMAT'
|
||||
"GRAPHQL_PRETTIER"
|
||||
|
|
|
@ -101,4 +101,6 @@ SQLFLUFF_FIX_MODE_OPTIONS+=("${SQLFLUFF_SHARED_SUBCOMMAND_OPTIONS[@]}")
|
|||
# will not be passed to the --workdir option as well.
|
||||
INPUT_CONSUME_COMMAND=("&& echo \"Linted: {}\"")
|
||||
|
||||
COMMITLINT_STRICT_MODE_OPTIONS=("--strict")
|
||||
|
||||
GITLEAKS_LOG_LEVEL_OPTIONS=("--log-level")
|
||||
|
|
|
@ -137,6 +137,14 @@ declare -l REMOVE_ANSI_COLOR_CODES_FROM_OUTPUT
|
|||
REMOVE_ANSI_COLOR_CODES_FROM_OUTPUT="${REMOVE_ANSI_COLOR_CODES_FROM_OUTPUT:-"false"}"
|
||||
export REMOVE_ANSI_COLOR_CODES_FROM_OUTPUT
|
||||
|
||||
declare -l ENABLE_COMMITLINT_STRICT_MODE
|
||||
ENABLE_COMMITLINT_STRICT_MODE="${ENABLE_COMMITLINT_STRICT_MODE:-"false"}"
|
||||
export ENABLE_COMMITLINT_STRICT_MODE
|
||||
|
||||
declare -l ENFORCE_COMMITLINT_CONFIGURATION_CHECK
|
||||
ENFORCE_COMMITLINT_CONFIGURATION_CHECK="${ENFORCE_COMMITLINT_CONFIGURATION_CHECK:-"false"}"
|
||||
export ENFORCE_COMMITLINT_CONFIGURATION_CHECK
|
||||
|
||||
# Define private output paths early because cleanup depends on those being defined
|
||||
DEFAULT_SUPER_LINTER_OUTPUT_DIRECTORY_NAME="super-linter-output"
|
||||
SUPER_LINTER_OUTPUT_DIRECTORY_NAME="${SUPER_LINTER_OUTPUT_DIRECTORY_NAME:-${DEFAULT_SUPER_LINTER_OUTPUT_DIRECTORY_NAME}}"
|
||||
|
@ -783,6 +791,10 @@ else
|
|||
debug "Skipped the validation of the local Git environment because we don't depend on it."
|
||||
fi
|
||||
|
||||
if ! ValidateCommitlintConfiguration "${GITHUB_WORKSPACE}" "${ENFORCE_COMMITLINT_CONFIGURATION_CHECK}"; then
|
||||
fatal "Error while validating commitlint configuration"
|
||||
fi
|
||||
|
||||
ValidateDeprecatedVariables
|
||||
|
||||
# After checking if LOG_LEVEL is set to a deprecated value (see the ValidateDeprecatedVariables function),
|
||||
|
|
|
@ -24,6 +24,7 @@ LINTER_NAMES_ARRAY['ENV']="dotenv-linter"
|
|||
LINTER_NAMES_ARRAY['GITHUB_ACTIONS']="actionlint"
|
||||
LINTER_NAMES_ARRAY['GITLEAKS']="gitleaks"
|
||||
LINTER_NAMES_ARRAY['GHERKIN']="gherkin-lint"
|
||||
LINTER_NAMES_ARRAY['GIT_COMMITLINT']="commitlint"
|
||||
LINTER_NAMES_ARRAY['GIT_MERGE_CONFLICT_MARKERS']="git-merge-conflict-markers"
|
||||
LINTER_NAMES_ARRAY['GO']="golangci-lint"
|
||||
LINTER_NAMES_ARRAY['GO_MODULES']="${LINTER_NAMES_ARRAY['GO']}"
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
| GITHUB_ACTIONS | Fail ❌ |
|
||||
| GITLEAKS | Fail ❌ |
|
||||
| GHERKIN | Fail ❌ |
|
||||
| GIT_COMMITLINT | Fail ❌ |
|
||||
| GIT_MERGE_CONFLICT_MARKERS | Fail ❌ |
|
||||
| GO | Fail ❌ |
|
||||
| GO_MODULES | Fail ❌ |
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
| GITHUB_ACTIONS | Fail ❌ |
|
||||
| GITLEAKS | Fail ❌ |
|
||||
| GHERKIN | Fail ❌ |
|
||||
| GIT_COMMITLINT | Fail ❌ |
|
||||
| GIT_MERGE_CONFLICT_MARKERS | Fail ❌ |
|
||||
| GO | Fail ❌ |
|
||||
| GO_MODULES | Fail ❌ |
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
| GITHUB_ACTIONS | Pass ✅ |
|
||||
| GITLEAKS | Pass ✅ |
|
||||
| GHERKIN | Pass ✅ |
|
||||
| GIT_COMMITLINT | Pass ✅ |
|
||||
| GIT_MERGE_CONFLICT_MARKERS | Pass ✅ |
|
||||
| GO | Pass ✅ |
|
||||
| GO_MODULES | Pass ✅ |
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
| GITHUB_ACTIONS | Pass ✅ |
|
||||
| GITLEAKS | Pass ✅ |
|
||||
| GHERKIN | Pass ✅ |
|
||||
| GIT_COMMITLINT | Pass ✅ |
|
||||
| GIT_MERGE_CONFLICT_MARKERS | Pass ✅ |
|
||||
| GO | Pass ✅ |
|
||||
| GO_MODULES | Pass ✅ |
|
||||
|
|
|
@ -155,6 +155,7 @@ control "super-linter-installed-commands" do
|
|||
{ linter_name: "clippy", linter_command: "cargo clippy"},
|
||||
{ linter_name: "clj-kondo"},
|
||||
{ linter_name: "coffeelint"},
|
||||
{ linter_name: "commitlint"},
|
||||
{ linter_name: "composer"},
|
||||
{ linter_name: "cpplint"},
|
||||
{ linter_name: "dart"},
|
||||
|
@ -341,6 +342,7 @@ control "super-linter-installed-npm-packages" do
|
|||
"@typescript-eslint/eslint-plugin",
|
||||
"@typescript-eslint/parser",
|
||||
"asl-validator",
|
||||
"commitlint",
|
||||
"eslint",
|
||||
"eslint-config-airbnb",
|
||||
"eslint-config-prettier",
|
||||
|
|
|
@ -55,6 +55,7 @@ source "lib/functions/linterCommands.sh"
|
|||
# because some tests modify LINTER_COMMANDS_xxx variables
|
||||
BASE_LINTER_COMMANDS_ARRAY_ANSIBLE=("${LINTER_COMMANDS_ARRAY_ANSIBLE[@]}")
|
||||
BASE_LINTER_COMMANDS_ARRAY_GITHUB_ACTIONS=("${LINTER_COMMANDS_ARRAY_GITHUB_ACTIONS[@]}")
|
||||
BASE_LINTER_COMMANDS_ARRAY_GIT_COMMITLINT=("${LINTER_COMMANDS_ARRAY_GIT_COMMITLINT[@]}")
|
||||
BASE_LINTER_COMMANDS_ARRAY_GITLEAKS=("${LINTER_COMMANDS_ARRAY_GITLEAKS[@]}")
|
||||
BASE_LINTER_COMMANDS_ARRAY_GO_MODULES=("${LINTER_COMMANDS_ARRAY_GO_MODULES[@]}")
|
||||
BASE_LINTER_COMMANDS_ARRAY_JSCPD=("${LINTER_COMMANDS_ARRAY_JSCPD[@]}")
|
||||
|
@ -125,6 +126,27 @@ function JscpdCommandTest() {
|
|||
notice "${FUNCTION_NAME} PASS"
|
||||
}
|
||||
|
||||
EnableCommitlintStrictModeCommandTest() {
|
||||
local FUNCTION_NAME
|
||||
FUNCTION_NAME="${FUNCNAME[0]}"
|
||||
info "${FUNCTION_NAME} start"
|
||||
|
||||
# shellcheck disable=SC2034
|
||||
ENABLE_COMMITLINT_STRICT_MODE="true"
|
||||
|
||||
# Source the file again so it accounts for modifications
|
||||
# shellcheck source=/dev/null
|
||||
source "lib/functions/linterCommands.sh"
|
||||
|
||||
EXPECTED_COMMAND=("${BASE_LINTER_COMMANDS_ARRAY_GIT_COMMITLINT[@]}" "${COMMITLINT_STRICT_MODE_OPTIONS[@]}")
|
||||
|
||||
if ! AssertArraysElementsContentMatch "LINTER_COMMANDS_ARRAY_GIT_COMMITLINT" "EXPECTED_COMMAND"; then
|
||||
fatal "${FUNCTION_NAME} test failed"
|
||||
fi
|
||||
|
||||
notice "${FUNCTION_NAME} PASS"
|
||||
}
|
||||
|
||||
function GitleaksCommandTest() {
|
||||
local FUNCTION_NAME
|
||||
FUNCTION_NAME="${FUNCNAME[0]}"
|
||||
|
@ -372,6 +394,7 @@ AddOptionsToCommandTest() {
|
|||
LinterCommandPresenceTest
|
||||
IgnoreGitIgnoredFilesJscpdCommandTest
|
||||
JscpdCommandTest
|
||||
EnableCommitlintStrictModeCommandTest
|
||||
GitleaksCommandTest
|
||||
GitleaksCommandCustomLogLevelTest
|
||||
InitInputConsumeCommandsTest
|
||||
|
|
|
@ -4,12 +4,8 @@ set -o errexit
|
|||
set -o nounset
|
||||
set -o pipefail
|
||||
|
||||
# Default log level
|
||||
# shellcheck disable=SC2034
|
||||
LOG_LEVEL="DEBUG"
|
||||
|
||||
# shellcheck source=/dev/null
|
||||
source "lib/functions/log.sh"
|
||||
source "test/testUtils.sh"
|
||||
|
||||
# shellcheck source=/dev/null
|
||||
source "lib/functions/validation.sh"
|
||||
|
@ -525,6 +521,46 @@ CheckIfFixModeIsEnabledTest() {
|
|||
|
||||
}
|
||||
|
||||
ValidateCommitlintConfigurationTest() {
|
||||
local FUNCTION_NAME
|
||||
FUNCTION_NAME="${FUNCNAME[0]}"
|
||||
info "${FUNCTION_NAME} start"
|
||||
|
||||
GITHUB_WORKSPACE="$(mktemp -d)"
|
||||
initialize_git_repository "${GITHUB_WORKSPACE}"
|
||||
|
||||
local ENFORCE_COMMITLINT_CONFIGURATION_CHECK="false"
|
||||
|
||||
VALIDATE_GIT_COMMITLINT="false"
|
||||
if ! ValidateCommitlintConfiguration "${GITHUB_WORKSPACE}" "${ENFORCE_COMMITLINT_CONFIGURATION_CHECK}"; then
|
||||
fatal "VALIDATE_GIT_COMMITLINT: ${VALIDATE_GIT_COMMITLINT} should have passed validation"
|
||||
else
|
||||
debug "VALIDATE_GIT_COMMITLINT: ${VALIDATE_GIT_COMMITLINT} passed validation as expected"
|
||||
fi
|
||||
|
||||
VALIDATE_GIT_COMMITLINT="true"
|
||||
if ! ValidateCommitlintConfiguration "${GITHUB_WORKSPACE}" "${ENFORCE_COMMITLINT_CONFIGURATION_CHECK}"; then
|
||||
fatal "VALIDATE_GIT_COMMITLINT: ${VALIDATE_GIT_COMMITLINT}, ENFORCE_COMMITLINT_CONFIGURATION_CHECK: ${ENFORCE_COMMITLINT_CONFIGURATION_CHECK} should have passed validation"
|
||||
else
|
||||
debug "VALIDATE_GIT_COMMITLINT: ${VALIDATE_GIT_COMMITLINT}, ENFORCE_COMMITLINT_CONFIGURATION_CHECK: ${ENFORCE_COMMITLINT_CONFIGURATION_CHECK} passed validation as expected"
|
||||
fi
|
||||
if [[ "${VALIDATE_GIT_COMMITLINT}" == "true" ]]; then
|
||||
fatal "VALIDATE_GIT_COMMITLINT should have been false"
|
||||
else
|
||||
debug "VALIDATE_GIT_COMMITLINT is ${VALIDATE_GIT_COMMITLINT} as expected"
|
||||
fi
|
||||
|
||||
VALIDATE_GIT_COMMITLINT="true"
|
||||
ENFORCE_COMMITLINT_CONFIGURATION_CHECK="true"
|
||||
if ValidateCommitlintConfiguration "${GITHUB_WORKSPACE}" "${ENFORCE_COMMITLINT_CONFIGURATION_CHECK}"; then
|
||||
fatal "VALIDATE_GIT_COMMITLINT: ${VALIDATE_GIT_COMMITLINT}, ENFORCE_COMMITLINT_CONFIGURATION_CHECK: ${ENFORCE_COMMITLINT_CONFIGURATION_CHECK} should have failed validation"
|
||||
else
|
||||
debug "VALIDATE_GIT_COMMITLINT: ${VALIDATE_GIT_COMMITLINT}, ENFORCE_COMMITLINT_CONFIGURATION_CHECK: ${ENFORCE_COMMITLINT_CONFIGURATION_CHECK} failed validation as expected"
|
||||
fi
|
||||
|
||||
notice "${FUNCTION_NAME} PASS"
|
||||
}
|
||||
|
||||
IsUnsignedIntegerSuccessTest
|
||||
IsUnsignedIntegerFailureTest
|
||||
ValidateDeprecatedVariablesTest
|
||||
|
@ -536,3 +572,4 @@ ValidateValidationVariablesTest
|
|||
ValidationVariablesExportTest
|
||||
ValidateCheckModeAndFixModeVariablesTest
|
||||
CheckIfFixModeIsEnabledTest
|
||||
ValidateCommitlintConfigurationTest
|
||||
|
|
8
test/linters/git_commitlint/.gitignore
vendored
Normal file
8
test/linters/git_commitlint/.gitignore
vendored
Normal file
|
@ -0,0 +1,8 @@
|
|||
# Commitlint test cases are dynamically generated Git repositories with
|
||||
# purpose-crafted commit messages. So:
|
||||
|
||||
# Ignore all files in this dir...
|
||||
*
|
||||
|
||||
# ... except for this one.
|
||||
!.gitignore
|
|
@ -24,9 +24,27 @@ configure_typescript_for_test_cases() {
|
|||
COMMAND_TO_RUN+=(--env TYPESCRIPT_STANDARD_TSCONFIG_FILE=".github/linters/tsconfig.json")
|
||||
}
|
||||
|
||||
configure_git_commitlint_test_cases() {
|
||||
debug "Initializing commitlint test case"
|
||||
local GIT_COMMITLINT_GOOD_TEST_CASE_REPOSITORY="test/linters/git_commitlint/good"
|
||||
rm -rfv "${GIT_COMMITLINT_GOOD_TEST_CASE_REPOSITORY}"
|
||||
initialize_git_repository "${GIT_COMMITLINT_GOOD_TEST_CASE_REPOSITORY}"
|
||||
touch "${GIT_COMMITLINT_GOOD_TEST_CASE_REPOSITORY}/test-file.txt"
|
||||
git -C "${GIT_COMMITLINT_GOOD_TEST_CASE_REPOSITORY}" add .
|
||||
git -C "${GIT_COMMITLINT_GOOD_TEST_CASE_REPOSITORY}" commit -m "feat: initial commit"
|
||||
|
||||
local GIT_COMMITLINT_BAD_TEST_CASE_REPOSITORY="test/linters/git_commitlint/bad"
|
||||
rm -rfv "${GIT_COMMITLINT_BAD_TEST_CASE_REPOSITORY}"
|
||||
initialize_git_repository "${GIT_COMMITLINT_BAD_TEST_CASE_REPOSITORY}"
|
||||
touch "${GIT_COMMITLINT_BAD_TEST_CASE_REPOSITORY}/test-file.txt"
|
||||
git -C "${GIT_COMMITLINT_BAD_TEST_CASE_REPOSITORY}" add .
|
||||
git -C "${GIT_COMMITLINT_BAD_TEST_CASE_REPOSITORY}" commit -m "Bad commit message"
|
||||
}
|
||||
|
||||
configure_linters_for_test_cases() {
|
||||
COMMAND_TO_RUN+=(-e TEST_CASE_RUN="true" -e JSCPD_CONFIG_FILE=".jscpd-test-linters.json" -e RENOVATE_SHAREABLE_CONFIG_PRESET_FILE_NAMES="default.json,hoge.json")
|
||||
configure_typescript_for_test_cases
|
||||
configure_git_commitlint_test_cases
|
||||
}
|
||||
|
||||
run_test_cases_expect_failure() {
|
||||
|
@ -79,16 +97,11 @@ run_test_case_dont_save_super_linter_output() {
|
|||
|
||||
initialize_git_repository_and_test_args() {
|
||||
local GIT_REPOSITORY_PATH="${1}"
|
||||
# shellcheck disable=SC2064 # Once the path is set, we don't expect it to change
|
||||
trap "sudo rm -fr '${GIT_REPOSITORY_PATH}'" EXIT
|
||||
|
||||
debug "GIT_REPOSITORY_PATH: ${GIT_REPOSITORY_PATH}"
|
||||
initialize_git_repository "${GIT_REPOSITORY_PATH}"
|
||||
|
||||
local GITHUB_EVENT_FILE_PATH="${2}"
|
||||
|
||||
git -C "${GIT_REPOSITORY_PATH}" init --initial-branch="${DEFAULT_BRANCH}"
|
||||
git -C "${GIT_REPOSITORY_PATH}" config user.name "Super-linter Test"
|
||||
git -C "${GIT_REPOSITORY_PATH}" config user.email "super-linter-test@example.com"
|
||||
# Put an arbitrary JSON file in the repository to trigger some validation
|
||||
cp -v "${GITHUB_EVENT_FILE_PATH}" "${GIT_REPOSITORY_PATH}/"
|
||||
git -C "${GIT_REPOSITORY_PATH}" add .
|
||||
|
@ -116,7 +129,11 @@ run_test_case_git_initial_commit() {
|
|||
|
||||
initialize_git_repository_and_test_args "${GIT_REPOSITORY_PATH}" "test/data/github-event/github-event-push.json"
|
||||
initialize_github_sha "${GIT_REPOSITORY_PATH}"
|
||||
COMMAND_TO_RUN+=(-e VALIDATE_JSON="true")
|
||||
COMMAND_TO_RUN+=(--env VALIDATE_JSON="true")
|
||||
|
||||
# Validate commits using commitlint so we can check that we have a default
|
||||
# commitlint configuration file
|
||||
COMMAND_TO_RUN+=(--env VALIDATE_GIT_COMMITLINT="true")
|
||||
}
|
||||
|
||||
run_test_case_merge_commit_push() {
|
||||
|
|
|
@ -219,3 +219,24 @@ RemoveTestLogsAndSuperLinterOutputs() {
|
|||
debug "Cleaning eventual test logs and Super-linter outputs leftovers: ${LEFTOVERS_TO_CLEAN[*]}"
|
||||
sudo rm -rf "${LEFTOVERS_TO_CLEAN[@]}"
|
||||
}
|
||||
|
||||
initialize_git_repository() {
|
||||
local GIT_REPOSITORY_PATH="${1}"
|
||||
|
||||
# Assuming that if sudo is available we aren't running inside a container,
|
||||
# so we don't want to leave leftovers around.
|
||||
if command -v sudo; then
|
||||
# shellcheck disable=SC2064 # Once the path is set, we don't expect it to change
|
||||
trap "sudo rm -fr '${GIT_REPOSITORY_PATH}'" EXIT
|
||||
fi
|
||||
|
||||
if [[ ! -d "${GIT_REPOSITORY_PATH}" ]]; then
|
||||
mkdir --parents "${GIT_REPOSITORY_PATH}"
|
||||
fi
|
||||
|
||||
debug "GIT_REPOSITORY_PATH: ${GIT_REPOSITORY_PATH}"
|
||||
|
||||
git -C "${GIT_REPOSITORY_PATH}" init --initial-branch="${DEFAULT_BRANCH:-"main"}"
|
||||
git -C "${GIT_REPOSITORY_PATH}" config user.name "Super-linter Test"
|
||||
git -C "${GIT_REPOSITORY_PATH}" config user.email "super-linter-test@example.com"
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue