@@ -1,10 +1,3 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
npm install
|
npm install
|
||||||
|
|
||||||
# also install dependencies for `pr-collector`
|
|
||||||
cd pr-collector
|
|
||||||
npm install
|
|
||||||
npm run build && npm run package
|
|
||||||
|
|
||||||
cd ..
|
|
||||||
+12
-1
@@ -6,4 +6,15 @@ updates:
|
|||||||
directory: '/'
|
directory: '/'
|
||||||
# Check the npm registry for updates every day (weekdays)
|
# Check the npm registry for updates every day (weekdays)
|
||||||
schedule:
|
schedule:
|
||||||
interval: 'daily'
|
interval: 'weekly'
|
||||||
|
groups:
|
||||||
|
dev-dependencies:
|
||||||
|
patterns:
|
||||||
|
- "@types/*"
|
||||||
|
- "eslint*"
|
||||||
|
- "jest*"
|
||||||
|
- "@typescript-eslint/*"
|
||||||
|
- "js-yaml"
|
||||||
|
- "prettier"
|
||||||
|
- "ts-jest"
|
||||||
|
- "typescript"
|
||||||
@@ -32,13 +32,6 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
node-version: 16.x
|
node-version: 16.x
|
||||||
|
|
||||||
- name: Build PR-Collector
|
|
||||||
run: |
|
|
||||||
cd pr-collector
|
|
||||||
npm ci
|
|
||||||
npm run build
|
|
||||||
npm run package
|
|
||||||
|
|
||||||
- name: Build Action
|
- name: Build Action
|
||||||
run: |
|
run: |
|
||||||
npm ci
|
npm ci
|
||||||
|
|||||||
@@ -24,18 +24,10 @@ jobs:
|
|||||||
|
|
||||||
- name: Install NPM
|
- name: Install NPM
|
||||||
run: |
|
run: |
|
||||||
cd pr-collector
|
|
||||||
npm install
|
|
||||||
|
|
||||||
cd ..
|
|
||||||
npm install
|
npm install
|
||||||
|
|
||||||
- name: Run NPM
|
- name: Run NPM
|
||||||
run: |
|
run: |
|
||||||
cd pr-collector
|
|
||||||
npm run all
|
|
||||||
|
|
||||||
cd ..
|
|
||||||
npm run all
|
npm run all
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|||||||
@@ -239,8 +239,8 @@ This configuration is a `JSON` in the following format. (The below showcases *ex
|
|||||||
"order": "ASC",
|
"order": "ASC",
|
||||||
"on_property": "mergedAt"
|
"on_property": "mergedAt"
|
||||||
},
|
},
|
||||||
"template": "${{CHANGELOG}}\n\n<details>\n<summary>Uncategorized</summary>\n\n${{UNCATEGORIZED}}\n</details>",
|
"template": "#{{CHANGELOG}}\n\n<details>\n<summary>Uncategorized</summary>\n\n#{{UNCATEGORIZED}}\n</details>",
|
||||||
"pr_template": "- ${{TITLE}}\n - PR: #${{NUMBER}}",
|
"pr_template": "- #{{TITLE}}\n - PR: ##{{NUMBER}}",
|
||||||
"empty_template": "- no changes",
|
"empty_template": "- no changes",
|
||||||
"label_extractor": [
|
"label_extractor": [
|
||||||
{
|
{
|
||||||
@@ -350,21 +350,22 @@ Table of supported placeholders allowed to be used in the `pr_template` configur
|
|||||||
|
|
||||||
| **Placeholder** | **Description** |
|
| **Placeholder** | **Description** |
|
||||||
|-------------------|----------------------------------------------------------------------------------------------------|
|
|-------------------|----------------------------------------------------------------------------------------------------|
|
||||||
| `${{NUMBER}}` | The number referencing this pull request. E.g. 13. |
|
| `#{{NUMBER}}` | The number referencing this pull request. E.g. 13. |
|
||||||
| `${{TITLE}}` | Specified title of the merged pull request. |
|
| `#{{TITLE}}` | Specified title of the merged pull request. |
|
||||||
| `${{URL}}` | Url linking to the pull request on GitHub. |
|
| `#{{URL}}` | Url linking to the pull request on GitHub. |
|
||||||
| `${{STATUS}}` | Status of the PR. Usually always `merged`. Possibly `Open` if `includeOpen` is configured. |
|
| `#{{STATUS}}` | Status of the PR. Usually always `merged`. Possibly `Open` if `includeOpen` is configured. |
|
||||||
| `${{CREATED_AT}}` | The ISO time, the pull request was created at. |
|
| `#{{CREATED_AT}}` | The ISO time, the pull request was created at. |
|
||||||
| `${{MERGED_AT}}` | The ISO time, the pull request was merged at. |
|
| `#{{MERGED_AT}}` | The ISO time, the pull request was merged at. |
|
||||||
| `${{MERGE_SHA}}` | The commit SHA, the pull request was merged with. |
|
| `#{{MERGE_SHA}}` | The commit SHA, the pull request was merged with. |
|
||||||
| `${{AUTHOR}}` | Author creating and opening the pull request. |
|
| `#{{AUTHOR}}` | Author creating and opening the pull request. |
|
||||||
| `${{LABELS}}` | The labels associated with this pull request, joined by `,`. |
|
| `#{{LABELS}}` | The labels associated with this pull request, joined by `,`. |
|
||||||
| `${{MILESTONE}}` | Milestone this PR was part of, as assigned on GitHub. |
|
| `#{{MILESTONE}}` | Milestone this PR was part of, as assigned on GitHub. |
|
||||||
| `${{BODY}}` | Description/Body of the pull request as specified on GitHub. |
|
| `#{{BODY}}` | Description/Body of the pull request as specified on GitHub. |
|
||||||
| `${{ASSIGNEES}}` | Login names of assigned GitHub users, joined by `,`. |
|
| `#{{ASSIGNEES}}` | Login names of assigned GitHub users, joined by `,`. |
|
||||||
| `${{REVIEWERS}}` | GitHub Login names of specified reviewers, joined by `,`. Requires `fetchReviewers` to be enabled. |
|
| `#{{REVIEWERS}}` | GitHub Login names of specified reviewers, joined by `,`. Requires `fetchReviewers` to be enabled. |
|
||||||
| `${{APPROVERS}}` | GitHub Login names of users who approved the PR, joined by `,`. |
|
| `#{{APPROVERS}}` | GitHub Login names of users who approved the PR, joined by `,`. |
|
||||||
|
|
||||||
|
> **Note**: `v4` updates the default placeholders format to `#{{}}`. The old format `${{}}` will be supported until v5 for backwards compatiblity.
|
||||||
|
|
||||||
<details><summary><b>Array Placeholders</b></summary>
|
<details><summary><b>Array Placeholders</b></summary>
|
||||||
<p>
|
<p>
|
||||||
@@ -376,9 +377,9 @@ When using `*` values are joined by `,`.
|
|||||||
|
|
||||||
| **Placeholder** | **Description** |
|
| **Placeholder** | **Description** |
|
||||||
|---------------------|-------------------------------------------------------------------------------------|
|
|---------------------|-------------------------------------------------------------------------------------|
|
||||||
| `${{ASSIGNEES[*]}}` | Login names of assigned GitHub users. |
|
| `#{{ASSIGNEES[*]}}` | Login names of assigned GitHub users. |
|
||||||
| `${{REVIEWERS[*]}}` | GitHub Login names of specified reviewers. Requires `fetchReviewers` to be enabled. |
|
| `#{{REVIEWERS[*]}}` | GitHub Login names of specified reviewers. Requires `fetchReviewers` to be enabled. |
|
||||||
| `${{APPROVERS[*]}}` | GitHub Login names of users who approved the PR. |
|
| `#{{APPROVERS[*]}}` | GitHub Login names of users who approved the PR. |
|
||||||
|
|
||||||
Additionally there are special array placeholders like `REVIEWS` which allows access to it's properties via
|
Additionally there are special array placeholders like `REVIEWS` which allows access to it's properties via
|
||||||
`(KEY)[(*/index)].(property)`.
|
`(KEY)[(*/index)].(property)`.
|
||||||
@@ -387,19 +388,19 @@ For example: `REVIEWS[*].author` or `REVIEWS[*].body`
|
|||||||
|
|
||||||
| **Placeholder** | **Description** |
|
| **Placeholder** | **Description** |
|
||||||
|-------------------------------|--------------------------------------------|
|
|-------------------------------|--------------------------------------------|
|
||||||
| `${{REVIEWS[*].author}}` | GitHub Login names of specified reviewers. |
|
| `#{{REVIEWS[*].author}}` | GitHub Login names of specified reviewers. |
|
||||||
| `${{REVIEWS[*].body}}` | The body of the review. |
|
| `#{{REVIEWS[*].body}}` | The body of the review. |
|
||||||
| `${{REVIEWS[*].htmlURL}}` | The URL to the given review. |
|
| `#{{REVIEWS[*].htmlURL}}` | The URL to the given review. |
|
||||||
| `${{REVIEWS[*].submittedAt}}` | The date whent he review was submitted. |
|
| `#{{REVIEWS[*].submittedAt}}` | The date whent he review was submitted. |
|
||||||
| `${{REVIEWS[*].state}}` | The state of the given review. |
|
| `#{{REVIEWS[*].state}}` | The state of the given review. |
|
||||||
|
|
||||||
Similar to `REVIEWS`, `REFERENCED` PRs also offer special placeholders.
|
Similar to `REVIEWS`, `REFERENCED` PRs also offer special placeholders.
|
||||||
|
|
||||||
| **Placeholder** | **Description** |
|
| **Placeholder** | **Description** |
|
||||||
|-------------------------------|---------------------------------------------------------------------------|
|
|-------------------------------|---------------------------------------------------------------------------|
|
||||||
| `${{REFERENCED[*].number}}` | The PR number of the referenced PR. |
|
| `#{{REFERENCED[*].number}}` | The PR number of the referenced PR. |
|
||||||
| `${{REFERENCED[*].title}}` | The title of the referenced PR. |
|
| `#{{REFERENCED[*].title}}` | The title of the referenced PR. |
|
||||||
| `${{REFERENCED[*]."..."}}` | Allows to use most other PR properties as placeholder. |
|
| `#{{REFERENCED[*]."..."}}` | Allows to use most other PR properties as placeholder. |
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
</details>
|
</details>
|
||||||
@@ -412,27 +413,27 @@ Table of supported placeholders allowed to be used in the `template` and `empty_
|
|||||||
|
|
||||||
| **Placeholder** | **Description** | **Empty** |
|
| **Placeholder** | **Description** | **Empty** |
|
||||||
|----------------------------|----------------------------------------------------------------------------------------------------|:---------:|
|
|----------------------------|----------------------------------------------------------------------------------------------------|:---------:|
|
||||||
| `${{CHANGELOG}}` | The contents of the changelog, matching the labels as specified in the categories configuration | |
|
| `#{{CHANGELOG}}` | The contents of the changelog, matching the labels as specified in the categories configuration | |
|
||||||
| `${{UNCATEGORIZED}}` | All pull requests not matching a specified label in categories | |
|
| `#{{UNCATEGORIZED}}` | All pull requests not matching a specified label in categories | |
|
||||||
| `${{OPEN}}` | All open pull requests. Will only be fetched if `includeOpen` is enabled. | |
|
| `#{{OPEN}}` | All open pull requests. Will only be fetched if `includeOpen` is enabled. | |
|
||||||
| `${{IGNORED}}` | All pull requests defining labels matching the `ignore_labels` configuration | |
|
| `#{{IGNORED}}` | All pull requests defining labels matching the `ignore_labels` configuration | |
|
||||||
| `${{OWNER}}` | Describes the owner of the repository the changelog was generated for | x |
|
| `#{{OWNER}}` | Describes the owner of the repository the changelog was generated for | x |
|
||||||
| `${{REPO}}` | The repository name of the repo the changelog was generated for | x |
|
| `#{{REPO}}` | The repository name of the repo the changelog was generated for | x |
|
||||||
| `${{FROM_TAG}}` | Defines the 'start' from where the changelog did consider merged pull requests | x |
|
| `#{{FROM_TAG}}` | Defines the 'start' from where the changelog did consider merged pull requests | x |
|
||||||
| `${{FROM_TAG_DATE}}` | Defines the date at which the 'start' tag was created. Requires `fetchReleaseInformation`. | x |
|
| `#{{FROM_TAG_DATE}}` | Defines the date at which the 'start' tag was created. Requires `fetchReleaseInformation`. | x |
|
||||||
| `${{TO_TAG}}` | Defines until which tag the changelog did consider merged pull requests | x |
|
| `#{{TO_TAG}}` | Defines until which tag the changelog did consider merged pull requests | x |
|
||||||
| `${{TO_TAG_DATE}}` | Defines the date at which the 'until' tag was created. Requires `fetchReleaseInformation`. | x |
|
| `#{{TO_TAG_DATE}}` | Defines the date at which the 'until' tag was created. Requires `fetchReleaseInformation`. | x |
|
||||||
| `${{RELEASE_DIFF}}` | Introduces a link to the full diff between from tag and to tag releases | x |
|
| `#{{RELEASE_DIFF}}` | Introduces a link to the full diff between from tag and to tag releases | x |
|
||||||
| `${{CHANGED_FILES}}` | The count of changed files. | |
|
| `#{{CHANGED_FILES}}` | The count of changed files. | |
|
||||||
| `${{ADDITIONS}}` | The count of code additions (lines). | |
|
| `#{{ADDITIONS}}` | The count of code additions (lines). | |
|
||||||
| `${{DELETIONS}}` | The count of code deletions (lines). | |
|
| `#{{DELETIONS}}` | The count of code deletions (lines). | |
|
||||||
| `${{CHANGES}}` | The count of total changes (lines). | |
|
| `#{{CHANGES}}` | The count of total changes (lines). | |
|
||||||
| `${{COMMITS}}` | The count of commits in this release. | |
|
| `#{{COMMITS}}` | The count of commits in this release. | |
|
||||||
| `${{CATEGORIZED_COUNT}}` | The count of PRs which were categorized | |
|
| `#{{CATEGORIZED_COUNT}}` | The count of PRs which were categorized | |
|
||||||
| `${{UNCATEGORIZED_COUNT}}` | The count of PRs and changes which were not categorized. No label overlapping with category labels | |
|
| `#{{UNCATEGORIZED_COUNT}}` | The count of PRs and changes which were not categorized. No label overlapping with category labels | |
|
||||||
| `${{OPEN_COUNT}}` | The count of open PRs. Will only be fetched if `includeOpen` is configured. | |
|
| `#{{OPEN_COUNT}}` | The count of open PRs. Will only be fetched if `includeOpen` is configured. | |
|
||||||
| `${{IGNORED_COUNT}}` | The count of PRs and changes which were specifically ignored from the changelog. | |
|
| `#{{IGNORED_COUNT}}` | The count of PRs and changes which were specifically ignored from the changelog. | |
|
||||||
| `${{DAYS_SINCE}}` | Days between the 2 releases. Requires `fetchReleaseInformation` to be enabled. | x |
|
| `#{{DAYS_SINCE}}` | Days between the 2 releases. Requires `fetchReleaseInformation` to be enabled. | x |
|
||||||
|
|
||||||
### Configuration Specification
|
### Configuration Specification
|
||||||
|
|
||||||
@@ -494,8 +495,8 @@ Custom placeholders can be defined via the `configuration.json` as `custom_place
|
|||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"template": "**Epics**\n${{EPIC[*]}}\n\n${{CHANGELOG}}",
|
"template": "**Epics**\n#{{EPIC[*]}}\n\n#{{CHANGELOG}}",
|
||||||
"pr_template": "- ${{TITLE}} - ${{URL}} ${{EPIC}}",
|
"pr_template": "- #{{TITLE}} - #{{URL}} #{{EPIC}}",
|
||||||
"custom_placeholders": [
|
"custom_placeholders": [
|
||||||
{
|
{
|
||||||
"name": "EPIC",
|
"name": "EPIC",
|
||||||
@@ -518,7 +519,7 @@ This example will look for JIRA tickets in the EPIC project, and extract all of
|
|||||||
| custom_placeholders.source | The source PLACEHOLDER, requires to be one of the existing Template or PR Template placeholders. |
|
| custom_placeholders.source | The source PLACEHOLDER, requires to be one of the existing Template or PR Template placeholders. |
|
||||||
| custom_placeholders.transformer | The transformer specification used to extract the value from the original source PLACEHOLDER. |
|
| custom_placeholders.transformer | The transformer specification used to extract the value from the original source PLACEHOLDER. |
|
||||||
|
|
||||||
A placeholder with the name as `CUSTOM_PLACEHOLDER` can be used as `${{CUSTOM_PLACEHOLDER}}` in the target template.
|
A placeholder with the name as `CUSTOM_PLACEHOLDER` can be used as `#{{CUSTOM_PLACEHOLDER}}` in the target template.
|
||||||
By default the same restriction applies as for PR vs template placeholder. E.g. a global placeholder can only be used in the global template (and not in the PR template).
|
By default the same restriction applies as for PR vs template placeholder. E.g. a global placeholder can only be used in the global template (and not in the PR template).
|
||||||
|
|
||||||
Custom placeholders offer one new feature though. PR related placeholders can be used in the global template via the following syntax:
|
Custom placeholders offer one new feature though. PR related placeholders can be used in the global template via the following syntax:
|
||||||
@@ -551,23 +552,29 @@ It's suggested to export the token to your path before running the tests so that
|
|||||||
export GITHUB_TOKEN=your_personal_github_pat
|
export GITHUB_TOKEN=your_personal_github_pat
|
||||||
```
|
```
|
||||||
|
|
||||||
## Local Testing 🧪
|
## Local Testing 🧪
|
||||||
|
|
||||||
This GitHub action is fully developed in Typescript and can be run locally via npm. Doing so is a great way to test the action and/or your custom configurations locally, without the need to push and re-run GitHub actions over and over again.
|
This GitHub action is fully developed in Typescript and can be run locally via npm or right from the browser using GitHub Codespace.
|
||||||
|
|
||||||
To run this action locally, first make sure you provide a `GITHUB_TOKEN` with enough permissions to access the repository.
|
[](https://codespaces.new/mikepenz/release-changelog-builder-action)
|
||||||
|
|
||||||
|
Doing so is a great way to test the action and/or your custom configurations locally, without the need to push and re-run GitHub actions over and over again.
|
||||||
|
|
||||||
|
To run locally, or to access private repositories (GitHub Codespaces has automatic access to public repos with the default token), you will require to provide a valid `GITHUB_TOKEN` with read only permissions to access the repositories you want to run this action towards. (See more details in [Token Permission](#Token-Permission))
|
||||||
|
|
||||||
```
|
```
|
||||||
# GitHub token for the action
|
# Export the token in the CLI you use to execute.
|
||||||
export GITHUB_TOKEN=your_read_only_github_token
|
export GITHUB_TOKEN=your_read_only_github_token
|
||||||
```
|
```
|
||||||
|
|
||||||
Afterwards run the testcases with:
|
Afterwards it is possible to run the tests included in the project:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
npm test -- custom.test.ts
|
npm test -- main.test.ts # modify the file name to run other testcases
|
||||||
```
|
```
|
||||||
|
|
||||||
|
To test your own configuration, it's adviced to create a new `__tests__/custom.test.ts` file, modify it to your needs (e.g. change repo, change token, change settings, ...), and then run it via `npm test -- custom.test.ts`
|
||||||
|
|
||||||
<details><summary><b>custom.test.ts</b></summary>
|
<details><summary><b>custom.test.ts</b></summary>
|
||||||
<p>
|
<p>
|
||||||
|
|
||||||
@@ -606,15 +613,32 @@ it('Test custom changelog builder', async () => {
|
|||||||
|
|
||||||
const changeLog = await releaseNotesBuilder.build()
|
const changeLog = await releaseNotesBuilder.build()
|
||||||
console.log(changeLog)
|
console.log(changeLog)
|
||||||
expect(changeLog).toStrictEqual(`define-expected-output`)
|
|
||||||
})
|
})
|
||||||
```
|
```
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
Additionally it is possible to do full debugging including the option of breakpoints via (for example) Visual Code.
|
One major benefit of setting up a custom test is that it will allow you to use javascripts full debugging support, including the option of breakpoints via (for example) Visual Code.
|
||||||
Open the project in Visual code -> open the terminal -> use the `+` and start a new `JavaScript Debug Terminal`. Afterwards run the tests as described above.
|
|
||||||
|
From GitHub codespaces, open the terminal panel -> Click the small arrow down beside `+` and pick `JavaScript Debug Terminal` (make sure to export the token again). Now execute the test with this terminal. (This is very similar to local Visual Code environments).
|
||||||
|
|
||||||
|
## Token Permission
|
||||||
|
|
||||||
|
Permissions depend on the specific usecase, however this action only requires `read-only` permissions as it will not make modifications to the repository.
|
||||||
|
|
||||||
|
For `Fine-grained personal access tokens` this means:
|
||||||
|
|
||||||
|
- `read` for [Pull requests](https://github.com/mikepenz/release-changelog-builder-action/blob/develop/pr-collector/src/pullRequests.ts#L124)
|
||||||
|
- Covered by the `pull-requests` scope
|
||||||
|
- `read` for [Commits](https://github.com/mikepenz/release-changelog-builder-action/blob/develop/pr-collector/src/commits.ts#L54)
|
||||||
|
- Covered by the `contents` scope
|
||||||
|
- `read` for [Tags](https://github.com/mikepenz/release-changelog-builder-action/blob/develop/pr-collector/src/tags.ts#L32) (if not available the `from` and `to` refs have to be provided)
|
||||||
|
- Covered by the `contents` scope
|
||||||
|
- `read` to [list reviews](https://github.com/mikepenz/release-changelog-builder-action/blob/develop/pr-collector/src/pullRequests.ts#L186)
|
||||||
|
- Covered by the `contents` scope
|
||||||
|
|
||||||
|
For Classic tokens you only have to create the token without special permissions.
|
||||||
|
|
||||||
## Developed By
|
## Developed By
|
||||||
|
|
||||||
@@ -637,13 +661,13 @@ Open the project in Visual code -> open the terminal -> use the `+` and start a
|
|||||||
## License
|
## License
|
||||||
|
|
||||||
Copyright for portions of pr-release-notes are held by Nikolay Blagoev, 2019-2020 as part of project pull-release-notes.
|
Copyright for portions of pr-release-notes are held by Nikolay Blagoev, 2019-2020 as part of project pull-release-notes.
|
||||||
All other copyright for project pr-release-notes are held by Mike Penz, 2021.
|
All other copyright for project pr-release-notes are held by Mike Penz, 2023.
|
||||||
|
|
||||||
## Fork License
|
## Fork License
|
||||||
|
|
||||||
All patches and changes applied to the original source are licensed under the Apache 2.0 license.
|
All patches and changes applied to the original source are licensed under the Apache 2.0 license.
|
||||||
|
|
||||||
Copyright 2022 Mike Penz
|
Copyright 2023 Mike Penz
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -14,6 +14,6 @@ it('Configurations are merged correctly', async () => {
|
|||||||
|
|
||||||
console.log(mergedConfiguration)
|
console.log(mergedConfiguration)
|
||||||
expect(JSON.stringify(mergedConfiguration)).toEqual(
|
expect(JSON.stringify(mergedConfiguration)).toEqual(
|
||||||
`{\"max_tags_to_fetch\":200,\"max_pull_requests\":1000,\"max_back_track_time_days\":1000,\"exclude_merge_branches\":[],\"sort\":\"DESC\",\"template\":\"$\{\{CHANGELOG}}\",\"pr_template\":\"- $\{\{TITLE}}\\n - PR: #$\{\{NUMBER}}\",\"empty_template\":\"- no magic changes\",\"categories\":[{\"title\":\"## 🚀 Features\",\"labels\":[\"feature\"]},{\"title\":\"## 🐛 Fixes\",\"labels\":[\"fix\"]},{\"title\":\"## 🧪 Tests\",\"labels\":[\"test\"]}],\"ignore_labels\":[\"ignore\"],\"label_extractor\":[],\"transformers\":[],\"tag_resolver\":{\"method\":\"semver\"},\"base_branches\":[],\"custom_placeholders\":[],\"trim_values\":true}`
|
`{\"max_tags_to_fetch\":200,\"max_pull_requests\":1000,\"max_back_track_time_days\":1000,\"exclude_merge_branches\":[],\"sort\":\"DESC\",\"template\":\"#\{\{CHANGELOG}}\",\"pr_template\":\"- #\{\{TITLE}}\\n - PR: ##\{\{NUMBER}}\",\"empty_template\":\"- no magic changes\",\"categories\":[{\"title\":\"## 🚀 Features\",\"labels\":[\"feature\"]},{\"title\":\"## 🐛 Fixes\",\"labels\":[\"fix\"]},{\"title\":\"## 🧪 Tests\",\"labels\":[\"test\"]}],\"ignore_labels\":[\"ignore\"],\"label_extractor\":[],\"transformers\":[],\"tag_resolver\":{\"method\":\"semver\"},\"base_branches\":[],\"custom_placeholders\":[],\"trim_values\":true}`
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ it('Should use empty placeholder', async () => {
|
|||||||
false, // enable commitMode
|
false, // enable commitMode
|
||||||
false, // enable exportCache
|
false, // enable exportCache
|
||||||
false, // enable exportOnly
|
false, // enable exportOnly
|
||||||
"caches/rcba_0.0.2-0.0.3_cache.json", // path to the cache
|
'caches/rcba_0.0.2-0.0.3_cache.json', // path to the cache
|
||||||
configuration
|
configuration
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -115,7 +115,7 @@ it('Should fill empty placeholders', async () => {
|
|||||||
false, // enable commitMode
|
false, // enable commitMode
|
||||||
false, // enable exportCache
|
false, // enable exportCache
|
||||||
false, // enable exportOnly
|
false, // enable exportOnly
|
||||||
"caches/rcba_0.0.2-0.0.3_cache.json", // path to the cache
|
'caches/rcba_0.0.2-0.0.3_cache.json', // path to the cache
|
||||||
configuration
|
configuration
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -146,7 +146,7 @@ it('Should fill `template` placeholders', async () => {
|
|||||||
false, // enable commitMode
|
false, // enable commitMode
|
||||||
false, // enable exportCache
|
false, // enable exportCache
|
||||||
false, // enable exportOnly
|
false, // enable exportOnly
|
||||||
"caches/rcba_0.0.1-0.0.3_cache.json", // path to the cache
|
'caches/rcba_0.0.1-0.0.3_cache.json', // path to the cache
|
||||||
configuration
|
configuration
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -178,7 +178,7 @@ it('Should fill `template` placeholders, ignore', async () => {
|
|||||||
false, // enable commitMode
|
false, // enable commitMode
|
||||||
false, // enable exportCache
|
false, // enable exportCache
|
||||||
false, // enable exportOnly
|
false, // enable exportOnly
|
||||||
"caches/rcba_0.9.1-0.9.5_cache.json", // path to the cache
|
'caches/rcba_0.9.1-0.9.5_cache.json', // path to the cache
|
||||||
configuration
|
configuration
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -209,7 +209,7 @@ it('Uncategorized category', async () => {
|
|||||||
false, // enable commitMode
|
false, // enable commitMode
|
||||||
false, // enable exportCache
|
false, // enable exportCache
|
||||||
false, // enable exportOnly
|
false, // enable exportOnly
|
||||||
"caches/rcba_0.9.1-0.9.5_cache.json", // path to the cache
|
'caches/rcba_0.9.1-0.9.5_cache.json', // path to the cache
|
||||||
configuration
|
configuration
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -240,7 +240,7 @@ it('Verify commit based changelog', async () => {
|
|||||||
true, // enable commitMode
|
true, // enable commitMode
|
||||||
false, // enable exportCache
|
false, // enable exportCache
|
||||||
false, // enable exportOnly
|
false, // enable exportOnly
|
||||||
"caches/rcba_0.0.1-0.0.3_commit_cache.json", // path to the cache
|
'caches/rcba_0.0.1-0.0.3_commit_cache.json', // path to the cache
|
||||||
configuration
|
configuration
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -271,7 +271,7 @@ it('Verify commit based changelog, with emoji categorisation', async () => {
|
|||||||
true, // enable commitMode
|
true, // enable commitMode
|
||||||
false, // enable exportCache
|
false, // enable exportCache
|
||||||
false, // enable exportOnly
|
false, // enable exportOnly
|
||||||
"caches/stackzy_bd3242-17a9e4_cache.json", // path to the cache
|
'caches/stackzy_bd3242-17a9e4_cache.json', // path to the cache
|
||||||
configuration
|
configuration
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -377,7 +377,7 @@ it('Verify reviewers who approved are fetched and also release information', asy
|
|||||||
|
|
||||||
it('Fetch release information', async () => {
|
it('Fetch release information', async () => {
|
||||||
const configuration = mergeConfiguration(undefined, resolveConfiguration('', 'configs_test/configuration_approvers.json'))
|
const configuration = mergeConfiguration(undefined, resolveConfiguration('', 'configs_test/configuration_approvers.json'))
|
||||||
configuration.template = '${{FROM_TAG}}-${{FROM_TAG_DATE}}\n${{TO_TAG}}-${{TO_TAG_DATE}}\n${{DAYS_SINCE}}'
|
configuration.template = '#{{FROM_TAG}}-#{{FROM_TAG_DATE}}\n#{{TO_TAG}}-#{{TO_TAG_DATE}}\n#{{DAYS_SINCE}}'
|
||||||
const releaseNotesBuilder = new ReleaseNotesBuilder(
|
const releaseNotesBuilder = new ReleaseNotesBuilder(
|
||||||
null, // baseUrl
|
null, // baseUrl
|
||||||
null, // token
|
null, // token
|
||||||
@@ -407,7 +407,7 @@ it('Fetch release information', async () => {
|
|||||||
|
|
||||||
it('Fetch release information for non existing tag / release', async () => {
|
it('Fetch release information for non existing tag / release', async () => {
|
||||||
const configuration = mergeConfiguration(undefined, resolveConfiguration('', 'configs_test/configuration_approvers.json'))
|
const configuration = mergeConfiguration(undefined, resolveConfiguration('', 'configs_test/configuration_approvers.json'))
|
||||||
configuration.template = '${{FROM_TAG}}-${{FROM_TAG_DATE}}\n${{TO_TAG}}-${{TO_TAG_DATE}}\n${{DAYS_SINCE}}'
|
configuration.template = '#{{FROM_TAG}}-#{{FROM_TAG_DATE}}\n#{{TO_TAG}}-#{{TO_TAG_DATE}}\n#{{DAYS_SINCE}}'
|
||||||
const releaseNotesBuilder = new ReleaseNotesBuilder(
|
const releaseNotesBuilder = new ReleaseNotesBuilder(
|
||||||
null, // baseUrl
|
null, // baseUrl
|
||||||
null, // token
|
null, // token
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import {Octokit} from '@octokit/rest'
|
|||||||
import {buildChangelog} from '../src/transform'
|
import {buildChangelog} from '../src/transform'
|
||||||
import {pullData} from '../src/pr-collector/prCollector'
|
import {pullData} from '../src/pr-collector/prCollector'
|
||||||
import fetch from 'node-fetch'
|
import fetch from 'node-fetch'
|
||||||
import { Data } from '../src/releaseNotesBuilder'
|
import {Data} from '../src/releaseNotesBuilder'
|
||||||
|
|
||||||
jest.setTimeout(180000)
|
jest.setTimeout(180000)
|
||||||
|
|
||||||
@@ -37,7 +37,7 @@ it('Should have empty changelog (tags)', async () => {
|
|||||||
if (enablePullData) {
|
if (enablePullData) {
|
||||||
data = await pullData(octokit, options)
|
data = await pullData(octokit, options)
|
||||||
} else {
|
} else {
|
||||||
data = checkExportedData(false, "caches/rcba_0.0.2-0.0.3_cache.json")
|
data = checkExportedData(false, 'caches/rcba_0.0.2-0.0.3_cache.json')
|
||||||
}
|
}
|
||||||
const changeLog = buildChangelog(data!.diffInfo, data!.mergedPullRequests, options)
|
const changeLog = buildChangelog(data!.diffInfo, data!.mergedPullRequests, options)
|
||||||
console.log(changeLog)
|
console.log(changeLog)
|
||||||
@@ -64,7 +64,7 @@ it('Should match generated changelog (tags)', async () => {
|
|||||||
if (enablePullData) {
|
if (enablePullData) {
|
||||||
data = await pullData(octokit, options)
|
data = await pullData(octokit, options)
|
||||||
} else {
|
} else {
|
||||||
data = checkExportedData(false, "caches/rcba_0.0.1-0.0.3_cache.json")
|
data = checkExportedData(false, 'caches/rcba_0.0.1-0.0.3_cache.json')
|
||||||
}
|
}
|
||||||
const changeLog = buildChangelog(data!.diffInfo, data!.mergedPullRequests, options)
|
const changeLog = buildChangelog(data!.diffInfo, data!.mergedPullRequests, options)
|
||||||
console.log(changeLog)
|
console.log(changeLog)
|
||||||
@@ -97,7 +97,7 @@ it('Should match generated changelog (refs)', async () => {
|
|||||||
if (enablePullData) {
|
if (enablePullData) {
|
||||||
data = await pullData(octokit, options)
|
data = await pullData(octokit, options)
|
||||||
} else {
|
} else {
|
||||||
data = checkExportedData(false, "caches/rcba_5ec7a2-fa3788_cache.json")
|
data = checkExportedData(false, 'caches/rcba_5ec7a2-fa3788_cache.json')
|
||||||
}
|
}
|
||||||
const changeLog = buildChangelog(data!.diffInfo, data!.mergedPullRequests, options)
|
const changeLog = buildChangelog(data!.diffInfo, data!.mergedPullRequests, options)
|
||||||
console.log(changeLog)
|
console.log(changeLog)
|
||||||
@@ -137,7 +137,7 @@ it('Should match generated changelog and replace all occurrences (refs)', async
|
|||||||
if (enablePullData) {
|
if (enablePullData) {
|
||||||
data = await pullData(octokit, options)
|
data = await pullData(octokit, options)
|
||||||
} else {
|
} else {
|
||||||
data = checkExportedData(false, "caches/rcba_5ec7a2-fa3788_cache.json")
|
data = checkExportedData(false, 'caches/rcba_5ec7a2-fa3788_cache.json')
|
||||||
}
|
}
|
||||||
const changeLog = buildChangelog(data!.diffInfo, data!.mergedPullRequests, options)
|
const changeLog = buildChangelog(data!.diffInfo, data!.mergedPullRequests, options)
|
||||||
console.log(changeLog)
|
console.log(changeLog)
|
||||||
@@ -180,7 +180,7 @@ it('Should match ordered ASC', async () => {
|
|||||||
if (enablePullData) {
|
if (enablePullData) {
|
||||||
data = await pullData(octokit, options)
|
data = await pullData(octokit, options)
|
||||||
} else {
|
} else {
|
||||||
data = checkExportedData(false, "caches/rcba_0.3.0-0.5.0_cache.json")
|
data = checkExportedData(false, 'caches/rcba_0.3.0-0.5.0_cache.json')
|
||||||
}
|
}
|
||||||
const changeLog = buildChangelog(data!.diffInfo, data!.mergedPullRequests, options)
|
const changeLog = buildChangelog(data!.diffInfo, data!.mergedPullRequests, options)
|
||||||
console.log(changeLog)
|
console.log(changeLog)
|
||||||
@@ -208,7 +208,7 @@ it('Should match ordered DESC', async () => {
|
|||||||
if (enablePullData) {
|
if (enablePullData) {
|
||||||
data = await pullData(octokit, options)
|
data = await pullData(octokit, options)
|
||||||
} else {
|
} else {
|
||||||
data = checkExportedData(false, "caches/rcba_0.3.0-0.5.0_cache.json")
|
data = checkExportedData(false, 'caches/rcba_0.3.0-0.5.0_cache.json')
|
||||||
}
|
}
|
||||||
const changeLog = buildChangelog(data!.diffInfo, data!.mergedPullRequests, options)
|
const changeLog = buildChangelog(data!.diffInfo, data!.mergedPullRequests, options)
|
||||||
console.log(changeLog)
|
console.log(changeLog)
|
||||||
@@ -235,7 +235,7 @@ it('Should match ordered by title ASC', async () => {
|
|||||||
if (enablePullData) {
|
if (enablePullData) {
|
||||||
data = await pullData(octokit, options)
|
data = await pullData(octokit, options)
|
||||||
} else {
|
} else {
|
||||||
data = checkExportedData(false, "caches/rcba_0.3.0-0.5.0_cache.json")
|
data = checkExportedData(false, 'caches/rcba_0.3.0-0.5.0_cache.json')
|
||||||
}
|
}
|
||||||
const changeLog = buildChangelog(data!.diffInfo, data!.mergedPullRequests, options)
|
const changeLog = buildChangelog(data!.diffInfo, data!.mergedPullRequests, options)
|
||||||
console.log(changeLog)
|
console.log(changeLog)
|
||||||
@@ -264,7 +264,7 @@ it('Should match ordered by title DESC', async () => {
|
|||||||
if (enablePullData) {
|
if (enablePullData) {
|
||||||
data = await pullData(octokit, options)
|
data = await pullData(octokit, options)
|
||||||
} else {
|
} else {
|
||||||
data = checkExportedData(false, "caches/rcba_0.3.0-0.5.0_cache.json")
|
data = checkExportedData(false, 'caches/rcba_0.3.0-0.5.0_cache.json')
|
||||||
}
|
}
|
||||||
const changeLog = buildChangelog(data!.diffInfo, data!.mergedPullRequests, options)
|
const changeLog = buildChangelog(data!.diffInfo, data!.mergedPullRequests, options)
|
||||||
console.log(changeLog)
|
console.log(changeLog)
|
||||||
@@ -293,7 +293,7 @@ it('Should ignore PRs not merged into develop branch', async () => {
|
|||||||
if (enablePullData) {
|
if (enablePullData) {
|
||||||
data = await pullData(octokit, options)
|
data = await pullData(octokit, options)
|
||||||
} else {
|
} else {
|
||||||
data = checkExportedData(false, "caches/rcba_1.3.1-1.4.0_base_develop_cache.json")
|
data = checkExportedData(false, 'caches/rcba_1.3.1-1.4.0_base_develop_cache.json')
|
||||||
}
|
}
|
||||||
const changeLog = buildChangelog(data!.diffInfo, data!.mergedPullRequests, options)
|
const changeLog = buildChangelog(data!.diffInfo, data!.mergedPullRequests, options)
|
||||||
console.log(changeLog)
|
console.log(changeLog)
|
||||||
@@ -320,7 +320,7 @@ it('Should ignore PRs not merged into main branch', async () => {
|
|||||||
if (enablePullData) {
|
if (enablePullData) {
|
||||||
data = await pullData(octokit, options)
|
data = await pullData(octokit, options)
|
||||||
} else {
|
} else {
|
||||||
data = checkExportedData(false, "caches/rcba_1.3.1-1.4.0_base_main_cache.json")
|
data = checkExportedData(false, 'caches/rcba_1.3.1-1.4.0_base_main_cache.json')
|
||||||
}
|
}
|
||||||
const changeLog = buildChangelog(data!.diffInfo, data!.mergedPullRequests, options)
|
const changeLog = buildChangelog(data!.diffInfo, data!.mergedPullRequests, options)
|
||||||
console.log(changeLog)
|
console.log(changeLog)
|
||||||
|
|||||||
@@ -409,7 +409,7 @@ it('Reference PRs', async () => {
|
|||||||
labels: []
|
labels: []
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
customConfig.pr_template = '${{NUMBER}} -- ${{REFERENCED[*].number}}'
|
customConfig.pr_template = '#{{NUMBER}} -- #{{REFERENCED[*].number}}'
|
||||||
customConfig.reference = {
|
customConfig.reference = {
|
||||||
pattern: '.* #(.).*', // matches the 1 from "abcdefg #1 adfasdf"
|
pattern: '.* #(.).*', // matches the 1 from "abcdefg #1 adfasdf"
|
||||||
on_property: 'body',
|
on_property: 'body',
|
||||||
@@ -440,7 +440,7 @@ it('Use empty_content for empty category', async () => {
|
|||||||
it('Commit SHA-1 in commitMode', async () => {
|
it('Commit SHA-1 in commitMode', async () => {
|
||||||
const customConfig = Object.assign({}, DefaultConfiguration)
|
const customConfig = Object.assign({}, DefaultConfiguration)
|
||||||
customConfig.sort = 'DESC'
|
customConfig.sort = 'DESC'
|
||||||
customConfig.pr_template = '${{MERGE_SHA}}'
|
customConfig.pr_template = '#{{MERGE_SHA}}'
|
||||||
|
|
||||||
const resultChangelog = buildChangelog(DefaultDiffInfo, pullRequestsWithLabels, {
|
const resultChangelog = buildChangelog(DefaultDiffInfo, pullRequestsWithLabels, {
|
||||||
owner: 'mikepenz',
|
owner: 'mikepenz',
|
||||||
@@ -461,7 +461,7 @@ it('Commit SHA-1 in commitMode', async () => {
|
|||||||
|
|
||||||
it('Release Diff', async () => {
|
it('Release Diff', async () => {
|
||||||
const customConfig = Object.assign({}, DefaultConfiguration)
|
const customConfig = Object.assign({}, DefaultConfiguration)
|
||||||
customConfig.template = '${{RELEASE_DIFF}}\n${{DAYS_SINCE}}'
|
customConfig.template = '#{{RELEASE_DIFF}}\n#{{DAYS_SINCE}}'
|
||||||
|
|
||||||
const resultChangelog = buildChangelog(DefaultDiffInfo, pullRequestsWithLabels, {
|
const resultChangelog = buildChangelog(DefaultDiffInfo, pullRequestsWithLabels, {
|
||||||
owner: 'mikepenz',
|
owner: 'mikepenz',
|
||||||
@@ -542,8 +542,8 @@ it('Extract custom placeholder from PR body and replace in global template', asy
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
customConfig.template =
|
customConfig.template =
|
||||||
'${{CHANGELOG}}\n\n${{C_PLACEHOLER_2[2]}}\n\n${{C_PLACEHOLER_2[*]}}${{C_PLACEHOLDER_1[7]}}${{C_PLACEHOLER_2[1493]}}${{C_PLACEHOLER_4[*]}}${{C_PLACEHOLER_4[0]}}${{C_PLACEHOLER_3[1]}}'
|
'#{{CHANGELOG}}\n\n#{{C_PLACEHOLER_2[2]}}\n\n#{{C_PLACEHOLER_2[*]}}#{{C_PLACEHOLDER_1[7]}}#{{C_PLACEHOLER_2[1493]}}#{{C_PLACEHOLER_4[*]}}#{{C_PLACEHOLER_4[0]}}#{{C_PLACEHOLER_3[1]}}'
|
||||||
customConfig.pr_template = '${{BODY}} ----> ${{C_PLACEHOLDER_1}}${{C_PLACEHOLER_3}}'
|
customConfig.pr_template = '#{{BODY}} ----> #{{C_PLACEHOLDER_1}}#{{C_PLACEHOLER_3}}'
|
||||||
|
|
||||||
expect(buildChangelogTest(customConfig, mergedPullRequests)).toStrictEqual(
|
expect(buildChangelogTest(customConfig, mergedPullRequests)).toStrictEqual(
|
||||||
`## 🚀 Features\n\nno magic body1 for this matter ----> - body1body1\nno magic body3 for this matter ----> - body3\n\n## 🐛 Fixes\n\nno magic body2 for this matter ----> - body2\nno magic body3 for this matter ----> - body3\n\n## 🧪 Others\n\nno magic body4 for this matter ----> - body4\n\n\n\n\n- ody3\n\n\n- ody1\n- ody2\n- ody3\n- ody4`
|
`## 🚀 Features\n\nno magic body1 for this matter ----> - body1body1\nno magic body3 for this matter ----> - body3\n\n## 🐛 Fixes\n\nno magic body2 for this matter ----> - body2\nno magic body3 for this matter ----> - body3\n\n## 🧪 Others\n\nno magic body4 for this matter ----> - body4\n\n\n\n\n- ody3\n\n\n- ody1\n- ody2\n- ody3\n- ody4`
|
||||||
|
|||||||
@@ -90,9 +90,9 @@
|
|||||||
"order": "ASC",
|
"order": "ASC",
|
||||||
"on_property": "mergedAt"
|
"on_property": "mergedAt"
|
||||||
},
|
},
|
||||||
"template": "${{CHANGELOG}}\n${{UNCATEGORIZED}}\n${{IGNORED}}\n${{OWNER}}\n${{REPO}}\n${{FROM_TAG}}\n${{TO_TAG}}\n${{RELEASE_DIFF}}\n${{CATEGORIZED_COUNT}}\n${{UNCATEGORIZED_COUNT}}\n${{IGNORED_COUNT}}\n${{CHANGED_FILES}}\n${{ADDITIONS}}\n${{DELETIONS}}\n${{CHANGES}}\n${{COMMITS}}",
|
"template": "#{{CHANGELOG}}\n#{{UNCATEGORIZED}}\n#{{IGNORED}}\n#{{OWNER}}\n#{{REPO}}\n#{{FROM_TAG}}\n#{{TO_TAG}}\n#{{RELEASE_DIFF}}\n#{{CATEGORIZED_COUNT}}\n#{{UNCATEGORIZED_COUNT}}\n#{{IGNORED_COUNT}}\n#{{CHANGED_FILES}}\n#{{ADDITIONS}}\n#{{DELETIONS}}\n#{{CHANGES}}\n#{{COMMITS}}",
|
||||||
"pr_template": "- ${{TITLE}}\n - PR: #${{NUMBER}}",
|
"pr_template": "- #{{TITLE}}\n - PR: ##{{NUMBER}}",
|
||||||
"empty_template": "${{OWNER}}\n${{REPO}}\n${{FROM_TAG}}\n${{TO_TAG}}\n${{RELEASE_DIFF}}",
|
"empty_template": "#{{OWNER}}\n#{{REPO}}\n#{{FROM_TAG}}\n#{{TO_TAG}}\n#{{RELEASE_DIFF}}",
|
||||||
"categories": [
|
"categories": [
|
||||||
{
|
{
|
||||||
"title": "## 🚀 Features",
|
"title": "## 🚀 Features",
|
||||||
|
|||||||
@@ -117,9 +117,9 @@
|
|||||||
"order": "ASC",
|
"order": "ASC",
|
||||||
"on_property": "mergedAt"
|
"on_property": "mergedAt"
|
||||||
},
|
},
|
||||||
"template": "${{CHANGELOG}}\n\nUncategorized:\n${{UNCATEGORIZED}}\n\nIgnored:\n${{IGNORED}}\n\n${{UNCATEGORIZED_COUNT}}\n${{IGNORED_COUNT}}",
|
"template": "#{{CHANGELOG}}\n\nUncategorized:\n#{{UNCATEGORIZED}}\n\nIgnored:\n#{{IGNORED}}\n\n#{{UNCATEGORIZED_COUNT}}\n#{{IGNORED_COUNT}}",
|
||||||
"pr_template": "- ${{TITLE}}\n",
|
"pr_template": "- #{{TITLE}}\n",
|
||||||
"empty_template": "${{OWNER}}\n${{REPO}}\n${{FROM_TAG}}\n${{TO_TAG}}",
|
"empty_template": "#{{OWNER}}\n#{{REPO}}\n#{{FROM_TAG}}\n#{{TO_TAG}}",
|
||||||
"categories": [
|
"categories": [
|
||||||
{
|
{
|
||||||
"title": "## 📦 Uncategorized",
|
"title": "## 📦 Uncategorized",
|
||||||
|
|||||||
@@ -31,8 +31,8 @@
|
|||||||
"max_back_track_time_days": 1000,
|
"max_back_track_time_days": 1000,
|
||||||
"exclude_merge_branches": [],
|
"exclude_merge_branches": [],
|
||||||
"sort": "ASC",
|
"sort": "ASC",
|
||||||
"template": "${{CHANGELOG}}",
|
"template": "#{{CHANGELOG}}",
|
||||||
"pr_template": "- ${{TITLE}}\n - PR: #${{NUMBER}}",
|
"pr_template": "- #{{TITLE}}\n - PR: ##{{NUMBER}}",
|
||||||
"empty_template": "- no changes",
|
"empty_template": "- no changes",
|
||||||
"categories": [
|
"categories": [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -579,8 +579,8 @@
|
|||||||
"max_back_track_time_days": 1000,
|
"max_back_track_time_days": 1000,
|
||||||
"exclude_merge_branches": [],
|
"exclude_merge_branches": [],
|
||||||
"sort": "ASC",
|
"sort": "ASC",
|
||||||
"template": "${{CHANGELOG}}",
|
"template": "#{{CHANGELOG}}",
|
||||||
"pr_template": "- ${{TITLE}}\n - PR: #${{NUMBER}}",
|
"pr_template": "- #{{TITLE}}\n - PR: ##{{NUMBER}}",
|
||||||
"empty_template": "- no changes",
|
"empty_template": "- no changes",
|
||||||
"categories": [
|
"categories": [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -443,9 +443,9 @@
|
|||||||
"order": "ASC",
|
"order": "ASC",
|
||||||
"on_property": "mergedAt"
|
"on_property": "mergedAt"
|
||||||
},
|
},
|
||||||
"template": "${{CHANGELOG}}\n${{UNCATEGORIZED}}\n${{IGNORED}}\n${{OWNER}}\n${{REPO}}\n${{FROM_TAG}}\n${{TO_TAG}}\n${{RELEASE_DIFF}}\n${{CATEGORIZED_COUNT}}\n${{UNCATEGORIZED_COUNT}}\n${{IGNORED_COUNT}}\n${{CHANGED_FILES}}\n${{ADDITIONS}}\n${{DELETIONS}}\n${{CHANGES}}\n${{COMMITS}}",
|
"template": "#{{CHANGELOG}}\n#{{UNCATEGORIZED}}\n#{{IGNORED}}\n#{{OWNER}}\n#{{REPO}}\n#{{FROM_TAG}}\n#{{TO_TAG}}\n#{{RELEASE_DIFF}}\n#{{CATEGORIZED_COUNT}}\n#{{UNCATEGORIZED_COUNT}}\n#{{IGNORED_COUNT}}\n#{{CHANGED_FILES}}\n#{{ADDITIONS}}\n#{{DELETIONS}}\n#{{CHANGES}}\n#{{COMMITS}}",
|
||||||
"pr_template": "- ${{TITLE}}\n - PR: #${{NUMBER}}",
|
"pr_template": "- #{{TITLE}}\n - PR: ##{{NUMBER}}",
|
||||||
"empty_template": "${{OWNER}}\n${{REPO}}\n${{FROM_TAG}}\n${{TO_TAG}}\n${{RELEASE_DIFF}}",
|
"empty_template": "#{{OWNER}}\n#{{REPO}}\n#{{FROM_TAG}}\n#{{TO_TAG}}\n#{{RELEASE_DIFF}}",
|
||||||
"categories": [
|
"categories": [
|
||||||
{
|
{
|
||||||
"title": "## 🚀 Features",
|
"title": "## 🚀 Features",
|
||||||
|
|||||||
@@ -171,8 +171,8 @@
|
|||||||
"max_back_track_time_days": 1000,
|
"max_back_track_time_days": 1000,
|
||||||
"exclude_merge_branches": [],
|
"exclude_merge_branches": [],
|
||||||
"sort": "DESC",
|
"sort": "DESC",
|
||||||
"template": "${{CHANGELOG}}",
|
"template": "#{{CHANGELOG}}",
|
||||||
"pr_template": "${{NUMBER}}",
|
"pr_template": "#{{NUMBER}}",
|
||||||
"empty_template": "- no changes",
|
"empty_template": "- no changes",
|
||||||
"categories": [
|
"categories": [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -127,8 +127,8 @@
|
|||||||
"max_back_track_time_days": 1000,
|
"max_back_track_time_days": 1000,
|
||||||
"exclude_merge_branches": [],
|
"exclude_merge_branches": [],
|
||||||
"sort": "DESC",
|
"sort": "DESC",
|
||||||
"template": "${{CHANGELOG}}",
|
"template": "#{{CHANGELOG}}",
|
||||||
"pr_template": "${{NUMBER}}",
|
"pr_template": "#{{NUMBER}}",
|
||||||
"empty_template": "- no changes",
|
"empty_template": "- no changes",
|
||||||
"categories": [
|
"categories": [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -87,8 +87,8 @@
|
|||||||
"max_back_track_time_days": 1000,
|
"max_back_track_time_days": 1000,
|
||||||
"exclude_merge_branches": [],
|
"exclude_merge_branches": [],
|
||||||
"sort": "ASC",
|
"sort": "ASC",
|
||||||
"template": "${{CHANGELOG}}",
|
"template": "#{{CHANGELOG}}",
|
||||||
"pr_template": "- ${{TITLE}}\n - PR: #${{NUMBER}}",
|
"pr_template": "- #{{TITLE}}\n - PR: ##{{NUMBER}}",
|
||||||
"empty_template": "- no changes",
|
"empty_template": "- no changes",
|
||||||
"categories": [
|
"categories": [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -468,8 +468,8 @@
|
|||||||
"order": "ASC",
|
"order": "ASC",
|
||||||
"on_property": "mergedAt"
|
"on_property": "mergedAt"
|
||||||
},
|
},
|
||||||
"template": "${{CHANGELOG}}",
|
"template": "#{{CHANGELOG}}",
|
||||||
"pr_template": "${{TITLE}}",
|
"pr_template": "#{{TITLE}}",
|
||||||
"empty_template": "- no changes",
|
"empty_template": "- no changes",
|
||||||
"categories": [
|
"categories": [
|
||||||
{
|
{
|
||||||
|
|||||||
+9
-9
@@ -18,8 +18,8 @@ exports.DefaultConfiguration = {
|
|||||||
order: 'ASC',
|
order: 'ASC',
|
||||||
on_property: 'mergedAt' // the property to sort on. (mergedAt falls back to createdAt)
|
on_property: 'mergedAt' // the property to sort on. (mergedAt falls back to createdAt)
|
||||||
},
|
},
|
||||||
template: '${{CHANGELOG}}',
|
template: '#{{CHANGELOG}}',
|
||||||
pr_template: '- ${{TITLE}}\n - PR: #${{NUMBER}}',
|
pr_template: '- #{{TITLE}}\n - PR: ##{{NUMBER}}',
|
||||||
empty_template: '- no changes',
|
empty_template: '- no changes',
|
||||||
categories: [
|
categories: [
|
||||||
{
|
{
|
||||||
@@ -2380,7 +2380,7 @@ function replacePlaceholders(template, arrayPlaceholderMap /* arrayPlaceholderKe
|
|||||||
return transformed;
|
return transformed;
|
||||||
}
|
}
|
||||||
function handlePlaceholder(template, key, value, placeholders /* placeholders to apply */, placeholderPrMap /* map to keep replaced placeholder values with their key */, configuration) {
|
function handlePlaceholder(template, key, value, placeholders /* placeholders to apply */, placeholderPrMap /* map to keep replaced placeholder values with their key */, configuration) {
|
||||||
let transformed = template.replaceAll(`\${{${key}}}`, configuration.trim_values ? value.trim() : value);
|
let transformed = template.replaceAll(`#{{${key}}}`, configuration.trim_values ? value.trim() : value);
|
||||||
// replace custom placeholders
|
// replace custom placeholders
|
||||||
const phs = placeholders.get(key);
|
const phs = placeholders.get(key);
|
||||||
if (phs) {
|
if (phs) {
|
||||||
@@ -2393,7 +2393,7 @@ function handlePlaceholder(template, key, value, placeholders /* placeholders to
|
|||||||
if (placeholderPrMap) {
|
if (placeholderPrMap) {
|
||||||
(0, utils_1.createOrSet)(placeholderPrMap, placeholder.name, extractedValue);
|
(0, utils_1.createOrSet)(placeholderPrMap, placeholder.name, extractedValue);
|
||||||
}
|
}
|
||||||
transformed = transformed.replaceAll(`\${{${placeholder.name}}}`, configuration.trim_values ? extractedValue.trim() : extractedValue);
|
transformed = transformed.replaceAll(`#{{${placeholder.name}}}`, configuration.trim_values ? extractedValue.trim() : extractedValue);
|
||||||
if (core.isDebug()) {
|
if (core.isDebug()) {
|
||||||
core.debug(` Custom Placeholder successfully matched data - ${extractValues} (${placeholder.name})`);
|
core.debug(` Custom Placeholder successfully matched data - ${extractValues} (${placeholder.name})`);
|
||||||
}
|
}
|
||||||
@@ -2442,9 +2442,9 @@ function replacePrPlaceholders(template, placeholderPrMap /* map with all pr rel
|
|||||||
let transformed = template;
|
let transformed = template;
|
||||||
for (const [key, values] of placeholderPrMap) {
|
for (const [key, values] of placeholderPrMap) {
|
||||||
for (let i = 0; i < values.length; i++) {
|
for (let i = 0; i < values.length; i++) {
|
||||||
transformed = transformed.replaceAll(`\${{${key}[${i}]}}`, configuration.trim_values ? values[i].trim() : values[i]);
|
transformed = transformed.replaceAll(`#{{${key}[${i}]}}`, configuration.trim_values ? values[i].trim() : values[i]);
|
||||||
}
|
}
|
||||||
transformed = transformed.replaceAll(`\${{${key}[*]}}`, values.join(''));
|
transformed = transformed.replaceAll(`#{{${key}[*]}}`, values.join(''));
|
||||||
}
|
}
|
||||||
return transformed;
|
return transformed;
|
||||||
}
|
}
|
||||||
@@ -2452,7 +2452,7 @@ function cleanupPrPlaceholders(template, placeholders) {
|
|||||||
let transformed = template;
|
let transformed = template;
|
||||||
for (const [, phs] of placeholders) {
|
for (const [, phs] of placeholders) {
|
||||||
for (const ph of phs) {
|
for (const ph of phs) {
|
||||||
transformed = transformed.replaceAll(new RegExp(`\\$\\{\\{${ph.name}(?:\\[.+?\\])?\\}\\}`, 'gu'), '');
|
transformed = transformed.replaceAll(new RegExp(`#\\{\\{${ph.name}(?:\\[.+?\\])?\\}\\}`, 'gu'), '');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return transformed;
|
return transformed;
|
||||||
@@ -2460,7 +2460,7 @@ function cleanupPrPlaceholders(template, placeholders) {
|
|||||||
function cleanupPlaceholders(template) {
|
function cleanupPlaceholders(template) {
|
||||||
let transformed = template;
|
let transformed = template;
|
||||||
for (const phs of ['REVIEWS', 'REFERENCED', 'ASSIGNEES', 'REVIEWERS', 'APPROVERS']) {
|
for (const phs of ['REVIEWS', 'REFERENCED', 'ASSIGNEES', 'REVIEWERS', 'APPROVERS']) {
|
||||||
transformed = transformed.replaceAll(new RegExp(`\\$\\{\\{${phs}\\[.+?\\]\\..*?\\}\\}`, 'gu'), '');
|
transformed = transformed.replaceAll(new RegExp(`#\\{\\{${phs}\\[.+?\\]\\..*?\\}\\}`, 'gu'), '');
|
||||||
}
|
}
|
||||||
return transformed;
|
return transformed;
|
||||||
}
|
}
|
||||||
@@ -2717,7 +2717,7 @@ function readConfiguration(filename) {
|
|||||||
function parseConfiguration(config) {
|
function parseConfiguration(config) {
|
||||||
try {
|
try {
|
||||||
// for compatiblity with the `yml` file we require to use `#{{}}` instead of `${{}}` - replace it here.
|
// for compatiblity with the `yml` file we require to use `#{{}}` instead of `${{}}` - replace it here.
|
||||||
const configurationJSON = JSON.parse(config.replace(/#{{/g, '${{'));
|
const configurationJSON = JSON.parse(config.replace(/\${{/g, '#{{'));
|
||||||
return configurationJSON;
|
return configurationJSON;
|
||||||
}
|
}
|
||||||
catch (error) {
|
catch (error) {
|
||||||
|
|||||||
+1
-1
File diff suppressed because one or more lines are too long
Generated
+139
-123
@@ -20,20 +20,20 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/jest": "^29.5.4",
|
"@types/jest": "^29.5.4",
|
||||||
"@types/node": "^20.5.6",
|
"@types/node": "^20.5.7",
|
||||||
"@types/node-fetch": "^2.6.4",
|
"@types/node-fetch": "^2.6.4",
|
||||||
"@types/semver": "^7.5.0",
|
"@types/semver": "^7.5.1",
|
||||||
"@typescript-eslint/eslint-plugin": "^6.4.1",
|
"@typescript-eslint/eslint-plugin": "^6.5.0",
|
||||||
"@typescript-eslint/parser": "^6.4.1",
|
"@typescript-eslint/parser": "^6.5.0",
|
||||||
"@vercel/ncc": "^0.36.1",
|
"@vercel/ncc": "^0.36.1",
|
||||||
"eslint": "^8.47.0",
|
"eslint": "^8.48.0",
|
||||||
"eslint-plugin-github": "^4.9.2",
|
"eslint-plugin-github": "^4.10.0",
|
||||||
"eslint-plugin-jest": "^27.2.3",
|
"eslint-plugin-jest": "^27.2.3",
|
||||||
"eslint-plugin-prettier": "^5.0.0",
|
"eslint-plugin-prettier": "^5.0.0",
|
||||||
"jest": "^29.6.4",
|
"jest": "^29.6.4",
|
||||||
"jest-circus": "^29.6.4",
|
"jest-circus": "^29.6.4",
|
||||||
"js-yaml": "^4.1.0",
|
"js-yaml": "^4.1.0",
|
||||||
"prettier": "3.0.2",
|
"prettier": "3.0.3",
|
||||||
"ts-jest": "^29.1.1",
|
"ts-jest": "^29.1.1",
|
||||||
"typescript": "^5.2.2"
|
"typescript": "^5.2.2"
|
||||||
}
|
}
|
||||||
@@ -102,12 +102,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/code-frame": {
|
"node_modules/@babel/code-frame": {
|
||||||
"version": "7.22.10",
|
"version": "7.22.13",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.10.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz",
|
||||||
"integrity": "sha512-/KKIMG4UEL35WmI9OlvMhurwtytjvXoFcGNrOvyG9zIzA8YmPjVtIZUf7b05+TPO7G7/GEmLHDaoCgACHl9hhA==",
|
"integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/highlight": "^7.22.10",
|
"@babel/highlight": "^7.22.13",
|
||||||
"chalk": "^2.4.2"
|
"chalk": "^2.4.2"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@@ -419,9 +419,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/highlight": {
|
"node_modules/@babel/highlight": {
|
||||||
"version": "7.22.10",
|
"version": "7.22.13",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.10.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.13.tgz",
|
||||||
"integrity": "sha512-78aUtVcT7MUscr0K5mIEnkwxPE0MaxkR5RxRwuHaQ+JuU5AmTPhY+do2mdzVTnIJJpyBglql2pehuBIWHug+WQ==",
|
"integrity": "sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-validator-identifier": "^7.22.5",
|
"@babel/helper-validator-identifier": "^7.22.5",
|
||||||
@@ -504,9 +504,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/parser": {
|
"node_modules/@babel/parser": {
|
||||||
"version": "7.22.11",
|
"version": "7.22.14",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.11.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.14.tgz",
|
||||||
"integrity": "sha512-R5zb8eJIBPJriQtbH/htEQy4k7E2dHWlD2Y2VT07JCzwYZHBxV5ZYtM0UhXSNMT74LyxuM+b1jdL7pSesXbC/g==",
|
"integrity": "sha512-1KucTHgOvaw/LzCVrEOAyXkr9rQlp0A1HiHRYnSUE9dmb8PvPW7o5sscg+5169r54n3vGlbx6GevTE/Iw/P3AQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"bin": {
|
"bin": {
|
||||||
"parser": "bin/babel-parser.js"
|
"parser": "bin/babel-parser.js"
|
||||||
@@ -816,9 +816,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@eslint/js": {
|
"node_modules/@eslint/js": {
|
||||||
"version": "8.47.0",
|
"version": "8.48.0",
|
||||||
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.47.0.tgz",
|
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.48.0.tgz",
|
||||||
"integrity": "sha512-P6omY1zv5MItm93kLM8s2vr1HICJH8v0dvddDhysbIuZ+vcjOHg5Zbkf1mTkcmi2JA9oBG2anOkRnW8WJTS8Og==",
|
"integrity": "sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||||
@@ -831,9 +831,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@humanwhocodes/config-array": {
|
"node_modules/@humanwhocodes/config-array": {
|
||||||
"version": "0.11.10",
|
"version": "0.11.11",
|
||||||
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz",
|
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz",
|
||||||
"integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==",
|
"integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@humanwhocodes/object-schema": "^1.2.1",
|
"@humanwhocodes/object-schema": "^1.2.1",
|
||||||
@@ -1719,9 +1719,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@types/node": {
|
"node_modules/@types/node": {
|
||||||
"version": "20.5.6",
|
"version": "20.5.7",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.6.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.7.tgz",
|
||||||
"integrity": "sha512-Gi5wRGPbbyOTX+4Y2iULQ27oUPrefaB0PxGQJnfyWN3kvEDGM3mIB5M/gQLmitZf7A9FmLeaqxD3L1CXpm3VKQ==",
|
"integrity": "sha512-dP7f3LdZIysZnmvP3ANJYTSwg+wLLl8p7RqniVlV7j+oXSXAbt9h0WIBFmJy5inWZoX9wZN6eXx+YXd9Rh3RBA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@types/node-fetch": {
|
"node_modules/@types/node-fetch": {
|
||||||
@@ -1735,9 +1735,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@types/semver": {
|
"node_modules/@types/semver": {
|
||||||
"version": "7.5.0",
|
"version": "7.5.1",
|
||||||
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.1.tgz",
|
||||||
"integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==",
|
"integrity": "sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@types/stack-utils": {
|
"node_modules/@types/stack-utils": {
|
||||||
@@ -1762,16 +1762,16 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/eslint-plugin": {
|
"node_modules/@typescript-eslint/eslint-plugin": {
|
||||||
"version": "6.4.1",
|
"version": "6.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.5.0.tgz",
|
||||||
"integrity": "sha512-3F5PtBzUW0dYlq77Lcqo13fv+58KDwUib3BddilE8ajPJT+faGgxmI9Sw+I8ZS22BYwoir9ZhNXcLi+S+I2bkw==",
|
"integrity": "sha512-2pktILyjvMaScU6iK3925uvGU87E+N9rh372uGZgiMYwafaw9SXq86U04XPq3UH6tzRvNgBsub6x2DacHc33lw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@eslint-community/regexpp": "^4.5.1",
|
"@eslint-community/regexpp": "^4.5.1",
|
||||||
"@typescript-eslint/scope-manager": "6.4.1",
|
"@typescript-eslint/scope-manager": "6.5.0",
|
||||||
"@typescript-eslint/type-utils": "6.4.1",
|
"@typescript-eslint/type-utils": "6.5.0",
|
||||||
"@typescript-eslint/utils": "6.4.1",
|
"@typescript-eslint/utils": "6.5.0",
|
||||||
"@typescript-eslint/visitor-keys": "6.4.1",
|
"@typescript-eslint/visitor-keys": "6.5.0",
|
||||||
"debug": "^4.3.4",
|
"debug": "^4.3.4",
|
||||||
"graphemer": "^1.4.0",
|
"graphemer": "^1.4.0",
|
||||||
"ignore": "^5.2.4",
|
"ignore": "^5.2.4",
|
||||||
@@ -1797,15 +1797,15 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/parser": {
|
"node_modules/@typescript-eslint/parser": {
|
||||||
"version": "6.4.1",
|
"version": "6.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.5.0.tgz",
|
||||||
"integrity": "sha512-610G6KHymg9V7EqOaNBMtD1GgpAmGROsmfHJPXNLCU9bfIuLrkdOygltK784F6Crboyd5tBFayPB7Sf0McrQwg==",
|
"integrity": "sha512-LMAVtR5GN8nY0G0BadkG0XIe4AcNMeyEy3DyhKGAh9k4pLSMBO7rF29JvDBpZGCmp5Pgz5RLHP6eCpSYZJQDuQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/scope-manager": "6.4.1",
|
"@typescript-eslint/scope-manager": "6.5.0",
|
||||||
"@typescript-eslint/types": "6.4.1",
|
"@typescript-eslint/types": "6.5.0",
|
||||||
"@typescript-eslint/typescript-estree": "6.4.1",
|
"@typescript-eslint/typescript-estree": "6.5.0",
|
||||||
"@typescript-eslint/visitor-keys": "6.4.1",
|
"@typescript-eslint/visitor-keys": "6.5.0",
|
||||||
"debug": "^4.3.4"
|
"debug": "^4.3.4"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@@ -1825,13 +1825,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/scope-manager": {
|
"node_modules/@typescript-eslint/scope-manager": {
|
||||||
"version": "6.4.1",
|
"version": "6.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.5.0.tgz",
|
||||||
"integrity": "sha512-p/OavqOQfm4/Hdrr7kvacOSFjwQ2rrDVJRPxt/o0TOWdFnjJptnjnZ+sYDR7fi4OimvIuKp+2LCkc+rt9fIW+A==",
|
"integrity": "sha512-A8hZ7OlxURricpycp5kdPTH3XnjG85UpJS6Fn4VzeoH4T388gQJ/PGP4ole5NfKt4WDVhmLaQ/dBLNDC4Xl/Kw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/types": "6.4.1",
|
"@typescript-eslint/types": "6.5.0",
|
||||||
"@typescript-eslint/visitor-keys": "6.4.1"
|
"@typescript-eslint/visitor-keys": "6.5.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^16.0.0 || >=18.0.0"
|
"node": "^16.0.0 || >=18.0.0"
|
||||||
@@ -1842,13 +1842,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/type-utils": {
|
"node_modules/@typescript-eslint/type-utils": {
|
||||||
"version": "6.4.1",
|
"version": "6.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.5.0.tgz",
|
||||||
"integrity": "sha512-7ON8M8NXh73SGZ5XvIqWHjgX2f+vvaOarNliGhjrJnv1vdjG0LVIz+ToYfPirOoBi56jxAKLfsLm40+RvxVVXA==",
|
"integrity": "sha512-f7OcZOkRivtujIBQ4yrJNIuwyCQO1OjocVqntl9dgSIZAdKqicj3xFDqDOzHDlGCZX990LqhLQXWRnQvsapq8A==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/typescript-estree": "6.4.1",
|
"@typescript-eslint/typescript-estree": "6.5.0",
|
||||||
"@typescript-eslint/utils": "6.4.1",
|
"@typescript-eslint/utils": "6.5.0",
|
||||||
"debug": "^4.3.4",
|
"debug": "^4.3.4",
|
||||||
"ts-api-utils": "^1.0.1"
|
"ts-api-utils": "^1.0.1"
|
||||||
},
|
},
|
||||||
@@ -1869,9 +1869,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/types": {
|
"node_modules/@typescript-eslint/types": {
|
||||||
"version": "6.4.1",
|
"version": "6.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.5.0.tgz",
|
||||||
"integrity": "sha512-zAAopbNuYu++ijY1GV2ylCsQsi3B8QvfPHVqhGdDcbx/NK5lkqMnCGU53amAjccSpk+LfeONxwzUhDzArSfZJg==",
|
"integrity": "sha512-eqLLOEF5/lU8jW3Bw+8auf4lZSbbljHR2saKnYqON12G/WsJrGeeDHWuQePoEf9ro22+JkbPfWQwKEC5WwLQ3w==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^16.0.0 || >=18.0.0"
|
"node": "^16.0.0 || >=18.0.0"
|
||||||
@@ -1882,13 +1882,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/typescript-estree": {
|
"node_modules/@typescript-eslint/typescript-estree": {
|
||||||
"version": "6.4.1",
|
"version": "6.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.5.0.tgz",
|
||||||
"integrity": "sha512-xF6Y7SatVE/OyV93h1xGgfOkHr2iXuo8ip0gbfzaKeGGuKiAnzS+HtVhSPx8Www243bwlW8IF7X0/B62SzFftg==",
|
"integrity": "sha512-q0rGwSe9e5Kk/XzliB9h2LBc9tmXX25G0833r7kffbl5437FPWb2tbpIV9wAATebC/018pGa9fwPDuvGN+LxWQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/types": "6.4.1",
|
"@typescript-eslint/types": "6.5.0",
|
||||||
"@typescript-eslint/visitor-keys": "6.4.1",
|
"@typescript-eslint/visitor-keys": "6.5.0",
|
||||||
"debug": "^4.3.4",
|
"debug": "^4.3.4",
|
||||||
"globby": "^11.1.0",
|
"globby": "^11.1.0",
|
||||||
"is-glob": "^4.0.3",
|
"is-glob": "^4.0.3",
|
||||||
@@ -1909,17 +1909,17 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/utils": {
|
"node_modules/@typescript-eslint/utils": {
|
||||||
"version": "6.4.1",
|
"version": "6.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.5.0.tgz",
|
||||||
"integrity": "sha512-F/6r2RieNeorU0zhqZNv89s9bDZSovv3bZQpUNOmmQK1L80/cV4KEu95YUJWi75u5PhboFoKUJBnZ4FQcoqhDw==",
|
"integrity": "sha512-9nqtjkNykFzeVtt9Pj6lyR9WEdd8npPhhIPM992FWVkZuS6tmxHfGVnlUcjpUP2hv8r4w35nT33mlxd+Be1ACQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@eslint-community/eslint-utils": "^4.4.0",
|
"@eslint-community/eslint-utils": "^4.4.0",
|
||||||
"@types/json-schema": "^7.0.12",
|
"@types/json-schema": "^7.0.12",
|
||||||
"@types/semver": "^7.5.0",
|
"@types/semver": "^7.5.0",
|
||||||
"@typescript-eslint/scope-manager": "6.4.1",
|
"@typescript-eslint/scope-manager": "6.5.0",
|
||||||
"@typescript-eslint/types": "6.4.1",
|
"@typescript-eslint/types": "6.5.0",
|
||||||
"@typescript-eslint/typescript-estree": "6.4.1",
|
"@typescript-eslint/typescript-estree": "6.5.0",
|
||||||
"semver": "^7.5.4"
|
"semver": "^7.5.4"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@@ -1934,12 +1934,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/visitor-keys": {
|
"node_modules/@typescript-eslint/visitor-keys": {
|
||||||
"version": "6.4.1",
|
"version": "6.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.5.0.tgz",
|
||||||
"integrity": "sha512-y/TyRJsbZPkJIZQXrHfdnxVnxyKegnpEvnRGNam7s3TRR2ykGefEWOhaef00/UUN3IZxizS7BTO3svd3lCOJRQ==",
|
"integrity": "sha512-yCB/2wkbv3hPsh02ZS8dFQnij9VVQXJMN/gbQsaaY+zxALkZnxa/wagvLEFsAWMPv7d7lxQmNsIzGU1w/T/WyA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/types": "6.4.1",
|
"@typescript-eslint/types": "6.5.0",
|
||||||
"eslint-visitor-keys": "^3.4.1"
|
"eslint-visitor-keys": "^3.4.1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@@ -2128,16 +2128,16 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/array.prototype.findlastindex": {
|
"node_modules/array.prototype.findlastindex": {
|
||||||
"version": "1.2.2",
|
"version": "1.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz",
|
||||||
"integrity": "sha512-tb5thFFlUcp7NdNF6/MpDk/1r/4awWG1FIz3YqDf+/zJSTezBb+/5WViH41obXULHVpDzoiCLpJ/ZO9YbJMsdw==",
|
"integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"call-bind": "^1.0.2",
|
"call-bind": "^1.0.2",
|
||||||
"define-properties": "^1.1.4",
|
"define-properties": "^1.2.0",
|
||||||
"es-abstract": "^1.20.4",
|
"es-abstract": "^1.22.1",
|
||||||
"es-shim-unscopables": "^1.0.0",
|
"es-shim-unscopables": "^1.0.0",
|
||||||
"get-intrinsic": "^1.1.3"
|
"get-intrinsic": "^1.2.1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.4"
|
"node": ">= 0.4"
|
||||||
@@ -2520,9 +2520,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/caniuse-lite": {
|
"node_modules/caniuse-lite": {
|
||||||
"version": "1.0.30001523",
|
"version": "1.0.30001525",
|
||||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001523.tgz",
|
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001525.tgz",
|
||||||
"integrity": "sha512-I5q5cisATTPZ1mc588Z//pj/Ox80ERYDfR71YnvY7raS/NOk8xXlZcB0sF7JdqaV//kOaa6aus7lRfpdnt1eBA==",
|
"integrity": "sha512-/3z+wB4icFt3r0USMwxujAqRvaD/B7rvGTsKhbhSQErVrJvkZCLhgNLJxU8MevahQVH6hCU9FsHdNUFbiwmE7Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -2960,9 +2960,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/electron-to-chromium": {
|
"node_modules/electron-to-chromium": {
|
||||||
"version": "1.4.502",
|
"version": "1.4.508",
|
||||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.502.tgz",
|
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.508.tgz",
|
||||||
"integrity": "sha512-xqeGw3Gr6o3uyHy/yKjdnDQHY2RQvXcGC2cfHjccK1IGkH6cX1WQBN8EeC/YpwPhGkBaikDTecJ8+ssxSVRQlw==",
|
"integrity": "sha512-FFa8QKjQK/A5QuFr2167myhMesGrhlOBD+3cYNxO9/S4XzHEXesyTD/1/xF644gC8buFPz3ca6G1LOQD0tZrrg==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/emittery": {
|
"node_modules/emittery": {
|
||||||
@@ -3107,15 +3107,15 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/eslint": {
|
"node_modules/eslint": {
|
||||||
"version": "8.47.0",
|
"version": "8.48.0",
|
||||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.47.0.tgz",
|
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.48.0.tgz",
|
||||||
"integrity": "sha512-spUQWrdPt+pRVP1TTJLmfRNJJHHZryFmptzcafwSvHsceV81djHOdnEeDmkdotZyLNjDhrOasNK8nikkoG1O8Q==",
|
"integrity": "sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@eslint-community/eslint-utils": "^4.2.0",
|
"@eslint-community/eslint-utils": "^4.2.0",
|
||||||
"@eslint-community/regexpp": "^4.6.1",
|
"@eslint-community/regexpp": "^4.6.1",
|
||||||
"@eslint/eslintrc": "^2.1.2",
|
"@eslint/eslintrc": "^2.1.2",
|
||||||
"@eslint/js": "^8.47.0",
|
"@eslint/js": "8.48.0",
|
||||||
"@humanwhocodes/config-array": "^0.11.10",
|
"@humanwhocodes/config-array": "^0.11.10",
|
||||||
"@humanwhocodes/module-importer": "^1.0.1",
|
"@humanwhocodes/module-importer": "^1.0.1",
|
||||||
"@nodelib/fs.walk": "^1.2.8",
|
"@nodelib/fs.walk": "^1.2.8",
|
||||||
@@ -3274,9 +3274,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/eslint-plugin-github": {
|
"node_modules/eslint-plugin-github": {
|
||||||
"version": "4.9.2",
|
"version": "4.10.0",
|
||||||
"resolved": "https://registry.npmjs.org/eslint-plugin-github/-/eslint-plugin-github-4.9.2.tgz",
|
"resolved": "https://registry.npmjs.org/eslint-plugin-github/-/eslint-plugin-github-4.10.0.tgz",
|
||||||
"integrity": "sha512-osez6Sio/fLr/3QkW5HE1wbCOcmYG5030/6QIa9IcKyyfchewlecdnYcsbeUMUtdIiU9lWqhroQp2H/O7auxBA==",
|
"integrity": "sha512-YKtqBtFbjih1wZNTwZjtLPEG6B/4ySMa38fgOo/rbMJpNKO3+OaKzwwOYkeKx/FapM/4MsTP9ExqUcDV+dkixA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@github/browserslist-config": "^1.0.0",
|
"@github/browserslist-config": "^1.0.0",
|
||||||
@@ -3866,16 +3866,17 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/flat-cache": {
|
"node_modules/flat-cache": {
|
||||||
"version": "3.0.4",
|
"version": "3.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.0.tgz",
|
||||||
"integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
|
"integrity": "sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"flatted": "^3.1.0",
|
"flatted": "^3.2.7",
|
||||||
|
"keyv": "^4.5.3",
|
||||||
"rimraf": "^3.0.2"
|
"rimraf": "^3.0.2"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^10.12.0 || >=12.0.0"
|
"node": ">=12.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/flatted": {
|
"node_modules/flatted": {
|
||||||
@@ -3934,15 +3935,15 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/function.prototype.name": {
|
"node_modules/function.prototype.name": {
|
||||||
"version": "1.1.5",
|
"version": "1.1.6",
|
||||||
"resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz",
|
"resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz",
|
||||||
"integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==",
|
"integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"call-bind": "^1.0.2",
|
"call-bind": "^1.0.2",
|
||||||
"define-properties": "^1.1.3",
|
"define-properties": "^1.2.0",
|
||||||
"es-abstract": "^1.19.0",
|
"es-abstract": "^1.22.1",
|
||||||
"functions-have-names": "^1.2.2"
|
"functions-have-names": "^1.2.3"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.4"
|
"node": ">= 0.4"
|
||||||
@@ -5327,6 +5328,12 @@
|
|||||||
"node": ">=4"
|
"node": ">=4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/json-buffer": {
|
||||||
|
"version": "3.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
|
||||||
|
"integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"node_modules/json-parse-even-better-errors": {
|
"node_modules/json-parse-even-better-errors": {
|
||||||
"version": "2.3.1",
|
"version": "2.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
|
||||||
@@ -5372,6 +5379,15 @@
|
|||||||
"node": ">=4.0"
|
"node": ">=4.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/keyv": {
|
||||||
|
"version": "4.5.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz",
|
||||||
|
"integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"json-buffer": "3.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/kleur": {
|
"node_modules/kleur": {
|
||||||
"version": "3.0.3",
|
"version": "3.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
|
||||||
@@ -5701,28 +5717,28 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/object.entries": {
|
"node_modules/object.entries": {
|
||||||
"version": "1.1.6",
|
"version": "1.1.7",
|
||||||
"resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz",
|
"resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz",
|
||||||
"integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==",
|
"integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"call-bind": "^1.0.2",
|
"call-bind": "^1.0.2",
|
||||||
"define-properties": "^1.1.4",
|
"define-properties": "^1.2.0",
|
||||||
"es-abstract": "^1.20.4"
|
"es-abstract": "^1.22.1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.4"
|
"node": ">= 0.4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/object.fromentries": {
|
"node_modules/object.fromentries": {
|
||||||
"version": "2.0.6",
|
"version": "2.0.7",
|
||||||
"resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz",
|
"resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz",
|
||||||
"integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==",
|
"integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"call-bind": "^1.0.2",
|
"call-bind": "^1.0.2",
|
||||||
"define-properties": "^1.1.4",
|
"define-properties": "^1.2.0",
|
||||||
"es-abstract": "^1.20.4"
|
"es-abstract": "^1.22.1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.4"
|
"node": ">= 0.4"
|
||||||
@@ -5732,26 +5748,26 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/object.groupby": {
|
"node_modules/object.groupby": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz",
|
||||||
"integrity": "sha512-70MWG6NfRH9GnbZOikuhPPYzpUpof9iW2J9E4dW7FXTqPNb6rllE6u39SKwwiNh8lCwX3DDb5OgcKGiEBrTTyw==",
|
"integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"call-bind": "^1.0.2",
|
"call-bind": "^1.0.2",
|
||||||
"define-properties": "^1.2.0",
|
"define-properties": "^1.2.0",
|
||||||
"es-abstract": "^1.21.2",
|
"es-abstract": "^1.22.1",
|
||||||
"get-intrinsic": "^1.2.1"
|
"get-intrinsic": "^1.2.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/object.values": {
|
"node_modules/object.values": {
|
||||||
"version": "1.1.6",
|
"version": "1.1.7",
|
||||||
"resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz",
|
"resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz",
|
||||||
"integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==",
|
"integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"call-bind": "^1.0.2",
|
"call-bind": "^1.0.2",
|
||||||
"define-properties": "^1.1.4",
|
"define-properties": "^1.2.0",
|
||||||
"es-abstract": "^1.20.4"
|
"es-abstract": "^1.22.1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.4"
|
"node": ">= 0.4"
|
||||||
@@ -6030,9 +6046,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/prettier": {
|
"node_modules/prettier": {
|
||||||
"version": "3.0.2",
|
"version": "3.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz",
|
||||||
"integrity": "sha512-o2YR9qtniXvwEZlOKbveKfDQVyqxbEIWn48Z8m3ZJjBjcCmUy3xZGIv+7AkaeuaTr6yPXJjwv07ZWlsWbEy1rQ==",
|
"integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"bin": {
|
"bin": {
|
||||||
"prettier": "bin/prettier.cjs"
|
"prettier": "bin/prettier.cjs"
|
||||||
|
|||||||
+7
-7
@@ -43,20 +43,20 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/jest": "^29.5.4",
|
"@types/jest": "^29.5.4",
|
||||||
"@types/node": "^20.5.6",
|
"@types/node": "^20.5.7",
|
||||||
"@types/node-fetch": "^2.6.4",
|
"@types/node-fetch": "^2.6.4",
|
||||||
"@types/semver": "^7.5.0",
|
"@types/semver": "^7.5.1",
|
||||||
"@typescript-eslint/eslint-plugin": "^6.4.1",
|
"@typescript-eslint/eslint-plugin": "^6.5.0",
|
||||||
"@typescript-eslint/parser": "^6.4.1",
|
"@typescript-eslint/parser": "^6.5.0",
|
||||||
"@vercel/ncc": "^0.36.1",
|
"@vercel/ncc": "^0.36.1",
|
||||||
"eslint": "^8.47.0",
|
"eslint": "^8.48.0",
|
||||||
"eslint-plugin-github": "^4.9.2",
|
"eslint-plugin-github": "^4.10.0",
|
||||||
"eslint-plugin-jest": "^27.2.3",
|
"eslint-plugin-jest": "^27.2.3",
|
||||||
"eslint-plugin-prettier": "^5.0.0",
|
"eslint-plugin-prettier": "^5.0.0",
|
||||||
"jest": "^29.6.4",
|
"jest": "^29.6.4",
|
||||||
"jest-circus": "^29.6.4",
|
"jest-circus": "^29.6.4",
|
||||||
"js-yaml": "^4.1.0",
|
"js-yaml": "^4.1.0",
|
||||||
"prettier": "3.0.2",
|
"prettier": "3.0.3",
|
||||||
"ts-jest": "^29.1.1",
|
"ts-jest": "^29.1.1",
|
||||||
"typescript": "^5.2.2"
|
"typescript": "^5.2.2"
|
||||||
}
|
}
|
||||||
|
|||||||
Generated
-2629
File diff suppressed because it is too large
Load Diff
@@ -1,50 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "pr-collector",
|
|
||||||
"version": "v1.2.0",
|
|
||||||
"description": "Library to fetch GitHub pull request between 2 tags/sha1 hashes.",
|
|
||||||
"main": "lib/prCollector.js",
|
|
||||||
"types": "lib/prCollector.d.ts",
|
|
||||||
"scripts": {
|
|
||||||
"build": "tsc",
|
|
||||||
"format": "prettier --write **/*.ts",
|
|
||||||
"format-check": "prettier --check **/*.ts",
|
|
||||||
"lint": "eslint src/**/*.ts",
|
|
||||||
"package": "ncc build --source-map --license licenses.txt",
|
|
||||||
"test": "jest --passWithNoTests",
|
|
||||||
"all": "npm run build && npm run format && npm run lint && npm run package && npm test"
|
|
||||||
},
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "git+https://github.com/mikepenz/release-changelog-builder.git"
|
|
||||||
},
|
|
||||||
"keywords": [
|
|
||||||
"github",
|
|
||||||
"release",
|
|
||||||
"notes",
|
|
||||||
"change",
|
|
||||||
"pull-requests"
|
|
||||||
],
|
|
||||||
"author": "Mike Penz",
|
|
||||||
"license": "Apache 2.0",
|
|
||||||
"dependencies": {
|
|
||||||
"@actions/core": "^1.10.0",
|
|
||||||
"@actions/exec": "^1.1.1",
|
|
||||||
"@actions/github": "^5.1.1",
|
|
||||||
"@octokit/rest": "^20.0.1",
|
|
||||||
"https-proxy-agent": "^7.0.1",
|
|
||||||
"moment": "^2.29.4",
|
|
||||||
"node-fetch": "2.6.12",
|
|
||||||
"semver": "^7.5.4"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@types/node": "^20.5.6",
|
|
||||||
"@types/node-fetch": "^2.6.4",
|
|
||||||
"@types/semver": "^7.5.0",
|
|
||||||
"@typescript-eslint/eslint-plugin": "^6.4.1",
|
|
||||||
"@vercel/ncc": "^0.36.1",
|
|
||||||
"eslint-plugin-prettier": "^5.0.0",
|
|
||||||
"js-yaml": "^4.1.0",
|
|
||||||
"prettier": "3.0.2",
|
|
||||||
"typescript": "^5.2.2"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
{
|
|
||||||
"compilerOptions": {
|
|
||||||
"target": "es6", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */
|
|
||||||
"module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */
|
|
||||||
"outDir": "./lib", /* Redirect output structure to the directory. */
|
|
||||||
"rootDir": "./src", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */
|
|
||||||
"strict": true, /* Enable all strict type-checking options. */
|
|
||||||
"noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */
|
|
||||||
"esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */
|
|
||||||
"lib": [ "ES2021.String" ], /* Enable custom `ES2021.String` extension in typescript for `replaceAll` */
|
|
||||||
"declaration": true
|
|
||||||
},
|
|
||||||
"exclude": ["node_modules", "**/*.test.ts", "lib"]
|
|
||||||
}
|
|
||||||
@@ -70,8 +70,8 @@ export const DefaultConfiguration: Configuration = {
|
|||||||
order: 'ASC', // the sorting order
|
order: 'ASC', // the sorting order
|
||||||
on_property: 'mergedAt' // the property to sort on. (mergedAt falls back to createdAt)
|
on_property: 'mergedAt' // the property to sort on. (mergedAt falls back to createdAt)
|
||||||
},
|
},
|
||||||
template: '${{CHANGELOG}}', // the global template to host the changelog
|
template: '#{{CHANGELOG}}', // the global template to host the changelog
|
||||||
pr_template: '- ${{TITLE}}\n - PR: #${{NUMBER}}', // the per PR template to pick
|
pr_template: '- #{{TITLE}}\n - PR: ##{{NUMBER}}', // the per PR template to pick
|
||||||
empty_template: '- no changes', // the template to use if no pull requests are found
|
empty_template: '- no changes', // the template to use if no pull requests are found
|
||||||
categories: [
|
categories: [
|
||||||
{
|
{
|
||||||
|
|||||||
+6
-6
@@ -456,7 +456,7 @@ function handlePlaceholder(
|
|||||||
placeholderPrMap: Map<string, string[]> | undefined /* map to keep replaced placeholder values with their key */,
|
placeholderPrMap: Map<string, string[]> | undefined /* map to keep replaced placeholder values with their key */,
|
||||||
configuration: Configuration
|
configuration: Configuration
|
||||||
): string {
|
): string {
|
||||||
let transformed = template.replaceAll(`\${{${key}}}`, configuration.trim_values ? value.trim() : value)
|
let transformed = template.replaceAll(`#{{${key}}}`, configuration.trim_values ? value.trim() : value)
|
||||||
// replace custom placeholders
|
// replace custom placeholders
|
||||||
const phs = placeholders.get(key)
|
const phs = placeholders.get(key)
|
||||||
if (phs) {
|
if (phs) {
|
||||||
@@ -470,7 +470,7 @@ function handlePlaceholder(
|
|||||||
createOrSet(placeholderPrMap, placeholder.name, extractedValue)
|
createOrSet(placeholderPrMap, placeholder.name, extractedValue)
|
||||||
}
|
}
|
||||||
transformed = transformed.replaceAll(
|
transformed = transformed.replaceAll(
|
||||||
`\${{${placeholder.name}}}`,
|
`#{{${placeholder.name}}}`,
|
||||||
configuration.trim_values ? extractedValue.trim() : extractedValue
|
configuration.trim_values ? extractedValue.trim() : extractedValue
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -542,9 +542,9 @@ function replacePrPlaceholders(
|
|||||||
let transformed = template
|
let transformed = template
|
||||||
for (const [key, values] of placeholderPrMap) {
|
for (const [key, values] of placeholderPrMap) {
|
||||||
for (let i = 0; i < values.length; i++) {
|
for (let i = 0; i < values.length; i++) {
|
||||||
transformed = transformed.replaceAll(`\${{${key}[${i}]}}`, configuration.trim_values ? values[i].trim() : values[i])
|
transformed = transformed.replaceAll(`#{{${key}[${i}]}}`, configuration.trim_values ? values[i].trim() : values[i])
|
||||||
}
|
}
|
||||||
transformed = transformed.replaceAll(`\${{${key}[*]}}`, values.join(''))
|
transformed = transformed.replaceAll(`#{{${key}[*]}}`, values.join(''))
|
||||||
}
|
}
|
||||||
return transformed
|
return transformed
|
||||||
}
|
}
|
||||||
@@ -553,7 +553,7 @@ function cleanupPrPlaceholders(template: string, placeholders: Map<string, Place
|
|||||||
let transformed = template
|
let transformed = template
|
||||||
for (const [, phs] of placeholders) {
|
for (const [, phs] of placeholders) {
|
||||||
for (const ph of phs) {
|
for (const ph of phs) {
|
||||||
transformed = transformed.replaceAll(new RegExp(`\\$\\{\\{${ph.name}(?:\\[.+?\\])?\\}\\}`, 'gu'), '')
|
transformed = transformed.replaceAll(new RegExp(`#\\{\\{${ph.name}(?:\\[.+?\\])?\\}\\}`, 'gu'), '')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return transformed
|
return transformed
|
||||||
@@ -562,7 +562,7 @@ function cleanupPrPlaceholders(template: string, placeholders: Map<string, Place
|
|||||||
function cleanupPlaceholders(template: string): string {
|
function cleanupPlaceholders(template: string): string {
|
||||||
let transformed = template
|
let transformed = template
|
||||||
for (const phs of ['REVIEWS', 'REFERENCED', 'ASSIGNEES', 'REVIEWERS', 'APPROVERS']) {
|
for (const phs of ['REVIEWS', 'REFERENCED', 'ASSIGNEES', 'REVIEWERS', 'APPROVERS']) {
|
||||||
transformed = transformed.replaceAll(new RegExp(`\\$\\{\\{${phs}\\[.+?\\]\\..*?\\}\\}`, 'gu'), '')
|
transformed = transformed.replaceAll(new RegExp(`#\\{\\{${phs}\\[.+?\\]\\..*?\\}\\}`, 'gu'), '')
|
||||||
}
|
}
|
||||||
return transformed
|
return transformed
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -153,7 +153,7 @@ function readConfiguration(filename: string): Configuration | undefined {
|
|||||||
export function parseConfiguration(config: string): Configuration | undefined {
|
export function parseConfiguration(config: string): Configuration | undefined {
|
||||||
try {
|
try {
|
||||||
// for compatiblity with the `yml` file we require to use `#{{}}` instead of `${{}}` - replace it here.
|
// for compatiblity with the `yml` file we require to use `#{{}}` instead of `${{}}` - replace it here.
|
||||||
const configurationJSON: Configuration = JSON.parse(config.replace(/#{{/g, '${{'))
|
const configurationJSON: Configuration = JSON.parse(config.replace(/\${{/g, '#{{'))
|
||||||
return configurationJSON
|
return configurationJSON
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
core.info(`⚠️ Configuration provided, but it couldn't be parsed. Fallback to Defaults.`)
|
core.info(`⚠️ Configuration provided, but it couldn't be parsed. Fallback to Defaults.`)
|
||||||
|
|||||||
Reference in New Issue
Block a user