Merge pull request #1425 from mikepenz/develop

dev -> main
This commit is contained in:
Mike Penz
2025-01-27 12:09:56 +01:00
committed by GitHub
43 changed files with 11565 additions and 11387 deletions
-3
View File
@@ -1,3 +0,0 @@
dist/
lib/
node_modules/
-58
View File
@@ -1,58 +0,0 @@
{
"plugins": ["jest", "@typescript-eslint"],
"extends": ["plugin:github/recommended"],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": 9,
"sourceType": "module",
"project": "./tsconfig.json"
},
"rules": {
"filenames/match-regex": "off",
"eslint-comments/no-use": "off",
"import/no-namespace": "off",
"import/named": "off",
"no-unused-vars": "off",
"sort-imports": "off",
"i18n-text/no-en": "off",
"@typescript-eslint/no-unused-vars": "error",
"@typescript-eslint/explicit-member-accessibility": ["error", {"accessibility": "no-public"}],
"@typescript-eslint/no-require-imports": "error",
"@typescript-eslint/array-type": "error",
"@typescript-eslint/await-thenable": "error",
"@typescript-eslint/ban-ts-comment": "error",
"camelcase": "off",
"@typescript-eslint/consistent-type-assertions": "error",
"@typescript-eslint/explicit-function-return-type": ["error", {"allowExpressions": true}],
"@typescript-eslint/func-call-spacing": ["error", "never"],
"@typescript-eslint/no-array-constructor": "error",
"@typescript-eslint/no-empty-interface": "error",
"@typescript-eslint/no-explicit-any": "error",
"@typescript-eslint/no-extraneous-class": "error",
"@typescript-eslint/no-for-in-array": "error",
"@typescript-eslint/no-inferrable-types": "error",
"@typescript-eslint/no-misused-new": "error",
"@typescript-eslint/no-namespace": "error",
"@typescript-eslint/no-non-null-assertion": "warn",
"@typescript-eslint/no-unnecessary-qualifier": "error",
"@typescript-eslint/no-unnecessary-type-assertion": "error",
"@typescript-eslint/no-useless-constructor": "error",
"@typescript-eslint/no-var-requires": "error",
"@typescript-eslint/prefer-for-of": "warn",
"@typescript-eslint/prefer-function-type": "warn",
"@typescript-eslint/prefer-includes": "error",
"@typescript-eslint/prefer-string-starts-ends-with": "error",
"@typescript-eslint/promise-function-async": "error",
"@typescript-eslint/require-array-sort-compare": "error",
"@typescript-eslint/restrict-plus-operands": "error",
"semi": "off",
"@typescript-eslint/semi": ["error", "never"],
"@typescript-eslint/type-annotation-spacing": "error",
"@typescript-eslint/unbound-method": "error"
},
"env": {
"node": true,
"es6": true,
"jest/globals": true
}
}
+4 -3
View File
@@ -1,10 +1,7 @@
version: 2
updates:
# Enable version updates for npm
- package-ecosystem: 'npm'
# Look for `package.json` and `lock` files in the `root` directory
directory: '/'
# Check the npm registry for updates every day (weekdays)
schedule:
interval: 'weekly'
groups:
@@ -18,3 +15,7 @@ updates:
- "prettier"
- "ts-jest"
- "typescript"
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
+2 -2
View File
@@ -28,7 +28,7 @@ jobs:
- uses: actions/checkout@v4
- name: Set Node.js 20.x
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: 20.x
@@ -48,7 +48,7 @@ jobs:
id: diff
# If index.js was different than expected, upload the expected version as an artifact
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
if: ${{ failure() && steps.diff.conclusion == 'failure' }}
with:
name: dist
+1 -1
View File
@@ -18,7 +18,7 @@ jobs:
uses: actions/checkout@v4
- name: Set Node.js 20.x
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: 20.x
+3 -3
View File
@@ -47,7 +47,7 @@ jobs:
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
@@ -58,7 +58,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v2
uses: github/codeql-action/autobuild@v3
# ️ Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
@@ -72,4 +72,4 @@ jobs:
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2
uses: github/codeql-action/analyze@v3
+3 -2
View File
@@ -1,5 +1,6 @@
import {clear} from '../src/transform'
import {mergeConfiguration, parseConfiguration, resolveConfiguration} from '../src/utils'
import {mergeConfiguration, parseConfiguration, resolveConfiguration} from '../src/utils.js'
import { clear } from "../src/transform.js";
jest.setTimeout(180000)
clear()
+3 -3
View File
@@ -1,6 +1,6 @@
import {mergeConfiguration, resolveConfiguration} from '../../src/utils'
import {ReleaseNotesBuilder} from '../../src/releaseNotesBuilder'
import {GithubRepository} from '../../src/repositories/GithubRepository'
import {mergeConfiguration, resolveConfiguration} from '../../src/utils.js'
import {ReleaseNotesBuilder} from '../../src/releaseNotesBuilder.js'
import {GithubRepository} from '../../src/repositories/GithubRepository.js'
jest.setTimeout(180000)
@@ -1,7 +1,7 @@
import {mergeConfiguration, resolveConfiguration} from '../../src/utils'
import {ReleaseNotesBuilder} from '../../src/releaseNotesBuilder'
import {GiteaRepository} from '../../src/repositories/GiteaRepository'
import {clear} from '../../src/transform'
import {mergeConfiguration, resolveConfiguration} from '../../src/utils.js'
import {ReleaseNotesBuilder} from '../../src/releaseNotesBuilder.js'
import {GiteaRepository} from '../../src/repositories/GiteaRepository.js'
import {clear} from '../../src/transform.js'
jest.setTimeout(180000)
clear()
@@ -1,9 +1,9 @@
import {checkExportedData, mergeConfiguration, resolveConfiguration} from '../../src/utils'
import {buildChangelog} from '../../src/transform'
import {Options, pullData} from '../../src/pr-collector/prCollector'
import {GiteaRepository} from '../../src/repositories/GiteaRepository'
import {clear} from '../../src/transform'
import {ReleaseNotesOptions} from '../../src/releaseNotesBuilder'
import {checkExportedData, mergeConfiguration, resolveConfiguration} from '../../src/utils.js'
import {buildChangelog} from '../../src/transform.js'
import {Options, pullData} from '../../src/pr-collector/prCollector.js'
import {GiteaRepository} from '../../src/repositories/GiteaRepository.js'
import {clear} from '../../src/transform.js'
import {ReleaseNotesOptions} from '../../src/releaseNotesBuilder.js'
jest.setTimeout(180000)
clear()
+1 -1
View File
@@ -2,7 +2,7 @@ import * as path from 'path'
import * as process from 'process'
import * as cp from 'child_process'
import * as fs from 'fs'
import {clear} from '../src/transform'
import {clear} from '../src/transform.js'
jest.setTimeout(180000)
clear()
+3 -3
View File
@@ -1,6 +1,6 @@
import {transformStringToValue, validateRegex} from '../src/pr-collector/regexUtils'
import {Regex} from '../src/pr-collector/types'
import {clear} from '../src/transform'
import {transformStringToValue, validateRegex} from '../src/pr-collector/regexUtils.js'
import {Regex} from '../src/pr-collector/types.js'
import {clear} from '../src/transform.js'
jest.setTimeout(180000)
clear()
+4 -4
View File
@@ -1,7 +1,7 @@
import {mergeConfiguration, resolveConfiguration} from '../src/utils'
import {ReleaseNotesBuilder} from '../src/releaseNotesBuilder'
import {GithubRepository} from '../src/repositories/GithubRepository'
import {clear} from '../src/transform'
import {mergeConfiguration, resolveConfiguration} from '../src/utils.js'
import {ReleaseNotesBuilder} from '../src/releaseNotesBuilder.js'
import {GithubRepository} from '../src/repositories/GithubRepository.js'
import {clear} from '../src/transform.js'
jest.setTimeout(180000)
clear()
+6 -6
View File
@@ -1,9 +1,9 @@
import {checkExportedData, mergeConfiguration, resolveConfiguration} from '../src/utils'
import {buildChangelog} from '../src/transform'
import {Options, pullData} from '../src/pr-collector/prCollector'
import {GithubRepository} from '../src/repositories/GithubRepository'
import {clear} from '../src/transform'
import {ReleaseNotesOptions} from '../src/releaseNotesBuilder'
import {checkExportedData, mergeConfiguration, resolveConfiguration} from '../src/utils.js'
import {buildChangelog} from '../src/transform.js'
import {Options, pullData} from '../src/pr-collector/prCollector.js'
import {GithubRepository} from '../src/repositories/GithubRepository.js'
import {clear} from '../src/transform.js'
import {ReleaseNotesOptions} from '../src/releaseNotesBuilder.js'
jest.setTimeout(180000)
clear()
+4 -4
View File
@@ -1,7 +1,7 @@
import {TagResolver} from '../src/configuration'
import {validateRegex} from '../src/pr-collector/regexUtils'
import {filterTags, prepareAndSortTags, TagInfo, transformTags} from '../src/pr-collector/tags'
import {clear} from '../src/transform'
import {TagResolver} from '../src/configuration.js'
import {validateRegex} from '../src/pr-collector/regexUtils.js'
import {filterTags, prepareAndSortTags, TagInfo, transformTags} from '../src/pr-collector/tags.js'
import {clear} from '../src/transform.js'
jest.setTimeout(180000)
clear()
+7 -7
View File
@@ -1,11 +1,11 @@
import {buildChangelog} from '../src/transform'
import {buildChangelog} from '../src/transform.js'
import moment from 'moment'
import {Configuration, DefaultConfiguration} from '../src/configuration'
import {PullRequestInfo} from '../src/pr-collector/pullRequests'
import {DefaultDiffInfo} from '../src/pr-collector/commits'
import {GithubRepository} from '../src/repositories/GithubRepository'
import {clear} from '../src/transform'
import {buildChangelogTest} from './utils'
import {DefaultConfiguration} from '../src/configuration.js'
import {PullRequestInfo} from '../src/pr-collector/pullRequests.js'
import {DefaultDiffInfo} from '../src/pr-collector/commits.js'
import {GithubRepository} from '../src/repositories/GithubRepository.js'
import {clear} from '../src/transform.js'
import { buildChangelogTest } from "./utils.js";
jest.setTimeout(180000)
clear()
+5 -5
View File
@@ -1,9 +1,9 @@
import moment from 'moment'
import {DefaultConfiguration} from '../src/configuration'
import {PullRequestInfo} from '../src/pr-collector/pullRequests'
import {GithubRepository} from '../src/repositories/GithubRepository'
import {clear} from '../src/transform'
import {buildChangelogTest, buildPullRequeset} from './utils'
import {DefaultConfiguration} from '../src/configuration.js'
import {PullRequestInfo} from '../src/pr-collector/pullRequests.js'
import {GithubRepository} from '../src/repositories/GithubRepository.js'
import {clear} from '../src/transform.js'
import {buildChangelogTest, buildPullRequeset} from './utils.js'
jest.setTimeout(180000)
clear()
+5 -5
View File
@@ -1,8 +1,8 @@
import {Configuration} from '../src/configuration'
import {DefaultDiffInfo} from '../src/pr-collector/commits'
import {PullRequestInfo} from '../src/pr-collector/pullRequests'
import {buildChangelog} from '../src/transform'
import {BaseRepository} from '../src/repositories/BaseRepository'
import {Configuration} from '../src/configuration.js'
import {DefaultDiffInfo} from '../src/pr-collector/commits.js'
import {PullRequestInfo} from '../src/pr-collector/pullRequests.js'
import {buildChangelog} from '../src/transform.js'
import {BaseRepository} from '../src/repositories/BaseRepository.js'
import moment from 'moment'
export const buildChangelogTest = (config: Configuration, prs: PullRequestInfo[], repositoryUtils: BaseRepository): string => {
+1 -1
View File
@@ -21,7 +21,7 @@
"labels": ["dependencies"]
}
],
"template": "#{{CHANGELOG}}\n\nContributors:\n- #{{CONTRIBUTORS}}",
"template": "#{{CHANGELOG}}\n## Contributors:\n- #{{CONTRIBUTORS}}",
"max_pull_requests": 1000,
"max_back_track_time_days": 1000
}
Generated Vendored
+9385 -10144
View File
File diff suppressed because it is too large Load Diff
Generated Vendored
+1 -1
View File
File diff suppressed because one or more lines are too long
Generated Vendored
+3
View File
@@ -0,0 +1,3 @@
{
"type": "module"
}
+1
View File
File diff suppressed because one or more lines are too long
+104
View File
@@ -0,0 +1,104 @@
import jest from "eslint-plugin-jest";
import typescriptEslint from "@typescript-eslint/eslint-plugin";
import globals from "globals";
import tsParser from "@typescript-eslint/parser";
import path from "node:path";
import { fileURLToPath } from "node:url";
import js from "@eslint/js";
import { FlatCompat } from "@eslint/eslintrc";
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const compat = new FlatCompat({
baseDirectory: __dirname,
recommendedConfig: js.configs.recommended,
allConfig: js.configs.all
});
export default [{
ignores: ["**/dist/", "**/lib/", "**/node_modules/"]
}, ...compat.extends("plugin:github/recommended"), {
files: ["src/**.ts", "__tests__/**.ts"],
plugins: {
jest,
"@typescript-eslint": typescriptEslint
},
languageOptions: {
globals: {
...globals.node,
...jest.environments.globals.globals
},
parser: tsParser,
ecmaVersion: 9,
sourceType: "module",
parserOptions: {
project: "./tsconfig.json"
}
},
rules: {
"filenames/match-regex": "off",
"eslint-comments/no-use": "off",
"import/no-namespace": "off",
"import/named": "off",
"no-unused-vars": "off",
"sort-imports": "off",
"i18n-text/no-en": "off",
"@typescript-eslint/no-unused-vars": "error",
"@typescript-eslint/explicit-member-accessibility": ["error", {
accessibility: "no-public"
}],
"@typescript-eslint/no-require-imports": "error",
"@typescript-eslint/array-type": "error",
"@typescript-eslint/await-thenable": "error",
"@typescript-eslint/ban-ts-comment": "error",
camelcase: "off",
"@typescript-eslint/consistent-type-assertions": "error",
"@typescript-eslint/explicit-function-return-type": ["error", {
allowExpressions: true
}],
"@typescript-eslint/no-array-constructor": "error",
"@typescript-eslint/no-empty-interface": "error",
"@typescript-eslint/no-explicit-any": "error",
"@typescript-eslint/no-extraneous-class": "error",
"@typescript-eslint/no-for-in-array": "error",
"@typescript-eslint/no-inferrable-types": "error",
"@typescript-eslint/no-misused-new": "error",
"@typescript-eslint/no-namespace": "error",
"@typescript-eslint/no-non-null-assertion": "warn",
"@typescript-eslint/no-unnecessary-qualifier": "error",
"@typescript-eslint/no-unnecessary-type-assertion": "error",
"@typescript-eslint/no-useless-constructor": "error",
"@typescript-eslint/no-var-requires": "error",
"@typescript-eslint/prefer-for-of": "warn",
"@typescript-eslint/prefer-function-type": "warn",
"@typescript-eslint/prefer-includes": "error",
"@typescript-eslint/prefer-string-starts-ends-with": "error",
"@typescript-eslint/promise-function-async": "error",
"@typescript-eslint/require-array-sort-compare": "error",
"@typescript-eslint/restrict-plus-operands": "error",
semi: "off",
"@typescript-eslint/unbound-method": "error"
},
settings: {
"import/resolver": {
"typescript": {
"alwaysTryTypes": true
},
"node": {
"extensions": [".js", ".jsx", ".ts", ".tsx"],
"moduleDirectory": ["src", "node_modules"]
}
}
}
}];
+9 -8
View File
@@ -1,11 +1,12 @@
module.exports = {
// jest.config.js
import { createJsWithTsEsmPreset } from "ts-jest";
export default {
clearMocks: true,
moduleFileExtensions: ['js', 'ts'],
testEnvironment: 'node',
testMatch: ['**/*.test.ts'],
testRunner: 'jest-circus/runner',
transform: {
'^.+\\.ts$': 'ts-jest'
testEnvironment: "node",
testMatch: ["**/*.test.ts"],
testRunner: "jest-circus/runner",
moduleNameMapper: {
"(.+)\\.js": "$1",
},
verbose: true
...createJsWithTsEsmPreset(),
}
+1885 -997
View File
File diff suppressed because it is too large Load Diff
+25 -17
View File
@@ -1,14 +1,15 @@
{
"name": "release-changelog-builder-action",
"version": "v5.0.0",
"version": "v5.1.0",
"private": true,
"description": "A GitHub action that builds your release notes / changelog fast, easy and exactly the way you want.",
"main": "lib/main.js",
"type": "module",
"scripts": {
"build": "tsc",
"format": "prettier --write **/*.ts **/**/*.ts",
"format-check": "prettier --check **/*.ts",
"format-fix": "eslint --fix src/**/*.ts",
"format": "prettier --write src/**.ts",
"format-check": "prettier --check src/**.ts",
"format-fix": "eslint --fix src/**.ts",
"lint": "eslint src/**/*.ts",
"package": "ncc build --source-map --license licenses.txt",
"test": "jest",
@@ -40,28 +41,35 @@
"@actions/exec": "^1.1.1",
"@actions/github": "^6.0.0",
"@octokit/rest": "^20.1.1",
"gitea-js": "^1.22.0",
"https-proxy-agent": "^7.0.5",
"gitea-js": "^1.23.0",
"globals": "^15.14.0",
"https-proxy-agent": "^7.0.6",
"moment": "^2.30.1",
"semver": "^7.6.3"
},
"devDependencies": {
"@types/jest": "^29.5.14",
"@types/node": "^22.8.6",
"@types/node": "^22.10.10",
"@types/semver": "^7.5.8",
"@typescript-eslint/eslint-plugin": "^7.17.0",
"@typescript-eslint/parser": "^7.17.0",
"@vercel/ncc": "^0.38.2",
"eslint": "^8.57.0",
"eslint-plugin-github": "^5.0.1",
"eslint-plugin-import": "^2.29.1",
"eslint-plugin-jest": "^28.7.0",
"eslint-plugin-prettier": "^5.2.1",
"@typescript-eslint/eslint-plugin": "^8.21.0",
"@typescript-eslint/parser": "^8.21.0",
"@vercel/ncc": "^0.38.3",
"eslint": "^9.19.0",
"eslint-plugin-github": "^5.1.5",
"eslint-plugin-import": "^2.31.0",
"eslint-plugin-jest": "^28.11.0",
"eslint-plugin-prettier": "^5.2.3",
"eslint-import-resolver-typescript": "^3.7.0",
"jest": "^29.7.0",
"jest-circus": "^29.7.0",
"js-yaml": "^4.1.0",
"prettier": "3.3.3",
"prettier": "3.4.2",
"ts-jest": "^29.2.5",
"typescript": "^5.6.3"
"typescript": "^5.7.3",
"@eslint/eslintrc": "^3.2.0",
"@eslint/js": "^9.19.0"
},
"overrides": {
"glob": "11.0.1"
}
}
+1 -1
View File
@@ -1,4 +1,4 @@
import {Extractor, PullConfiguration, Regex, Rule} from './pr-collector/types'
import {Extractor, PullConfiguration, Regex, Rule} from './pr-collector/types.js'
export interface Configuration extends PullConfiguration {
template: string
+5 -5
View File
@@ -1,10 +1,10 @@
import * as core from '@actions/core'
import * as github from '@actions/github'
import {mergeConfiguration, parseConfiguration, resolveConfiguration, resolveMode, retrieveRepositoryPath, writeOutput} from './utils'
import {ReleaseNotesBuilder} from './releaseNotesBuilder'
import {Configuration} from './configuration'
import {GithubRepository} from './repositories/GithubRepository'
import {GiteaRepository} from './repositories/GiteaRepository'
import {mergeConfiguration, parseConfiguration, resolveConfiguration, resolveMode, retrieveRepositoryPath, writeOutput} from './utils.js'
import {ReleaseNotesBuilder} from './releaseNotesBuilder.js'
import {Configuration} from './configuration.js'
import {GithubRepository} from './repositories/GithubRepository.js'
import {GiteaRepository} from './repositories/GiteaRepository.js'
async function run(): Promise<void> {
const supportedPlatform = {
+4 -4
View File
@@ -1,9 +1,9 @@
import * as core from '@actions/core'
import moment from 'moment'
import {failOrError} from './utils'
import {PullRequestInfo} from './pullRequests'
import {Options} from './prCollector'
import {BaseRepository} from '../repositories/BaseRepository'
import {failOrError} from './utils.js'
import {PullRequestInfo} from './pullRequests.js'
import {Options} from './prCollector.js'
import {BaseRepository} from '../repositories/BaseRepository.js'
export interface DiffInfo {
changedFiles: number
+1 -1
View File
@@ -1,6 +1,6 @@
import * as exec from '@actions/exec'
import * as io from '@actions/io'
import {directoryExistsSync} from './utils'
import {directoryExistsSync} from './utils.js'
export async function createCommandManager(workingDirectory: string): Promise<GitCommandManager> {
return await GitCommandManager.createCommandManager(workingDirectory)
+6 -6
View File
@@ -1,10 +1,10 @@
import * as core from '@actions/core'
import {PullConfiguration} from './types'
import {TagInfo, Tags} from './tags'
import {failOrError} from './utils'
import {PullRequestInfo, PullRequests} from './pullRequests'
import {Commits, DefaultDiffInfo, DiffInfo, convertCommitsToPrs} from './commits'
import {BaseRepository} from '../repositories/BaseRepository'
import {PullConfiguration} from './types.js'
import {TagInfo, Tags} from './tags.js'
import {failOrError} from './utils.js'
import {PullRequestInfo, PullRequests} from './pullRequests.js'
import {Commits, DefaultDiffInfo, DiffInfo, convertCommitsToPrs} from './commits.js'
import {BaseRepository} from '../repositories/BaseRepository.js'
export interface Options {
owner: string // the owner of the repository
+4 -4
View File
@@ -1,10 +1,10 @@
import * as core from '@actions/core'
import {RestEndpointMethodTypes} from '@octokit/rest'
import moment from 'moment'
import {Property, Sort} from './types'
import {Commits, DiffInfo, filterCommits} from './commits'
import {Options} from './prCollector'
import {BaseRepository} from '../repositories/BaseRepository'
import {Property, Sort} from './types.js'
import {Commits, DiffInfo, filterCommits} from './commits.js'
import {Options} from './prCollector.js'
import {BaseRepository} from '../repositories/BaseRepository.js'
export interface PullRequestInfo {
number: number
+2 -2
View File
@@ -1,5 +1,5 @@
import * as core from '@actions/core'
import {Extractor, Property, Regex, RegexTransformer} from './types'
import {Extractor, Property, Regex, RegexTransformer} from './types.js'
export function validateRegex(regex?: Regex): RegexTransformer | null {
if (regex === undefined) {
@@ -21,7 +21,7 @@ export function validateRegex(regex?: Regex): RegexTransformer | null {
}
return buildRegex(regex, target, onProperty, method, onEmpty)
} catch (e) {
} catch {
core.warning(`⚠️ Failed to validate transformer: ${regex.pattern}`)
return null
}
+5 -5
View File
@@ -2,11 +2,11 @@ import * as core from '@actions/core'
import * as github from '@actions/github'
import * as semver from 'semver'
import {SemVer} from 'semver'
import {Regex, RegexTransformer, TagResolver} from './types'
import {createCommandManager} from './gitHelper'
import {Regex, RegexTransformer, TagResolver} from './types.js'
import {createCommandManager} from './gitHelper.js'
import moment from 'moment'
import {transformStringToOptionalValue, transformStringToValue, validateRegex} from './regexUtils'
import {BaseRepository} from '../repositories/BaseRepository'
import {transformStringToOptionalValue, transformStringToValue, validateRegex} from './regexUtils.js'
import {BaseRepository} from '../repositories/BaseRepository.js'
export interface TagResult {
from: TagInfo | null
@@ -67,7 +67,7 @@ export class Tags {
return {name: initialCommit, commit: initialCommit}
}
return tags[0]
} catch (error) {
} catch {
if (tags.length <= 0) {
core.warning(`⚠️ No tag found for the given repository`)
}
+4 -4
View File
@@ -1,13 +1,13 @@
import * as core from '@actions/core'
import {RegexTransformer, Rule} from './pr-collector/types'
import {PullRequestInfo, retrieveProperty} from './pr-collector/pullRequests'
import {validateRegex} from './pr-collector/regexUtils'
import {RegexTransformer, Rule} from './pr-collector/types.js'
import {PullRequestInfo, retrieveProperty} from './pr-collector/pullRequests.js'
import {validateRegex} from './pr-collector/regexUtils.js'
/**
* Checks if any of the rules match the given PR
*/
export function matchesRules(rules: Rule[], pr: PullRequestInfo, exhaustive: boolean): boolean {
const transformers: RegexTransformer[] = rules.map(rule => validateRegex(rule)).filter(t => t !== null) as RegexTransformer[]
const transformers: RegexTransformer[] = rules.map(rule => validateRegex(rule)).filter(t => t !== null)
if (exhaustive) {
return transformers.every(transformer => {
return matches(pr, transformer, 'rule')
+9 -9
View File
@@ -1,13 +1,13 @@
import * as core from '@actions/core'
import {Configuration} from './configuration'
import {checkExportedData, writeCacheData} from './utils'
import {buildChangelog} from './transform'
import {PullRequestCollector} from './pr-collector/prCollector'
import {failOrError} from './pr-collector/utils'
import {TagInfo} from './pr-collector/tags'
import {DiffInfo} from './pr-collector/commits'
import {PullRequestData, PullRequestInfo} from './pr-collector/pullRequests'
import {BaseRepository} from './repositories/BaseRepository'
import {Configuration} from './configuration.js'
import {checkExportedData, writeCacheData} from './utils.js'
import {buildChangelog} from './transform.js'
import {PullRequestCollector} from './pr-collector/prCollector.js'
import {failOrError} from './pr-collector/utils.js'
import {TagInfo} from './pr-collector/tags.js'
import {DiffInfo} from './pr-collector/commits.js'
import {PullRequestData, PullRequestInfo} from './pr-collector/pullRequests.js'
import {BaseRepository} from './repositories/BaseRepository.js'
export interface ReleaseNotesOptions {
owner: string // the owner of the repository
+5 -5
View File
@@ -1,9 +1,9 @@
import {TagInfo} from '../pr-collector/tags'
import {DiffInfo} from '../pr-collector/commits'
import moment from 'moment/moment'
import {PullRequestInfo} from '../pr-collector/pullRequests'
import {TagInfo} from '../pr-collector/tags.js'
import {DiffInfo} from '../pr-collector/commits.js'
import {PullRequestInfo} from '../pr-collector/pullRequests.js'
import * as core from '@actions/core'
import {createCommandManager} from '../pr-collector/gitHelper'
import {createCommandManager} from '../pr-collector/gitHelper.js'
import moment from 'moment'
export abstract class BaseRepository {
proxy?: string
+5 -5
View File
@@ -1,11 +1,11 @@
import {BaseRepository} from './BaseRepository'
import {TagInfo} from '../pr-collector/tags'
import {CommentInfo, PullRequestInfo} from '../pr-collector/pullRequests'
import {DiffInfo} from '../pr-collector/commits'
import {BaseRepository} from './BaseRepository.js'
import {TagInfo} from '../pr-collector/tags.js'
import {CommentInfo, PullRequestInfo} from '../pr-collector/pullRequests.js'
import {DiffInfo} from '../pr-collector/commits.js'
import {Api, PullRequest, PullReview, giteaApi} from 'gitea-js'
import moment from 'moment'
import * as core from '@actions/core'
import {createCommandManager} from '../pr-collector/gitHelper'
import {createCommandManager} from '../pr-collector/gitHelper.js'
interface Pulls {
closed: PullRequest[]
+8 -8
View File
@@ -1,12 +1,12 @@
import {BaseRepository} from './BaseRepository'
import {BaseRepository} from './BaseRepository.js'
import {Octokit, RestEndpointMethodTypes} from '@octokit/rest'
import {HttpsProxyAgent} from 'https-proxy-agent'
import * as core from '@actions/core'
import {TagInfo} from '../pr-collector/tags'
import moment from 'moment/moment'
import {DiffInfo} from '../pr-collector/commits'
import {CommentInfo, PullData, PullRequestInfo, PullReviewsData, PullsListData} from '../pr-collector/pullRequests'
import {Unpacked} from '../pr-collector/utils'
import {TagInfo} from '../pr-collector/tags.js'
import {DiffInfo} from '../pr-collector/commits.js'
import {CommentInfo, PullData, PullRequestInfo, PullReviewsData, PullsListData} from '../pr-collector/pullRequests.js'
import {Unpacked} from '../pr-collector/utils.js'
import moment from 'moment'
export class GithubRepository extends BaseRepository {
async getDiffRemote(owner: string, repo: string, base: string, head: string): Promise<DiffInfo> {
@@ -20,7 +20,7 @@ export class GithubRepository extends BaseRepository {
// This is because the GitHub API limits the number of commits returned in a single response.
let commits: RestEndpointMethodTypes['repos']['compareCommits']['response']['data']['commits'] = []
let compareHead = head
// eslint-disable-next-line no-constant-condition
while (true) {
const compareResult = await this.octokit.repos.compareCommits({
owner,
@@ -249,7 +249,7 @@ export class GithubRepository extends BaseRepository {
const release: ReleaseInformation = response.data as ReleaseInformation
tagInfo.date = moment(release.created_at)
core.info(`️ Retrieved information about the release associated with ${tagInfo.name} from the GitHub API`)
} catch (error) {
} catch {
tagInfo = await this.getTagByCreateTime(repositoryPath, tagInfo)
}
return tagInfo
+11 -23
View File
@@ -1,6 +1,6 @@
import * as core from '@actions/core'
import {Category, Configuration, Placeholder, PlaceholderGroup, Property} from './configuration'
import {createOrSet, groupPlaceholders, haveCommonElementsArr, haveEveryElementsArr, mergeMaps} from './utils'
import {Category, Configuration, Placeholder, PlaceholderGroup, Property} from './configuration.js'
import {createOrSet, groupPlaceholders, haveCommonElementsArr, haveEveryElementsArr, mergeMaps} from './utils.js'
import {
CommentInfo,
EMPTY_COMMENT_INFO,
@@ -9,12 +9,12 @@ import {
PullRequestInfo,
retrieveProperty,
sortPullRequests
} from './pr-collector/pullRequests'
import {DiffInfo} from './pr-collector/commits'
import {transformStringToOptionalValue, transformStringToValues, validateRegex} from './pr-collector/regexUtils'
import {ChangelogStrings, GroupedTemplateContext, PrStrings, Regex, RegexTransformer, TemplateContext} from './pr-collector/types'
import {ReleaseNotesOptions} from './releaseNotesBuilder'
import {matchesRules} from './regexUtils'
} from './pr-collector/pullRequests.js'
import {DiffInfo} from './pr-collector/commits.js'
import {transformStringToOptionalValue, transformStringToValues, validateRegex} from './pr-collector/regexUtils.js'
import {ChangelogStrings, GroupedTemplateContext, PrStrings, Regex, RegexTransformer, TemplateContext} from './pr-collector/types.js'
import {ReleaseNotesOptions} from './releaseNotesBuilder.js'
import {matchesRules} from './regexUtils.js'
let CLEAR = false
@@ -315,14 +315,12 @@ function buildPrStringsAndFillCategoryEntries(
}
}
const prStrings: PrStrings = {
return {
categorizedList: categorizedPrs,
uncategorizedList: uncategorizedPrs,
openList: openPrs,
ignoredList: ignoredPrs
}
return prStrings
}
function buildChangelogStrings(flatCategories: Category[], prStrings: PrStrings): ChangelogStrings {
@@ -371,14 +369,12 @@ function buildChangelogStrings(flatCategories: Category[], prStrings: PrStrings)
}
}
const changelogStrings: ChangelogStrings = {
return {
categorized: changelogCategorized,
uncategorized: changelogUncategorized,
open: changelogOpen,
ignored: changelogIgnored
}
return changelogStrings
}
function buildReleaseNotesTemplateContext(
@@ -550,15 +546,7 @@ export function renderEmptyChangelogTemplate(template: string, options: ReleaseN
const releaseNotesTemplateContext = buildCoreReleaseNotesTemplateContext(options)
const renderedEmptyChangelogTemplate = renderTemplateAndFillPlaceholderContext(
template,
releaseNotesTemplateContext,
placeholders,
undefined,
options.configuration
)
return renderedEmptyChangelogTemplate
return renderTemplateAndFillPlaceholderContext(template, releaseNotesTemplateContext, placeholders, undefined, options.configuration)
}
function buildCoreReleaseNotesTemplateContext(options: ReleaseNotesOptions): TemplateContext {
+7 -7
View File
@@ -1,11 +1,11 @@
import * as core from '@actions/core'
import * as fs from 'fs'
import * as path from 'path'
import {Configuration, DefaultCommitConfiguration, DefaultConfiguration, Placeholder} from './configuration'
import {Configuration, DefaultCommitConfiguration, DefaultConfiguration, Placeholder} from './configuration.js'
import moment from 'moment'
import {DiffInfo} from './pr-collector/commits'
import {PullRequestInfo} from './pr-collector/pullRequests'
import {Data, ReleaseNotesOptions} from './releaseNotesBuilder'
import {DiffInfo} from './pr-collector/commits.js'
import {PullRequestInfo} from './pr-collector/pullRequests.js'
import {Data, ReleaseNotesOptions} from './releaseNotesBuilder.js'
import {env} from 'process'
/**
@@ -118,7 +118,7 @@ export function checkExportedData(exportCache: boolean, cacheInput: string | nul
}
export function resolveMode(mode: string | undefined, commitMode: boolean): 'PR' | 'COMMIT' | 'HYBRID' {
if (commitMode === true) {
if (commitMode) {
return 'COMMIT'
}
@@ -179,10 +179,10 @@ function readConfiguration(filename: string): Configuration | undefined {
export function parseConfiguration(config: string): Configuration | undefined {
try {
// for compatibility with the `yml` file we require to use `#{{}}` instead of `${{}}` - replace it here.
const configurationJSON: Configuration = JSON.parse(config.replace(/\${{/g, '#{{'))
return configurationJSON
return JSON.parse(config.replace(/\${{/g, '#{{'))
} catch (error) {
core.info(`⚠️ Configuration provided, but it couldn't be parsed. Fallback to Defaults.`)
core.debug(`Error parsing configuration: ${error}`)
return undefined
}
}
+6 -3
View File
@@ -1,13 +1,16 @@
{
"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'. */
"target": "ESNext", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */
"module": "NodeNext", /* 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. */
"strictPropertyInitialization": true,
"noImplicitThis": true,
"moduleResolution": "Node16",
"esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */
"lib": [ "ES2021.String", "dom"] /* Enable custom `ES2021.String` extension in typescript for `replaceAll` */
"lib": [ "ESNext","ES2021.String", "dom"] /* Enable custom `ES2021.String` extension in typescript for `replaceAll` */
},
"exclude": ["node_modules", "__tests__/*.ts", "**/*.test.ts", "**/**/*.test.ts"],
}