1
1
mirror of https://github.com/orhun/git-cliff.git synced 2024-08-16 18:30:30 +03:00

Compare commits

...

17 Commits

Author SHA1 Message Date
DaniPopes
68b7e79e75
fmt 2024-06-24 20:37:11 +02:00
DaniPopes
0621f69ed5
Merge branch 'main' into cleanups 2024-06-24 20:35:27 +02:00
DaniPopes
8e084ad59d
review 2024-06-24 20:32:04 +02:00
DaniPopes
f4afa8cdaf
Update git-cliff/src/lib.rs
Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com>
2024-06-24 20:27:22 +02:00
Meitar Reihan
3eb828e69a
feat(changelog): add tag message to release context (#713)
* feat: add tag message to release context

- add to the release context the tag's message if it exists
- add message to the default config

* feat(args): add `--with-tag-message` argument

to allow setting the message of the last release in the context

* docs: update args

* docs: add adding-tag-messages

* refactor: polish implementation

* tests(test-tag-message): fix the template

---------

Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com>
2024-06-22 13:29:49 +03:00
dependabot[bot]
5f31e0fac6
chore(deps): bump lazy_static from 1.4.0 to 1.5.0 (#726)
Bumps [lazy_static](https://github.com/rust-lang-nursery/lazy-static.rs) from 1.4.0 to 1.5.0.
- [Release notes](https://github.com/rust-lang-nursery/lazy-static.rs/releases)
- [Commits](https://github.com/rust-lang-nursery/lazy-static.rs/compare/1.4.0...1.5.0)

---
updated-dependencies:
- dependency-name: lazy_static
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-22 11:39:55 +03:00
Meitar Reihan
8e03356706
feat(bump): support bumping based on configurable custom pattern (#725)
* chore(deps): bump next_version from 0.2.17 to 0.2.18

Bumps [next_version](https://github.com/MarcoIeni/release-plz) from 0.2.17 to 0.2.18.
- [Release notes](https://github.com/MarcoIeni/release-plz/releases)
- [Changelog](https://github.com/MarcoIeni/release-plz/blob/main/CHANGELOG.md)
- [Commits](https://github.com/MarcoIeni/release-plz/compare/next_version-v0.2.17...next_version-v0.2.18)

---
updated-dependencies:
- dependency-name: next_version
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* feat: Support bumping version based on configurable custom pattern

closes #717

* refactor: clean up implementation

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com>
2024-06-21 23:38:52 +03:00
dependabot[bot]
d642d33c27
chore(deps-dev): bump typescript from 5.4.5 to 5.5.2 in /website in the minor group (#723)
Bumps the minor group in /website with 1 update: [typescript](https://github.com/Microsoft/TypeScript).


Updates `typescript` from 5.4.5 to 5.5.2
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Changelog](https://github.com/microsoft/TypeScript/blob/main/azure-pipelines.release.yml)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v5.4.5...v5.5.2)

---
updated-dependencies:
- dependency-name: typescript
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-21 20:48:56 +03:00
dependabot[bot]
9e152a2dc0
chore(deps): bump @easyops-cn/docusaurus-search-local from 0.44.1 to 0.44.2 in /website in the patch group (#724)
Bumps the patch group in /website with 1 update: [@easyops-cn/docusaurus-search-local](https://github.com/easyops-cn/docusaurus-search-local/tree/HEAD/packages/docusaurus-search-local).


Updates `@easyops-cn/docusaurus-search-local` from 0.44.1 to 0.44.2
- [Release notes](https://github.com/easyops-cn/docusaurus-search-local/releases)
- [Commits](https://github.com/easyops-cn/docusaurus-search-local/commits/v0.44.2/packages/docusaurus-search-local)

---
updated-dependencies:
- dependency-name: "@easyops-cn/docusaurus-search-local"
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-21 17:48:53 +03:00
dependabot[bot]
4a3edcaf5d
chore(deps): bump @easyops-cn/docusaurus-search-local from 0.44.0 to 0.44.1 in /website in the patch group (#720)
Bumps the patch group in /website with 1 update: [@easyops-cn/docusaurus-search-local](https://github.com/easyops-cn/docusaurus-search-local/tree/HEAD/packages/docusaurus-search-local).


Updates `@easyops-cn/docusaurus-search-local` from 0.44.0 to 0.44.1
- [Release notes](https://github.com/easyops-cn/docusaurus-search-local/releases)
- [Commits](https://github.com/easyops-cn/docusaurus-search-local/commits/v0.44.1/packages/docusaurus-search-local)

---
updated-dependencies:
- dependency-name: "@easyops-cn/docusaurus-search-local"
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-20 10:27:19 +03:00
dependabot[bot]
2a4998db06
chore(deps): bump clap_complete from 4.5.5 to 4.5.6 (#722)
Bumps [clap_complete](https://github.com/clap-rs/clap) from 4.5.5 to 4.5.6.
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.5...clap_complete-v4.5.6)

---
updated-dependencies:
- dependency-name: clap_complete
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-20 10:22:58 +03:00
dependabot[bot]
7f594e0425
chore(deps): bump url from 2.5.1 to 2.5.2 (#719)
Bumps [url](https://github.com/servo/rust-url) from 2.5.1 to 2.5.2.
- [Release notes](https://github.com/servo/rust-url/releases)
- [Commits](https://github.com/servo/rust-url/compare/v2.5.1...v2.5.2)

---
updated-dependencies:
- dependency-name: url
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-19 11:53:37 +03:00
dependabot[bot]
7ff4196287
chore(deps): bump reqwest from 0.12.4 to 0.12.5 (#715)
Bumps [reqwest](https://github.com/seanmonstar/reqwest) from 0.12.4 to 0.12.5.
- [Release notes](https://github.com/seanmonstar/reqwest/releases)
- [Changelog](https://github.com/seanmonstar/reqwest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/seanmonstar/reqwest/compare/v0.12.4...v0.12.5)

---
updated-dependencies:
- dependency-name: reqwest
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-18 12:14:58 +03:00
dependabot[bot]
1d4d955955
chore(deps): bump docker/build-push-action from 5 to 6 (#714)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 5 to 6.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v5...v6)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-18 12:14:09 +03:00
Buk Bukowski
94891c2c27
feat(args): add --ignore-tags argument (#696)
* feat(cli,args): allow overwriting `ignore_tags` argument

Signed-off-by: Bukowa <gitbukowa@gmail.com>

* chore(lint): cargo fmt

Signed-off-by: Bukowa <gitbukowa@gmail.com>

* chore(lint): clippy

Signed-off-by: Bukowa <gitbukowa@gmail.com>

* Revert "chore(lint): clippy"

This reverts commit f307647f87.

Signed-off-by: Bukowa <gitbukowa@gmail.com>

* Revert chore(lint): cargo fmt in changelog.rs

Signed-off-by: Bukowa <gitbukowa@gmail.com>

* chore: git update-index --chmod=+x .github/fixtures/test-cli-arg-ignore-tags/commit.sh

Signed-off-by: Bukowa <gitbukowa@gmail.com>

* chore(lint): fix formatting

Signed-off-by: Bukowa <gitbukowa@gmail.com>

* revert changes to test-fixtures-locally.sh

Signed-off-by: Bukowa <gitbukowa@gmail.com>

* revert changes to .gitignore

Signed-off-by: Bukowa <gitbukowa@gmail.com>

* chore: change doc in args.rs and doc

Signed-off-by: Bukowa <gitbukowa@gmail.com>

* Revert "chore(lint): fix formatting"

This reverts commit c829865feb.

Signed-off-by: Bukowa <gitbukowa@gmail.com>

* style(lint): rustfmt

Signed-off-by: Bukowa <gitbukowa@gmail.com>

* tests(fixtures): uncomment commit

* tests(fixtures): fix expected.md

---------

Signed-off-by: Bukowa <gitbukowa@gmail.com>
2024-06-17 20:47:14 +03:00
Cyclonit
9fc12bb90c
feat(changelog): make changelog.header a template (#698)
* feat(changelog): make changelog.header a template (#697)

* refactor: clean up implementation

* docs: update the description of header field

---------

Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com>
2024-06-17 20:43:00 +03:00
Jan Ferdinand Sauer
50c240c25b
feat(changelog): support parsing commits by footer (#569)
* feat: Enable footer-based commit parsing

Enable defining parsers for a commit's footer, similar to the already-
present commit parsers for a commit's message or body.

For example:

```toml
commit_parsers = [
  { footer = "changelog: ignore", skip = true },
]
```

Due to an inconsistency between the conventional commits specification
and its reference parser, footers are currently interpreted as
`key:value` instead of the (correct) `key: value`. See
https://github.com/conventional-commits/parser/issues/47 for details.
As a future-proof workaround, you can use `key: ?value` in the regex.

* chore: fix typo

---------

Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com>
2024-06-16 19:32:39 +03:00
86 changed files with 1373 additions and 10801 deletions

View File

@ -1,5 +1,5 @@
[changelog]
# changelog header
# template for the changelog footer
header = """
# Changelog\n
All notable changes to this project will be documented in this file.\n

View File

@ -1,5 +1,5 @@
[changelog]
# changelog header
# template for the changelog footer
header = """
# Changelog\n
All notable changes to this project will be documented in this file.\n

View File

@ -1,5 +1,5 @@
[changelog]
# changelog header
# template for the changelog footer
header = """
# Changelog\n
All notable changes to this project will be documented in this file.\n

View File

@ -1,5 +1,5 @@
[changelog]
# changelog header
# template for the changelog footer
header = """
# Changelog\n
All notable changes to this project will be documented in this file.\n

View File

@ -0,0 +1,37 @@
[changelog]
# template for the changelog footer
header = """
# Changelog\n
All notable changes to this project will be documented in this file.\n
"""
# template for the changelog body
# https://keats.github.io/tera/docs/#introduction
body = """
{% if version %}\
## [{{ version | trim_start_matches(pat="v") }}]
{% if message %}
{{ message }}
{% endif %}\
{% else %}\
## [unreleased]
{% endif %}\
{% for group, commits in commits | group_by(attribute="group") %}
### {{ group | upper_first }}
{% for commit in commits %}
- {{ commit.message | upper_first }}\
{% endfor %}
{% endfor %}\n
"""
# template for the changelog footer
footer = """
<!-- generated by git-cliff -->
"""
# remove the leading and trailing whitespace from the templates
trim = true
[git]
# regex for parsing and grouping commits
commit_parsers = [
{ message = "^feat", group = "Features", default_scope = "app" },
{ message = "^fix", group = "Bug Fixes", scope = "cli" },
]

View File

@ -0,0 +1,11 @@
#!/usr/bin/env bash
set -e
GIT_COMMITTER_DATE="2022-04-06 01:25:08" git commit --allow-empty -m "Initial commit"
GIT_COMMITTER_DATE="2022-04-06 01:25:09" git commit --allow-empty -m "feat: add feature 1"
GIT_COMMITTER_DATE="2022-04-06 01:25:10" git commit --allow-empty -m "fix: fix feature 1"
git tag v0.1.0
GIT_COMMITTER_DATE="2022-04-06 01:25:11" git commit --allow-empty -m "feat(gui): add feature 2"
GIT_COMMITTER_DATE="2022-04-06 01:25:12" git commit --allow-empty -m "fix(gui): fix feature 2"
git tag v0.2.0
GIT_COMMITTER_DATE="2022-04-06 01:25:13" git commit --allow-empty -m "test: add tests"

View File

@ -0,0 +1,13 @@
# Changelog
All notable changes to this project will be documented in this file.
## [0.2.1]
Some text
### Test
- Add tests
<!-- generated by git-cliff -->

View File

@ -0,0 +1,32 @@
[changelog]
# template for the changelog footer
header = """
# Changelog\n
All notable changes to this project will be documented in this file.\n
"""
# template for the changelog body
# https://keats.github.io/tera/docs/#introduction
body = """
{% if version %}\
## [{{ version | trim_start_matches(pat="v") }}]
{% else %}\
## [unreleased]
{% endif %}\
{% for group, commits in commits | group_by(attribute="group") %}
### {{ group | upper_first }}
{% for commit in commits %}
- {% if commit.breaking %}[**breaking**] {% endif %}{{ commit.message | upper_first }}\
{% endfor %}
{% endfor %}\n
"""
# template for the changelog footer
footer = """
<!-- generated by git-cliff -->
"""
# remove the leading and trailing whitespace from the templates
trim = true
[bump]
features_always_bump_minor = true
breaking_always_bump_major = true
custom_minor_increment_regex = "minor|more"

View File

@ -0,0 +1,9 @@
#!/usr/bin/env bash
set -e
GIT_COMMITTER_DATE="2021-01-23 01:23:45" git commit --allow-empty -m "feat: add feature 1"
GIT_COMMITTER_DATE="2021-01-23 01:23:45" git commit --allow-empty -m "feat: add feature 2"
git tag v0.1.0
GIT_COMMITTER_DATE="2021-01-23 01:23:46" git commit --allow-empty -m "minor: add minor"
GIT_COMMITTER_DATE="2021-01-23 01:23:46" git commit --allow-empty -m "fix: fix feature 2"

View File

@ -0,0 +1,22 @@
# Changelog
All notable changes to this project will be documented in this file.
## [0.2.0]
### Fix
- Fix feature 2
### Minor
- Add minor
## [0.1.0]
### Feat
- Add feature 1
- Add feature 2
<!-- generated by git-cliff -->

View File

@ -1,5 +1,5 @@
[changelog]
# changelog header
# template for the changelog footer
header = """
# Changelog\n
All notable changes to this project will be documented in this file.\n

View File

@ -1,5 +1,5 @@
[changelog]
# changelog header
# template for the changelog footer
header = """
# Changelog\n
All notable changes to this project will be documented in this file.\n

View File

@ -1,5 +1,5 @@
[changelog]
# changelog header
# template for the changelog footer
header = """
# Changelog\n
All notable changes to this project will be documented in this file.\n

View File

@ -0,0 +1,33 @@
[changelog]
# changelog header
header = """
# Changelog\n
All notable changes to this project will be documented in this file.\n
"""
# template for the changelog body
# https://keats.github.io/tera/docs/#introduction
body = """
{% if version %}\
## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }}
{% else %}\
## [unreleased]
{% endif %}\
{% for group, commits in commits | group_by(attribute="group") %}
### {{ group | upper_first }}
{% for commit in commits %}
- {% if commit.breaking %}[**breaking**] {% endif %}{{ commit.message | upper_first }}\
{% endfor %}
{% endfor %}\n
"""
# template for the changelog footer
footer = """
<!-- generated by git-cliff -->
"""
# remove the leading and trailing whitespace from the templates
trim = true
[git]
# regex for skipping tags
skip_tags = ""
# regex for ignoring tags
ignore_tags = ""

View File

@ -0,0 +1,15 @@
#!/usr/bin/env bash
set -e
GIT_COMMITTER_DATE="2021-01-23 01:23:45" git commit --allow-empty -m "feat: add first beta feature"
git tag v1.0.0-beta.1
GIT_COMMITTER_DATE="2021-01-23 01:23:46" git commit --allow-empty -m "feat: add second beta feature"
git tag v1.0.0-beta.2
# WARNING: If we won't create this commit, 1.0.0 won't be created!
GIT_COMMITTER_DATE="2021-01-23 01:23:47" git commit --allow-empty -m "chore: why do i need a commit here?"
git tag v1.0.0
GIT_COMMITTER_DATE="2021-01-23 01:23:49" git commit --allow-empty -m "fix: simple fix"
git tag v1.0.1

View File

@ -0,0 +1,22 @@
# Changelog
All notable changes to this project will be documented in this file.
## [1.0.1] - 2021-01-23
### Fix
- Simple fix
## [1.0.0] - 2021-01-23
### Chore
- Why do i need a commit here?
### Feat
- Add first beta feature
- Add second beta feature
<!-- generated by git-cliff -->

View File

@ -1,5 +1,5 @@
[changelog]
# changelog header
# template for the changelog footer
header = """
# Changelog\n
All notable changes to this project will be documented in this file.\n

View File

@ -1,5 +1,5 @@
[changelog]
# changelog header
# template for the changelog footer
header = """
# Changelog\n
All notable changes to this project will be documented in this file.\n

View File

@ -4,7 +4,7 @@ version = "0.1.0"
edition = "2021"
[package.metadata.git-cliff.changelog]
# changelog header
# template for the changelog footer
header = """
# Changelog\n
All notable changes to this project will be documented in this file.\n

View File

@ -1,5 +1,5 @@
[changelog]
# changelog header
# template for the changelog footer
header = """
# Changelog\n
All notable changes to this project will be documented in this file.\n

View File

@ -1,5 +1,5 @@
[changelog]
# changelog header
# template for the changelog footer
header = """
# Changelog\n
All notable changes to this project will be documented in this file.\n

View File

@ -1,5 +1,5 @@
[changelog]
# changelog header
# template for the changelog footer
header = """
# Changelog\n
All notable changes to this project will be documented in this file.\n

View File

@ -0,0 +1,39 @@
[changelog]
# changelog header
header = """
# Changelog\n
All notable changes to this project will be documented in this file.\n
"""
# template for the changelog body
# https://keats.github.io/tera/docs/#introduction
body = """
{% if version %}\
## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }}
{% else %}\
## [unreleased]
{% endif %}\
{% for group, commits in commits | group_by(attribute="group") %}
### {{ group | upper_first }}
{% for commit in commits %}
- {{ commit.message | upper_first }}\
{% endfor %}
{% endfor %}\n
"""
# template for the changelog footer
footer = """
<!-- generated by git-cliff -->
"""
# remove the leading and trailing whitespace from the templates
trim = true
[git]
# regex for parsing and grouping commits
commit_parsers = [
{ message = "^feat", group = "Features", default_scope = "app" },
{ message = "^fix", group = "Bug Fixes", scope = "cli" },
# Accept both separators, ": " and ":".
# Conventional commits require the separator to be ": ", but the reference implementation of the
# conventional commits parser currently does not adhere to the specification. See also:
# https://github.com/conventional-commits/parser/issues/47
{ footer = "^changelog: ?ignore", skip = true },
]

11
.github/fixtures/test-footer-filter/commit.sh vendored Executable file
View File

@ -0,0 +1,11 @@
#!/usr/bin/env bash
set -e
GIT_COMMITTER_DATE="2022-04-06 00:00:00" git commit --allow-empty -m "Initial commit"
GIT_COMMITTER_DATE="2022-04-06 00:10:00" git commit --allow-empty -m "feat: add feature 1"
git tag v0.1.0
GIT_COMMITTER_DATE="2022-04-06 01:00:00" git commit --allow-empty -m "refactor: change feature 1" -m "BREAKING CHANGE: feature 1 is now different"
GIT_COMMITTER_DATE="2022-04-06 01:10:00" git commit --allow-empty -m "chore: upgrade dependencies" -m "changelog: ignore"
git tag v0.2.0
GIT_COMMITTER_DATE="2022-04-06 02:00:00" git commit --allow-empty -m "test: add tests" -m "footer: some more info"
GIT_COMMITTER_DATE="2022-04-06 02:10:00" git commit --allow-empty -m "test: add more tests" -m "changelog: ignore"

View File

@ -0,0 +1,23 @@
# Changelog
All notable changes to this project will be documented in this file.
## [unreleased]
### Test
- Add tests
## [0.2.0] - 2022-04-06
### Refactor
- Change feature 1
## [0.1.0] - 2022-04-06
### Features
- Add feature 1
<!-- generated by git-cliff -->

View File

@ -1,5 +1,5 @@
[changelog]
# changelog header
# template for the changelog footer
header = """
# Changelog\n
All notable changes to this project will be documented in this file.\n

View File

@ -0,0 +1,31 @@
[changelog]
# template for the changelog footer
header = """
# Changelog
{% for release in releases %}\
{% if release.version %}\
{% if release.previous.version %}\
<!--{{ release.previous.version }}..{{ release.version }}-->
{% endif %}\
{% else %}\
<!--{{ release.previous.version }}..HEAD-->
{% endif %}\
{% endfor %}\
"""
# template for the changelog body
# https://keats.github.io/tera/docs/#introduction
body = """
{% if version %}\
## [{{ version | trim_start_matches(pat="v") }}]
{% else %}\
## [unreleased]
{% endif %}\
{% for group, commits in commits | group_by(attribute="group") %}
### {{ group | upper_first }}
{% for commit in commits %}
- {% if commit.breaking %}[**breaking**] {% endif %}{{ commit.message | upper_first }}\
{% endfor %}
{% endfor %}\n
"""
# remove the leading and trailing whitespace from the templates
trim = true

View File

@ -0,0 +1,16 @@
#!/usr/bin/env bash
set -e
GIT_COMMITTER_DATE="2021-01-23 01:23:45" git commit --allow-empty -m "feat: add feature 1"
GIT_COMMITTER_DATE="2021-01-23 01:23:45" git commit --allow-empty -m "feat: add feature 2"
git tag v0.1.0
GIT_COMMITTER_DATE="2021-01-23 01:23:46" git commit --allow-empty -m "fix: fix feature 1"
GIT_COMMITTER_DATE="2021-01-23 01:23:46" git commit --allow-empty -m "fix: fix feature 2"
git tag v0.2.0
GIT_COMMITTER_DATE="2021-01-23 01:23:47" git commit --allow-empty -m "feat: add footer"
git tag v3.0.0
GIT_COMMITTER_DATE="2021-01-23 01:23:47" git commit --allow-empty -m "test: footer"
GIT_COMMITTER_DATE="2021-01-23 01:23:47" git commit --allow-empty -m "perf: footer"

View File

@ -0,0 +1,33 @@
# Changelog
<!--v3.0.0..HEAD-->
<!--v0.2.0..v3.0.0-->
<!--v0.1.0..v0.2.0-->
## [unreleased]
### Perf
- Footer
### Test
- Footer
## [3.0.0]
### Feat
- Add footer
## [0.2.0]
### Fix
- Fix feature 1
- Fix feature 2
## [0.1.0]
### Feat
- Add feature 1
- Add feature 2

View File

@ -1,5 +1,5 @@
[changelog]
# changelog header
# template for the changelog footer
header = """
# Changelog\n
All notable changes to this project will be documented in this file.\n

View File

@ -1,5 +1,5 @@
[changelog]
# changelog header
# template for the changelog footer
header = """
# Changelog\n
All notable changes to this project will be documented in this file.

View File

@ -1,5 +1,5 @@
[changelog]
# changelog header
# template for the changelog footer
header = """
# Changelog\n
All notable changes to this project will be documented in this file.

View File

@ -1,5 +1,5 @@
[changelog]
# changelog header
# template for the changelog footer
header = """
# Changelog\n
All notable changes to this project will be documented in this file.

View File

@ -1,5 +1,5 @@
[changelog]
# changelog header
# template for the changelog footer
header = """
# Changelog\n
All notable changes to this project will be documented in this file.

View File

@ -1,5 +1,5 @@
[changelog]
# changelog header
# template for the changelog footer
header = """
# Changelog\n
All notable changes to this project will be documented in this file.

View File

@ -1,5 +1,5 @@
[changelog]
# changelog header
# template for the changelog footer
header = """
# Changelog\n
All notable changes to this project will be documented in this file.

View File

@ -1,5 +1,5 @@
[changelog]
# changelog header
# template for the changelog footer
header = """
# Changelog\n
All notable changes to this project will be documented in this file.

View File

@ -1,5 +1,5 @@
[changelog]
# changelog header
# template for the changelog footer
header = """
# Changelog\n
All notable changes to this project will be documented in this file.

View File

@ -1,5 +1,5 @@
[changelog]
# changelog header
# template for the changelog footer
header = """
# Changelog\n
All notable changes to this project will be documented in this file.\n

View File

@ -1,5 +1,5 @@
[changelog]
# changelog header
# template for the changelog footer
header = """
# Changelog\n
All notable changes to this project will be documented in this file.\n

View File

@ -1,5 +1,5 @@
[changelog]
# changelog header
# template for the changelog footer
header = """
# Changelog\n
All notable changes to this project will be documented in this file.\n

View File

@ -1,5 +1,5 @@
[changelog]
# changelog header
# template for the changelog footer
header = """
# Changelog\n
All notable changes to this project will be documented in this file.\n

View File

@ -1,5 +1,5 @@
[changelog]
# changelog header
# template for the changelog footer
header = """
# Changelog\n
All notable changes to this project will be documented in this file.\n

View File

@ -1,5 +1,5 @@
[changelog]
# changelog header
# template for the changelog footer
header = """
# Changelog\n
All notable changes to this project will be documented in this file.\n

View File

@ -1,5 +1,5 @@
[changelog]
# changelog header
# template for the changelog footer
header = """
# Changelog\n
All notable changes to this project will be documented in this file.\n

View File

@ -0,0 +1,37 @@
[changelog]
# template for the changelog footer
header = """
# Changelog\n
All notable changes to this project will be documented in this file.\n
"""
# template for the changelog body
# https://keats.github.io/tera/docs/#introduction
body = """
{% if version %}\
## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }}
{% if message %}
{{ message }}
{% endif %}\
{% else %}\
## [unreleased]
{% endif %}\
{% for group, commits in commits | group_by(attribute="group") %}
### {{ group | upper_first }}
{% for commit in commits %}
- {{ commit.message | upper_first }}\
{% endfor %}
{% endfor %}\n
"""
# template for the changelog footer
footer = """
<!-- generated by git-cliff -->
"""
# remove the leading and trailing whitespace from the templates
trim = true
[git]
# regex for parsing and grouping commits
commit_parsers = [
{ message = "^feat", group = "Features", default_scope = "app" },
{ message = "^fix", group = "Bug Fixes", scope = "cli" },
]

11
.github/fixtures/test-tag-message/commit.sh vendored Executable file
View File

@ -0,0 +1,11 @@
#!/usr/bin/env bash
set -e
GIT_COMMITTER_DATE="2022-04-06 01:25:08" git commit --allow-empty -m "Initial commit"
GIT_COMMITTER_DATE="2022-04-06 01:25:09" git commit --allow-empty -m "feat: add feature 1"
GIT_COMMITTER_DATE="2022-04-06 01:25:10" git commit --allow-empty -m "fix: fix feature 1"
git tag v0.1.0 -m "Some text"
GIT_COMMITTER_DATE="2022-04-06 01:25:11" git commit --allow-empty -m "feat(gui): add feature 2"
GIT_COMMITTER_DATE="2022-04-06 01:25:12" git commit --allow-empty -m "fix(gui): fix feature 2"
git tag v0.2.0
GIT_COMMITTER_DATE="2022-04-06 01:25:13" git commit --allow-empty -m "test: add tests"

View File

@ -0,0 +1,33 @@
# Changelog
All notable changes to this project will be documented in this file.
## [unreleased]
### Test
- Add tests
## [0.2.0] - 2022-04-06
### Bug Fixes
- Fix feature 2
### Features
- Add feature 2
## [0.1.0] - 2022-04-06
Some text
### Bug Fixes
- Fix feature 1
### Features
- Add feature 1
<!-- generated by git-cliff -->

View File

@ -1,5 +1,5 @@
[changelog]
# changelog header
# template for the changelog footer
header = """
# Changelog\n
All notable changes to this project will be documented in this file.\n

View File

@ -1,5 +1,5 @@
[changelog]
# changelog header
# template for the changelog footer
header = """
# Changelog\n
All notable changes to this project will be documented in this file.\n

View File

@ -69,7 +69,7 @@ jobs:
- name: Build and push
id: docker_build
uses: docker/build-push-action@v5
uses: docker/build-push-action@v6
with:
context: ./
file: ./Dockerfile

View File

@ -38,6 +38,8 @@ jobs:
- fixtures-name: test-split-commits
- fixtures-name: test-bump-version
command: --bump
- fixtures-name: test-bump-version-custom-minor
command: --bump
- fixtures-name: test-bumped-version
command: --bumped-version
- fixtures-name: test-footer-template
@ -77,6 +79,12 @@ jobs:
command: --bump
- fixtures-name: test-bump-initial-tag-cli-arg
command: --bump --tag=2.1.1
- fixtures-name: test-cli-arg-ignore-tags
command: --ignore-tags ".*beta"
- fixtures-name: test-tag-message
- fixtures-name: test-bump-unreleased-with-tag-message-arg
command: --bump --unreleased --with-tag-message "Some text"
steps:
- name: Checkout
uses: actions/checkout@v4

423
Cargo.lock generated
View File

@ -315,9 +315,9 @@ dependencies = [
[[package]]
name = "clap_complete"
version = "4.5.5"
version = "4.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d2020fa13af48afc65a9a87335bda648309ab3d154cd03c7ff95b378c7ed39c4"
checksum = "fbca90c87c2a04da41e95d1856e8bcd22f159bdbfa147314d2ce5218057b0e58"
dependencies = [
"clap",
]
@ -523,17 +523,6 @@ dependencies = [
"windows-sys 0.48.0",
]
[[package]]
name = "displaydoc"
version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.63",
]
[[package]]
name = "dissimilar"
version = "1.0.9"
@ -810,7 +799,7 @@ dependencies = [
"next_version",
"pretty_assertions",
"regex",
"reqwest 0.12.4",
"reqwest 0.12.5",
"reqwest-middleware",
"rust-embed",
"secrecy",
@ -1006,7 +995,7 @@ dependencies = [
"http 1.1.0",
"http-cache",
"http-cache-semantics",
"reqwest 0.12.4",
"reqwest 0.12.5",
"reqwest-middleware",
"serde",
"url",
@ -1120,19 +1109,20 @@ dependencies = [
[[package]]
name = "hyper-rustls"
version = "0.26.0"
version = "0.27.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a0bea761b46ae2b24eb4aef630d8d1c398157b6fc29e6350ecf090a0b70c952c"
checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155"
dependencies = [
"futures-util",
"http 1.1.0",
"hyper 1.3.1",
"hyper-util",
"rustls 0.22.4",
"rustls 0.23.10",
"rustls-pki-types",
"tokio",
"tokio-rustls 0.25.0",
"tokio-rustls 0.26.0",
"tower-service",
"webpki-roots 0.26.1",
]
[[package]]
@ -1178,134 +1168,14 @@ dependencies = [
"cc",
]
[[package]]
name = "icu_collections"
version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526"
dependencies = [
"displaydoc",
"yoke",
"zerofrom",
"zerovec",
]
[[package]]
name = "icu_locid"
version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637"
dependencies = [
"displaydoc",
"litemap",
"tinystr",
"writeable",
"zerovec",
]
[[package]]
name = "icu_locid_transform"
version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e"
dependencies = [
"displaydoc",
"icu_locid",
"icu_locid_transform_data",
"icu_provider",
"tinystr",
"zerovec",
]
[[package]]
name = "icu_locid_transform_data"
version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e"
[[package]]
name = "icu_normalizer"
version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f"
dependencies = [
"displaydoc",
"icu_collections",
"icu_normalizer_data",
"icu_properties",
"icu_provider",
"smallvec",
"utf16_iter",
"utf8_iter",
"write16",
"zerovec",
]
[[package]]
name = "icu_normalizer_data"
version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516"
[[package]]
name = "icu_properties"
version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1f8ac670d7422d7f76b32e17a5db556510825b29ec9154f235977c9caba61036"
dependencies = [
"displaydoc",
"icu_collections",
"icu_locid_transform",
"icu_properties_data",
"icu_provider",
"tinystr",
"zerovec",
]
[[package]]
name = "icu_properties_data"
version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569"
[[package]]
name = "icu_provider"
version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9"
dependencies = [
"displaydoc",
"icu_locid",
"icu_provider_macros",
"stable_deref_trait",
"tinystr",
"writeable",
"yoke",
"zerofrom",
"zerovec",
]
[[package]]
name = "icu_provider_macros"
version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.63",
]
[[package]]
name = "idna"
version = "1.0.0"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4716a3a0933a1d01c2f72450e89596eb51dd34ef3c211ccd875acdf1f8fe47ed"
checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6"
dependencies = [
"icu_normalizer",
"icu_properties",
"smallvec",
"utf8_iter",
"unicode-bidi",
"unicode-normalization",
]
[[package]]
@ -1462,9 +1332,9 @@ dependencies = [
[[package]]
name = "lazy_static"
version = "1.4.0"
version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
[[package]]
name = "libc"
@ -1544,12 +1414,6 @@ version = "0.4.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c"
[[package]]
name = "litemap"
version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "643cb0b8d4fcc284004d5fd0d67ccf61dfffadb7f75e1e71bc420f4688a3a704"
[[package]]
name = "litrs"
version = "0.4.1"
@ -1634,11 +1498,12 @@ dependencies = [
[[package]]
name = "next_version"
version = "0.2.17"
version = "0.2.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7beae5e84c3330a90f0f89eae10f5cd4c17c3be0f119ab36d94fd908c7b8c8fb"
checksum = "a0c2cdfd777d2aef50e83560295f35b11a934efdaae1eb92c807c6b4844b435b"
dependencies = [
"conventional_commit_parser",
"regex",
"semver",
]
@ -1889,6 +1754,53 @@ dependencies = [
"unicode-ident",
]
[[package]]
name = "quinn"
version = "0.11.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e4ceeeeabace7857413798eb1ffa1e9c905a9946a57d81fb69b4b71c4d8eb3ad"
dependencies = [
"bytes",
"pin-project-lite",
"quinn-proto",
"quinn-udp",
"rustc-hash",
"rustls 0.23.10",
"thiserror",
"tokio",
"tracing",
]
[[package]]
name = "quinn-proto"
version = "0.11.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ddf517c03a109db8100448a4be38d498df8a210a99fe0e1b9eaf39e78c640efe"
dependencies = [
"bytes",
"rand",
"ring",
"rustc-hash",
"rustls 0.23.10",
"slab",
"thiserror",
"tinyvec",
"tracing",
]
[[package]]
name = "quinn-udp"
version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9096629c45860fc7fb143e125eb826b5e721e10be3263160c7d60ca832cf8c46"
dependencies = [
"libc",
"once_cell",
"socket2",
"tracing",
"windows-sys 0.52.0",
]
[[package]]
name = "quote"
version = "1.0.36"
@ -2007,7 +1919,7 @@ dependencies = [
"serde",
"serde_json",
"serde_urlencoded",
"sync_wrapper",
"sync_wrapper 0.1.2",
"system-configuration",
"tokio",
"tokio-rustls 0.24.1",
@ -2022,9 +1934,9 @@ dependencies = [
[[package]]
name = "reqwest"
version = "0.12.4"
version = "0.12.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "566cafdd92868e0939d3fb961bd0dc25fcfaaed179291093b3d43e6b3150ea10"
checksum = "c7d6d2a27d57148378eb5e111173f4276ad26340ecc5c49a4a2152167a2d6a37"
dependencies = [
"async-compression",
"base64 0.22.1",
@ -2035,7 +1947,7 @@ dependencies = [
"http-body 1.0.0",
"http-body-util",
"hyper 1.3.1",
"hyper-rustls 0.26.0",
"hyper-rustls 0.27.2",
"hyper-util",
"ipnet",
"js-sys",
@ -2044,15 +1956,16 @@ dependencies = [
"once_cell",
"percent-encoding",
"pin-project-lite",
"rustls 0.22.4",
"quinn",
"rustls 0.23.10",
"rustls-pemfile 2.1.2",
"rustls-pki-types",
"serde",
"serde_json",
"serde_urlencoded",
"sync_wrapper",
"sync_wrapper 1.0.1",
"tokio",
"tokio-rustls 0.25.0",
"tokio-rustls 0.26.0",
"tokio-util",
"tower-service",
"url",
@ -2072,7 +1985,7 @@ dependencies = [
"anyhow",
"async-trait",
"http 1.1.0",
"reqwest 0.12.4",
"reqwest 0.12.5",
"serde",
"thiserror",
"tower-service",
@ -2146,6 +2059,12 @@ version = "0.1.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f"
[[package]]
name = "rustc-hash"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
[[package]]
name = "rustix"
version = "0.38.34"
@ -2180,7 +2099,21 @@ dependencies = [
"log",
"ring",
"rustls-pki-types",
"rustls-webpki 0.102.3",
"rustls-webpki 0.102.4",
"subtle",
"zeroize",
]
[[package]]
name = "rustls"
version = "0.23.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "05cff451f60db80f490f3c182b77c35260baace73209e9cdbbe526bfe3a4d402"
dependencies = [
"once_cell",
"ring",
"rustls-pki-types",
"rustls-webpki 0.102.4",
"subtle",
"zeroize",
]
@ -2222,9 +2155,9 @@ dependencies = [
[[package]]
name = "rustls-webpki"
version = "0.102.3"
version = "0.102.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f3bce581c0dd41bce533ce695a1437fa16a7ab5ac3ccfa99fe1a620a7885eabf"
checksum = "ff448f7e92e913c4b7d4c6d8e4540a1724b319b4152b8aef6d4cf8339712b33e"
dependencies = [
"ring",
"rustls-pki-types",
@ -2440,12 +2373,6 @@ dependencies = [
"xxhash-rust",
]
[[package]]
name = "stable_deref_trait"
version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
[[package]]
name = "strsim"
version = "0.11.1"
@ -2487,15 +2414,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160"
[[package]]
name = "synstructure"
version = "0.13.1"
name = "sync_wrapper"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.63",
]
checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394"
[[package]]
name = "system-configuration"
@ -2623,15 +2545,20 @@ dependencies = [
]
[[package]]
name = "tinystr"
version = "0.7.6"
name = "tinyvec"
version = "1.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f"
checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
dependencies = [
"displaydoc",
"zerovec",
"tinyvec_macros",
]
[[package]]
name = "tinyvec_macros"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
[[package]]
name = "tokio"
version = "1.38.0"
@ -2672,11 +2599,11 @@ dependencies = [
[[package]]
name = "tokio-rustls"
version = "0.25.0"
version = "0.26.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "775e0c0f0adb3a2f22a00c4745d728b479985fc15ee7ca6a2608388c5569860f"
checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4"
dependencies = [
"rustls 0.22.4",
"rustls 0.23.10",
"rustls-pki-types",
"tokio",
]
@ -2775,9 +2702,21 @@ checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"
dependencies = [
"log",
"pin-project-lite",
"tracing-attributes",
"tracing-core",
]
[[package]]
name = "tracing-attributes"
version = "0.1.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.63",
]
[[package]]
name = "tracing-core"
version = "0.1.32"
@ -2864,12 +2803,27 @@ dependencies = [
"version_check",
]
[[package]]
name = "unicode-bidi"
version = "0.3.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75"
[[package]]
name = "unicode-ident"
version = "1.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
[[package]]
name = "unicode-normalization"
version = "0.1.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5"
dependencies = [
"tinyvec",
]
[[package]]
name = "unicode-width"
version = "0.1.12"
@ -2908,7 +2862,7 @@ dependencies = [
"once_cell",
"rustls 0.22.4",
"rustls-pki-types",
"rustls-webpki 0.102.3",
"rustls-webpki 0.102.4",
"serde",
"serde_json",
"url",
@ -2917,9 +2871,9 @@ dependencies = [
[[package]]
name = "url"
version = "2.5.1"
version = "2.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f7c25da092f0a868cdf09e8674cd3b7ef3a7d92a24253e663a2fb85e2496de56"
checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c"
dependencies = [
"form_urlencoded",
"idna",
@ -2927,18 +2881,6 @@ dependencies = [
"serde",
]
[[package]]
name = "utf16_iter"
version = "1.0.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246"
[[package]]
name = "utf8_iter"
version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
[[package]]
name = "utf8parse"
version = "0.2.1"
@ -3312,18 +3254,6 @@ dependencies = [
"windows-sys 0.48.0",
]
[[package]]
name = "write16"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936"
[[package]]
name = "writeable"
version = "0.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51"
[[package]]
name = "xxhash-rust"
version = "0.8.10"
@ -3345,79 +3275,12 @@ version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec"
[[package]]
name = "yoke"
version = "0.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6c5b1314b079b0930c31e3af543d8ee1757b1951ae1e1565ec704403a7240ca5"
dependencies = [
"serde",
"stable_deref_trait",
"yoke-derive",
"zerofrom",
]
[[package]]
name = "yoke-derive"
version = "0.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.63",
"synstructure",
]
[[package]]
name = "zerofrom"
version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "91ec111ce797d0e0784a1116d0ddcdbea84322cd79e5d5ad173daeba4f93ab55"
dependencies = [
"zerofrom-derive",
]
[[package]]
name = "zerofrom-derive"
version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.63",
"synstructure",
]
[[package]]
name = "zeroize"
version = "1.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d"
[[package]]
name = "zerovec"
version = "0.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bb2cc8827d6c0994478a15c53f374f46fbd41bea663d809b14744bc42e6b109c"
dependencies = [
"yoke",
"zerofrom",
"zerovec-derive",
]
[[package]]
name = "zerovec-derive"
version = "0.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "97cf56601ee5052b4417d90c8755c6683473c926039908196cf35d99f893ebe7"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.63",
]
[[package]]
name = "zstd"
version = "0.13.1"

View File

@ -7,7 +7,7 @@ regex = "1.10.5"
glob = "0.3.1"
log = "0.4.21"
secrecy = { version = "0.8.0", features = ["serde"] }
lazy_static = "1.4.0"
lazy_static = "1.5.0"
dirs = "5.0.1"
[profile.dev]

View File

@ -6,7 +6,7 @@
# See documentation for more information on available options.
[changelog]
# changelog header
# template for the changelog footer
header = """
[![animation](https://raw.githubusercontent.com/orhun/git-cliff/main/website/static/img/git-cliff-anim.gif)](https://git-cliff.org)\n
"""

View File

@ -6,7 +6,7 @@
# See documentation for more information on available options.
[changelog]
# changelog header
# template for the changelog footer
header = """
# Changelog\n
All notable changes to this project will be documented in this file.\n

View File

@ -2,7 +2,7 @@
# https://git-cliff.org/docs/configuration
[changelog]
# changelog header
# template for the changelog footer
header = """
# Changelog\n
All notable changes to this project will be documented in this file. See [conventional commits](https://www.conventionalcommits.org/) for commit guidelines.\n

View File

@ -2,7 +2,7 @@
# https://git-cliff.org/docs/configuration
[changelog]
# changelog header
# template for the changelog footer
header = """
# Changelog\n
All notable changes to this project will be documented in this file.\n

View File

@ -2,7 +2,7 @@
# https://git-cliff.org/docs/configuration
[changelog]
# changelog header
# template for the changelog footer
header = """
# Changelog\n
All notable changes to this project will be documented in this file.

View File

@ -2,7 +2,7 @@
# https://git-cliff.org/docs/configuration
[changelog]
# changelog header
# template for the changelog footer
header = """
# Changelog\n
All notable changes to this project will be documented in this file.

View File

@ -2,7 +2,7 @@
# https://git-cliff.org/docs/configuration
[changelog]
# changelog header
# template for the changelog footer
header = """
# Changelog\n
All notable changes to this project will be documented in this file.\n

View File

@ -2,7 +2,7 @@
# https://git-cliff.org/docs/configuration
[changelog]
# changelog header
# template for the changelog footer
header = """
# Changelog\n
All notable changes to this project will be documented in this file.\n

View File

@ -2,7 +2,7 @@
# https://git-cliff.org/docs/configuration
[changelog]
# changelog header
# template for the changelog footer
header = """
# Changelog\n
All notable changes to this project will be documented in this file.\n

View File

@ -57,10 +57,10 @@ tera = "1.20.0"
indexmap = { version = "2.2.6", optional = true }
toml = "0.8.14"
lazy-regex = "3.1.0"
next_version = "0.2.17"
next_version = "0.2.18"
semver = "1.0.23"
document-features = { version = "0.2.8", optional = true }
reqwest = { version = "0.12.4", default-features = false, features = [
reqwest = { version = "0.12.5", default-features = false, features = [
"rustls-tls",
"json",
"zstd",
@ -72,7 +72,7 @@ tokio = { version = "1.38.0", features = [
"macros",
], optional = true }
futures = { version = "0.3.30", optional = true }
url = "2.5.1"
url = "2.5.2"
dyn-clone = "1.0.17"
[dependencies.git2]

View File

@ -29,6 +29,7 @@ use std::time::{
pub struct Changelog<'a> {
/// Releases that the changelog will contain.
pub releases: Vec<Release<'a>>,
header_template: Option<Template>,
body_template: Template,
footer_template: Option<Template>,
config: &'a Config,
@ -41,6 +42,10 @@ impl<'a> Changelog<'a> {
let trim = config.changelog.trim.unwrap_or(true);
let mut changelog = Self {
releases,
header_template: match &config.changelog.header {
Some(header) => Some(Template::new(header.to_string(), trim)?),
None => None,
},
body_template: Template::new(
config
.changelog
@ -502,14 +507,26 @@ impl<'a> Changelog<'a> {
.postprocessors
.clone()
.unwrap_or_default();
if let Some(header) = &self.config.changelog.header {
let write_result = write!(out, "{header}");
if let Some(header_template) = &self.header_template {
let write_result = writeln!(
out,
"{}",
header_template.render(
&Releases {
releases: &self.releases,
},
Some(&self.additional_context),
&postprocessors,
)?
);
if let Err(e) = write_result {
if e.kind() != std::io::ErrorKind::BrokenPipe {
return Err(e.into());
}
}
}
for release in &self.releases {
let write_result = write!(
out,
@ -526,6 +543,7 @@ impl<'a> Changelog<'a> {
}
}
}
if let Some(footer_template) = &self.footer_template {
let write_result = writeln!(
out,
@ -544,6 +562,7 @@ impl<'a> Changelog<'a> {
}
}
}
Ok(())
}
@ -631,6 +650,7 @@ mod test {
sha: Some(String::from("tea")),
message: None,
body: None,
footer: None,
group: Some(String::from("I love tea")),
default_scope: None,
scope: None,
@ -642,6 +662,7 @@ mod test {
sha: Some(String::from("coffee")),
message: None,
body: None,
footer: None,
group: None,
default_scope: None,
scope: None,
@ -653,6 +674,7 @@ mod test {
sha: Some(String::from("coffee2")),
message: None,
body: None,
footer: None,
group: None,
default_scope: None,
scope: None,
@ -664,6 +686,7 @@ mod test {
sha: None,
message: Regex::new(r".*merge.*").ok(),
body: None,
footer: None,
group: None,
default_scope: None,
scope: None,
@ -675,6 +698,7 @@ mod test {
sha: None,
message: Regex::new("feat*").ok(),
body: None,
footer: None,
group: Some(String::from("New features")),
default_scope: Some(String::from("other")),
scope: None,
@ -686,6 +710,7 @@ mod test {
sha: None,
message: Regex::new("^fix*").ok(),
body: None,
footer: None,
group: Some(String::from("Bug Fixes")),
default_scope: None,
scope: None,
@ -697,6 +722,7 @@ mod test {
sha: None,
message: Regex::new("doc:").ok(),
body: None,
footer: None,
group: Some(String::from("Documentation")),
default_scope: None,
scope: Some(String::from("documentation")),
@ -708,6 +734,7 @@ mod test {
sha: None,
message: Regex::new("docs:").ok(),
body: None,
footer: None,
group: Some(String::from("Documentation")),
default_scope: None,
scope: Some(String::from("documentation")),
@ -719,6 +746,7 @@ mod test {
sha: None,
message: Regex::new(r"match\((.*)\):.*").ok(),
body: None,
footer: None,
group: Some(String::from("Matched ($1)")),
default_scope: None,
scope: None,
@ -726,10 +754,23 @@ mod test {
field: None,
pattern: None,
},
CommitParser {
sha: None,
message: None,
body: None,
footer: Regex::new("Footer:.*").ok(),
group: Some(String::from("Footer")),
default_scope: None,
scope: Some(String::from("footer")),
skip: None,
field: None,
pattern: None,
},
CommitParser {
sha: None,
message: Regex::new(".*").ok(),
body: None,
footer: None,
group: Some(String::from("Other")),
default_scope: Some(String::from("other")),
scope: None,
@ -774,6 +815,7 @@ mod test {
};
let test_release = Release {
version: Some(String::from("v1.0.0")),
message: None,
commits: vec![
Commit::new(
String::from("coffee"),
@ -831,6 +873,10 @@ mod test {
String::from("coffee"),
String::from("revert(app): skip this commit"),
),
Commit::new(
String::from("footer"),
String::from("misc: use footer\n\nFooter: footer text"),
),
],
commit_id: Some(String::from("0bc123")),
timestamp: 50000000,
@ -864,6 +910,7 @@ mod test {
},
Release {
version: None,
message: None,
commits: vec![
Commit::new(
String::from("abc123"),
@ -926,6 +973,7 @@ mod test {
assert_eq!(
String::from(
r#"# Changelog
## Release [v1.1.0] - 1970-01-01
@ -956,6 +1004,10 @@ mod test {
- update docs
- add some documentation
### Footer
#### footer
- use footer
### I love tea
#### app
- damn right
@ -997,6 +1049,13 @@ mod test {
config.git.split_commits = Some(true);
config.git.filter_unconventional = Some(false);
config.git.protect_breaking_commits = Some(true);
if let Some(parsers) = config.git.commit_parsers.as_mut() {
for parser in parsers.iter_mut().filter(|p| p.footer.is_some()) {
parser.skip = Some(true)
}
}
releases[0].commits.push(Commit::new(
String::from("0bc123"),
String::from(
@ -1031,6 +1090,7 @@ chore(deps): fix broken deps
assert_eq!(
String::from(
r#"# Changelog
## Unreleased
### Bug Fixes
@ -1134,6 +1194,7 @@ chore(deps): fix broken deps
changelog.generate(&mut out)?;
expect_test::expect![[r#"
# Changelog
## Unreleased
### Bug Fixes
@ -1163,6 +1224,10 @@ chore(deps): fix broken deps
- update docs
- add some documentation
### Footer
#### footer
- use footer
### I love tea
#### app
- damn right

View File

@ -277,6 +277,13 @@ impl Commit<'_> {
if let Some(body_regex) = parser.body.as_ref() {
regex_checks.push((body_regex, body.clone().unwrap_or_default()))
}
if let (Some(footer_regex), Some(footers)) = (
parser.footer.as_ref(),
self.conv.as_ref().map(|v| v.footers()),
) {
regex_checks
.extend(footers.iter().map(|f| (footer_regex, f.to_string())));
}
if let (Some(field_name), Some(pattern_regex)) =
(parser.field.as_ref(), parser.pattern.as_ref())
{
@ -483,6 +490,7 @@ mod test {
sha: None,
message: Regex::new("test*").ok(),
body: None,
footer: None,
group: Some(String::from("test_group")),
default_scope: Some(String::from("test_scope")),
scope: None,
@ -656,6 +664,7 @@ mod test {
sha: None,
message: None,
body: None,
footer: None,
group: Some(String::from("Test group")),
default_scope: None,
scope: None,
@ -684,6 +693,7 @@ mod test {
)),
message: None,
body: None,
footer: None,
group: None,
default_scope: None,
scope: None,
@ -703,6 +713,7 @@ mod test {
)),
message: None,
body: None,
footer: None,
group: Some(String::from("Test group")),
default_scope: None,
scope: None,

View File

@ -200,6 +200,24 @@ pub struct Bump {
///
/// When set, the version will be set to this value if no tags are found.
pub initial_tag: Option<String>,
/// Configure a custom regex pattern for major version increments.
///
/// This will check only the type of the commit against the given pattern.
///
/// ### Note
///
/// `commit type` according to the spec is only `[a-zA-Z]+`
pub custom_major_increment_regex: Option<String>,
/// Configure a custom regex pattern for minor version increments.
///
/// This will check only the type of the commit against the given pattern.
///
/// ### Note
///
/// `commit type` according to the spec is only `[a-zA-Z]+`
pub custom_minor_increment_regex: Option<String>,
}
/// Parser for grouping commits.
@ -213,6 +231,9 @@ pub struct CommitParser {
/// Regex for matching the commit body.
#[serde(with = "serde_regex", default)]
pub body: Option<Regex>,
/// Regex for matching the commit footer.
#[serde(with = "serde_regex", default)]
pub footer: Option<Regex>,
/// Group of the commit.
pub group: Option<String>,
/// Default scope of the commit.

View File

@ -33,6 +33,8 @@ pub mod remote;
/// Git repository.
#[cfg(feature = "repo")]
pub mod repo;
/// Git tag.
pub mod tag;
/// Template engine.
pub mod template;

View File

@ -21,6 +21,8 @@ use serde::{
pub struct Release<'a> {
/// Release version, git tag.
pub version: Option<String>,
/// git tag's message.
pub message: Option<String>,
/// Commits made for the release.
pub commits: Vec<Commit<'a>>,
/// Commit ID of the tag.
@ -99,13 +101,28 @@ impl<'a> Release<'a> {
}
}
}
let next_version = VersionUpdater::new()
let mut next_version = VersionUpdater::new()
.with_features_always_increment_minor(
config.features_always_bump_minor.unwrap_or(true),
)
.with_breaking_always_increment_major(
config.breaking_always_bump_major.unwrap_or(true),
)
);
if let Some(custom_major_increment_regex) =
&config.custom_major_increment_regex
{
next_version = next_version.with_custom_major_increment_regex(
custom_major_increment_regex,
)?;
}
if let Some(custom_minor_increment_regex) =
&config.custom_minor_increment_regex
{
next_version = next_version.with_custom_minor_increment_regex(
custom_minor_increment_regex,
)?;
}
let next_version = next_version
.increment(
&semver?,
self.commits
@ -159,6 +176,7 @@ mod test {
fn build_release<'a>(version: &str, commits: &'a [&str]) -> Release<'a> {
Release {
version: None,
message: None,
commits: commits
.iter()
.map(|v| Commit::from(v.to_string()))
@ -256,9 +274,11 @@ mod test {
let release = build_release(version, commits);
let next_version =
release.calculate_next_version_with_config(&Bump {
features_always_bump_minor: Some(false),
breaking_always_bump_major: Some(false),
initial_tag: None,
features_always_bump_minor: Some(false),
breaking_always_bump_major: Some(false),
initial_tag: None,
custom_major_increment_regex: None,
custom_minor_increment_regex: None,
})?;
assert_eq!(expected_version, &next_version);
}
@ -277,9 +297,11 @@ mod test {
let release = build_release(version, commits);
let next_version =
release.calculate_next_version_with_config(&Bump {
features_always_bump_minor: Some(true),
breaking_always_bump_major: Some(false),
initial_tag: None,
features_always_bump_minor: Some(true),
breaking_always_bump_major: Some(false),
initial_tag: None,
custom_major_increment_regex: None,
custom_minor_increment_regex: None,
})?;
assert_eq!(expected_version, &next_version);
}
@ -298,9 +320,11 @@ mod test {
let release = build_release(version, commits);
let next_version =
release.calculate_next_version_with_config(&Bump {
features_always_bump_minor: Some(false),
breaking_always_bump_major: Some(true),
initial_tag: None,
features_always_bump_minor: Some(false),
breaking_always_bump_major: Some(true),
initial_tag: None,
custom_major_increment_regex: None,
custom_minor_increment_regex: None,
})?;
assert_eq!(expected_version, &next_version);
}
@ -319,9 +343,11 @@ mod test {
assert_eq!(
"0.1.0",
empty_release.calculate_next_version_with_config(&Bump {
features_always_bump_minor: Some(features_always_bump_minor),
breaking_always_bump_major: Some(breaking_always_bump_major),
initial_tag: None,
features_always_bump_minor: Some(features_always_bump_minor),
breaking_always_bump_major: Some(breaking_always_bump_major),
initial_tag: None,
custom_major_increment_regex: None,
custom_minor_increment_regex: None,
})?
);
}
@ -340,6 +366,7 @@ mod test {
let mut release = Release {
version: None,
message: None,
commits: vec![
Commit::from(String::from(
"1d244937ee6ceb8e0314a4a201ba93a7a61f2071 add github \
@ -625,6 +652,7 @@ mod test {
let mut release = Release {
version: None,
message: None,
commits: vec![
Commit::from(String::from(
"1d244937ee6ceb8e0314a4a201ba93a7a61f2071 add github \
@ -968,6 +996,7 @@ mod test {
let mut release = Release {
version: None,
message: None,
commits: vec![
Commit::from(String::from(
"1d244937ee6ceb8e0314a4a201ba93a7a61f2071 add github \

View File

@ -3,6 +3,7 @@ use crate::error::{
Error,
Result,
};
use crate::tag::Tag;
use git2::{
BranchType,
Commit,
@ -13,11 +14,20 @@ use git2::{
};
use glob::Pattern;
use indexmap::IndexMap;
use regex::Regex;
use lazy_regex::{
lazy_regex,
Lazy,
Regex,
};
use std::io;
use std::path::PathBuf;
use url::Url;
/// Regex for replacing the signature part of a tag message.
static TAG_SIGNATURE_REGEX: Lazy<Regex> = lazy_regex!(
r"(?s)-----BEGIN PGP SIGNATURE-----(.*?)-----END PGP SIGNATURE-----"
);
/// Wrapper for [`Repository`] type from git2.
///
/// [`Repository`]: GitRepository
@ -95,11 +105,38 @@ impl Repository {
/// Returns the current tag.
///
/// It is the same as running `git describe --tags`
pub fn current_tag(&self) -> Option<String> {
pub fn current_tag(&self) -> Option<Tag> {
self.inner
.describe(DescribeOptions::new().describe_tags())
.ok()
.and_then(|describe| describe.format(None).ok())
.and_then(|describe| {
describe
.format(None)
.ok()
.map(|name| self.resolve_tag(&name))
})
}
/// Returns the tag object of the given name.
///
/// If given name doesn't exist, it still returns `Tag` with the given name.
pub fn resolve_tag(&self, name: &str) -> Tag {
match self
.inner
.resolve_reference_from_short_name(name)
.and_then(|r| r.peel_to_tag())
{
Ok(tag) => Tag {
name: tag.name().unwrap_or_default().to_owned(),
message: tag.message().map(|msg| {
TAG_SIGNATURE_REGEX.replace(msg, "").trim().to_owned()
}),
},
_ => Tag {
name: name.to_owned(),
message: None,
},
}
}
/// Returns the commit object of the given ID.
@ -119,8 +156,8 @@ impl Repository {
&self,
pattern: &Option<Regex>,
topo_order: bool,
) -> Result<IndexMap<String, String>> {
let mut tags: Vec<(Commit, String)> = Vec::new();
) -> Result<IndexMap<String, Tag>> {
let mut tags: Vec<(Commit, Tag)> = Vec::new();
let tag_names = self.inner.tag_names(None)?;
for name in tag_names
.iter()
@ -132,14 +169,22 @@ impl Repository {
{
let obj = self.inner.revparse_single(&name)?;
if let Ok(commit) = obj.clone().into_commit() {
tags.push((commit, name));
tags.push((commit, Tag {
name,
message: None,
}));
} else if let Some(tag) = obj.as_tag() {
if let Some(commit) = tag
.target()
.ok()
.and_then(|target| target.into_commit().ok())
{
tags.push((commit, name));
tags.push((commit, Tag {
name: tag.name().map(String::from).unwrap_or(name),
message: tag.message().map(|msg| {
TAG_SIGNATURE_REGEX.replace(msg, "").trim().to_owned()
}),
}));
}
}
}
@ -261,7 +306,7 @@ mod test {
fn get_latest_tag() -> Result<()> {
let repository = get_repository()?;
let tags = repository.tags(&None, false)?;
assert_eq!(&get_last_tag()?, tags.last().expect("no tags found").1);
assert_eq!(get_last_tag()?, tags.last().expect("no tags found").1.name);
Ok(())
}
@ -270,16 +315,20 @@ mod test {
let repository = get_repository()?;
let tags = repository.tags(&None, true)?;
assert_eq!(
tags.get("2b8b4d3535f29231e05c3572e919634b9af907b6").expect(
"the commit hash does not exist in the repository (tag v0.1.0)"
),
tags.get("2b8b4d3535f29231e05c3572e919634b9af907b6")
.expect(
"the commit hash does not exist in the repository (tag v0.1.0)"
)
.name,
"v0.1.0"
);
assert_eq!(
tags.get("4ddef08debfff48117586296e49d5caa0800d1b5").expect(
"the commit hash does not exist in the repository (tag \
v0.1.0-beta.4)"
),
tags.get("4ddef08debfff48117586296e49d5caa0800d1b5")
.expect(
"the commit hash does not exist in the repository (tag \
v0.1.0-beta.4)"
)
.name,
"v0.1.0-beta.4"
);
let tags = repository.tags(
@ -290,9 +339,11 @@ mod test {
true,
)?;
assert_eq!(
tags.get("2b8b4d3535f29231e05c3572e919634b9af907b6").expect(
"the commit hash does not exist in the repository (tag v0.1.0)"
),
tags.get("2b8b4d3535f29231e05c3572e919634b9af907b6")
.expect(
"the commit hash does not exist in the repository (tag v0.1.0)"
)
.name,
"v0.1.0"
);
assert!(!tags.contains_key("4ddef08debfff48117586296e49d5caa0800d1b5"));
@ -313,4 +364,30 @@ mod test {
);
Ok(())
}
#[test]
fn resolves_existing_tag_with_name_and_message() -> Result<()> {
let repository = get_repository()?;
let tag = repository.resolve_tag("v0.2.3");
assert_eq!(tag.name, "v0.2.3");
assert_eq!(
tag.message,
Some(
"Release v0.2.3\n\nBug Fixes\n- Fetch the dependencies before \
copying the file to embed (9e29c95)"
.to_string()
)
);
Ok(())
}
#[test]
fn resolves_tag_when_no_tags_exist() -> Result<()> {
let repository = get_repository()?;
let tag = repository.resolve_tag("nonexistent-tag");
assert_eq!(tag.name, "nonexistent-tag");
assert_eq!(tag.message, None);
Ok(())
}
}

47
git-cliff-core/src/tag.rs Normal file
View File

@ -0,0 +1,47 @@
/// Common tag object that is parsed from a repository.
///
/// Lightweight tags will have `None` as message.
#[derive(Debug)]
pub struct Tag {
/// The name of the tag
pub name: String,
/// The message of the tag (only if it was annotated).
pub message: Option<String>,
}
#[cfg(test)]
mod test {
use super::*;
#[test]
fn create_tag_with_name_and_message() {
let tag = Tag {
name: String::from("v1.0"),
message: Some(String::from("Initial release")),
};
assert_eq!(tag.name, "v1.0");
assert_eq!(tag.message, Some(String::from("Initial release")));
}
#[test]
fn create_tag_with_name_and_no_message() {
let tag = Tag {
name: String::from("v1.0"),
message: None,
};
assert_eq!(tag.name, "v1.0");
assert_eq!(tag.message, None);
}
#[test]
fn debug_print_tag_with_message() {
let tag = Tag {
name: String::from("v1.0"),
message: Some(String::from("Initial release")),
};
assert_eq!(
format!("{:?}", tag),
"Tag { name: \"v1.0\", message: Some(\"Initial release\") }"
);
}
}

View File

@ -189,6 +189,7 @@ mod test {
fn get_fake_release_data() -> Release<'static> {
Release {
version: Some(String::from("1.0")),
message: None,
commits: vec![
Commit::new(
String::from("123123"),

View File

@ -56,6 +56,7 @@ fn generate_changelog() -> Result<()> {
sha: Some(String::from("coffee")),
message: None,
body: None,
footer: None,
group: Some(String::from("I love coffee")),
default_scope: None,
scope: None,
@ -67,6 +68,7 @@ fn generate_changelog() -> Result<()> {
sha: None,
message: Regex::new("^feat").ok(),
body: None,
footer: None,
group: Some(String::from("shiny features")),
default_scope: None,
scope: None,
@ -78,6 +80,7 @@ fn generate_changelog() -> Result<()> {
sha: None,
message: Regex::new("^fix").ok(),
body: None,
footer: None,
group: Some(String::from("fix bugs")),
default_scope: None,
scope: None,
@ -89,6 +92,7 @@ fn generate_changelog() -> Result<()> {
sha: None,
message: Regex::new("^test").ok(),
body: None,
footer: None,
group: None,
default_scope: None,
scope: Some(String::from("tests")),
@ -100,6 +104,7 @@ fn generate_changelog() -> Result<()> {
sha: None,
message: None,
body: None,
footer: None,
group: Some(String::from("docs")),
default_scope: None,
scope: None,
@ -144,6 +149,7 @@ fn generate_changelog() -> Result<()> {
let releases = vec![
Release {
version: Some(String::from("v2.0.0")),
message: None,
commits: vec![
Commit::new(
@ -207,6 +213,7 @@ fn generate_changelog() -> Result<()> {
},
Release {
version: Some(String::from("v1.0.0")),
message: None,
commits: vec![
Commit::new(
String::from("0bc123"),

View File

@ -45,7 +45,7 @@ secrecy.workspace = true
lazy_static.workspace = true
dirs.workspace = true
clap = { version = "4.5.7", features = ["derive", "env", "wrap_help", "cargo"] }
clap_complete = "4.5.5"
clap_complete = "4.5.6"
clap_mangen = "0.2.21"
shellexpand = "3.1.0"
update-informer = { version = "1.1.0", optional = true }

View File

@ -64,7 +64,7 @@ pub struct Opt {
help = "Prints help information",
help_heading = "FLAGS"
)]
pub help: Option<bool>,
pub help: Option<bool>,
#[arg(
short = 'V',
long,
@ -73,10 +73,10 @@ pub struct Opt {
help = "Prints version information",
help_heading = "FLAGS"
)]
pub version: Option<bool>,
pub version: Option<bool>,
/// Increases the logging verbosity.
#[arg(short, long, action = ArgAction::Count, alias = "debug", help_heading = Some("FLAGS"))]
pub verbose: u8,
pub verbose: u8,
/// Writes the default configuration file to cliff.toml
#[arg(
short,
@ -85,7 +85,7 @@ pub struct Opt {
num_args = 0..=1,
required = false
)]
pub init: Option<Option<String>>,
pub init: Option<Option<String>>,
/// Sets the configuration file.
#[arg(
short,
@ -95,7 +95,7 @@ pub struct Opt {
default_value = DEFAULT_CONFIG,
value_parser = Opt::parse_dir
)]
pub config: PathBuf,
pub config: PathBuf,
/// Sets the working directory.
#[arg(
short,
@ -104,7 +104,7 @@ pub struct Opt {
value_name = "PATH",
value_parser = Opt::parse_dir
)]
pub workdir: Option<PathBuf>,
pub workdir: Option<PathBuf>,
/// Sets the git repository.
#[arg(
short,
@ -114,7 +114,7 @@ pub struct Opt {
num_args(1..),
value_parser = Opt::parse_dir
)]
pub repository: Option<Vec<PathBuf>>,
pub repository: Option<Vec<PathBuf>>,
/// Sets the path to include related commits.
#[arg(
long,
@ -122,7 +122,7 @@ pub struct Opt {
value_name = "PATTERN",
num_args(1..)
)]
pub include_path: Option<Vec<Pattern>>,
pub include_path: Option<Vec<Pattern>>,
/// Sets the path to exclude related commits.
#[arg(
long,
@ -130,10 +130,10 @@ pub struct Opt {
value_name = "PATTERN",
num_args(1..)
)]
pub exclude_path: Option<Vec<Pattern>>,
pub exclude_path: Option<Vec<Pattern>>,
/// Sets the regex for matching git tags.
#[arg(long, env = "GIT_CLIFF_TAG_PATTERN", value_name = "PATTERN")]
pub tag_pattern: Option<Regex>,
pub tag_pattern: Option<Regex>,
/// Sets custom commit messages to include in the changelog.
#[arg(
long,
@ -141,7 +141,18 @@ pub struct Opt {
value_name = "MSG",
num_args(1..)
)]
pub with_commit: Option<Vec<String>>,
pub with_commit: Option<Vec<String>>,
/// Sets custom message for the latest release.
#[arg(
long,
env = "GIT_CLIFF_WITH_TAG_MESSAGE",
value_name = "MSG",
num_args = 0..=1,
)]
pub with_tag_message: Option<String>,
/// Sets the tags to ignore in the changelog.
#[arg(long, env = "GIT_CLIFF_IGNORE_TAGS", value_name = "PATTERN")]
pub ignore_tags: Option<Regex>,
/// Sets commits that will be skipped in the changelog.
#[arg(
long,
@ -149,7 +160,7 @@ pub struct Opt {
value_name = "SHA1",
num_args(1..)
)]
pub skip_commit: Option<Vec<String>>,
pub skip_commit: Option<Vec<String>>,
/// Prepends entries to the given changelog file.
#[arg(
short,
@ -158,7 +169,7 @@ pub struct Opt {
value_name = "PATH",
value_parser = Opt::parse_dir
)]
pub prepend: Option<PathBuf>,
pub prepend: Option<PathBuf>,
/// Writes output to the given file.
#[arg(
short,
@ -169,7 +180,7 @@ pub struct Opt {
num_args = 0..=1,
default_missing_value = DEFAULT_OUTPUT
)]
pub output: Option<PathBuf>,
pub output: Option<PathBuf>,
/// Sets the tag for the latest version.
#[arg(
short,
@ -178,13 +189,13 @@ pub struct Opt {
value_name = "TAG",
allow_hyphen_values = true
)]
pub tag: Option<String>,
pub tag: Option<String>,
/// Bumps the version for unreleased changes.
#[arg(long, help_heading = Some("FLAGS"))]
pub bump: bool,
pub bump: bool,
/// Prints bumped version for unreleased changes.
#[arg(long, help_heading = Some("FLAGS"))]
pub bumped_version: bool,
pub bumped_version: bool,
/// Sets the template for the changelog body.
#[arg(
short,
@ -193,38 +204,38 @@ pub struct Opt {
value_name = "TEMPLATE",
allow_hyphen_values = true
)]
pub body: Option<String>,
pub body: Option<String>,
/// Processes the commits starting from the latest tag.
#[arg(short, long, help_heading = Some("FLAGS"))]
pub latest: bool,
pub latest: bool,
/// Processes the commits that belong to the current tag.
#[arg(long, help_heading = Some("FLAGS"))]
pub current: bool,
pub current: bool,
/// Processes the commits that do not belong to a tag.
#[arg(short, long, help_heading = Some("FLAGS"))]
pub unreleased: bool,
pub unreleased: bool,
/// Sorts the tags topologically.
#[arg(long, help_heading = Some("FLAGS"))]
pub topo_order: bool,
pub topo_order: bool,
/// Disables the external command execution.
#[arg(long, help_heading = Some("FLAGS"))]
pub no_exec: bool,
pub no_exec: bool,
/// Prints changelog context as JSON.
#[arg(short = 'x', long, help_heading = Some("FLAGS"))]
pub context: bool,
pub context: bool,
/// Strips the given parts from the changelog.
#[arg(short, long, value_name = "PART", value_enum)]
pub strip: Option<Strip>,
pub strip: Option<Strip>,
/// Sets sorting of the commits inside sections.
#[arg(
long,
value_enum,
default_value_t = Sort::Oldest
)]
pub sort: Sort,
pub sort: Sort,
/// Sets the commit range to process.
#[arg(value_name = "RANGE", help_heading = Some("ARGS"))]
pub range: Option<String>,
pub range: Option<String>,
/// Sets the GitHub API token.
#[arg(
long,
@ -233,7 +244,7 @@ pub struct Opt {
hide_env_values = true,
hide = !cfg!(feature = "github"),
)]
pub github_token: Option<SecretString>,
pub github_token: Option<SecretString>,
/// Sets the GitHub repository.
#[arg(
long,
@ -242,7 +253,7 @@ pub struct Opt {
value_name = "OWNER/REPO",
hide = !cfg!(feature = "github"),
)]
pub github_repo: Option<RemoteValue>,
pub github_repo: Option<RemoteValue>,
/// Sets the GitLab API token.
#[arg(
long,
@ -251,7 +262,7 @@ pub struct Opt {
hide_env_values = true,
hide = !cfg!(feature = "gitlab"),
)]
pub gitlab_token: Option<SecretString>,
pub gitlab_token: Option<SecretString>,
/// Sets the GitLab repository.
#[arg(
long,
@ -260,7 +271,7 @@ pub struct Opt {
value_name = "OWNER/REPO",
hide = !cfg!(feature = "gitlab"),
)]
pub gitlab_repo: Option<RemoteValue>,
pub gitlab_repo: Option<RemoteValue>,
/// Sets the Gitea API token.
#[arg(
long,
@ -269,7 +280,7 @@ pub struct Opt {
hide_env_values = true,
hide = !cfg!(feature = "gitea"),
)]
pub gitea_token: Option<SecretString>,
pub gitea_token: Option<SecretString>,
/// Sets the GitLab repository.
#[arg(
long,
@ -278,7 +289,7 @@ pub struct Opt {
value_name = "OWNER/REPO",
hide = !cfg!(feature = "gitea"),
)]
pub gitea_repo: Option<RemoteValue>,
pub gitea_repo: Option<RemoteValue>,
/// Sets the Bitbucket API token.
#[arg(
long,
@ -287,7 +298,7 @@ pub struct Opt {
hide_env_values = true,
hide = !cfg!(feature = "bitbucket"),
)]
pub bitbucket_token: Option<SecretString>,
pub bitbucket_token: Option<SecretString>,
/// Sets the Bitbucket repository.
#[arg(
long,
@ -296,7 +307,7 @@ pub struct Opt {
value_name = "OWNER/REPO",
hide = !cfg!(feature = "bitbucket"),
)]
pub bitbucket_repo: Option<RemoteValue>,
pub bitbucket_repo: Option<RemoteValue>,
}
/// Custom type for the remote value.

View File

@ -85,7 +85,9 @@ fn process_repository<'a>(
let mut tags = repository.tags(&config.git.tag_pattern, args.topo_order)?;
let skip_regex = config.git.skip_tags.as_ref();
let ignore_regex = config.git.ignore_tags.as_ref();
tags.retain(|_, name| {
tags.retain(|_, tag| {
let name = &tag.name;
// Keep skip tags to drop commits in the later stage.
let skip = skip_regex.is_some_and(|r| r.is_match(name));
if skip {
@ -178,7 +180,7 @@ fn process_repository<'a>(
repository.current_tag().as_ref().and_then(|tag| {
tags.iter()
.enumerate()
.find(|(_, (_, v))| v == &tag)
.find(|(_, (_, v))| v.name == tag.name)
.map(|(i, _)| i)
}) {
match current_tag_index.checked_sub(1) {
@ -218,10 +220,10 @@ fn process_repository<'a>(
if let Some(commit_id) = commits.first().map(|c| c.id().to_string()) {
match tags.get(&commit_id) {
Some(tag) => {
warn!("There is already a tag ({}) for {}", tag, commit_id)
warn!("There is already a tag ({:?}) for {}", tag, commit_id)
}
None => {
tags.insert(commit_id, tag.to_string());
tags.insert(commit_id, repository.resolve_tag(tag));
}
}
}
@ -237,9 +239,10 @@ fn process_repository<'a>(
let commit_id = commit.id.to_string();
release.commits.push(commit);
if let Some(tag) = tags.get(&commit_id) {
release.version = Some(tag.to_string());
release.version = Some(tag.name.to_string());
release.message = tag.message.clone();
release.commit_id = Some(commit_id);
release.timestamp = if args.tag.as_deref() == Some(tag) {
release.timestamp = if args.tag.as_deref() == Some(tag.name.as_str()) {
SystemTime::now()
.duration_since(UNIX_EPOCH)?
.as_secs()
@ -279,6 +282,13 @@ fn process_repository<'a>(
.extend(custom_commits.iter().cloned().map(Commit::from));
}
// Set custom message for the latest release.
if let Some(message) = &args.with_tag_message {
if let Some(latest_release) = releases.iter_mut().last() {
latest_release.message = Some(message.to_owned());
}
}
// Set the previous release if the first release does not have one set.
if releases[0]
.previous
@ -291,7 +301,7 @@ fn process_repository<'a>(
.map(|tag| {
tags.iter()
.enumerate()
.find(|(_, (_, v))| v == &tag)
.find(|(_, (_, v))| v.name == tag.name)
.and_then(|(i, _)| i.checked_sub(1))
.and_then(|i| tags.get_index(i))
})
@ -299,10 +309,10 @@ fn process_repository<'a>(
.flatten();
// Set the previous release if the first tag is found.
if let Some((commit_id, version)) = first_tag {
if let Some((commit_id, tag)) = first_tag {
let previous_release = Release {
commit_id: Some(commit_id.to_string()),
version: Some(version.to_string()),
version: Some(tag.name.clone()),
timestamp: repository
.find_commit(commit_id.to_string())
.map(|v| v.time().seconds())
@ -481,7 +491,9 @@ pub fn run(mut args: Opt) -> Result<()> {
if args.tag.is_some() {
config.bump.initial_tag.clone_from(&args.tag);
}
if args.ignore_tags.is_some() {
config.git.ignore_tags.clone_from(&args.ignore_tags);
}
// Process the repositories.
let repositories = args.repository.clone().unwrap_or(vec![env::current_dir()?]);
let mut releases = Vec::<Release>::new();
@ -533,7 +545,6 @@ pub fn run(mut args: Opt) -> Result<()> {
} else {
Box::new(io::stdout())
};
let out = &mut *out;
if args.bump || args.bumped_version {
let next_version = if let Some(next_version) = changelog.bump_version()? {
next_version
@ -552,15 +563,16 @@ pub fn run(mut args: Opt) -> Result<()> {
}
if args.context {
changelog.write_context(out)?;
changelog.write_context(&mut out)?;
return Ok(());
}
if let Some(path) = &args.prepend {
changelog.prepend(fs::read_to_string(path)?, out)?;
let mut out = io::BufWriter::new(File::create(path)?);
changelog.prepend(fs::read_to_string(path)?, &mut out)?;
}
if args.output.is_some() || args.prepend.is_none() {
changelog.generate(out)?;
changelog.generate(&mut out)?;
}
Ok(())

View File

@ -33,3 +33,51 @@ When `false`, a breaking change commit will trigger:
Configures the initial version of the project.
When set, the version will be set to this value if no tags are found.
### custom_major_increment_regex & custom_minor_increment_regex
Configures additional commit types that should increment the major or minor accordingly.
They should be used rarely, only in the case you have a spacial case for incrementing versions.
Expects a valid regex pattern.
For example:
```toml
[bump]
features_always_bump_minor = true
breaking_always_bump_major = true
custom_major_increment_regex = "major"
custom_minor_increment_regex = "minor|more"
```
with this history:
```
5189568 (HEAD -> main) major: 1
0b17b48 (tag: 0.1.0) initial commit
```
will result in:
```bash
git-cliff --bumped-version
1.0.0
```
or, with history:
```
47206d0 (HEAD -> main) more: 1
0b17b48 (tag: 0.1.0) initial commit
```
will result in:
```bash
git-cliff --bumped-version
0.2.0
```

View File

@ -22,23 +22,25 @@ postprocessors = [{ pattern = "foo", replace = "bar"}]
<!-- {% endraw %} -->
See [templating](/docs/category/templating) for more detail.
### header
Header text that will be added to the beginning of the changelog.
Header template that will be rendered and added to the beginning of the changelog.
The template context contains the full list of releases in the variable `releases`. See [templating](/docs/category/templating) for more details.
### body
Body template that represents a single release in the changelog.
Body template that will be rendered for each release in the changelog. For example, if the changelog contains 3 releases, it will be rendered 3 times, once for each release.
See [templating](/docs/category/templating) for more detail.
The template context contains one release in the variable `release`. See [templating](/docs/category/templating) for more detail.
### footer
Footer template that will be rendered and added to the end of the changelog.
The template context is the same as [`body`](#body) and contains all the releases instead of a single release.
For example, to get the list of releases, use the `{{ releases }}` variable in the template. To get information about a single release, iterate over this array and access the fields similar to [`body`](#body).
The template context contains the full list of releases in the variable `releases`. See [templating](/docs/category/templating) for more details.
See [Keep a Changelog configuration](/docs/templating/examples#keep-a-changelog) for seeing the example of adding links to the end of the changelog.

View File

@ -146,6 +146,10 @@ Examples:
- Group the commit as "Features" if the commit message (description) starts with "feat".
- `{ body = ".*security", group = "Security" }`
- Group the commit as "Security" if the commit body contains "security".
<!-- Conventional commits parser is out of sync with spec, parsing only separator ":", not ": "; see: -->
<!-- https://github.com/conventional-commits/parser/issues/47 -->
- `{ footer = "^changelog: ?ignore", skip = true }`
- Skip processing the commit if the commit footer contains "changelog: ignore".
- `{ message = '^fix\((.*)\)', group = 'Fix (${1})' }`
- Use the matched scope value from the commit message in the group name.
- `{ message = ".*deprecated", body = ".*deprecated", group = "Deprecation" }`
@ -193,6 +197,8 @@ A regex for skip processing the matched tags.
A regex for ignore processing the matched tags.
This value can be also overridden with using the `--ignore-tags` argument.
While `skip_tags` drop commits from the changelog, `ignore_tags` include ignored commits into the next tag.
### topo_order

View File

@ -25,6 +25,7 @@ following context is generated to use for templating:
```json
{
"version": "v0.1.0-rc.21",
"message": "The annotated tag message for the release"
"commits": [
{
"id": "e795460c9bb7275294d1fa53a9d73258fb51eb10",
@ -129,6 +130,7 @@ If [`conventional_commits`](/docs/configuration/git#conventional_commits) is set
```json
{
"version": "v0.1.0-rc.21",
"message": "The annotated tag message for the release"
"commits": [
{
"id": "e795460c9bb7275294d1fa53a9d73258fb51eb10",

View File

@ -0,0 +1,42 @@
---
sidebar_position: 9
---
# Adding version (tag) message
Sometimes, you might want to include a special message or note related to a version of your project.
This can be used to highlight significant milestones, provide additional context, or share information not captured by individual commit messages.
There are currently 2 ways of doing this, in both ways, the message is available in the context of the template under the name `message`:
```
{% if message %}
{{ message }}
{% endif %}\
```
## Using annotated tags
The recommended way of adding a version message is to add the message to the tag:
```bash
git tag v1.0.0 -m "first release, yay!"
```
So in the release's context, `message` will be "first release, yay!" (even if it is signed).
## Using `--with-tag-message`
If for some reason you don't want to have the message in the tag (or don't have a tag yet) but want to include it in the generated changelog, you can use the `--with-tag-message` flag:
```bash
git cliff --bump --unreleased --with-tag-message "some text"
```
In this case, you can only add a message to the latest release.
:::note
Please note that if you use `--with-tag-message` on a version it will ignore the original tag's message and use the one from the argument.
:::

View File

@ -20,32 +20,38 @@ git-cliff [FLAGS] [OPTIONS] [--] [RANGE]
--current Processes the commits that belong to the current tag
-u, --unreleased Processes the commits that do not belong to a tag
--topo-order Sorts the tags topologically
-x, --context Prints changelog context as JSON
--no-exec Disables the external command execution
-x, --context Prints changelog context as JSON
```
## Options
```
-i, --init [<CONFIG>] Writes the default configuration file to cliff.toml
-c, --config <PATH> Sets the configuration file [env: GIT_CLIFF_CONFIG=] [default: cliff.toml]
-w, --workdir <PATH> Sets the working directory [env: GIT_CLIFF_WORKDIR=]
-r, --repository <PATH>... Sets the git repository [env: GIT_CLIFF_REPOSITORY=]
--include-path <PATTERN>... Sets the path to include related commits [env: GIT_CLIFF_INCLUDE_PATH=]
--exclude-path <PATTERN>... Sets the path to exclude related commits [env: GIT_CLIFF_EXCLUDE_PATH=]
--tag-pattern <PATTERN> Sets the regex for matching git tags [env: GIT_CLIFF_TAG_PATTERN=]
--with-commit <MSG>... Sets custom commit messages to include in the changelog [env: GIT_CLIFF_WITH_COMMIT=]
--skip-commit <SHA1>... Sets commits that will be skipped in the changelog [env: GIT_CLIFF_SKIP_COMMIT=]
-p, --prepend <PATH> Prepends entries to the given changelog file [env: GIT_CLIFF_PREPEND=]
-o, --output [<PATH>] Writes output to the given file [env: GIT_CLIFF_OUTPUT=]
-t, --tag <TAG> Sets the tag for the latest version [env: GIT_CLIFF_TAG=]
-b, --body <TEMPLATE> Sets the template for the changelog body [env: GIT_CLIFF_TEMPLATE=]
-s, --strip <PART> Strips the given parts from the changelog [possible values: header, footer, all]
--sort <SORT> Sets sorting of the commits inside sections [default: oldest] [possible values: oldest, newest]
--github-token <TOKEN> Sets the GitHub API token [env: GITHUB_TOKEN]
--github-repo <OWNER/REPO> Sets the GitHub repository [env: GITHUB_REPO=]
--gitlab-token <TOKEN> Sets the GitLab API token [env: GITLAB_TOKEN]
--gitlab-repo <OWNER/REPO> Sets the GitLab repository [env: GITLAB_REPO=]
-i, --init [<CONFIG>] Writes the default configuration file to cliff.toml
-c, --config <PATH> Sets the configuration file [env: GIT_CLIFF_CONFIG=] [default: cliff.toml]
-w, --workdir <PATH> Sets the working directory [env: GIT_CLIFF_WORKDIR=]
-r, --repository <PATH>... Sets the git repository [env: GIT_CLIFF_REPOSITORY=]
--include-path <PATTERN>... Sets the path to include related commits [env: GIT_CLIFF_INCLUDE_PATH=]
--exclude-path <PATTERN>... Sets the path to exclude related commits [env: GIT_CLIFF_EXCLUDE_PATH=]
--tag-pattern <PATTERN> Sets the regex for matching git tags [env: GIT_CLIFF_TAG_PATTERN=]
--with-commit <MSG>... Sets custom commit messages to include in the changelog [env: GIT_CLIFF_WITH_COMMIT=]
--with-tag-message [<MSG>] Sets custom message for the latest release [env: GIT_CLIFF_WITH_TAG_MESSAGE=]
--ignore-tags <PATTERN> Sets the tags to ignore in the changelog [env: GIT_CLIFF_IGNORE_TAGS=]
--skip-commit <SHA1>... Sets commits that will be skipped in the changelog [env: GIT_CLIFF_SKIP_COMMIT=]
-p, --prepend <PATH> Prepends entries to the given changelog file [env: GIT_CLIFF_PREPEND=]
-o, --output [<PATH>] Writes output to the given file [env: GIT_CLIFF_OUTPUT=]
-t, --tag <TAG> Sets the tag for the latest version [env: GIT_CLIFF_TAG=]
-b, --body <TEMPLATE> Sets the template for the changelog body [env: GIT_CLIFF_TEMPLATE=]
-s, --strip <PART> Strips the given parts from the changelog [possible values: header, footer, all]
--sort <SORT> Sets sorting of the commits inside sections [default: oldest] [possible values: oldest, newest]
--github-token <TOKEN> Sets the GitHub API token [env: GITHUB_TOKEN]
--github-repo <OWNER/REPO> Sets the GitHub repository [env: GITHUB_REPO=]
--gitlab-token <TOKEN> Sets the GitLab API token [env: GITLAB_TOKEN]
--gitlab-repo <OWNER/REPO> Sets the GitLab repository [env: GITLAB_REPO=]
--gitea-token <TOKEN> Sets the Gitea API token [env: GITEA_TOKEN]
--gitea-repo <OWNER/REPO> Sets the GitLab repository [env: GITEA_REPO=]
--bitbucket-token <TOKEN> Sets the Bitbucket API token [env: BITBUCKET_TOKEN]
--bitbucket-repo <OWNER/REPO> Sets the Bitbucket repository [env: BITBUCKET_REPO=]
```
## Args

View File

@ -1,5 +1,5 @@
---
sidebar_position: 9
sidebar_position: 10
---
# Print context

10152
website/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -18,7 +18,7 @@
"dependencies": {
"@docusaurus/core": "^3.4.0",
"@docusaurus/preset-classic": "^3.4.0",
"@easyops-cn/docusaurus-search-local": "^0.44.0",
"@easyops-cn/docusaurus-search-local": "^0.44.2",
"@mdx-js/react": "^3.0.1",
"clsx": "^2.1.1",
"prism-react-renderer": "^2.3.0",
@ -28,7 +28,7 @@
"devDependencies": {
"@docusaurus/module-type-aliases": "^3.4.0",
"@docusaurus/tsconfig": "^3.4.0",
"typescript": "^5.4.5"
"typescript": "^5.5.2"
},
"browserslist": {
"production": [

View File

@ -84,7 +84,7 @@
"@algolia/requester-common" "4.23.3"
"@algolia/transporter" "4.23.3"
"@algolia/client-search@>= 4.9.1 < 6", "@algolia/client-search@4.23.3":
"@algolia/client-search@4.23.3":
version "4.23.3"
resolved "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.23.3.tgz"
integrity sha512-P4VAKFHqU0wx9O+q29Q8YVuaowaZ5EM77rxfmGnkHUJggh28useXQdopokgwMeYw2XUht49WX5RcTQ40rZIabw==
@ -176,7 +176,7 @@
resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.7.tgz"
integrity sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==
"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.0.0-0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.12.0", "@babel/core@^7.13.0", "@babel/core@^7.21.3", "@babel/core@^7.23.3", "@babel/core@^7.4.0 || ^8.0.0-0 <8.0.0":
"@babel/core@^7.21.3", "@babel/core@^7.23.3":
version "7.24.7"
resolved "https://registry.npmjs.org/@babel/core/-/core-7.24.7.tgz"
integrity sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==
@ -1243,7 +1243,7 @@
"@docsearch/css" "3.6.0"
algoliasearch "^4.19.1"
"@docusaurus/core@^3.4.0", "@docusaurus/core@3.4.0":
"@docusaurus/core@3.4.0", "@docusaurus/core@^3.4.0":
version "3.4.0"
resolved "https://registry.npmjs.org/@docusaurus/core/-/core-3.4.0.tgz"
integrity sha512-g+0wwmN2UJsBqy2fQRQ6fhXruoEa62JDeEa5d8IdTJlMoaDaEDfHh7WjwGRn4opuTQWpjAwP/fbcgyHKlE+64w==
@ -1365,7 +1365,7 @@
vfile "^6.0.1"
webpack "^5.88.1"
"@docusaurus/module-type-aliases@^3.4.0", "@docusaurus/module-type-aliases@3.4.0":
"@docusaurus/module-type-aliases@3.4.0", "@docusaurus/module-type-aliases@^3.4.0":
version "3.4.0"
resolved "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-3.4.0.tgz"
integrity sha512-A1AyS8WF5Bkjnb8s+guTDuYmUiwJzNrtchebBHpc0gz0PyHJNMaybUlSrmJjHVcGrya0LKI4YcR3lBDQfXRYLw==
@ -1401,7 +1401,7 @@
utility-types "^3.10.0"
webpack "^5.88.1"
"@docusaurus/plugin-content-docs@^2 || ^3", "@docusaurus/plugin-content-docs@3.4.0":
"@docusaurus/plugin-content-docs@3.4.0", "@docusaurus/plugin-content-docs@^2 || ^3":
version "3.4.0"
resolved "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.4.0.tgz"
integrity sha512-HkUCZffhBo7ocYheD9oZvMcDloRnGhBMOZRyVcAQRFmZPmNqSyISlXA1tQCIxW+r478fty97XXAGjNYzBjpCsg==
@ -1545,7 +1545,7 @@
tslib "^2.6.0"
utility-types "^3.10.0"
"@docusaurus/theme-common@^2 || ^3", "@docusaurus/theme-common@3.4.0":
"@docusaurus/theme-common@3.4.0":
version "3.4.0"
resolved "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-3.4.0.tgz"
integrity sha512-0A27alXuv7ZdCg28oPE8nH/Iz73/IUejVaCazqu9elS4ypjiLhK3KfzdSQBnL/g7YfHSlymZKdiOHEo8fJ0qMA==
@ -1588,7 +1588,7 @@
tslib "^2.6.0"
utility-types "^3.10.0"
"@docusaurus/theme-translations@^2 || ^3", "@docusaurus/theme-translations@3.4.0":
"@docusaurus/theme-translations@3.4.0", "@docusaurus/theme-translations@^2 || ^3":
version "3.4.0"
resolved "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-3.4.0.tgz"
integrity sha512-zSxCSpmQCCdQU5Q4CnX/ID8CSUUI3fvmq4hU/GNP/XoAWtXo9SAVnM3TzpU8Gb//H3WCsT8mJcTfyOk3d9ftNg==
@ -1601,7 +1601,7 @@
resolved "https://registry.npmjs.org/@docusaurus/tsconfig/-/tsconfig-3.4.0.tgz"
integrity sha512-0qENiJ+TRaeTzcg4olrnh0BQ7eCxTgbYWBnWUeQDc84UYkt/T3pDNnm3SiQkqPb+YQ1qtYFlC0RriAElclo8Dg==
"@docusaurus/types@*", "@docusaurus/types@3.4.0":
"@docusaurus/types@3.4.0":
version "3.4.0"
resolved "https://registry.npmjs.org/@docusaurus/types/-/types-3.4.0.tgz"
integrity sha512-4jcDO8kXi5Cf9TcyikB/yKmz14f2RZ2qTRerbHAsS+5InE9ZgSLBNLsewtFTcTOXSVcbU3FoGOzcNWAmU1TR0A==
@ -1616,14 +1616,14 @@
webpack "^5.88.1"
webpack-merge "^5.9.0"
"@docusaurus/utils-common@^2 || ^3", "@docusaurus/utils-common@3.4.0":
"@docusaurus/utils-common@3.4.0", "@docusaurus/utils-common@^2 || ^3":
version "3.4.0"
resolved "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-3.4.0.tgz"
integrity sha512-NVx54Wr4rCEKsjOH5QEVvxIqVvm+9kh7q8aYTU5WzUU9/Hctd6aTrcZ3G0Id4zYJ+AeaG5K5qHA4CY5Kcm2iyQ==
dependencies:
tslib "^2.6.0"
"@docusaurus/utils-validation@^2 || ^3", "@docusaurus/utils-validation@3.4.0":
"@docusaurus/utils-validation@3.4.0", "@docusaurus/utils-validation@^2 || ^3":
version "3.4.0"
resolved "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-3.4.0.tgz"
integrity sha512-hYQ9fM+AXYVTWxJOT1EuNaRnrR2WGpRdLDQG07O8UOpsvCPWUVOeo26Rbm0JWY2sGLfzAb+tvJ62yF+8F+TV0g==
@ -1637,7 +1637,7 @@
lodash "^4.17.21"
tslib "^2.6.0"
"@docusaurus/utils@^2 || ^3", "@docusaurus/utils@3.4.0":
"@docusaurus/utils@3.4.0", "@docusaurus/utils@^2 || ^3":
version "3.4.0"
resolved "https://registry.npmjs.org/@docusaurus/utils/-/utils-3.4.0.tgz"
integrity sha512-fRwnu3L3nnWaXOgs88BVBmG1yGjcQqZNHG+vInhEa2Sz2oQB+ZjbEMO5Rh9ePFpZ0YDiDUhpaVjwmS+AU2F14g==
@ -1671,10 +1671,10 @@
cssesc "^3.0.0"
immediate "^3.2.3"
"@easyops-cn/docusaurus-search-local@^0.44.0":
version "0.44.0"
resolved "https://registry.yarnpkg.com/@easyops-cn/docusaurus-search-local/-/docusaurus-search-local-0.44.0.tgz#8f5ef8e68971223a69ecfd4956bf834319ccdeba"
integrity sha512-sgLpvkRtYuEGvd4peYQW2oInI4JkcQfxo7HgEnkhcxn9kxDY5laA8DiCx9qMKAkM9cMed9e8IsLk5gBeDh8Rqw==
"@easyops-cn/docusaurus-search-local@^0.44.2":
version "0.44.2"
resolved "https://registry.yarnpkg.com/@easyops-cn/docusaurus-search-local/-/docusaurus-search-local-0.44.2.tgz#580925d8b94220cecbe30c466bdc0b32cb275cf6"
integrity sha512-4tMBU54R1O6ITxkMGwOEifSHNkZLa2fb4ajGc8rd6TYZ0a8+jlu/u/5gYtw1s6sGGMRkwyG+QI6HD0bEnCRa1w==
dependencies:
"@docusaurus/plugin-content-docs" "^2 || ^3"
"@docusaurus/theme-translations" "^2 || ^3"
@ -1693,6 +1693,28 @@
mark.js "^8.11.1"
tslib "^2.4.0"
"@emnapi/core@^1.1.0":
version "1.2.0"
resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.2.0.tgz#7b738e5033738132bf6af0b8fae7b05249bdcbd7"
integrity sha512-E7Vgw78I93we4ZWdYCb4DGAwRROGkMIXk7/y87UmANR+J6qsWusmC3gLt0H+O0KOt5e6O38U8oJamgbudrES/w==
dependencies:
"@emnapi/wasi-threads" "1.0.1"
tslib "^2.4.0"
"@emnapi/runtime@^1.1.0":
version "1.2.0"
resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.2.0.tgz#71d018546c3a91f3b51106530edbc056b9f2f2e3"
integrity sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==
dependencies:
tslib "^2.4.0"
"@emnapi/wasi-threads@1.0.1":
version "1.0.1"
resolved "https://registry.yarnpkg.com/@emnapi/wasi-threads/-/wasi-threads-1.0.1.tgz#d7ae71fd2166b1c916c6cd2d0df2ef565a2e1a5b"
integrity sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==
dependencies:
tslib "^2.4.0"
"@hapi/hoek@^9.0.0", "@hapi/hoek@^9.3.0":
version "9.3.0"
resolved "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz"
@ -1805,6 +1827,55 @@
dependencies:
"@types/mdx" "^2.0.0"
"@napi-rs/wasm-runtime@^0.2.3":
version "0.2.4"
resolved "https://registry.yarnpkg.com/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.4.tgz#d27788176f250d86e498081e3c5ff48a17606918"
integrity sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==
dependencies:
"@emnapi/core" "^1.1.0"
"@emnapi/runtime" "^1.1.0"
"@tybys/wasm-util" "^0.9.0"
"@node-rs/jieba-android-arm-eabi@1.10.3":
version "1.10.3"
resolved "https://registry.yarnpkg.com/@node-rs/jieba-android-arm-eabi/-/jieba-android-arm-eabi-1.10.3.tgz#821af26a4953b3fbdf2f80a4d08a9d9114b40bea"
integrity sha512-fuqVtaYlUKZg3cqagYFxj1DSa7ZHKXLle4iGH2kbQWg7Kw6cf7aCYBHIUZuH5sliK10M/CWccZ+SGRUwcSGfbg==
"@node-rs/jieba-android-arm64@1.10.3":
version "1.10.3"
resolved "https://registry.yarnpkg.com/@node-rs/jieba-android-arm64/-/jieba-android-arm64-1.10.3.tgz#e5c285fb8de71739dfa3a83d894adcadb799c404"
integrity sha512-iuZZZq5yD9lT+AgaXpFe19gtAsIecUODRLLaBFbavjgjLk5cumv38ytWjS36s/eqptwI15MQfysSYOlWtMEG5g==
"@node-rs/jieba-darwin-arm64@1.10.3":
version "1.10.3"
resolved "https://registry.yarnpkg.com/@node-rs/jieba-darwin-arm64/-/jieba-darwin-arm64-1.10.3.tgz#67df85df39ff60dcc3e084f6e36e5182779b69ad"
integrity sha512-dwPhkav1tEARskwPz91UUXL2NXy4h0lJYTuJzpGgwXxm552zBM2JJ41kjah1364j+EOq5At3NQvf5r5rH89phQ==
"@node-rs/jieba-darwin-x64@1.10.3":
version "1.10.3"
resolved "https://registry.yarnpkg.com/@node-rs/jieba-darwin-x64/-/jieba-darwin-x64-1.10.3.tgz#ffdc8a63335294d7c68d3aebec870ec0824ebe98"
integrity sha512-kjxvV6G1baQo/2I3mELv5qGv4Q0rhd5srwXhypSxMWZFtSpNwCDsLcIOR5bvMBci6QVFfZOs6WD6DKiWVz0SlA==
"@node-rs/jieba-freebsd-x64@1.10.3":
version "1.10.3"
resolved "https://registry.yarnpkg.com/@node-rs/jieba-freebsd-x64/-/jieba-freebsd-x64-1.10.3.tgz#188349a9074b200af4a3e8a0ea169f45efd6c162"
integrity sha512-QYTsn+zlWRil+MuBeLfTK5Md4GluOf2lHnFqjrOZW2oMgNOvxB3qoLV4TUf70S/E2XHeP6PUdjCKItX8C7GQPg==
"@node-rs/jieba-linux-arm-gnueabihf@1.10.3":
version "1.10.3"
resolved "https://registry.yarnpkg.com/@node-rs/jieba-linux-arm-gnueabihf/-/jieba-linux-arm-gnueabihf-1.10.3.tgz#e1831b7b08a32904b12860555978c50222a97b54"
integrity sha512-UFB43kDOvqmbRl99e3GPwaTuwJZaAvgLaMTvBkmxww4MpQH6G1k31RLzMW/S21uSQso2lj6W/Mm59gaJk2FiyA==
"@node-rs/jieba-linux-arm64-gnu@1.10.3":
version "1.10.3"
resolved "https://registry.yarnpkg.com/@node-rs/jieba-linux-arm64-gnu/-/jieba-linux-arm64-gnu-1.10.3.tgz#326712eb7418f9796b113af93afe59ab64c37add"
integrity sha512-bu++yWi10wZtnS5uLcwxzxKmHVT77NgQMK8JiQr1TWCl3Y1Th7CnEHQtxfVB489edDK8l644h1/4zSTe5fRnOQ==
"@node-rs/jieba-linux-arm64-musl@1.10.3":
version "1.10.3"
resolved "https://registry.yarnpkg.com/@node-rs/jieba-linux-arm64-musl/-/jieba-linux-arm64-musl-1.10.3.tgz#6a3149d5abbe09f7c7748da219d5c39522b36c8a"
integrity sha512-pJh+SzrK1HaKakhdFM+ew9vXwpZqMxy9u0U7J4GT+3GvOwnAZ+KjeaHebIfgOz7ZHvp/T4YBNf8oWW4zwj3AJw==
"@node-rs/jieba-linux-x64-gnu@1.10.3":
version "1.10.3"
resolved "https://registry.npmjs.org/@node-rs/jieba-linux-x64-gnu/-/jieba-linux-x64-gnu-1.10.3.tgz"
@ -1815,6 +1886,28 @@
resolved "https://registry.npmjs.org/@node-rs/jieba-linux-x64-musl/-/jieba-linux-x64-musl-1.10.3.tgz"
integrity sha512-h45HMVU/hgzQ0saXNsK9fKlGdah1i1cXZULpB5vQRlRL2ZIaGp+ULtWTogS7vkoo2K8s2l4tqakWMg9eUjIJ2A==
"@node-rs/jieba-wasm32-wasi@1.10.3":
version "1.10.3"
resolved "https://registry.yarnpkg.com/@node-rs/jieba-wasm32-wasi/-/jieba-wasm32-wasi-1.10.3.tgz#b852eb2c9b8c81c5514ed8bb76d74c1cdf66fe76"
integrity sha512-vuoQ62vVoedNGcBmIi4UWdtNBOZG8B+vDYfjx3FD6rNg6g/RgwbVjYXbOVMOQwX06Ob9CfrutICXdUGHgoxzEQ==
dependencies:
"@napi-rs/wasm-runtime" "^0.2.3"
"@node-rs/jieba-win32-arm64-msvc@1.10.3":
version "1.10.3"
resolved "https://registry.yarnpkg.com/@node-rs/jieba-win32-arm64-msvc/-/jieba-win32-arm64-msvc-1.10.3.tgz#eefce48df8ec0496a0e45593d0b5f8981bb32b80"
integrity sha512-B8t4dh56TZnMLBoYWDkopf1ed37Ru/iU1qiIeBkbZWXGmNBChNZUOd//eaPOFjx8m9Sfc8bkj3FBRWt/kTAhmw==
"@node-rs/jieba-win32-ia32-msvc@1.10.3":
version "1.10.3"
resolved "https://registry.yarnpkg.com/@node-rs/jieba-win32-ia32-msvc/-/jieba-win32-ia32-msvc-1.10.3.tgz#edfb74e880a32f66a6810502957b62f9b042b487"
integrity sha512-SKuPGZJ5T+X4jOn1S8LklOSZ6HC7UBiw0hwi2z9uqX6WgElquLjGi/xfZ2gPqffeR/5K/PUu7aqYUUPL1XonVQ==
"@node-rs/jieba-win32-x64-msvc@1.10.3":
version "1.10.3"
resolved "https://registry.yarnpkg.com/@node-rs/jieba-win32-x64-msvc/-/jieba-win32-x64-msvc-1.10.3.tgz#285a24134d9c367b11d73060bdc37c351c3e60b5"
integrity sha512-j9I4+a/tf2hsLu8Sr0NhcLBVNBBQctO2mzcjemMpRa1SlEeODyic9RIyP8Ljz3YTN6MYqKh1KA9iR1xvxjxYFg==
"@node-rs/jieba@^1.6.0":
version "1.10.3"
resolved "https://registry.npmjs.org/@node-rs/jieba/-/jieba-1.10.3.tgz"
@ -1843,7 +1936,7 @@
"@nodelib/fs.stat" "2.0.5"
run-parallel "^1.1.9"
"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5":
"@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"
integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
@ -1977,7 +2070,7 @@
"@svgr/babel-plugin-transform-react-native-svg" "8.1.0"
"@svgr/babel-plugin-transform-svg-component" "8.0.0"
"@svgr/core@*", "@svgr/core@8.1.0":
"@svgr/core@8.1.0":
version "8.1.0"
resolved "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz"
integrity sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==
@ -2041,6 +2134,13 @@
resolved "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz"
integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==
"@tybys/wasm-util@^0.9.0":
version "0.9.0"
resolved "https://registry.yarnpkg.com/@tybys/wasm-util/-/wasm-util-0.9.0.tgz#3e75eb00604c8d6db470bf18c37b7d984a0e3355"
integrity sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==
dependencies:
tslib "^2.4.0"
"@types/acorn@^4.0.0":
version "4.0.6"
resolved "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz"
@ -2288,7 +2388,7 @@
"@types/history" "^4.7.11"
"@types/react" "*"
"@types/react@*", "@types/react@>= 16.8.0 < 19.0.0", "@types/react@>=16":
"@types/react@*":
version "18.3.3"
resolved "https://registry.npmjs.org/@types/react/-/react-18.3.3.tgz"
integrity sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==
@ -2373,7 +2473,7 @@
resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz"
integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==
"@webassemblyjs/ast@^1.12.1", "@webassemblyjs/ast@1.12.1":
"@webassemblyjs/ast@1.12.1", "@webassemblyjs/ast@^1.12.1":
version "1.12.1"
resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz"
integrity sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==
@ -2474,7 +2574,7 @@
"@webassemblyjs/wasm-gen" "1.12.1"
"@webassemblyjs/wasm-parser" "1.12.1"
"@webassemblyjs/wasm-parser@^1.12.1", "@webassemblyjs/wasm-parser@1.12.1":
"@webassemblyjs/wasm-parser@1.12.1", "@webassemblyjs/wasm-parser@^1.12.1":
version "1.12.1"
resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz"
integrity sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==
@ -2527,7 +2627,7 @@ acorn-walk@^8.0.0:
resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz"
integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==
"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8, acorn@^8.0.0, acorn@^8.0.4, acorn@^8.7.1, acorn@^8.8.2:
acorn@^8.0.0, acorn@^8.0.4, acorn@^8.7.1, acorn@^8.8.2:
version "8.11.3"
resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz"
integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==
@ -2552,12 +2652,7 @@ ajv-formats@^2.1.1:
dependencies:
ajv "^8.0.0"
ajv-keywords@^3.4.1:
version "3.5.2"
resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz"
integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==
ajv-keywords@^3.5.2:
ajv-keywords@^3.4.1, ajv-keywords@^3.5.2:
version "3.5.2"
resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz"
integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==
@ -2569,7 +2664,7 @@ ajv-keywords@^5.1.0:
dependencies:
fast-deep-equal "^3.1.3"
ajv@^6.12.2, ajv@^6.12.5, ajv@^6.9.1:
ajv@^6.12.2, ajv@^6.12.5:
version "6.12.6"
resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz"
integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
@ -2579,7 +2674,7 @@ ajv@^6.12.2, ajv@^6.12.5, ajv@^6.9.1:
json-schema-traverse "^0.4.1"
uri-js "^4.2.2"
ajv@^8.0.0, ajv@^8.8.2, ajv@^8.9.0:
ajv@^8.0.0, ajv@^8.9.0:
version "8.16.0"
resolved "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz"
integrity sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==
@ -2596,7 +2691,7 @@ algoliasearch-helper@^3.13.3:
dependencies:
"@algolia/events" "^4.0.1"
algoliasearch@^4.18.0, algoliasearch@^4.19.1, "algoliasearch@>= 3.1 < 6", "algoliasearch@>= 4.9.1 < 6":
algoliasearch@^4.18.0, algoliasearch@^4.19.1:
version "4.23.3"
resolved "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.23.3.tgz"
integrity sha512-Le/3YgNvjW9zxIQMRhUHuhiUjAlKY/zsdZpfq4dlLqg6mEm0nL6yk+7f2hDOtLpxsgE4jSzDmvHL7nXdBp5feg==
@ -2853,7 +2948,7 @@ braces@^3.0.3, braces@~3.0.2:
dependencies:
fill-range "^7.1.1"
browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.22.2, browserslist@^4.23.0, "browserslist@>= 4.21.0":
browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.22.2, browserslist@^4.23.0:
version "4.23.1"
resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz"
integrity sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==
@ -3111,16 +3206,16 @@ color-convert@^2.0.1:
dependencies:
color-name "~1.1.4"
color-name@~1.1.4:
version "1.1.4"
resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
color-name@1.1.3:
version "1.1.3"
resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz"
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"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
colord@^2.9.3:
version "2.9.3"
resolved "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz"
@ -3491,27 +3586,20 @@ debounce@^1.2.1:
resolved "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz"
integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==
debug@^2.6.0:
debug@2.6.9, debug@^2.6.0:
version "2.6.9"
resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz"
integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
dependencies:
ms "2.0.0"
debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0, debug@^4.3.1, debug@4:
debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0, debug@^4.3.1:
version "4.3.5"
resolved "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz"
integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==
dependencies:
ms "2.1.2"
debug@2.6.9:
version "2.6.9"
resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz"
integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
dependencies:
ms "2.0.0"
decode-named-character-reference@^1.0.0:
version "1.0.2"
resolved "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz"
@ -3585,16 +3673,16 @@ del@^6.1.1:
rimraf "^3.0.2"
slash "^3.0.0"
depd@~1.1.2:
version "1.1.2"
resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz"
integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==
depd@2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz"
integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
depd@~1.1.2:
version "1.1.2"
resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz"
integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==
dequal@^2.0.0:
version "2.0.3"
resolved "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz"
@ -4083,7 +4171,7 @@ feed@^4.2.2:
dependencies:
xml-js "^1.6.11"
file-loader@*, file-loader@^6.2.0:
file-loader@^6.2.0:
version "6.2.0"
resolved "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz"
integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==
@ -4239,6 +4327,11 @@ fs.realpath@^1.0.0:
resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
fsevents@~2.3.2:
version "2.3.3"
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
function-bind@^1.1.2:
version "1.1.2"
resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz"
@ -4381,16 +4474,16 @@ got@^12.1.0:
p-cancelable "^3.0.0"
responselike "^3.0.0"
graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9:
version "4.2.11"
resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz"
integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
graceful-fs@4.2.10:
version "4.2.10"
resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz"
integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==
graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9:
version "4.2.11"
resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz"
integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
gray-matter@^4.0.3:
version "4.0.3"
resolved "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz"
@ -4687,16 +4780,6 @@ http-deceiver@^1.2.7:
resolved "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz"
integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==
http-errors@~1.6.2:
version "1.6.3"
resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz"
integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==
dependencies:
depd "~1.1.2"
inherits "2.0.3"
setprototypeof "1.1.0"
statuses ">= 1.4.0 < 2"
http-errors@2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz"
@ -4708,6 +4791,16 @@ http-errors@2.0.0:
statuses "2.0.1"
toidentifier "1.0.1"
http-errors@~1.6.2:
version "1.6.3"
resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz"
integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==
dependencies:
depd "~1.1.2"
inherits "2.0.3"
setprototypeof "1.1.0"
statuses ">= 1.4.0 < 2"
http-parser-js@>=0.5.1:
version "0.5.8"
resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz"
@ -4816,7 +4909,7 @@ inflight@^1.0.4:
once "^1.3.0"
wrappy "1"
inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3, inherits@2, inherits@2.0.4:
inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3:
version "2.0.4"
resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
@ -4826,16 +4919,16 @@ inherits@2.0.3:
resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz"
integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==
ini@^1.3.4, ini@^1.3.5, ini@~1.3.0:
version "1.3.8"
resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz"
integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
ini@2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz"
integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==
ini@^1.3.4, ini@^1.3.5, ini@~1.3.0:
version "1.3.8"
resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz"
integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
inline-style-parser@0.1.1:
version "0.1.1"
resolved "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz"
@ -4858,16 +4951,16 @@ invariant@^2.2.4:
dependencies:
loose-envify "^1.0.0"
ipaddr.js@^2.0.1:
version "2.2.0"
resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz"
integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==
ipaddr.js@1.9.1:
version "1.9.1"
resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz"
integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
ipaddr.js@^2.0.1:
version "2.2.0"
resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz"
integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==
is-alphabetical@^2.0.0:
version "2.0.1"
resolved "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz"
@ -5038,16 +5131,16 @@ is-yarn-global@^0.4.0:
resolved "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.4.1.tgz"
integrity sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==
isarray@~1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz"
integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==
isarray@0.0.1:
version "0.0.1"
resolved "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz"
integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==
isarray@~1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz"
integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==
isexe@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz"
@ -6023,7 +6116,7 @@ micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5:
braces "^3.0.3"
picomatch "^2.3.1"
"mime-db@>= 1.43.0 < 2":
mime-db@1.52.0, "mime-db@>= 1.43.0 < 2":
version "1.52.0"
resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz"
integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
@ -6033,40 +6126,14 @@ mime-db@~1.33.0:
resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz"
integrity sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==
mime-db@1.52.0:
version "1.52.0"
resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz"
integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
mime-types@^2.1.27:
version "2.1.35"
resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz"
integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
dependencies:
mime-db "1.52.0"
mime-types@^2.1.31:
version "2.1.35"
resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz"
integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
dependencies:
mime-db "1.52.0"
mime-types@~2.1.17, mime-types@2.1.18:
mime-types@2.1.18, mime-types@~2.1.17:
version "2.1.18"
resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz"
integrity sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==
dependencies:
mime-db "~1.33.0"
mime-types@~2.1.24:
version "2.1.35"
resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz"
integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
dependencies:
mime-db "1.52.0"
mime-types@~2.1.34:
mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.24, mime-types@~2.1.34:
version "2.1.35"
resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz"
integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
@ -6106,7 +6173,7 @@ minimalistic-assert@^1.0.0:
resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz"
integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@3.1.2:
minimatch@3.1.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1:
version "3.1.2"
resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz"
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
@ -6477,13 +6544,6 @@ path-parse@^1.0.7:
resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz"
integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
path-to-regexp@^1.7.0:
version "1.8.0"
resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz"
integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==
dependencies:
isarray "0.0.1"
path-to-regexp@0.1.7:
version "0.1.7"
resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz"
@ -6494,6 +6554,13 @@ path-to-regexp@2.2.1:
resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz"
integrity sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==
path-to-regexp@^1.7.0:
version "1.8.0"
resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz"
integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==
dependencies:
isarray "0.0.1"
path-type@^4.0.0:
version "4.0.0"
resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz"
@ -6812,7 +6879,7 @@ postcss-zindex@^6.0.2:
resolved "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-6.0.2.tgz"
integrity sha512-5BxW9l1evPB/4ZIc+2GobEBoKC+h8gPGCMi+jxsYvd2x0mjq7wazk6DrP71pStqxE9Foxh5TVnonbWpFZzXaYg==
"postcss@^7.0.0 || ^8.0.1", postcss@^8.0.9, postcss@^8.1.0, postcss@^8.2.2, postcss@^8.4.21, postcss@^8.4.23, postcss@^8.4.24, postcss@^8.4.26, postcss@^8.4.31, postcss@^8.4.33, postcss@^8.4.38:
postcss@^8.4.21, postcss@^8.4.24, postcss@^8.4.26, postcss@^8.4.33, postcss@^8.4.38:
version "8.4.38"
resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz"
integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==
@ -6935,21 +7002,16 @@ randombytes@^2.1.0:
dependencies:
safe-buffer "^5.1.0"
range-parser@^1.2.1:
version "1.2.1"
resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz"
integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
range-parser@~1.2.1:
version "1.2.1"
resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz"
integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
range-parser@1.2.0:
version "1.2.0"
resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz"
integrity sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==
range-parser@^1.2.1, range-parser@~1.2.1:
version "1.2.1"
resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz"
integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
raw-body@2.5.2:
version "2.5.2"
resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz"
@ -7000,7 +7062,7 @@ react-dev-utils@^12.0.1:
strip-ansi "^6.0.1"
text-table "^0.2.0"
react-dom@*, "react-dom@^16.14.0 || 17 || ^18", "react-dom@^16.6.0 || ^17.0.0 || ^18.0.0", react-dom@^18.0.0, react-dom@^18.3.1, "react-dom@>= 16.8.0 < 19.0.0":
react-dom@^18.3.1:
version "18.3.1"
resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz"
integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==
@ -7046,7 +7108,7 @@ react-loadable-ssr-addon-v5-slorber@^1.0.1:
dependencies:
"@babel/runtime" "^7.10.3"
react-loadable@*, "react-loadable@npm:@docusaurus/react-loadable@6.0.0":
"react-loadable@npm:@docusaurus/react-loadable@6.0.0":
version "6.0.0"
resolved "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-6.0.0.tgz"
integrity sha512-YMMxTUQV/QFSnbgrP3tjDzLHRg7vsbMn8e9HAa8o/1iXoiomo48b7sk/kkmWEuWNDPJVlKSJRB6Y2fHqdJk+SQ==
@ -7073,7 +7135,7 @@ react-router-dom@^5.3.4:
tiny-invariant "^1.0.2"
tiny-warning "^1.0.0"
react-router@^5.3.4, react-router@>=5, react-router@5.3.4:
react-router@5.3.4, react-router@^5.3.4:
version "5.3.4"
resolved "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz"
integrity sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==
@ -7088,7 +7150,7 @@ react-router@^5.3.4, react-router@>=5, react-router@5.3.4:
tiny-invariant "^1.0.2"
tiny-warning "^1.0.0"
react@*, "react@^16.13.1 || ^17.0.0 || ^18.0.0", "react@^16.14.0 || ^17 || ^18", "react@^16.6.0 || ^17.0.0 || ^18.0.0", react@^18.0.0, react@^18.3.1, "react@>= 16.8.0 < 19.0.0", react@>=15, react@>=16, react@>=16.0.0:
react@^18.3.1:
version "18.3.1"
resolved "https://registry.npmjs.org/react/-/react-18.3.1.tgz"
integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==
@ -7391,21 +7453,16 @@ run-parallel@^1.1.9:
dependencies:
queue-microtask "^1.2.2"
safe-buffer@^5.1.0, safe-buffer@>=5.1.0, safe-buffer@~5.2.0, safe-buffer@5.2.1:
safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
version "5.1.2"
resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz"
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0:
version "5.2.1"
resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz"
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
safe-buffer@~5.1.0, safe-buffer@~5.1.1:
version "5.1.2"
resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz"
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
safe-buffer@5.1.2:
version "5.1.2"
resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz"
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
"safer-buffer@>= 2.1.2 < 3":
version "2.1.2"
resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz"
@ -7423,25 +7480,16 @@ scheduler@^0.23.2:
dependencies:
loose-envify "^1.1.0"
schema-utils@^3.0.0:
version "3.3.0"
resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz"
integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==
schema-utils@2.7.0:
version "2.7.0"
resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz"
integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==
dependencies:
"@types/json-schema" "^7.0.8"
ajv "^6.12.5"
ajv-keywords "^3.5.2"
"@types/json-schema" "^7.0.4"
ajv "^6.12.2"
ajv-keywords "^3.4.1"
schema-utils@^3.1.1:
version "3.3.0"
resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz"
integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==
dependencies:
"@types/json-schema" "^7.0.8"
ajv "^6.12.5"
ajv-keywords "^3.5.2"
schema-utils@^3.2.0:
schema-utils@^3.0.0, schema-utils@^3.1.1, schema-utils@^3.2.0:
version "3.3.0"
resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz"
integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==
@ -7460,20 +7508,6 @@ schema-utils@^4.0.0, schema-utils@^4.0.1:
ajv-formats "^2.1.1"
ajv-keywords "^5.1.0"
schema-utils@2.7.0:
version "2.7.0"
resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz"
integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==
dependencies:
"@types/json-schema" "^7.0.4"
ajv "^6.12.2"
ajv-keywords "^3.4.1"
"search-insights@>= 1 < 3":
version "2.14.0"
resolved "https://registry.npmjs.org/search-insights/-/search-insights-2.14.0.tgz"
integrity sha512-OLN6MsPMCghDOqlCtsIsYgtsC0pnwVTyT9Mu6A3ewOj1DxvzZF6COrn2g86E/c05xbktB0XN04m/t1Z+n+fTGw==
section-matter@^1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz"
@ -7726,7 +7760,7 @@ source-map-support@~0.5.20:
buffer-from "^1.0.0"
source-map "^0.6.0"
source-map@^0.6.0:
source-map@^0.6.0, source-map@~0.6.0:
version "0.6.1"
resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
@ -7736,11 +7770,6 @@ source-map@^0.7.0:
resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz"
integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==
source-map@~0.6.0:
version "0.6.1"
resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
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"
@ -7779,45 +7808,22 @@ srcset@^4.0.0:
resolved "https://registry.npmjs.org/srcset/-/srcset-4.0.0.tgz"
integrity sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==
"statuses@>= 1.4.0 < 2":
version "1.5.0"
resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz"
integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==
statuses@2.0.1:
version "2.0.1"
resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz"
integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==
"statuses@>= 1.4.0 < 2":
version "1.5.0"
resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz"
integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==
std-env@^3.0.1:
version "3.7.0"
resolved "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz"
integrity sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==
string_decoder@^1.1.1:
version "1.3.0"
resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz"
integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
dependencies:
safe-buffer "~5.2.0"
string_decoder@~1.1.1:
version "1.1.1"
resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz"
integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
dependencies:
safe-buffer "~5.1.0"
string-width@^4.1.0:
version "4.2.3"
resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
dependencies:
emoji-regex "^8.0.0"
is-fullwidth-code-point "^3.0.0"
strip-ansi "^6.0.1"
string-width@^4.2.0:
string-width@^4.1.0, string-width@^4.2.0:
version "4.2.3"
resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
@ -7835,6 +7841,20 @@ string-width@^5.0.1, string-width@^5.1.2:
emoji-regex "^9.2.2"
strip-ansi "^7.0.1"
string_decoder@^1.1.1:
version "1.3.0"
resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz"
integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
dependencies:
safe-buffer "~5.2.0"
string_decoder@~1.1.1:
version "1.1.1"
resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz"
integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
dependencies:
safe-buffer "~5.1.0"
stringify-entities@^4.0.0:
version "4.0.4"
resolved "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz"
@ -8065,10 +8085,10 @@ typedarray-to-buffer@^3.1.5:
dependencies:
is-typedarray "^1.0.0"
typescript@^5.4.5, "typescript@>= 2.7", typescript@>=4.9.5:
version "5.4.5"
resolved "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz"
integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==
typescript@^5.5.2:
version "5.5.2"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.2.tgz#c26f023cb0054e657ce04f72583ea2d85f8d0507"
integrity sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==
undici-types@~5.26.4:
version "5.26.5"
@ -8181,7 +8201,7 @@ universalify@^2.0.0:
resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz"
integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==
unpipe@~1.0.0, unpipe@1.0.0:
unpipe@1.0.0, unpipe@~1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz"
integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==
@ -8389,7 +8409,7 @@ webpack-sources@^3.2.3:
resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz"
integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==
"webpack@^4.0.0 || ^5.0.0", "webpack@^4.37.0 || ^5.0.0", webpack@^5.0.0, webpack@^5.1.0, webpack@^5.20.0, webpack@^5.88.1, "webpack@>= 4", "webpack@>=4.41.1 || 5.x", webpack@>=5, "webpack@3 || 4 || 5":
webpack@^5.88.1:
version "5.92.0"
resolved "https://registry.npmjs.org/webpack/-/webpack-5.92.0.tgz"
integrity sha512-Bsw2X39MYIgxouNATyVpCNVWBCuUwDgWtN78g6lSdPJRLaQ/PUVm/oXcaRAyY/sMFoKFQrsPeqvTizWtq7QPCA==
@ -8429,7 +8449,7 @@ webpackbar@^5.0.2:
pretty-time "^1.1.0"
std-env "^3.0.1"
websocket-driver@^0.7.4, websocket-driver@>=0.5.1:
websocket-driver@>=0.5.1, websocket-driver@^0.7.4:
version "0.7.4"
resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz"
integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==