@mnaoumov/typescript-dev-toolkit 6.2.0 → 6.3.0

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.
@@ -0,0 +1,118 @@
1
+ /*
2
+ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
+ if you want to view the source, please visit the github repository of this plugin
4
+ */
5
+
6
+ import { renderGroupedChangelogSection } from "./changelog-grouping.mjs";
7
+ import { toChangelogCommitEntry } from "./version.mjs";
8
+ const BULLET_PREFIX = "- ";
9
+ const FULL_CHANGELOG_PREFIX = "**Full Changelog**:";
10
+ const SECTION_HEADING_PREFIX = "## ";
11
+ async function rewriteChangelog(changelog, source) {
12
+ const lines = changelog.replaceAll("\r\n", "\n").split("\n");
13
+ const firstHeadingIndex = lines.findIndex((line) => line.startsWith(SECTION_HEADING_PREFIX));
14
+ const headerLines = firstHeadingIndex === -1 ? lines : lines.slice(0, firstHeadingIndex);
15
+ const sections = firstHeadingIndex === -1 ? [] : splitSections(lines.slice(firstHeadingIndex));
16
+ const tags = new Set(source.tags);
17
+ const kept = [];
18
+ const rewritten = [];
19
+ const outputBlocks = [trimTrailingBlankLines(headerLines).join("\n")];
20
+ for (const [index, section] of sections.entries()) {
21
+ const keptReason = getKeptReason(section);
22
+ if (keptReason) {
23
+ kept.push({ reason: keptReason, version: section.version });
24
+ outputBlocks.push(trimTrailingBlankLines(section.rawLines).join("\n"));
25
+ continue;
26
+ }
27
+ const tag = toTag(section.version, tags);
28
+ const previousSection = sections[index + 1];
29
+ const previousTag = previousSection ? toTag(previousSection.version, tags) : void 0;
30
+ const isRangeKnown = tag !== void 0 && (previousSection === void 0 || previousTag !== void 0);
31
+ const commitMessages = isRangeKnown ? await source.getCommitMessages(previousTag, tag) : [];
32
+ const { entries, matchedCount } = matchBullets(section.bodyLines, commitMessages);
33
+ const oldBody = section.bodyLines.join("\n");
34
+ const newBody = renderGroupedChangelogSection(entries);
35
+ rewritten.push({ matchedCount, newBody, oldBody, tag, version: section.version });
36
+ outputBlocks.push(`${section.heading}
37
+
38
+ ${newBody}`);
39
+ }
40
+ return {
41
+ content: `${outputBlocks.filter((block) => block !== "").join("\n\n")}
42
+ `,
43
+ kept,
44
+ rewritten
45
+ };
46
+ }
47
+ function rewriteReleaseNotes(releaseBody, section, shouldOverwriteEdited = false) {
48
+ const lines = releaseBody.replaceAll("\r\n", "\n").trim().split("\n");
49
+ const linkIndex = findLastIndex(lines, (line) => line.startsWith(FULL_CHANGELOG_PREFIX));
50
+ const noteLines = linkIndex === -1 ? lines : lines.slice(0, linkIndex);
51
+ if (!shouldOverwriteEdited && toComparable(noteLines.join("\n")) !== toComparable(section.oldBody)) {
52
+ return null;
53
+ }
54
+ return linkIndex === -1 ? section.newBody : `${section.newBody}
55
+
56
+ ${lines.slice(linkIndex).join("\n")}`;
57
+ }
58
+ function findLastIndex(lines, isMatch) {
59
+ return lines.map((line) => isMatch(line)).lastIndexOf(true);
60
+ }
61
+ function findMatchingEntryIndex(entries, bullet) {
62
+ const comparable = toComparable(bullet);
63
+ const renderedIndex = entries.findIndex((entry) => toComparable(toRenderedLine(entry)) === comparable);
64
+ return renderedIndex === -1 ? entries.findIndex((entry) => toComparable(entry.entry) === comparable) : renderedIndex;
65
+ }
66
+ function getKeptReason(section) {
67
+ if (section.bodyLines.length === 0) {
68
+ return "the section is empty";
69
+ }
70
+ if (section.bodyLines.some((line) => !line.startsWith(BULLET_PREFIX))) {
71
+ return "the section is not a plain bullet list, so a person wrote or edited it";
72
+ }
73
+ return void 0;
74
+ }
75
+ function matchBullets(bodyLines, commitMessages) {
76
+ const unused = commitMessages.map((commitMessage) => toChangelogCommitEntry(commitMessage));
77
+ const entries = [];
78
+ let matchedCount = 0;
79
+ for (const line of bodyLines) {
80
+ const bullet = line.slice(BULLET_PREFIX.length).trim();
81
+ const index = findMatchingEntryIndex(unused, bullet);
82
+ if (index === -1) {
83
+ entries.push({ detailLines: [], entry: bullet, hasBreakingFooter: false, references: [] });
84
+ continue;
85
+ }
86
+ matchedCount++;
87
+ entries.push(...unused.splice(index, 1));
88
+ }
89
+ return { entries, matchedCount };
90
+ }
91
+ function splitSections(lines) {
92
+ const headingIndices = lines.map((line, index) => line.startsWith(SECTION_HEADING_PREFIX) ? index : -1).filter((index) => index !== -1);
93
+ return headingIndices.map((headingIndex, position) => toSection(lines.slice(headingIndex, headingIndices[position + 1] ?? lines.length)));
94
+ }
95
+ function toComparable(text) {
96
+ return text.replaceAll(/[`\\]/g, "").replaceAll(/\s+/g, " ").trim();
97
+ }
98
+ function toRenderedLine(entry) {
99
+ return entry.references.length === 0 ? entry.entry : `${entry.entry} (${entry.references.join(", ")})`;
100
+ }
101
+ function toSection(rawLines) {
102
+ const heading = rawLines.slice(0, 1).join("");
103
+ const bodyLines = rawLines.slice(1).filter((line) => line.trim() !== "");
104
+ const version = heading.slice(SECTION_HEADING_PREFIX.length).trim().split(/\s+/, 1).join("");
105
+ return { bodyLines, heading, rawLines, version };
106
+ }
107
+ function toTag(version, tags) {
108
+ return [version, `v${version}`].find((candidate) => tags.has(candidate));
109
+ }
110
+ function trimTrailingBlankLines(lines) {
111
+ const lastIndex = findLastIndex(lines, (line) => line.trim() !== "");
112
+ return lines.slice(0, lastIndex + 1);
113
+ }
114
+ export {
115
+ rewriteChangelog,
116
+ rewriteReleaseNotes
117
+ };
118
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NoYW5nZWxvZy1yZXdyaXRlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogUmV3cml0ZXMgdGhlIGFscmVhZHktcHVibGlzaGVkIHNlY3Rpb25zIG9mIGEgYENIQU5HRUxPRy5tZGAgaW50byB0aGUgYGdyb3VwZWRgIGxheW91dCBhIHJlbGVhc2Ugbm93IHdyaXRlcywgc28gYVxuICogcHJvamVjdCdzIGhpc3RvcnkgcmVhZHMgdGhlIHNhbWUgd2F5IGFzIGl0cyBuZXh0IHJlbGVhc2UuXG4gKlxuICogT25seSBhIHNlY3Rpb24gdGhhdCBpcyBzdGlsbCB0aGUgZmxhdCBsaXN0IG9mIGNvbW1pdCBzdWJqZWN0cyBhIHJlbGVhc2UgdXNlZCB0byB3cml0ZSBpcyByZXdyaXR0ZW4uIEl0cyBidWxsZXRzIGFyZVxuICogbWF0Y2hlZCBiYWNrIHRvIHRoZSBmaXJzdC1wYXJlbnQgY29tbWl0cyBvZiB0aGUgc2VjdGlvbidzIHRhZyByYW5nZSwgd2hpY2ggYnJpbmdzIGJhY2sgd2hhdCB0aGUgYnVsbGV0IGFsb25lIGxvc3Q6XG4gKiB0aGUgaXNzdWUgdGl0bGUgYW4gaXNzdWUtY2xvc2luZyBgcmUgIzxuPmAgbWVyZ2UgY2FycmllcyBpbiBpdHMgYm9keSwgYW5kIHRoZSBgQlJFQUtJTkcgQ0hBTkdFOmAgZm9vdGVyLiBBIGJ1bGxldCBub1xuICogY29tbWl0IG1hdGNoZXMgKHRoZSBoaXN0b3J5IHdhcyByZXdyaXR0ZW4sIG9yIHRoZSBidWxsZXQgd2FzIGVkaXRlZCBieSBoYW5kKSBpcyBncm91cGVkIGZyb20gaXRzIG93biB0ZXh0LiBBIHNlY3Rpb25cbiAqIHRoYXQgaXMgYW55dGhpbmcgb3RoZXIgdGhhbiBhIGJ1bGxldCBsaXN0IHdhcyB3cml0dGVuIG9yIGVkaXRlZCBieSBhIHBlcnNvbiwgc28gaXQgaXMga2VwdCBhcyBpdCBpcy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IENoYW5nZWxvZ0NvbW1pdEVudHJ5IH0gZnJvbSAnLi9jaGFuZ2Vsb2ctZ3JvdXBpbmcudHMnO1xuXG5pbXBvcnQgeyByZW5kZXJHcm91cGVkQ2hhbmdlbG9nU2VjdGlvbiB9IGZyb20gJy4vY2hhbmdlbG9nLWdyb3VwaW5nLnRzJztcbmltcG9ydCB7IHRvQ2hhbmdlbG9nQ29tbWl0RW50cnkgfSBmcm9tICcuL3ZlcnNpb24udHMnO1xuXG4vKipcbiAqIFRoZSBvdXRjb21lIG9mIHtAbGluayByZXdyaXRlQ2hhbmdlbG9nfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDaGFuZ2Vsb2dSZXdyaXRlUmVzdWx0IHtcbiAgLyoqXG4gICAqIFRoZSBuZXcgYENIQU5HRUxPRy5tZGAgY29udGVudCwgd2l0aCBMRiBsaW5lIGVuZGluZ3MuXG4gICAqL1xuICByZWFkb25seSBjb250ZW50OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzZWN0aW9ucyBrZXB0IGFzIHRoZXkgd2VyZSwgd2l0aCB0aGUgcmVhc29uLCBuZXdlc3QgZmlyc3QuXG4gICAqL1xuICByZWFkb25seSBrZXB0OiByZWFkb25seSBLZXB0Q2hhbmdlbG9nU2VjdGlvbltdO1xuXG4gIC8qKlxuICAgKiBUaGUgc2VjdGlvbnMgcmV3cml0dGVuLCBuZXdlc3QgZmlyc3QuXG4gICAqL1xuICByZWFkb25seSByZXdyaXR0ZW46IHJlYWRvbmx5IFJld3JpdHRlbkNoYW5nZWxvZ1NlY3Rpb25bXTtcbn1cblxuLyoqXG4gKiBXaGF0IHtAbGluayByZXdyaXRlQ2hhbmdlbG9nfSBuZWVkcyBmcm9tIHRoZSByZXBvc2l0b3J5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENoYW5nZWxvZ1Jld3JpdGVTb3VyY2Uge1xuICAvKipcbiAgICogUmVhZHMgdGhlIGZ1bGwgbWVzc2FnZXMgb2YgdGhlIGZpcnN0LXBhcmVudCBjb21taXRzIGluIGEgcmFuZ2UsIGluIGBnaXQgbG9nYCBvcmRlci5cbiAgICpcbiAgICogQHBhcmFtIGZyb21UYWcgLSBUaGUgdGFnIHRoZSByYW5nZSBzdGFydHMgYWZ0ZXIsIG9yIGB1bmRlZmluZWRgIGZvciB0aGUgd2hvbGUgaGlzdG9yeSB1cCB0byB7QGxpbmsgdG9UYWd9LlxuICAgKiBAcGFyYW0gdG9UYWcgLSBUaGUgdGFnIHRoZSByYW5nZSBlbmRzIGF0LlxuICAgKiBAcmV0dXJucyBUaGUgZnVsbCBjb21taXQgbWVzc2FnZXMuXG4gICAqL1xuICByZWFkb25seSBnZXRDb21taXRNZXNzYWdlczogKGZyb21UYWc6IHN0cmluZyB8IHVuZGVmaW5lZCwgdG9UYWc6IHN0cmluZykgPT4gUHJvbWlzZTxyZWFkb25seSBzdHJpbmdbXT47XG5cbiAgLyoqXG4gICAqIFRoZSByZXBvc2l0b3J5J3MgdGFncy5cbiAgICovXG4gIHJlYWRvbmx5IHRhZ3M6IHJlYWRvbmx5IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEEgc2VjdGlvbiB7QGxpbmsgcmV3cml0ZUNoYW5nZWxvZ30ga2VwdCBhcyBpdCB3YXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgS2VwdENoYW5nZWxvZ1NlY3Rpb24ge1xuICAvKipcbiAgICogV2h5IGl0IHdhcyBrZXB0LlxuICAgKi9cbiAgcmVhZG9ubHkgcmVhc29uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIGl0cyBoZWFkaW5nIG5hbWVzLlxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgc2VjdGlvbiB7QGxpbmsgcmV3cml0ZUNoYW5nZWxvZ30gcmV3cm90ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXdyaXR0ZW5DaGFuZ2Vsb2dTZWN0aW9uIHtcbiAgLyoqXG4gICAqIEhvdyBtYW55IG9mIGl0cyBidWxsZXRzIHdlcmUgbWF0Y2hlZCB0byBhIGNvbW1pdCBvZiBpdHMgdGFnIHJhbmdlLlxuICAgKi9cbiAgcmVhZG9ubHkgbWF0Y2hlZENvdW50OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBncm91cGVkIHNlY3Rpb24gYm9keSwgd2l0aG91dCBpdHMgaGVhZGluZy5cbiAgICovXG4gIHJlYWRvbmx5IG5ld0JvZHk6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHNlY3Rpb24gYm9keSBhcyBpdCB3YXMsIHdpdGhvdXQgaXRzIGhlYWRpbmcuXG4gICAqL1xuICByZWFkb25seSBvbGRCb2R5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0YWcgdGhlIHZlcnNpb24gd2FzIHJlbGVhc2VkIHVuZGVyLCB3aGVuIHRoZSByZXBvc2l0b3J5IGhhcyBvbmUuXG4gICAqL1xuICByZWFkb25seSB0YWc6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gaXRzIGhlYWRpbmcgbmFtZXMuXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBDaGFuZ2Vsb2dTZWN0aW9uIHtcbiAgcmVhZG9ubHkgYm9keUxpbmVzOiByZWFkb25seSBzdHJpbmdbXTtcbiAgcmVhZG9ubHkgaGVhZGluZzogc3RyaW5nO1xuICByZWFkb25seSByYXdMaW5lczogcmVhZG9ubHkgc3RyaW5nW107XG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIE1hdGNoZWRCdWxsZXRzIHtcbiAgcmVhZG9ubHkgZW50cmllczogcmVhZG9ubHkgQ2hhbmdlbG9nQ29tbWl0RW50cnlbXTtcbiAgcmVhZG9ubHkgbWF0Y2hlZENvdW50OiBudW1iZXI7XG59XG5cbmNvbnN0IEJVTExFVF9QUkVGSVggPSAnLSAnO1xuY29uc3QgRlVMTF9DSEFOR0VMT0dfUFJFRklYID0gJyoqRnVsbCBDaGFuZ2Vsb2cqKjonO1xuY29uc3QgU0VDVElPTl9IRUFESU5HX1BSRUZJWCA9ICcjIyAnO1xuXG4vKipcbiAqIFJld3JpdGVzIGV2ZXJ5IHJlbGVhc2VkIHNlY3Rpb24gb2YgYSBgQ0hBTkdFTE9HLm1kYCB0aGF0IGlzIHN0aWxsIGEgZmxhdCBsaXN0IG9mIGNvbW1pdCBzdWJqZWN0cyBpbnRvIHRoZSBgZ3JvdXBlZGBcbiAqIGxheW91dCwga2VlcGluZyBlYWNoIGhlYWRpbmcgYXMgaXQgaXMuXG4gKlxuICogQHBhcmFtIGNoYW5nZWxvZyAtIFRoZSBjdXJyZW50IGBDSEFOR0VMT0cubWRgIGNvbnRlbnQuXG4gKiBAcGFyYW0gc291cmNlIC0gVGhlIHJlcG9zaXRvcnkncyB0YWdzIGFuZCBjb21taXRzLlxuICogQHJldHVybnMgVGhlIG5ldyBjb250ZW50IGFuZCB3aGF0IGhhcHBlbmVkIHRvIGVhY2ggc2VjdGlvbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJld3JpdGVDaGFuZ2Vsb2coY2hhbmdlbG9nOiBzdHJpbmcsIHNvdXJjZTogQ2hhbmdlbG9nUmV3cml0ZVNvdXJjZSk6IFByb21pc2U8Q2hhbmdlbG9nUmV3cml0ZVJlc3VsdD4ge1xuICBjb25zdCBsaW5lcyA9IGNoYW5nZWxvZy5yZXBsYWNlQWxsKCdcXHJcXG4nLCAnXFxuJykuc3BsaXQoJ1xcbicpO1xuICBjb25zdCBmaXJzdEhlYWRpbmdJbmRleCA9IGxpbmVzLmZpbmRJbmRleCgobGluZSkgPT4gbGluZS5zdGFydHNXaXRoKFNFQ1RJT05fSEVBRElOR19QUkVGSVgpKTtcbiAgY29uc3QgaGVhZGVyTGluZXMgPSBmaXJzdEhlYWRpbmdJbmRleCA9PT0gLTEgPyBsaW5lcyA6IGxpbmVzLnNsaWNlKDAsIGZpcnN0SGVhZGluZ0luZGV4KTtcbiAgY29uc3Qgc2VjdGlvbnMgPSBmaXJzdEhlYWRpbmdJbmRleCA9PT0gLTEgPyBbXSA6IHNwbGl0U2VjdGlvbnMobGluZXMuc2xpY2UoZmlyc3RIZWFkaW5nSW5kZXgpKTtcbiAgY29uc3QgdGFncyA9IG5ldyBTZXQoc291cmNlLnRhZ3MpO1xuXG4gIGNvbnN0IGtlcHQ6IEtlcHRDaGFuZ2Vsb2dTZWN0aW9uW10gPSBbXTtcbiAgY29uc3QgcmV3cml0dGVuOiBSZXdyaXR0ZW5DaGFuZ2Vsb2dTZWN0aW9uW10gPSBbXTtcbiAgY29uc3Qgb3V0cHV0QmxvY2tzID0gW3RyaW1UcmFpbGluZ0JsYW5rTGluZXMoaGVhZGVyTGluZXMpLmpvaW4oJ1xcbicpXTtcblxuICBmb3IgKGNvbnN0IFtpbmRleCwgc2VjdGlvbl0gb2Ygc2VjdGlvbnMuZW50cmllcygpKSB7XG4gICAgY29uc3Qga2VwdFJlYXNvbiA9IGdldEtlcHRSZWFzb24oc2VjdGlvbik7XG4gICAgaWYgKGtlcHRSZWFzb24pIHtcbiAgICAgIGtlcHQucHVzaCh7IHJlYXNvbjoga2VwdFJlYXNvbiwgdmVyc2lvbjogc2VjdGlvbi52ZXJzaW9uIH0pO1xuICAgICAgb3V0cHV0QmxvY2tzLnB1c2godHJpbVRyYWlsaW5nQmxhbmtMaW5lcyhzZWN0aW9uLnJhd0xpbmVzKS5qb2luKCdcXG4nKSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCB0YWcgPSB0b1RhZyhzZWN0aW9uLnZlcnNpb24sIHRhZ3MpO1xuICAgIGNvbnN0IHByZXZpb3VzU2VjdGlvbiA9IHNlY3Rpb25zW2luZGV4ICsgMV07XG4gICAgY29uc3QgcHJldmlvdXNUYWcgPSBwcmV2aW91c1NlY3Rpb24gPyB0b1RhZyhwcmV2aW91c1NlY3Rpb24udmVyc2lvbiwgdGFncykgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgaXNSYW5nZUtub3duID0gdGFnICE9PSB1bmRlZmluZWQgJiYgKHByZXZpb3VzU2VjdGlvbiA9PT0gdW5kZWZpbmVkIHx8IHByZXZpb3VzVGFnICE9PSB1bmRlZmluZWQpO1xuICAgIGNvbnN0IGNvbW1pdE1lc3NhZ2VzID0gaXNSYW5nZUtub3duID8gYXdhaXQgc291cmNlLmdldENvbW1pdE1lc3NhZ2VzKHByZXZpb3VzVGFnLCB0YWcpIDogW107XG4gICAgY29uc3QgeyBlbnRyaWVzLCBtYXRjaGVkQ291bnQgfSA9IG1hdGNoQnVsbGV0cyhzZWN0aW9uLmJvZHlMaW5lcywgY29tbWl0TWVzc2FnZXMpO1xuICAgIGNvbnN0IG9sZEJvZHkgPSBzZWN0aW9uLmJvZHlMaW5lcy5qb2luKCdcXG4nKTtcbiAgICBjb25zdCBuZXdCb2R5ID0gcmVuZGVyR3JvdXBlZENoYW5nZWxvZ1NlY3Rpb24oZW50cmllcyk7XG4gICAgcmV3cml0dGVuLnB1c2goeyBtYXRjaGVkQ291bnQsIG5ld0JvZHksIG9sZEJvZHksIHRhZywgdmVyc2lvbjogc2VjdGlvbi52ZXJzaW9uIH0pO1xuICAgIG91dHB1dEJsb2Nrcy5wdXNoKGAke3NlY3Rpb24uaGVhZGluZ31cXG5cXG4ke25ld0JvZHl9YCk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGNvbnRlbnQ6IGAke291dHB1dEJsb2Nrcy5maWx0ZXIoKGJsb2NrKSA9PiBibG9jayAhPT0gJycpLmpvaW4oJ1xcblxcbicpfVxcbmAsXG4gICAga2VwdCxcbiAgICByZXdyaXR0ZW5cbiAgfTtcbn1cblxuLyoqXG4gKiBSZXdyaXRlcyB0aGUgcmVsZWFzZSBub3RlcyBvZiBhIEdpdEh1YiByZWxlYXNlIHdob3NlIGNoYW5nZWxvZyBzZWN0aW9uIHtAbGluayByZXdyaXRlQ2hhbmdlbG9nfSByZXdyb3RlLlxuICpcbiAqIEEgcmVsZWFzZSBib2R5IGEgcmVsZWFzZSB3cm90ZSBpcyBpdHMgY2hhbmdlbG9nIHNlY3Rpb24sIGEgYmxhbmsgbGluZSwgYW5kIGEgYCoqRnVsbCBDaGFuZ2Vsb2cqKmAgY29tcGFyZSBsaW5rLiBUaGVcbiAqIGJvZHkgaXMgcmV3cml0dGVuIG9ubHkgd2hlbiBpdHMgcGFydCBhYm92ZSB0aGF0IGxpbmsgaXMgc3RpbGwgdGhlIHNlY3Rpb24gYXMgaXQgd2FzLCBzbyBhIHJlbGVhc2UgZWRpdGVkIGJ5IGhhbmRcbiAqIGFmdGVyIHB1Ymxpc2hpbmcgaXMgbm90IG92ZXJ3cml0dGVuIHVubGVzcyBhc2tlZC4gVGhlIGNvbXBhcmUgbGluayBpcyBrZXB0IGFzIGl0IGlzLlxuICpcbiAqIEBwYXJhbSByZWxlYXNlQm9keSAtIFRoZSByZWxlYXNlJ3MgY3VycmVudCBub3Rlcy5cbiAqIEBwYXJhbSBzZWN0aW9uIC0gVGhlIHJld3JpdHRlbiBzZWN0aW9uLlxuICogQHBhcmFtIHNob3VsZE92ZXJ3cml0ZUVkaXRlZCAtIFdoZXRoZXIgbm90ZXMgdGhhdCBhcmUgbm8gbG9uZ2VyIHRoZSBzZWN0aW9uIGFzIGl0IHdhcyBhcmUgcmV3cml0dGVuIGFueXdheS4gVGhhdCBpc1xuICogICByaWdodCB3aGVyZSB0aGUgY2hhbmdlbG9nIHdhcyBjb3JyZWN0ZWQgYWZ0ZXIgdGhlIHJlbGVhc2UsIGZvciBleGFtcGxlIHRvIHJlbW92ZSB0ZXh0IHRoYXQgbXVzdCBub3QgYmUgcHVibGljLlxuICogQHJldHVybnMgVGhlIG5ldyBub3Rlcywgb3IgYG51bGxgIHdoZW4gdGhlIHJlbGVhc2Ugd2FzIGVkaXRlZCBhbmQgaGFzIHRvIGJlIGxlZnQgYWxvbmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXdyaXRlUmVsZWFzZU5vdGVzKHJlbGVhc2VCb2R5OiBzdHJpbmcsIHNlY3Rpb246IFJld3JpdHRlbkNoYW5nZWxvZ1NlY3Rpb24sIHNob3VsZE92ZXJ3cml0ZUVkaXRlZCA9IGZhbHNlKTogbnVsbCB8IHN0cmluZyB7XG4gIGNvbnN0IGxpbmVzID0gcmVsZWFzZUJvZHkucmVwbGFjZUFsbCgnXFxyXFxuJywgJ1xcbicpLnRyaW0oKS5zcGxpdCgnXFxuJyk7XG4gIGNvbnN0IGxpbmtJbmRleCA9IGZpbmRMYXN0SW5kZXgobGluZXMsIChsaW5lKSA9PiBsaW5lLnN0YXJ0c1dpdGgoRlVMTF9DSEFOR0VMT0dfUFJFRklYKSk7XG4gIGNvbnN0IG5vdGVMaW5lcyA9IGxpbmtJbmRleCA9PT0gLTEgPyBsaW5lcyA6IGxpbmVzLnNsaWNlKDAsIGxpbmtJbmRleCk7XG4gIGlmICghc2hvdWxkT3ZlcndyaXRlRWRpdGVkICYmIHRvQ29tcGFyYWJsZShub3RlTGluZXMuam9pbignXFxuJykpICE9PSB0b0NvbXBhcmFibGUoc2VjdGlvbi5vbGRCb2R5KSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIGxpbmtJbmRleCA9PT0gLTEgPyBzZWN0aW9uLm5ld0JvZHkgOiBgJHtzZWN0aW9uLm5ld0JvZHl9XFxuXFxuJHtsaW5lcy5zbGljZShsaW5rSW5kZXgpLmpvaW4oJ1xcbicpfWA7XG59XG5cbi8vIEFycmF5LnByb3RvdHlwZS5maW5kTGFzdEluZGV4IGlzIEVTMjAyMywgYWJvdmUgdGhpcyBwYWNrYWdlJ3MgbGliLlxuZnVuY3Rpb24gZmluZExhc3RJbmRleChsaW5lczogcmVhZG9ubHkgc3RyaW5nW10sIGlzTWF0Y2g6IChsaW5lOiBzdHJpbmcpID0+IGJvb2xlYW4pOiBudW1iZXIge1xuICByZXR1cm4gbGluZXMubWFwKChsaW5lKSA9PiBpc01hdGNoKGxpbmUpKS5sYXN0SW5kZXhPZih0cnVlKTtcbn1cblxuZnVuY3Rpb24gZmluZE1hdGNoaW5nRW50cnlJbmRleChlbnRyaWVzOiByZWFkb25seSBDaGFuZ2Vsb2dDb21taXRFbnRyeVtdLCBidWxsZXQ6IHN0cmluZyk6IG51bWJlciB7XG4gIC8vIFRoZSBsaW5lIGEgY29tbWl0IHJlbmRlcnMgdG8gdG9kYXksIHRoZW4gaXRzIGJhcmUgZW50cnk6IGEgYnVsbGV0IGFuIG9sZGVyIHRvb2xraXQgd3JvdGUgbWF5IGxhY2sgdGhlIHJlZmVyZW5jZXMuXG4gIGNvbnN0IGNvbXBhcmFibGUgPSB0b0NvbXBhcmFibGUoYnVsbGV0KTtcbiAgY29uc3QgcmVuZGVyZWRJbmRleCA9IGVudHJpZXMuZmluZEluZGV4KChlbnRyeSkgPT4gdG9Db21wYXJhYmxlKHRvUmVuZGVyZWRMaW5lKGVudHJ5KSkgPT09IGNvbXBhcmFibGUpO1xuICByZXR1cm4gcmVuZGVyZWRJbmRleCA9PT0gLTEgPyBlbnRyaWVzLmZpbmRJbmRleCgoZW50cnkpID0+IHRvQ29tcGFyYWJsZShlbnRyeS5lbnRyeSkgPT09IGNvbXBhcmFibGUpIDogcmVuZGVyZWRJbmRleDtcbn1cblxuZnVuY3Rpb24gZ2V0S2VwdFJlYXNvbihzZWN0aW9uOiBDaGFuZ2Vsb2dTZWN0aW9uKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHNlY3Rpb24uYm9keUxpbmVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAndGhlIHNlY3Rpb24gaXMgZW1wdHknO1xuICB9XG5cbiAgaWYgKHNlY3Rpb24uYm9keUxpbmVzLnNvbWUoKGxpbmUpID0+ICFsaW5lLnN0YXJ0c1dpdGgoQlVMTEVUX1BSRUZJWCkpKSB7XG4gICAgcmV0dXJuICd0aGUgc2VjdGlvbiBpcyBub3QgYSBwbGFpbiBidWxsZXQgbGlzdCwgc28gYSBwZXJzb24gd3JvdGUgb3IgZWRpdGVkIGl0JztcbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIG1hdGNoQnVsbGV0cyhib2R5TGluZXM6IHJlYWRvbmx5IHN0cmluZ1tdLCBjb21taXRNZXNzYWdlczogcmVhZG9ubHkgc3RyaW5nW10pOiBNYXRjaGVkQnVsbGV0cyB7XG4gIGNvbnN0IHVudXNlZCA9IGNvbW1pdE1lc3NhZ2VzLm1hcCgoY29tbWl0TWVzc2FnZSkgPT4gdG9DaGFuZ2Vsb2dDb21taXRFbnRyeShjb21taXRNZXNzYWdlKSk7XG4gIGNvbnN0IGVudHJpZXM6IENoYW5nZWxvZ0NvbW1pdEVudHJ5W10gPSBbXTtcbiAgbGV0IG1hdGNoZWRDb3VudCA9IDA7XG5cbiAgZm9yIChjb25zdCBsaW5lIG9mIGJvZHlMaW5lcykge1xuICAgIGNvbnN0IGJ1bGxldCA9IGxpbmUuc2xpY2UoQlVMTEVUX1BSRUZJWC5sZW5ndGgpLnRyaW0oKTtcbiAgICBjb25zdCBpbmRleCA9IGZpbmRNYXRjaGluZ0VudHJ5SW5kZXgodW51c2VkLCBidWxsZXQpO1xuICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgIGVudHJpZXMucHVzaCh7IGRldGFpbExpbmVzOiBbXSwgZW50cnk6IGJ1bGxldCwgaGFzQnJlYWtpbmdGb290ZXI6IGZhbHNlLCByZWZlcmVuY2VzOiBbXSB9KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIG1hdGNoZWRDb3VudCsrO1xuICAgIGVudHJpZXMucHVzaCguLi51bnVzZWQuc3BsaWNlKGluZGV4LCAxKSk7XG4gIH1cblxuICByZXR1cm4geyBlbnRyaWVzLCBtYXRjaGVkQ291bnQgfTtcbn1cblxuLyoqXG4gKiBTcGxpdHMgdGhlIGxpbmVzIGZyb20gdGhlIGZpcnN0IHNlY3Rpb24gaGVhZGluZyBvbiBpbnRvIHNlY3Rpb25zLlxuICpcbiAqIEBwYXJhbSBsaW5lcyAtIFRoZSBsaW5lcywgdGhlIGZpcnN0IG9mIHdoaWNoIGlzIGEgc2VjdGlvbiBoZWFkaW5nLlxuICogQHJldHVybnMgVGhlIHNlY3Rpb25zLCBpbiBmaWxlIG9yZGVyLlxuICovXG5mdW5jdGlvbiBzcGxpdFNlY3Rpb25zKGxpbmVzOiByZWFkb25seSBzdHJpbmdbXSk6IENoYW5nZWxvZ1NlY3Rpb25bXSB7XG4gIGNvbnN0IGhlYWRpbmdJbmRpY2VzID0gbGluZXMubWFwKChsaW5lLCBpbmRleCkgPT4gbGluZS5zdGFydHNXaXRoKFNFQ1RJT05fSEVBRElOR19QUkVGSVgpID8gaW5kZXggOiAtMSkuZmlsdGVyKChpbmRleCkgPT4gaW5kZXggIT09IC0xKTtcbiAgcmV0dXJuIGhlYWRpbmdJbmRpY2VzLm1hcCgoaGVhZGluZ0luZGV4LCBwb3NpdGlvbikgPT4gdG9TZWN0aW9uKGxpbmVzLnNsaWNlKGhlYWRpbmdJbmRleCwgaGVhZGluZ0luZGljZXNbcG9zaXRpb24gKyAxXSA/PyBsaW5lcy5sZW5ndGgpKSk7XG59XG5cbi8qKlxuICogUmVkdWNlcyBhIGxpbmUgdG8gd2hhdCBzdXJ2aXZlcyBgbGludDptZDpmaXhgOiBhIHB1Ymxpc2hlZCBzZWN0aW9uIHdhcyBmaXhlZCBhZnRlciBpdCB3YXMgZ2VuZXJhdGVkLCB3aGljaCB3cmFwc1xuICogbmFtZXMgaW4gYmFja3RpY2tzIGFuZCBlc2NhcGVzIGJyYWNrZXRzLCBhbmQgYSBHaXRIdWIgcmVsZWFzZSBrZXB0IHRoZSB0ZXh0IGZyb20gYmVmb3JlIHRoZSBmaXguXG4gKlxuICogQHBhcmFtIHRleHQgLSBUaGUgdGV4dC5cbiAqIEByZXR1cm5zIFRoZSB0ZXh0IHdpdGhvdXQgYmFja3RpY2tzLCBiYWNrc2xhc2hlcyBhbmQgcmVwZWF0ZWQgd2hpdGVzcGFjZS5cbiAqL1xuZnVuY3Rpb24gdG9Db21wYXJhYmxlKHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB0ZXh0LnJlcGxhY2VBbGwoL1tgXFxcXF0vZywgJycpLnJlcGxhY2VBbGwoL1xccysvZywgJyAnKS50cmltKCk7XG59XG5cbmZ1bmN0aW9uIHRvUmVuZGVyZWRMaW5lKGVudHJ5OiBDaGFuZ2Vsb2dDb21taXRFbnRyeSk6IHN0cmluZyB7XG4gIHJldHVybiBlbnRyeS5yZWZlcmVuY2VzLmxlbmd0aCA9PT0gMCA/IGVudHJ5LmVudHJ5IDogYCR7ZW50cnkuZW50cnl9ICgke2VudHJ5LnJlZmVyZW5jZXMuam9pbignLCAnKX0pYDtcbn1cblxuZnVuY3Rpb24gdG9TZWN0aW9uKHJhd0xpbmVzOiByZWFkb25seSBzdHJpbmdbXSk6IENoYW5nZWxvZ1NlY3Rpb24ge1xuICBjb25zdCBoZWFkaW5nID0gcmF3TGluZXMuc2xpY2UoMCwgMSkuam9pbignJyk7XG4gIGNvbnN0IGJvZHlMaW5lcyA9IHJhd0xpbmVzLnNsaWNlKDEpLmZpbHRlcigobGluZSkgPT4gbGluZS50cmltKCkgIT09ICcnKTtcbiAgY29uc3QgdmVyc2lvbiA9IGhlYWRpbmcuc2xpY2UoU0VDVElPTl9IRUFESU5HX1BSRUZJWC5sZW5ndGgpLnRyaW0oKS5zcGxpdCgvXFxzKy8sIDEpLmpvaW4oJycpO1xuICByZXR1cm4geyBib2R5TGluZXMsIGhlYWRpbmcsIHJhd0xpbmVzLCB2ZXJzaW9uIH07XG59XG5cbmZ1bmN0aW9uIHRvVGFnKHZlcnNpb246IHN0cmluZywgdGFnczogUmVhZG9ubHlTZXQ8c3RyaW5nPik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBbdmVyc2lvbiwgYHYke3ZlcnNpb259YF0uZmluZCgoY2FuZGlkYXRlKSA9PiB0YWdzLmhhcyhjYW5kaWRhdGUpKTtcbn1cblxuZnVuY3Rpb24gdHJpbVRyYWlsaW5nQmxhbmtMaW5lcyhsaW5lczogcmVhZG9ubHkgc3RyaW5nW10pOiByZWFkb25seSBzdHJpbmdbXSB7XG4gIGNvbnN0IGxhc3RJbmRleCA9IGZpbmRMYXN0SW5kZXgobGluZXMsIChsaW5lKSA9PiBsaW5lLnRyaW0oKSAhPT0gJycpO1xuICByZXR1cm4gbGluZXMuc2xpY2UoMCwgbGFzdEluZGV4ICsgMSk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7OztBQWVBLFNBQVMscUNBQXFDO0FBQzlDLFNBQVMsOEJBQThCO0FBa0d2QyxNQUFNLGdCQUFnQjtBQUN0QixNQUFNLHdCQUF3QjtBQUM5QixNQUFNLHlCQUF5QjtBQVUvQixlQUFzQixpQkFBaUIsV0FBbUIsUUFBaUU7QUFDekgsUUFBTSxRQUFRLFVBQVUsV0FBVyxRQUFRLElBQUksRUFBRSxNQUFNLElBQUk7QUFDM0QsUUFBTSxvQkFBb0IsTUFBTSxVQUFVLENBQUMsU0FBUyxLQUFLLFdBQVcsc0JBQXNCLENBQUM7QUFDM0YsUUFBTSxjQUFjLHNCQUFzQixLQUFLLFFBQVEsTUFBTSxNQUFNLEdBQUcsaUJBQWlCO0FBQ3ZGLFFBQU0sV0FBVyxzQkFBc0IsS0FBSyxDQUFDLElBQUksY0FBYyxNQUFNLE1BQU0saUJBQWlCLENBQUM7QUFDN0YsUUFBTSxPQUFPLElBQUksSUFBSSxPQUFPLElBQUk7QUFFaEMsUUFBTSxPQUErQixDQUFDO0FBQ3RDLFFBQU0sWUFBeUMsQ0FBQztBQUNoRCxRQUFNLGVBQWUsQ0FBQyx1QkFBdUIsV0FBVyxFQUFFLEtBQUssSUFBSSxDQUFDO0FBRXBFLGFBQVcsQ0FBQyxPQUFPLE9BQU8sS0FBSyxTQUFTLFFBQVEsR0FBRztBQUNqRCxVQUFNLGFBQWEsY0FBYyxPQUFPO0FBQ3hDLFFBQUksWUFBWTtBQUNkLFdBQUssS0FBSyxFQUFFLFFBQVEsWUFBWSxTQUFTLFFBQVEsUUFBUSxDQUFDO0FBQzFELG1CQUFhLEtBQUssdUJBQXVCLFFBQVEsUUFBUSxFQUFFLEtBQUssSUFBSSxDQUFDO0FBQ3JFO0FBQUEsSUFDRjtBQUVBLFVBQU0sTUFBTSxNQUFNLFFBQVEsU0FBUyxJQUFJO0FBQ3ZD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
@@ -7,6 +7,8 @@ export * as 'build' from './build.mjs';
7
7
  export * as 'bulk-concurrency' from './bulk-concurrency.mjs';
8
8
  export * as 'bundlers' from './bundlers/index.mjs';
9
9
  export * as 'changelog-grouping' from './changelog-grouping.mjs';
10
+ export * as 'changelog-rewrite-cli' from './changelog-rewrite-cli.mjs';
11
+ export * as 'changelog-rewrite' from './changelog-rewrite.mjs';
10
12
  export * as 'check-project-types' from './check-project-types.mjs';
11
13
  export * as 'cli-utils' from './cli-utils.mjs';
12
14
  export * as 'code-generator' from './code-generator.mjs';
@@ -7,6 +7,8 @@ import * as build from "./build.mjs";
7
7
  import * as bulk_concurrency from "./bulk-concurrency.mjs";
8
8
  import * as bundlers from "./bundlers/index.mjs";
9
9
  import * as changelog_grouping from "./changelog-grouping.mjs";
10
+ import * as changelog_rewrite_cli from "./changelog-rewrite-cli.mjs";
11
+ import * as changelog_rewrite from "./changelog-rewrite.mjs";
10
12
  import * as check_project_types from "./check-project-types.mjs";
11
13
  import * as cli_utils from "./cli-utils.mjs";
12
14
  import * as code_generator from "./code-generator.mjs";
@@ -47,6 +49,8 @@ export {
47
49
  bulk_concurrency as "bulk-concurrency",
48
50
  bundlers,
49
51
  changelog_grouping as "changelog-grouping",
52
+ changelog_rewrite as "changelog-rewrite",
53
+ changelog_rewrite_cli as "changelog-rewrite-cli",
50
54
  check_project_types as "check-project-types",
51
55
  cli_utils as "cli-utils",
52
56
  code_generator as "code-generator",
@@ -83,4 +87,4 @@ export {
83
87
  validate_dependencies as "validate-dependencies",
84
88
  version
85
89
  };
86
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKiBUSElTIElTIEEgR0VORVJBVEVEL0JVTkRMRUQgRklMRSBCWSBCVUlMRCBTQ1JJUFQgKi9cblxuZXhwb3J0ICogYXMgJ2J1aWxkJyBmcm9tICcuL2J1aWxkLnRzJztcbmV4cG9ydCAqIGFzICdidWxrLWNvbmN1cnJlbmN5JyBmcm9tICcuL2J1bGstY29uY3VycmVuY3kudHMnO1xuZXhwb3J0ICogYXMgJ2J1bmRsZXJzJyBmcm9tICcuL2J1bmRsZXJzL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzICdjaGFuZ2Vsb2ctZ3JvdXBpbmcnIGZyb20gJy4vY2hhbmdlbG9nLWdyb3VwaW5nLnRzJztcbmV4cG9ydCAqIGFzICdjaGVjay1wcm9qZWN0LXR5cGVzJyBmcm9tICcuL2NoZWNrLXByb2plY3QtdHlwZXMudHMnO1xuZXhwb3J0ICogYXMgJ2NsaS11dGlscycgZnJvbSAnLi9jbGktdXRpbHMudHMnO1xuZXhwb3J0ICogYXMgJ2NvZGUtZ2VuZXJhdG9yJyBmcm9tICcuL2NvZGUtZ2VuZXJhdG9yLnRzJztcbmV4cG9ydCAqIGFzICdjb21taXRsaW50LWNvbmZpZycgZnJvbSAnLi9jb21taXRsaW50LWNvbmZpZy50cyc7XG5leHBvcnQgKiBhcyAnY29tbWl0bGludC1mb3JiaWRkZW4tcGF0dGVybnMnIGZyb20gJy4vY29tbWl0bGludC1mb3JiaWRkZW4tcGF0dGVybnMudHMnO1xuZXhwb3J0ICogYXMgJ2NvbW1pdGxpbnQtbGludC1tZC1oZWFkZXInIGZyb20gJy4vY29tbWl0bGludC1saW50LW1kLWhlYWRlci50cyc7XG5leHBvcnQgKiBhcyAnY29tbWl0bGludC1zcGVsbGNoZWNrLWhlYWRlcicgZnJvbSAnLi9jb21taXRsaW50LXNwZWxsY2hlY2staGVhZGVyLnRzJztcbmV4cG9ydCAqIGFzICdkb2NzLXNpdGUnIGZyb20gJy4vZG9jcy1zaXRlL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzICdlbnYtdG9nZ2xlJyBmcm9tICcuL2Vudi10b2dnbGUudHMnO1xuZXhwb3J0ICogYXMgJ2V4ZWMnIGZyb20gJy4vZXhlYy50cyc7XG5leHBvcnQgKiBhcyAnZm9yYmlkZGVuLXBhdHRlcm5zJyBmcm9tICcuL2ZvcmJpZGRlbi1wYXR0ZXJucy50cyc7XG5leHBvcnQgKiBhcyAnZm9ybWF0dGVycycgZnJvbSAnLi9mb3JtYXR0ZXJzL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzICdmcycgZnJvbSAnLi9mcy50cyc7XG5leHBvcnQgKiBhcyAnZ2F0ZScgZnJvbSAnLi9nYXRlLnRzJztcbmV4cG9ydCAqIGFzICdnaXQnIGZyb20gJy4vZ2l0LnRzJztcbmV4cG9ydCAqIGFzICdqc29uJyBmcm9tICcuL2pzb24udHMnO1xuZXhwb3J0ICogYXMgJ2xpYnJhcnktYnVpbGQnIGZyb20gJy4vbGlicmFyeS1idWlsZC50cyc7XG5leHBvcnQgKiBhcyAnbGluay1jaGVjay1za2lwJyBmcm9tICcuL2xpbmstY2hlY2stc2tpcC50cyc7XG5leHBvcnQgKiBhcyAnbGludGVycycgZnJvbSAnLi9saW50ZXJzL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzICduYW5vLXN0YWdlZC1jb25maWcnIGZyb20gJy4vbmFuby1zdGFnZWQtY29uZmlnLnRzJztcbmV4cG9ydCAqIGFzICducG0tcHVibGlzaCcgZnJvbSAnLi9ucG0tcHVibGlzaC50cyc7XG5leHBvcnQgKiBhcyAnbnBtLXJ1bicgZnJvbSAnLi9ucG0tcnVuLnRzJztcbmV4cG9ydCAqIGFzICducG0nIGZyb20gJy4vbnBtLnRzJztcbmV4cG9ydCAqIGFzICdwYWNrYWdlLWxvY2staW50ZWdyaXR5JyBmcm9tICcuL3BhY2thZ2UtbG9jay1pbnRlZ3JpdHkudHMnO1xuZXhwb3J0ICogYXMgJ3BhY2thZ2UtbWFuYWdlcicgZnJvbSAnLi9wYWNrYWdlLW1hbmFnZXIudHMnO1xuZXhwb3J0ICogYXMgJ3JlbGVhc2VkLWlzc3VlcycgZnJvbSAnLi9yZWxlYXNlZC1pc3N1ZXMudHMnO1xuZXhwb3J0ICogYXMgJ3JlcG8tcGF0aHMnIGZyb20gJy4vcmVwby1wYXRocy50cyc7XG5leHBvcnQgKiBhcyAncm9vdCcgZnJvbSAnLi9yb290LnRzJztcbmV4cG9ydCAqIGFzICdzaGFyZWQtY29uZmlnLWZpbGVzJyBmcm9tICcuL3NoYXJlZC1jb25maWctZmlsZXMudHMnO1xuZXhwb3J0ICogYXMgJ3Rlc3QtcnVubmVycycgZnJvbSAnLi90ZXN0LXJ1bm5lcnMvaW5kZXgudHMnO1xuZXhwb3J0ICogYXMgJ3Vwc3RyZWFtLXN5bmMtY2xpJyBmcm9tICcuL3Vwc3RyZWFtLXN5bmMtY2xpLnRzJztcbmV4cG9ydCAqIGFzICd1cHN0cmVhbS1zeW5jJyBmcm9tICcuL3Vwc3RyZWFtLXN5bmMudHMnO1xuZXhwb3J0ICogYXMgJ3ZhbGlkYXRlLWRlY2xhcmF0aW9ucycgZnJvbSAnLi92YWxpZGF0ZS1kZWNsYXJhdGlvbnMudHMnO1xuZXhwb3J0ICogYXMgJ3ZhbGlkYXRlLWRlcGVuZGVuY2llcycgZnJvbSAnLi92YWxpZGF0ZS1kZXBlbmRlbmNpZXMudHMnO1xuZXhwb3J0ICogYXMgJ3ZlcnNpb24nIGZyb20gJy4vdmVyc2lvbi50cyc7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7OztBQUVBLFlBQVksV0FBYTtBQUN6QixZQUFZQSxzQkFBd0I7QUFDcEMsWUFBWSxjQUFnQjtBQUM1QixZQUFZQyx3QkFBMEI7QUFDdEMsWUFBWUMseUJBQTJCO0FBQ3ZDLFlBQVlDLGVBQWlCO0FBQzdCLFlBQVlDLG9CQUFzQjtBQUNsQyxZQUFZQyx1QkFBeUI7QUFDckMsWUFBWUMsbUNBQXFDO0FBQ2pELFlBQVlDLCtCQUFpQztBQUM3QyxZQUFZQyxrQ0FBb0M7QUFDaEQsWUFBWUMsZUFBaUI7QUFDN0IsWUFBWUMsZ0JBQWtCO0FBQzlCLFlBQVksVUFBWTtBQUN4QixZQUFZQyx3QkFBMEI7QUFDdEMsWUFBWSxnQkFBa0I7QUFDOUIsWUFBWSxRQUFVO0FBQ3RCLFlBQVksVUFBWTtBQUN4QixZQUFZLFNBQVc7QUFDdkIsWUFBWSxVQUFZO0FBQ3hCLFlBQVlDLG1CQUFxQjtBQUNqQyxZQUFZQyxxQkFBdUI7QUFDbkMsWUFBWSxhQUFlO0FBQzNCLFlBQVlDLHdCQUEwQjtBQUN0QyxZQUFZQyxpQkFBbUI7QUFDL0IsWUFBWUMsYUFBZTtBQUMzQixZQUFZLFNBQVc7QUFDdkIsWUFBWUMsNEJBQThCO0FBQzFDLFlBQVlDLHFCQUF1QjtBQUNuQyxZQUFZQyxxQkFBdUI7QUFDbkMsWUFBWUMsZ0JBQWtCO0FBQzlCLFlBQVksVUFBWTtBQUN4QixZQUFZQyx5QkFBMkI7QUFDdkMsWUFBWUMsa0JBQW9CO0FBQ2hDLFlBQVlDLHVCQUF5QjtBQUNyQyxZQUFZQyxtQkFBcUI7QUFDakMsWUFBWUMsMkJBQTZCO0FBQ3pDLFlBQVlDLDJCQUE2QjtBQUN6QyxZQUFZLGFBQWU7IiwKICAibmFtZXMiOiBbImJ1bGstY29uY3VycmVuY3kiLCAiY2hhbmdlbG9nLWdyb3VwaW5nIiwgImNoZWNrLXByb2plY3QtdHlwZXMiLCAiY2xpLXV0aWxzIiwgImNvZGUtZ2VuZXJhdG9yIiwgImNvbW1pdGxpbnQtY29uZmlnIiwgImNvbW1pdGxpbnQtZm9yYmlkZGVuLXBhdHRlcm5zIiwgImNvbW1pdGxpbnQtbGludC1tZC1oZWFkZXIiLCAiY29tbWl0bGludC1zcGVsbGNoZWNrLWhlYWRlciIsICJkb2NzLXNpdGUiLCAiZW52LXRvZ2dsZSIsICJmb3JiaWRkZW4tcGF0dGVybnMiLCAibGlicmFyeS1idWlsZCIsICJsaW5rLWNoZWNrLXNraXAiLCAibmFuby1zdGFnZWQtY29uZmlnIiwgIm5wbS1wdWJsaXNoIiwgIm5wbS1ydW4iLCAicGFja2FnZS1sb2NrLWludGVncml0eSIsICJwYWNrYWdlLW1hbmFnZXIiLCAicmVsZWFzZWQtaXNzdWVzIiwgInJlcG8tcGF0aHMiLCAic2hhcmVkLWNvbmZpZy1maWxlcyIsICJ0ZXN0LXJ1bm5lcnMiLCAidXBzdHJlYW0tc3luYy1jbGkiLCAidXBzdHJlYW0tc3luYyIsICJ2YWxpZGF0ZS1kZWNsYXJhdGlvbnMiLCAidmFsaWRhdGUtZGVwZW5kZW5jaWVzIl0KfQo=
90
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKiBUSElTIElTIEEgR0VORVJBVEVEL0JVTkRMRUQgRklMRSBCWSBCVUlMRCBTQ1JJUFQgKi9cblxuZXhwb3J0ICogYXMgJ2J1aWxkJyBmcm9tICcuL2J1aWxkLnRzJztcbmV4cG9ydCAqIGFzICdidWxrLWNvbmN1cnJlbmN5JyBmcm9tICcuL2J1bGstY29uY3VycmVuY3kudHMnO1xuZXhwb3J0ICogYXMgJ2J1bmRsZXJzJyBmcm9tICcuL2J1bmRsZXJzL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzICdjaGFuZ2Vsb2ctZ3JvdXBpbmcnIGZyb20gJy4vY2hhbmdlbG9nLWdyb3VwaW5nLnRzJztcbmV4cG9ydCAqIGFzICdjaGFuZ2Vsb2ctcmV3cml0ZS1jbGknIGZyb20gJy4vY2hhbmdlbG9nLXJld3JpdGUtY2xpLnRzJztcbmV4cG9ydCAqIGFzICdjaGFuZ2Vsb2ctcmV3cml0ZScgZnJvbSAnLi9jaGFuZ2Vsb2ctcmV3cml0ZS50cyc7XG5leHBvcnQgKiBhcyAnY2hlY2stcHJvamVjdC10eXBlcycgZnJvbSAnLi9jaGVjay1wcm9qZWN0LXR5cGVzLnRzJztcbmV4cG9ydCAqIGFzICdjbGktdXRpbHMnIGZyb20gJy4vY2xpLXV0aWxzLnRzJztcbmV4cG9ydCAqIGFzICdjb2RlLWdlbmVyYXRvcicgZnJvbSAnLi9jb2RlLWdlbmVyYXRvci50cyc7XG5leHBvcnQgKiBhcyAnY29tbWl0bGludC1jb25maWcnIGZyb20gJy4vY29tbWl0bGludC1jb25maWcudHMnO1xuZXhwb3J0ICogYXMgJ2NvbW1pdGxpbnQtZm9yYmlkZGVuLXBhdHRlcm5zJyBmcm9tICcuL2NvbW1pdGxpbnQtZm9yYmlkZGVuLXBhdHRlcm5zLnRzJztcbmV4cG9ydCAqIGFzICdjb21taXRsaW50LWxpbnQtbWQtaGVhZGVyJyBmcm9tICcuL2NvbW1pdGxpbnQtbGludC1tZC1oZWFkZXIudHMnO1xuZXhwb3J0ICogYXMgJ2NvbW1pdGxpbnQtc3BlbGxjaGVjay1oZWFkZXInIGZyb20gJy4vY29tbWl0bGludC1zcGVsbGNoZWNrLWhlYWRlci50cyc7XG5leHBvcnQgKiBhcyAnZG9jcy1zaXRlJyBmcm9tICcuL2RvY3Mtc2l0ZS9pbmRleC50cyc7XG5leHBvcnQgKiBhcyAnZW52LXRvZ2dsZScgZnJvbSAnLi9lbnYtdG9nZ2xlLnRzJztcbmV4cG9ydCAqIGFzICdleGVjJyBmcm9tICcuL2V4ZWMudHMnO1xuZXhwb3J0ICogYXMgJ2ZvcmJpZGRlbi1wYXR0ZXJucycgZnJvbSAnLi9mb3JiaWRkZW4tcGF0dGVybnMudHMnO1xuZXhwb3J0ICogYXMgJ2Zvcm1hdHRlcnMnIGZyb20gJy4vZm9ybWF0dGVycy9pbmRleC50cyc7XG5leHBvcnQgKiBhcyAnZnMnIGZyb20gJy4vZnMudHMnO1xuZXhwb3J0ICogYXMgJ2dhdGUnIGZyb20gJy4vZ2F0ZS50cyc7XG5leHBvcnQgKiBhcyAnZ2l0JyBmcm9tICcuL2dpdC50cyc7XG5leHBvcnQgKiBhcyAnanNvbicgZnJvbSAnLi9qc29uLnRzJztcbmV4cG9ydCAqIGFzICdsaWJyYXJ5LWJ1aWxkJyBmcm9tICcuL2xpYnJhcnktYnVpbGQudHMnO1xuZXhwb3J0ICogYXMgJ2xpbmstY2hlY2stc2tpcCcgZnJvbSAnLi9saW5rLWNoZWNrLXNraXAudHMnO1xuZXhwb3J0ICogYXMgJ2xpbnRlcnMnIGZyb20gJy4vbGludGVycy9pbmRleC50cyc7XG5leHBvcnQgKiBhcyAnbmFuby1zdGFnZWQtY29uZmlnJyBmcm9tICcuL25hbm8tc3RhZ2VkLWNvbmZpZy50cyc7XG5leHBvcnQgKiBhcyAnbnBtLXB1Ymxpc2gnIGZyb20gJy4vbnBtLXB1Ymxpc2gudHMnO1xuZXhwb3J0ICogYXMgJ25wbS1ydW4nIGZyb20gJy4vbnBtLXJ1bi50cyc7XG5leHBvcnQgKiBhcyAnbnBtJyBmcm9tICcuL25wbS50cyc7XG5leHBvcnQgKiBhcyAncGFja2FnZS1sb2NrLWludGVncml0eScgZnJvbSAnLi9wYWNrYWdlLWxvY2staW50ZWdyaXR5LnRzJztcbmV4cG9ydCAqIGFzICdwYWNrYWdlLW1hbmFnZXInIGZyb20gJy4vcGFja2FnZS1tYW5hZ2VyLnRzJztcbmV4cG9ydCAqIGFzICdyZWxlYXNlZC1pc3N1ZXMnIGZyb20gJy4vcmVsZWFzZWQtaXNzdWVzLnRzJztcbmV4cG9ydCAqIGFzICdyZXBvLXBhdGhzJyBmcm9tICcuL3JlcG8tcGF0aHMudHMnO1xuZXhwb3J0ICogYXMgJ3Jvb3QnIGZyb20gJy4vcm9vdC50cyc7XG5leHBvcnQgKiBhcyAnc2hhcmVkLWNvbmZpZy1maWxlcycgZnJvbSAnLi9zaGFyZWQtY29uZmlnLWZpbGVzLnRzJztcbmV4cG9ydCAqIGFzICd0ZXN0LXJ1bm5lcnMnIGZyb20gJy4vdGVzdC1ydW5uZXJzL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzICd1cHN0cmVhbS1zeW5jLWNsaScgZnJvbSAnLi91cHN0cmVhbS1zeW5jLWNsaS50cyc7XG5leHBvcnQgKiBhcyAndXBzdHJlYW0tc3luYycgZnJvbSAnLi91cHN0cmVhbS1zeW5jLnRzJztcbmV4cG9ydCAqIGFzICd2YWxpZGF0ZS1kZWNsYXJhdGlvbnMnIGZyb20gJy4vdmFsaWRhdGUtZGVjbGFyYXRpb25zLnRzJztcbmV4cG9ydCAqIGFzICd2YWxpZGF0ZS1kZXBlbmRlbmNpZXMnIGZyb20gJy4vdmFsaWRhdGUtZGVwZW5kZW5jaWVzLnRzJztcbmV4cG9ydCAqIGFzICd2ZXJzaW9uJyBmcm9tICcuL3ZlcnNpb24udHMnO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7QUFFQSxZQUFZLFdBQWE7QUFDekIsWUFBWUEsc0JBQXdCO0FBQ3BDLFlBQVksY0FBZ0I7QUFDNUIsWUFBWUMsd0JBQTBCO0FBQ3RDLFlBQVlDLDJCQUE2QjtBQUN6QyxZQUFZQyx1QkFBeUI7QUFDckMsWUFBWUMseUJBQTJCO0FBQ3ZDLFlBQVlDLGVBQWlCO0FBQzdCLFlBQVlDLG9CQUFzQjtBQUNsQyxZQUFZQyx1QkFBeUI7QUFDckMsWUFBWUMsbUNBQXFDO0FBQ2pELFlBQVlDLCtCQUFpQztBQUM3QyxZQUFZQyxrQ0FBb0M7QUFDaEQsWUFBWUMsZUFBaUI7QUFDN0IsWUFBWUMsZ0JBQWtCO0FBQzlCLFlBQVksVUFBWTtBQUN4QixZQUFZQyx3QkFBMEI7QUFDdEMsWUFBWSxnQkFBa0I7QUFDOUIsWUFBWSxRQUFVO0FBQ3RCLFlBQVksVUFBWTtBQUN4QixZQUFZLFNBQVc7QUFDdkIsWUFBWSxVQUFZO0FBQ3hCLFlBQVlDLG1CQUFxQjtBQUNqQyxZQUFZQyxxQkFBdUI7QUFDbkMsWUFBWSxhQUFlO0FBQzNCLFlBQVlDLHdCQUEwQjtBQUN0QyxZQUFZQyxpQkFBbUI7QUFDL0IsWUFBWUMsYUFBZTtBQUMzQixZQUFZLFNBQVc7QUFDdkIsWUFBWUMsNEJBQThCO0FBQzFDLFlBQVlDLHFCQUF1QjtBQUNuQyxZQUFZQyxxQkFBdUI7QUFDbkMsWUFBWUMsZ0JBQWtCO0FBQzlCLFlBQVksVUFBWTtBQUN4QixZQUFZQyx5QkFBMkI7QUFDdkMsWUFBWUMsa0JBQW9CO0FBQ2hDLFlBQVlDLHVCQUF5QjtBQUNyQyxZQUFZQyxtQkFBcUI7QUFDakMsWUFBWUMsMkJBQTZCO0FBQ3pDLFlBQVlDLDJCQUE2QjtBQUN6QyxZQUFZLGFBQWU7IiwKICAibmFtZXMiOiBbImJ1bGstY29uY3VycmVuY3kiLCAiY2hhbmdlbG9nLWdyb3VwaW5nIiwgImNoYW5nZWxvZy1yZXdyaXRlLWNsaSIsICJjaGFuZ2Vsb2ctcmV3cml0ZSIsICJjaGVjay1wcm9qZWN0LXR5cGVzIiwgImNsaS11dGlscyIsICJjb2RlLWdlbmVyYXRvciIsICJjb21taXRsaW50LWNvbmZpZyIsICJjb21taXRsaW50LWZvcmJpZGRlbi1wYXR0ZXJucyIsICJjb21taXRsaW50LWxpbnQtbWQtaGVhZGVyIiwgImNvbW1pdGxpbnQtc3BlbGxjaGVjay1oZWFkZXIiLCAiZG9jcy1zaXRlIiwgImVudi10b2dnbGUiLCAiZm9yYmlkZGVuLXBhdHRlcm5zIiwgImxpYnJhcnktYnVpbGQiLCAibGluay1jaGVjay1za2lwIiwgIm5hbm8tc3RhZ2VkLWNvbmZpZyIsICJucG0tcHVibGlzaCIsICJucG0tcnVuIiwgInBhY2thZ2UtbG9jay1pbnRlZ3JpdHkiLCAicGFja2FnZS1tYW5hZ2VyIiwgInJlbGVhc2VkLWlzc3VlcyIsICJyZXBvLXBhdGhzIiwgInNoYXJlZC1jb25maWctZmlsZXMiLCAidGVzdC1ydW5uZXJzIiwgInVwc3RyZWFtLXN5bmMtY2xpIiwgInVwc3RyZWFtLXN5bmMiLCAidmFsaWRhdGUtZGVjbGFyYXRpb25zIiwgInZhbGlkYXRlLWRlcGVuZGVuY2llcyJdCn0K
@@ -9,7 +9,7 @@
9
9
  * Git operations such as tagging and pushing.
10
10
  */
11
11
  import { parseArgs } from 'node:util';
12
- import type { ChangelogStyle } from './changelog-grouping.mjs';
12
+ import type { ChangelogCommitEntry, ChangelogStyle } from './changelog-grouping.mjs';
13
13
  /**
14
14
  * Options for {@link addUpdatedFilesToGit}.
15
15
  */
@@ -427,6 +427,14 @@ export declare function parseVersionArguments($arguments: string[]): ParsedVersi
427
427
  * @returns A {@link Promise} that resolves when the release has been published.
428
428
  */
429
429
  export declare function publishGitHubRelease(newVersion: string, options?: PublishGitHubReleaseOptions): Promise<void>;
430
+ /**
431
+ * Reads one first-parent commit into the parts both changelog styles render: the line {@link toChangelogEntry}
432
+ * describes, the issue references it does not already show, and what else the body says.
433
+ *
434
+ * @param commitMessage - The full commit message.
435
+ * @returns The parts, with bare URLs in the entry and the detail lines autolinked.
436
+ */
437
+ export declare function toChangelogCommitEntry(commitMessage: string): ChangelogCommitEntry;
430
438
  /**
431
439
  * Maps the values `parseArgs` reports for {@link VERSION_ARGUMENT_OPTIONS} onto {@link UpdateVersionOptions}.
432
440
  *