keep-a-changelog 3.0.4 → 3.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/src/Change.js CHANGED
@@ -1,33 +1,32 @@
1
1
  export default class Change {
2
- title;
3
- description;
4
- issues = [];
5
- static extractIssues(text, issues) {
6
- return text
7
- .replace(/(^|[^\\])\[#(\d+)\](?=[^\(]|$)/g, (_, start, index) => {
8
- if (!issues.includes(index)) {
9
- issues.push(index);
10
- }
11
- return `${start}[#${index}]`;
12
- })
13
- .replace(/(^|[\s,])#(\d+)(?=[\s,\.]|$)/g, (_, start, index) => {
14
- if (!issues.includes(index)) {
15
- issues.push(index);
16
- }
17
- return `${start}[#${index}]`;
18
- });
19
- }
20
- constructor(title, description = "") {
21
- this.title = Change.extractIssues(title, this.issues);
22
- this.description = Change.extractIssues(description, this.issues);
23
- }
24
- toString(bulletStyle = "-") {
25
- let t = this.title.split("\n").map((line) => ` ${line}`.trimEnd());
26
- t[0] = bulletStyle + t[0].substr(1);
27
- if (this.description) {
28
- t.push("");
29
- t = t.concat(this.description.split("\n").map((line) => ` ${line}`.trimEnd()));
30
- }
31
- return t.join("\n").trim();
2
+ title;
3
+ description;
4
+ issues = [];
5
+ static extractIssues(text, issues) {
6
+ return text.replace(/(^|[^\\])\[#(\d+)\](?=[^\(]|$)/g, (_, start, index)=>{
7
+ if (!issues.includes(index)) {
8
+ issues.push(index);
9
+ }
10
+ return `${start}[#${index}]`;
11
+ }).replace(/(^|[\s,])#(\d+)(?=[\s,\.]|$)/g, (_, start, index)=>{
12
+ if (!issues.includes(index)) {
13
+ issues.push(index);
14
+ }
15
+ return `${start}[#${index}]`;
16
+ });
17
+ }
18
+ constructor(title, description = ""){
19
+ this.title = Change.extractIssues(title, this.issues);
20
+ this.description = Change.extractIssues(description, this.issues);
21
+ }
22
+ toString(bulletStyle = "-") {
23
+ let t = this.title.split("\n").map((line)=>` ${line}`.trimEnd());
24
+ t[0] = bulletStyle + t[0].substr(1);
25
+ if (this.description) {
26
+ t.push("");
27
+ t = t.concat(this.description.split("\n").map((line)=>` ${line}`.trimEnd()));
32
28
  }
29
+ return t.join("\n").trim();
30
+ }
33
31
  }
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpbGU6Ly8vVXNlcnMvb3NjYXJvdGVyby93d3cva2VlcC1hLWNoYW5nZWxvZy9zcmMvQ2hhbmdlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGNsYXNzIENoYW5nZSB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGlzc3Vlczogc3RyaW5nW10gPSBbXTtcblxuICBzdGF0aWMgZXh0cmFjdElzc3Vlcyh0ZXh0OiBzdHJpbmcsIGlzc3Vlczogc3RyaW5nW10pOiBzdHJpbmcge1xuICAgIHJldHVybiB0ZXh0XG4gICAgICAucmVwbGFjZSgvKF58W15cXFxcXSlcXFsjKFxcZCspXFxdKD89W15cXChdfCQpL2csIChfLCBzdGFydCwgaW5kZXgpID0+IHtcbiAgICAgICAgaWYgKCFpc3N1ZXMuaW5jbHVkZXMoaW5kZXgpKSB7XG4gICAgICAgICAgaXNzdWVzLnB1c2goaW5kZXgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGAke3N0YXJ0fVsjJHtpbmRleH1dYDtcbiAgICAgIH0pXG4gICAgICAucmVwbGFjZSgvKF58W1xccyxdKSMoXFxkKykoPz1bXFxzLFxcLl18JCkvZywgKF8sIHN0YXJ0LCBpbmRleCkgPT4ge1xuICAgICAgICBpZiAoIWlzc3Vlcy5pbmNsdWRlcyhpbmRleCkpIHtcbiAgICAgICAgICBpc3N1ZXMucHVzaChpbmRleCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYCR7c3RhcnR9WyMke2luZGV4fV1gO1xuICAgICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcih0aXRsZTogc3RyaW5nLCBkZXNjcmlwdGlvbiA9IFwiXCIpIHtcbiAgICB0aGlzLnRpdGxlID0gQ2hhbmdlLmV4dHJhY3RJc3N1ZXModGl0bGUsIHRoaXMuaXNzdWVzKTtcbiAgICB0aGlzLmRlc2NyaXB0aW9uID0gQ2hhbmdlLmV4dHJhY3RJc3N1ZXMoZGVzY3JpcHRpb24sIHRoaXMuaXNzdWVzKTtcbiAgfVxuXG4gIHRvU3RyaW5nKGJ1bGxldFN0eWxlID0gXCItXCIpOiBzdHJpbmcge1xuICAgIGxldCB0ID0gdGhpcy50aXRsZS5zcGxpdChcIlxcblwiKS5tYXAoKGxpbmUpID0+IGAgICR7bGluZX1gLnRyaW1FbmQoKSk7XG4gICAgdFswXSA9IGJ1bGxldFN0eWxlICsgdFswXS5zdWJzdHIoMSk7XG5cbiAgICBpZiAodGhpcy5kZXNjcmlwdGlvbikge1xuICAgICAgdC5wdXNoKFwiXCIpO1xuXG4gICAgICB0ID0gdC5jb25jYXQoXG4gICAgICAgIHRoaXMuZGVzY3JpcHRpb24uc3BsaXQoXCJcXG5cIikubWFwKChsaW5lKSA9PiBgICAke2xpbmV9YC50cmltRW5kKCkpLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdC5qb2luKFwiXFxuXCIpLnRyaW0oKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWUsTUFBTTtFQUNuQixNQUFjO0VBQ2QsWUFBb0I7RUFDcEIsU0FBbUIsRUFBRSxDQUFDO0VBRXRCLE9BQU8sY0FBYyxJQUFZLEVBQUUsTUFBZ0IsRUFBVTtJQUMzRCxPQUFPLEtBQ0osT0FBTyxDQUFDLG1DQUFtQyxDQUFDLEdBQUcsT0FBTztNQUNyRCxJQUFJLENBQUMsT0FBTyxRQUFRLENBQUMsUUFBUTtRQUMzQixPQUFPLElBQUksQ0FBQztNQUNkO01BRUEsT0FBTyxHQUFHLE1BQU0sRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzlCLEdBQ0MsT0FBTyxDQUFDLGlDQUFpQyxDQUFDLEdBQUcsT0FBTztNQUNuRCxJQUFJLENBQUMsT0FBTyxRQUFRLENBQUMsUUFBUTtRQUMzQixPQUFPLElBQUksQ0FBQztNQUNkO01BRUEsT0FBTyxHQUFHLE1BQU0sRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzlCO0VBQ0o7RUFFQSxZQUFZLEtBQWEsRUFBRSxjQUFjLEVBQUUsQ0FBRTtJQUMzQyxJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sYUFBYSxDQUFDLE9BQU8sSUFBSSxDQUFDLE1BQU07SUFDcEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLGFBQWEsQ0FBQyxhQUFhLElBQUksQ0FBQyxNQUFNO0VBQ2xFO0VBRUEsU0FBUyxjQUFjLEdBQUcsRUFBVTtJQUNsQyxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxPQUFTLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxPQUFPO0lBQ2hFLENBQUMsQ0FBQyxFQUFFLEdBQUcsY0FBYyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQztJQUVqQyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7TUFDcEIsRUFBRSxJQUFJLENBQUM7TUFFUCxJQUFJLEVBQUUsTUFBTSxDQUNWLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsT0FBUyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsT0FBTztJQUVsRTtJQUVBLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxJQUFJO0VBQzFCO0FBQ0YifQ==
@@ -0,0 +1,24 @@
1
+ import type Release from "./Release.js";
2
+ import type { SemVer } from "./deps.js";
3
+ export default class Changelog {
4
+ flag?: string;
5
+ title: string;
6
+ description: string;
7
+ head: string;
8
+ footer?: string;
9
+ url?: string;
10
+ releases: Release[];
11
+ tagNameBuilder?: (release: Release) => string;
12
+ /** @deprecated: Use tagLinkBuilder() instead */ compareLinkBuilder?: (previous: Release, release: Release) => string;
13
+ tagLinkBuilder?: (url: string, tag: string, previous?: string, head?: string) => string;
14
+ format: "compact" | "markdownlint";
15
+ bulletStyle: "-" | "*" | "+";
16
+ autoSortReleases: boolean;
17
+ constructor(title: string, description?: string);
18
+ addRelease(release: Release): this;
19
+ findRelease(version?: SemVer | string): Release | undefined;
20
+ sortReleases(): void;
21
+ compareLink(previous: Release, release: Release): string;
22
+ tagName(release: Release): string;
23
+ toString(): string;
24
+ }
package/src/Changelog.js CHANGED
@@ -1,130 +1,129 @@
1
1
  import { equals, parse } from "./deps.js";
2
2
  export default class Changelog {
3
- flag;
4
- title;
5
- description;
6
- head = "HEAD";
7
- footer;
8
- url;
9
- releases = [];
10
- tagNameBuilder;
11
- /** @deprecated: Use tagLinkBuilder() instead */
12
- compareLinkBuilder;
13
- tagLinkBuilder;
14
- format = "compact";
15
- bulletStyle = "-";
16
- autoSortReleases = true;
17
- constructor(title, description = "") {
18
- this.title = title;
19
- this.description = description;
3
+ flag;
4
+ title;
5
+ description;
6
+ head = "HEAD";
7
+ footer;
8
+ url;
9
+ releases = [];
10
+ tagNameBuilder;
11
+ /** @deprecated: Use tagLinkBuilder() instead */ compareLinkBuilder;
12
+ tagLinkBuilder;
13
+ format = "compact";
14
+ bulletStyle = "-";
15
+ autoSortReleases = true;
16
+ constructor(title, description = ""){
17
+ this.title = title;
18
+ this.description = description;
19
+ }
20
+ addRelease(release) {
21
+ this.releases.push(release);
22
+ if (this.autoSortReleases) {
23
+ this.sortReleases();
20
24
  }
21
- addRelease(release) {
22
- this.releases.push(release);
23
- if (this.autoSortReleases) {
24
- this.sortReleases();
25
- }
26
- release.changelog = this;
27
- return this;
25
+ release.changelog = this;
26
+ return this;
27
+ }
28
+ findRelease(version) {
29
+ if (!version) {
30
+ return this.releases.find((release)=>!release.version);
28
31
  }
29
- findRelease(version) {
30
- if (!version) {
31
- return this.releases.find((release) => !release.version);
32
- }
33
- const parsed = typeof version === "string" ? parse(version) : version;
34
- return this.releases.find((release) => release.parsedVersion && equals(release.parsedVersion, parsed));
32
+ const parsed = typeof version === "string" ? parse(version) : version;
33
+ return this.releases.find((release)=>release.parsedVersion && equals(release.parsedVersion, parsed));
34
+ }
35
+ sortReleases() {
36
+ this.releases.sort((a, b)=>a.compare(b));
37
+ }
38
+ compareLink(previous, release) {
39
+ if (this.compareLinkBuilder) {
40
+ return this.compareLinkBuilder(previous, release);
35
41
  }
36
- sortReleases() {
37
- this.releases.sort((a, b) => a.compare(b));
42
+ if (this.tagLinkBuilder) {
43
+ const url = this.url;
44
+ if (!previous) {
45
+ return this.tagLinkBuilder(this.url, this.tagName(release), undefined, this.head);
46
+ }
47
+ if (!release.date || !release.version) {
48
+ return this.tagLinkBuilder(url, this.head, this.tagName(previous), this.head);
49
+ }
50
+ return this.tagLinkBuilder(url, this.tagName(release), this.tagName(previous), this.head);
38
51
  }
39
- compareLink(previous, release) {
40
- if (this.compareLinkBuilder) {
41
- return this.compareLinkBuilder(previous, release);
42
- }
43
- if (this.tagLinkBuilder) {
44
- const url = this.url;
45
- if (!previous) {
46
- return this.tagLinkBuilder(this.url, this.tagName(release), undefined, this.head);
47
- }
48
- if (!release.date || !release.version) {
49
- return this.tagLinkBuilder(url, this.head, this.tagName(previous), this.head);
50
- }
51
- return this.tagLinkBuilder(url, this.tagName(release), this.tagName(previous), this.head);
52
- }
53
- if (!previous) {
54
- return `${this.url}/releases/tag/${this.tagName(release)}`;
55
- }
56
- if (!release.date || !release.version) {
57
- return `${this.url}/compare/${this.tagName(previous)}...${this.head}`;
58
- }
59
- return `${this.url}/compare/${this.tagName(previous)}...${this.tagName(release)}`;
52
+ if (!previous) {
53
+ return `${this.url}/releases/tag/${this.tagName(release)}`;
60
54
  }
61
- tagName(release) {
62
- if (this.tagNameBuilder) {
63
- return this.tagNameBuilder(release);
64
- }
65
- return `v${release.version}`;
55
+ if (!release.date || !release.version) {
56
+ return `${this.url}/compare/${this.tagName(previous)}...${this.head}`;
66
57
  }
67
- toString() {
68
- const t = [];
69
- if (this.flag) {
70
- t.push(`<!-- ${this.flag} -->`);
71
- t.push("");
72
- }
73
- t.push(`# ${this.title}`);
74
- if (this.format === "markdownlint") {
75
- t.push("");
76
- }
77
- const links = [];
78
- const compareLinks = [];
79
- const description = this.description.trim() ||
80
- `All notable changes to this project will be documented in this file.
58
+ return `${this.url}/compare/${this.tagName(previous)}...${this.tagName(release)}`;
59
+ }
60
+ tagName(release) {
61
+ if (this.tagNameBuilder) {
62
+ return this.tagNameBuilder(release);
63
+ }
64
+ return `v${release.version}`;
65
+ }
66
+ toString() {
67
+ const t = [];
68
+ if (this.flag) {
69
+ t.push(`<!-- ${this.flag} -->`);
70
+ t.push("");
71
+ }
72
+ t.push(`# ${this.title}`);
73
+ if (this.format === "markdownlint") {
74
+ t.push("");
75
+ }
76
+ const links = [];
77
+ const compareLinks = [];
78
+ const description = this.description.trim() || `All notable changes to this project will be documented in this file.
81
79
 
82
80
  The format is based on [Keep a Changelog](https://keepachangelog.com/)
83
81
  and this project adheres to [Semantic Versioning](https://semver.org/).`;
84
- if (description) {
85
- t.push(description);
86
- }
87
- this.releases.forEach((release) => {
88
- t.push("");
89
- t.push(release.toString(this));
90
- release.getLinks(this).forEach((link) => {
91
- if (!links.includes(link)) {
92
- links.push(link);
93
- }
94
- });
95
- const compareLink = release.getCompareLink(this);
96
- if (compareLink) {
97
- compareLinks.push(compareLink);
98
- }
99
- });
100
- if (links.length) {
101
- t.push("");
102
- links.sort(compare);
103
- links.forEach((link) => t.push(link));
104
- }
105
- if (compareLinks.length) {
106
- t.push("");
107
- compareLinks.forEach((link) => t.push(link));
108
- }
109
- t.push("");
110
- if (this.footer) {
111
- t.push("---");
112
- t.push("");
113
- t.push(this.footer);
114
- t.push("");
82
+ if (description) {
83
+ t.push(description);
84
+ }
85
+ this.releases.forEach((release)=>{
86
+ t.push("");
87
+ t.push(release.toString(this));
88
+ release.getLinks(this).forEach((link)=>{
89
+ if (!links.includes(link)) {
90
+ links.push(link);
115
91
  }
116
- return t.join("\n");
92
+ });
93
+ const compareLink = release.getCompareLink(this);
94
+ if (compareLink) {
95
+ compareLinks.push(compareLink);
96
+ }
97
+ });
98
+ if (links.length) {
99
+ t.push("");
100
+ links.sort(compare);
101
+ links.forEach((link)=>t.push(link));
117
102
  }
118
- }
119
- function compare(a, b) {
120
- if (a === b) {
121
- return 0;
103
+ if (compareLinks.length) {
104
+ t.push("");
105
+ compareLinks.forEach((link)=>t.push(link));
122
106
  }
123
- const reg = /^\[#(\d+)\]:/;
124
- const aNumber = a.match(reg);
125
- const bNumber = b.match(reg);
126
- if (aNumber && bNumber) {
127
- return parseInt(aNumber[1]) - parseInt(bNumber[1]);
107
+ t.push("");
108
+ if (this.footer) {
109
+ t.push("---");
110
+ t.push("");
111
+ t.push(this.footer);
112
+ t.push("");
128
113
  }
129
- return a < b ? -1 : 1;
114
+ return t.join("\n");
115
+ }
116
+ }
117
+ function compare(a, b) {
118
+ if (a === b) {
119
+ return 0;
120
+ }
121
+ const reg = /^\[#(\d+)\]:/;
122
+ const aNumber = a.match(reg);
123
+ const bNumber = b.match(reg);
124
+ if (aNumber && bNumber) {
125
+ return parseInt(aNumber[1]) - parseInt(bNumber[1]);
126
+ }
127
+ return a < b ? -1 : 1;
130
128
  }
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpbGU6Ly8vVXNlcnMvb3NjYXJvdGVyby93d3cva2VlcC1hLWNoYW5nZWxvZy9zcmMvQ2hhbmdlbG9nLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGVxdWFscywgcGFyc2UgfSBmcm9tIFwiLi9kZXBzLmpzXCI7XG5pbXBvcnQgdHlwZSBSZWxlYXNlIGZyb20gXCIuL1JlbGVhc2UuanNcIjtcbmltcG9ydCB0eXBlIHsgU2VtVmVyIH0gZnJvbSBcIi4vZGVwcy5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDaGFuZ2Vsb2cge1xuICBmbGFnPzogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBoZWFkID0gXCJIRUFEXCI7XG4gIGZvb3Rlcj86IHN0cmluZztcbiAgdXJsPzogc3RyaW5nO1xuICByZWxlYXNlczogUmVsZWFzZVtdID0gW107XG4gIHRhZ05hbWVCdWlsZGVyPzogKHJlbGVhc2U6IFJlbGVhc2UpID0+IHN0cmluZztcbiAgLyoqIEBkZXByZWNhdGVkOiBVc2UgdGFnTGlua0J1aWxkZXIoKSBpbnN0ZWFkICovXG4gIGNvbXBhcmVMaW5rQnVpbGRlcj86IChwcmV2aW91czogUmVsZWFzZSwgcmVsZWFzZTogUmVsZWFzZSkgPT4gc3RyaW5nO1xuICB0YWdMaW5rQnVpbGRlcj86IChcbiAgICB1cmw6IHN0cmluZyxcbiAgICB0YWc6IHN0cmluZyxcbiAgICBwcmV2aW91cz86IHN0cmluZyxcbiAgICBoZWFkPzogc3RyaW5nLFxuICApID0+IHN0cmluZztcbiAgZm9ybWF0OiBcImNvbXBhY3RcIiB8IFwibWFya2Rvd25saW50XCIgPSBcImNvbXBhY3RcIjtcbiAgYnVsbGV0U3R5bGU6IFwiLVwiIHwgXCIqXCIgfCBcIitcIiA9IFwiLVwiO1xuICBhdXRvU29ydFJlbGVhc2VzID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3Rvcih0aXRsZTogc3RyaW5nLCBkZXNjcmlwdGlvbiA9IFwiXCIpIHtcbiAgICB0aGlzLnRpdGxlID0gdGl0bGU7XG4gICAgdGhpcy5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uO1xuICB9XG5cbiAgYWRkUmVsZWFzZShyZWxlYXNlOiBSZWxlYXNlKTogdGhpcyB7XG4gICAgdGhpcy5yZWxlYXNlcy5wdXNoKHJlbGVhc2UpO1xuICAgIGlmICh0aGlzLmF1dG9Tb3J0UmVsZWFzZXMpIHtcbiAgICAgIHRoaXMuc29ydFJlbGVhc2VzKCk7XG4gICAgfVxuICAgIHJlbGVhc2UuY2hhbmdlbG9nID0gdGhpcztcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZmluZFJlbGVhc2UodmVyc2lvbj86IFNlbVZlciB8IHN0cmluZyk6IFJlbGVhc2UgfCB1bmRlZmluZWQge1xuICAgIGlmICghdmVyc2lvbikge1xuICAgICAgcmV0dXJuIHRoaXMucmVsZWFzZXMuZmluZCgocmVsZWFzZSkgPT4gIXJlbGVhc2UudmVyc2lvbik7XG4gICAgfVxuICAgIGNvbnN0IHBhcnNlZCA9IHR5cGVvZiB2ZXJzaW9uID09PSBcInN0cmluZ1wiID8gcGFyc2UodmVyc2lvbikgOiB2ZXJzaW9uO1xuXG4gICAgcmV0dXJuIHRoaXMucmVsZWFzZXMuZmluZCgocmVsZWFzZSkgPT5cbiAgICAgIHJlbGVhc2UucGFyc2VkVmVyc2lvbiAmJiBlcXVhbHMocmVsZWFzZS5wYXJzZWRWZXJzaW9uLCBwYXJzZWQpXG4gICAgKTtcbiAgfVxuXG4gIHNvcnRSZWxlYXNlcygpOiB2b2lkIHtcbiAgICB0aGlzLnJlbGVhc2VzLnNvcnQoKGEsIGIpID0+IGEuY29tcGFyZShiKSk7XG4gIH1cblxuICBjb21wYXJlTGluayhwcmV2aW91czogUmVsZWFzZSwgcmVsZWFzZTogUmVsZWFzZSk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuY29tcGFyZUxpbmtCdWlsZGVyKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb21wYXJlTGlua0J1aWxkZXIocHJldmlvdXMsIHJlbGVhc2UpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnRhZ0xpbmtCdWlsZGVyKSB7XG4gICAgICBjb25zdCB1cmwgPSB0aGlzLnVybCE7XG5cbiAgICAgIGlmICghcHJldmlvdXMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFnTGlua0J1aWxkZXIoXG4gICAgICAgICAgdGhpcy51cmwhLFxuICAgICAgICAgIHRoaXMudGFnTmFtZShyZWxlYXNlKSxcbiAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgdGhpcy5oZWFkLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXJlbGVhc2UuZGF0ZSB8fCAhcmVsZWFzZS52ZXJzaW9uKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhZ0xpbmtCdWlsZGVyKFxuICAgICAgICAgIHVybCxcbiAgICAgICAgICB0aGlzLmhlYWQsXG4gICAgICAgICAgdGhpcy50YWdOYW1lKHByZXZpb3VzKSxcbiAgICAgICAgICB0aGlzLmhlYWQsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLnRhZ0xpbmtCdWlsZGVyKFxuICAgICAgICB1cmwsXG4gICAgICAgIHRoaXMudGFnTmFtZShyZWxlYXNlKSxcbiAgICAgICAgdGhpcy50YWdOYW1lKHByZXZpb3VzKSxcbiAgICAgICAgdGhpcy5oZWFkLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoIXByZXZpb3VzKSB7XG4gICAgICByZXR1cm4gYCR7dGhpcy51cmx9L3JlbGVhc2VzL3RhZy8ke3RoaXMudGFnTmFtZShyZWxlYXNlKX1gO1xuICAgIH1cblxuICAgIGlmICghcmVsZWFzZS5kYXRlIHx8ICFyZWxlYXNlLnZlcnNpb24pIHtcbiAgICAgIHJldHVybiBgJHt0aGlzLnVybH0vY29tcGFyZS8ke3RoaXMudGFnTmFtZShwcmV2aW91cyl9Li4uJHt0aGlzLmhlYWR9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gYCR7dGhpcy51cmx9L2NvbXBhcmUvJHt0aGlzLnRhZ05hbWUocHJldmlvdXMpfS4uLiR7XG4gICAgICB0aGlzLnRhZ05hbWUocmVsZWFzZSlcbiAgICB9YDtcbiAgfVxuXG4gIHRhZ05hbWUocmVsZWFzZTogUmVsZWFzZSk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMudGFnTmFtZUJ1aWxkZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLnRhZ05hbWVCdWlsZGVyKHJlbGVhc2UpO1xuICAgIH1cblxuICAgIHJldHVybiBgdiR7cmVsZWFzZS52ZXJzaW9ufWA7XG4gIH1cblxuICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIGNvbnN0IHQgPSBbXTtcblxuICAgIGlmICh0aGlzLmZsYWcpIHtcbiAgICAgIHQucHVzaChgPCEtLSAke3RoaXMuZmxhZ30gLS0+YCk7XG4gICAgICB0LnB1c2goXCJcIik7XG4gICAgfVxuXG4gICAgdC5wdXNoKGAjICR7dGhpcy50aXRsZX1gKTtcblxuICAgIGlmICh0aGlzLmZvcm1hdCA9PT0gXCJtYXJrZG93bmxpbnRcIikge1xuICAgICAgdC5wdXNoKFwiXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IGxpbmtzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IGNvbXBhcmVMaW5rczogc3RyaW5nW10gPSBbXTtcblxuICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gdGhpcy5kZXNjcmlwdGlvbi50cmltKCkgfHxcbiAgICAgIGBBbGwgbm90YWJsZSBjaGFuZ2VzIHRvIHRoaXMgcHJvamVjdCB3aWxsIGJlIGRvY3VtZW50ZWQgaW4gdGhpcyBmaWxlLlxuXG5UaGUgZm9ybWF0IGlzIGJhc2VkIG9uIFtLZWVwIGEgQ2hhbmdlbG9nXShodHRwczovL2tlZXBhY2hhbmdlbG9nLmNvbS8pXG5hbmQgdGhpcyBwcm9qZWN0IGFkaGVyZXMgdG8gW1NlbWFudGljIFZlcnNpb25pbmddKGh0dHBzOi8vc2VtdmVyLm9yZy8pLmA7XG5cbiAgICBpZiAoZGVzY3JpcHRpb24pIHtcbiAgICAgIHQucHVzaChkZXNjcmlwdGlvbik7XG4gICAgfVxuXG4gICAgdGhpcy5yZWxlYXNlcy5mb3JFYWNoKChyZWxlYXNlKSA9PiB7XG4gICAgICB0LnB1c2goXCJcIik7XG4gICAgICB0LnB1c2gocmVsZWFzZS50b1N0cmluZyh0aGlzKSk7XG5cbiAgICAgIHJlbGVhc2UuZ2V0TGlua3ModGhpcykuZm9yRWFjaCgobGluaykgPT4ge1xuICAgICAgICBpZiAoIWxpbmtzLmluY2x1ZGVzKGxpbmspKSB7XG4gICAgICAgICAgbGlua3MucHVzaChsaW5rKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGNvbXBhcmVMaW5rID0gcmVsZWFzZS5nZXRDb21wYXJlTGluayh0aGlzKTtcblxuICAgICAgaWYgKGNvbXBhcmVMaW5rKSB7XG4gICAgICAgIGNvbXBhcmVMaW5rcy5wdXNoKGNvbXBhcmVMaW5rKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChsaW5rcy5sZW5ndGgpIHtcbiAgICAgIHQucHVzaChcIlwiKTtcbiAgICAgIGxpbmtzLnNvcnQoY29tcGFyZSk7XG4gICAgICBsaW5rcy5mb3JFYWNoKChsaW5rKSA9PiB0LnB1c2gobGluaykpO1xuICAgIH1cblxuICAgIGlmIChjb21wYXJlTGlua3MubGVuZ3RoKSB7XG4gICAgICB0LnB1c2goXCJcIik7XG5cbiAgICAgIGNvbXBhcmVMaW5rcy5mb3JFYWNoKChsaW5rKSA9PiB0LnB1c2gobGluaykpO1xuICAgIH1cblxuICAgIHQucHVzaChcIlwiKTtcblxuICAgIGlmICh0aGlzLmZvb3Rlcikge1xuICAgICAgdC5wdXNoKFwiLS0tXCIpO1xuICAgICAgdC5wdXNoKFwiXCIpO1xuICAgICAgdC5wdXNoKHRoaXMuZm9vdGVyKTtcbiAgICAgIHQucHVzaChcIlwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdC5qb2luKFwiXFxuXCIpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNvbXBhcmUoYTogc3RyaW5nLCBiOiBzdHJpbmcpIHtcbiAgaWYgKGEgPT09IGIpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuICBjb25zdCByZWcgPSAvXlxcWyMoXFxkKylcXF06LztcbiAgY29uc3QgYU51bWJlciA9IGEubWF0Y2gocmVnKTtcbiAgY29uc3QgYk51bWJlciA9IGIubWF0Y2gocmVnKTtcblxuICBpZiAoYU51bWJlciAmJiBiTnVtYmVyKSB7XG4gICAgcmV0dXJuIHBhcnNlSW50KGFOdW1iZXJbMV0pIC0gcGFyc2VJbnQoYk51bWJlclsxXSk7XG4gIH1cblxuICByZXR1cm4gYSA8IGIgPyAtMSA6IDE7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyxNQUFNLEVBQUUsS0FBSyxRQUFRLFlBQVk7QUFJMUMsZUFBZSxNQUFNO0VBQ25CLEtBQWM7RUFDZCxNQUFjO0VBQ2QsWUFBb0I7RUFDcEIsT0FBTyxPQUFPO0VBQ2QsT0FBZ0I7RUFDaEIsSUFBYTtFQUNiLFdBQXNCLEVBQUUsQ0FBQztFQUN6QixlQUE4QztFQUM5Qyw4Q0FBOEMsR0FDOUMsbUJBQXFFO0VBQ3JFLGVBS1k7RUFDWixTQUFxQyxVQUFVO0VBQy9DLGNBQStCLElBQUk7RUFDbkMsbUJBQW1CLEtBQUs7RUFFeEIsWUFBWSxLQUFhLEVBQUUsY0FBYyxFQUFFLENBQUU7SUFDM0MsSUFBSSxDQUFDLEtBQUssR0FBRztJQUNiLElBQUksQ0FBQyxXQUFXLEdBQUc7RUFDckI7RUFFQSxXQUFXLE9BQWdCLEVBQVE7SUFDakMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDbkIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7TUFDekIsSUFBSSxDQUFDLFlBQVk7SUFDbkI7SUFDQSxRQUFRLFNBQVMsR0FBRyxJQUFJO0lBRXhCLE9BQU8sSUFBSTtFQUNiO0VBRUEsWUFBWSxPQUF5QixFQUF1QjtJQUMxRCxJQUFJLENBQUMsU0FBUztNQUNaLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFZLENBQUMsUUFBUSxPQUFPO0lBQ3pEO0lBQ0EsTUFBTSxTQUFTLE9BQU8sWUFBWSxXQUFXLE1BQU0sV0FBVztJQUU5RCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFB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
@@ -0,0 +1,29 @@
1
+ import Change from "./Change.js";
2
+ import type Changelog from "./Changelog.js";
3
+ import type { SemVer } from "./deps.js";
4
+ export default class Release {
5
+ changelog?: Changelog;
6
+ parsedVersion?: SemVer;
7
+ date?: Date;
8
+ yanked: boolean;
9
+ description: string;
10
+ changes: Map<string, Change[]>;
11
+ constructor(version?: string | SemVer, date?: string | Date, description?: string);
12
+ get version(): string | undefined;
13
+ compare(release: Release): number;
14
+ combineChanges(changes: Map<string, Change[]>): this;
15
+ isEmpty(): boolean;
16
+ setVersion(version?: string | SemVer): void;
17
+ setDate(date?: Date | string): void;
18
+ setYanked(yanked?: boolean): this;
19
+ addChange(type: string, change: Change | string): this;
20
+ added(change: Change | string): this;
21
+ changed(change: Change | string): this;
22
+ deprecated(change: Change | string): this;
23
+ removed(change: Change | string): this;
24
+ fixed(change: Change | string): this;
25
+ security(change: Change | string): this;
26
+ toString(changelog?: Changelog): string;
27
+ getCompareLink(changelog?: Changelog): string | undefined;
28
+ getLinks(changelog: Changelog): string[];
29
+ }