UNPKG

1.48 kBTypeScriptView Raw
1import { AsyncSeriesBailHook } from 'tapable';
2import { ICommitAuthor, IExtendedCommit } from './log-parse';
3import { ILabelDefinitionMap } from './release';
4import { ILogger } from './utils/logger';
5export interface IGenerateReleaseNotesOptions {
6 owner: string;
7 repo: string;
8 baseUrl: string;
9 jira?: string;
10 labels: ILabelDefinitionMap;
11}
12export interface IChangelogHooks {
13 renderChangelogLine: AsyncSeriesBailHook<[IExtendedCommit[], (commit: IExtendedCommit) => Promise<string>], string[] | void>;
14 renderChangelogTitle: AsyncSeriesBailHook<[string, {
15 [label: string]: string;
16 }], string | void>;
17 renderChangelogAuthor: AsyncSeriesBailHook<[ICommitAuthor, IExtendedCommit, IGenerateReleaseNotesOptions], string | void>;
18 renderChangelogAuthorLine: AsyncSeriesBailHook<[ICommitAuthor, string], string | void>;
19}
20export default class Changelog {
21 readonly hooks: IChangelogHooks;
22 private readonly logger;
23 private readonly options;
24 constructor(logger: ILogger, options: IGenerateReleaseNotesOptions);
25 loadDefaultHooks(): void;
26 generateReleaseNotes(commits: IExtendedCommit[]): Promise<string>;
27 createUserLink(author: ICommitAuthor, commit: IExtendedCommit): string | undefined;
28 /**
29 * Split commits into changelogTitle sections.
30 */
31 private splitCommits;
32 private createUserLinkList;
33 private generateCommitNote;
34 private createAuthorSection;
35 private createLabelSection;
36}