@williamthorsen/release-kit 14.0.0 → 14.2.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.
- package/.meta/changelog.json +173 -0
- package/.readyup/kits/default.js +64 -7
- package/.readyup/kits/npm-auto-publish.js +127 -75
- package/.readyup/manifest.json +22 -7
- package/CHANGELOG.md +47 -0
- package/README.md +18 -4
- package/dist/esm/assertReleasesOnNpm.d.ts +7 -0
- package/dist/esm/assertReleasesOnNpm.js +56 -0
- package/dist/esm/assertTaggedBaseline.d.ts +2 -2
- package/dist/esm/attachChangelogDiagnostics.d.ts +2 -2
- package/dist/esm/bin/release-kit.js +10 -6
- package/dist/esm/buildChangelogEntries.d.ts +3 -3
- package/dist/esm/buildChangelogEntries.js +3 -3
- package/dist/esm/buildDependencyGraph.d.ts +11 -11
- package/dist/esm/buildDependencyGraph.js +13 -13
- package/dist/esm/buildReleaseSummary.d.ts +3 -3
- package/dist/esm/buildReleaseSummary.js +4 -12
- package/dist/esm/changelogArchive.d.ts +14 -0
- package/dist/esm/changelogArchive.js +21 -0
- package/dist/esm/changelogJsonFile.d.ts +2 -2
- package/dist/esm/changelogOverrides.d.ts +9 -8
- package/dist/esm/changelogOverrides.js +3 -6
- package/dist/esm/createGithubReleaseCommand.d.ts +2 -1
- package/dist/esm/createGithubReleaseCommand.js +7 -4
- package/dist/esm/deriveDirectoryConfig.d.ts +13 -0
- package/dist/esm/deriveDirectoryConfig.js +59 -0
- package/dist/esm/deriveWorkspaceConfig.js +2 -3
- package/dist/esm/discoverWorkspaces.d.ts +3 -3
- package/dist/esm/enumerateReleaseWindows.d.ts +1 -1
- package/dist/esm/enumerateReleaseWindows.js +1 -3
- package/dist/esm/findTransitiveDependents.js +3 -3
- package/dist/esm/findUnroutedEntryScopes.d.ts +2 -2
- package/dist/esm/formatDirectoryPublishSkip.d.ts +3 -0
- package/dist/esm/formatDirectoryPublishSkip.js +3 -0
- package/dist/esm/formatExcludedSkip.d.ts +5 -2
- package/dist/esm/formatExcludedSkip.js +2 -2
- package/dist/esm/formatProjectPublishSkip.d.ts +3 -0
- package/dist/esm/formatProjectPublishSkip.js +3 -0
- package/dist/esm/generateChangelogs.d.ts +7 -7
- package/dist/esm/generateChangelogs.js +2 -2
- package/dist/esm/help/prepareHelp.d.ts +1 -1
- package/dist/esm/help/prepareHelp.js +7 -5
- package/dist/esm/init/hasPublishablePackage.d.ts +10 -0
- package/dist/esm/init/hasPublishablePackage.js +28 -0
- package/dist/esm/init/initCommand.js +23 -13
- package/dist/esm/init/scaffold.d.ts +6 -1
- package/dist/esm/init/scaffold.js +10 -7
- package/dist/esm/init/templates.js +1 -1
- package/dist/esm/init/updateTemplatesCommand.d.ts +2 -1
- package/dist/esm/init/updateTemplatesCommand.js +12 -6
- package/dist/esm/isPublishableManifest.d.ts +2 -0
- package/dist/esm/isPublishableManifest.js +5 -0
- package/dist/esm/loadConfig.d.ts +12 -12
- package/dist/esm/loadConfig.js +79 -30
- package/dist/esm/matchesTagPrefix.d.ts +2 -0
- package/dist/esm/matchesTagPrefix.js +4 -0
- package/dist/esm/npmRegistry.d.ts +35 -0
- package/dist/esm/npmRegistry.js +58 -0
- package/dist/esm/prepareCommand.d.ts +1 -1
- package/dist/esm/prepareCommand.js +50 -36
- package/dist/esm/prepareTarget.d.ts +103 -0
- package/dist/esm/prepareTarget.js +274 -0
- package/dist/esm/previewTagPrefixes.d.ts +5 -3
- package/dist/esm/previewTagPrefixes.js +60 -14
- package/dist/esm/propagateBumps.js +1 -1
- package/dist/esm/publishCommand.js +13 -1
- package/dist/esm/readChangelogSections.d.ts +6 -4
- package/dist/esm/readChangelogSections.js +18 -4
- package/dist/esm/releasePlan.d.ts +4 -2
- package/dist/esm/releasePlan.js +34 -12
- package/dist/esm/releasePrepareTargets.d.ts +47 -0
- package/dist/esm/releasePrepareTargets.js +335 -0
- package/dist/esm/renderChangelogMarkdown.d.ts +23 -0
- package/dist/esm/renderChangelogMarkdown.js +47 -11
- package/dist/esm/reportPrepare.d.ts +2 -3
- package/dist/esm/reportPrepare.js +24 -12
- package/dist/esm/resolveCommandTags.d.ts +3 -1
- package/dist/esm/resolveCommandTags.js +15 -22
- package/dist/esm/resolveReleaseDeclaration.d.ts +45 -0
- package/dist/esm/resolveReleaseDeclaration.js +153 -0
- package/dist/esm/resolveReleaseTags.d.ts +14 -3
- package/dist/esm/resolveReleaseTags.js +36 -15
- package/dist/esm/resolveReleaseTargets.d.ts +29 -0
- package/dist/esm/resolveReleaseTargets.js +131 -0
- package/dist/esm/sync-labels/generateCommand.js +2 -1
- package/dist/esm/sync-labels/resolveLabels.d.ts +4 -3
- package/dist/esm/sync-labels/resolveLabels.js +30 -1
- package/dist/esm/sync-labels/templates.js +1 -1
- package/dist/esm/sync-labels/types.d.ts +2 -0
- package/dist/esm/types.d.ts +251 -167
- package/dist/esm/types.js +22 -0
- package/dist/esm/validateConfig.js +80 -21
- package/dist/esm/validateOverridesCommand.d.ts +1 -1
- package/dist/esm/validateOverridesCommand.js +17 -28
- package/docs/api.md +25 -58
- package/docs/changelogs.md +26 -6
- package/docs/configuration.md +80 -17
- package/docs/labels.md +30 -5
- package/docs/project-releases.md +42 -2
- package/docs/publishing.md +3 -3
- package/docs/releasing.md +12 -4
- package/docs/work-types.md +1 -1
- package/package.json +6 -6
- package/presets/labels/common.yaml +11 -0
- package/dist/esm/releasePrepare.d.ts +0 -36
- package/dist/esm/releasePrepare.js +0 -230
- package/dist/esm/releasePrepareMono.d.ts +0 -29
- package/dist/esm/releasePrepareMono.js +0 -503
- package/dist/esm/releasePrepareProject.d.ts +0 -47
- package/dist/esm/releasePrepareProject.js +0 -164
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
import { join as joinPath } from 'node:path';
|
|
2
|
-
import { assertTaggedBaseline, findUntaggedBaseline } from "./assertTaggedBaseline.js";
|
|
3
|
-
import { attachChangelogDiagnostics } from "./attachChangelogDiagnostics.js";
|
|
4
|
-
import { readReleaseHistory, toReleaseEntries } from "./buildChangelogEntries.js";
|
|
5
|
-
import { mergeChangelogEntriesWithDisk, renderChangelogJson, resolveChangelogJsonPath } from "./changelogJsonFile.js";
|
|
6
|
-
import { applyChangelogOverrides } from "./changelogOverrides.js";
|
|
7
|
-
import { decideRelease } from "./decideRelease.js";
|
|
8
|
-
import { DEFAULT_WORK_TYPES } from "./defaults.js";
|
|
9
|
-
import { deriveSectionOrder } from "./deriveReleaseNotesConfig.js";
|
|
10
|
-
import { planReleaseNotesPreviews } from "./planReleaseNotesPreviews.js";
|
|
11
|
-
import { planVersionBump } from "./planVersionBump.js";
|
|
12
|
-
import { planPreservedSections } from "./readChangelogSections.js";
|
|
13
|
-
import { renderChangelogMarkdown } from "./renderChangelogMarkdown.js";
|
|
14
|
-
const ROOT_PACKAGE_FILE = './package.json';
|
|
15
|
-
const ROOT_CHANGELOG_PATH = '.';
|
|
16
|
-
export function releasePrepareProject(args) {
|
|
17
|
-
const { config, options, modifiedFiles, writes, tags } = args;
|
|
18
|
-
const { rootOverrides, overrideWarnings, globalMatchedRootKeys, warnings } = resolveOptionalOverrideArgs(args);
|
|
19
|
-
const { bumpOverride, withReleaseNotes, force } = options;
|
|
20
|
-
const project = config.project;
|
|
21
|
-
if (project === undefined) {
|
|
22
|
-
throw new Error('releasePrepareProject called without a configured project block');
|
|
23
|
-
}
|
|
24
|
-
const workTypes = config.workTypes ?? { ...DEFAULT_WORK_TYPES };
|
|
25
|
-
const history = readReleaseHistory(config, { tagPrefixes: [project.tagPrefix], paths: project.paths });
|
|
26
|
-
assertTaggedBaseline([
|
|
27
|
-
findUntaggedBaseline({
|
|
28
|
-
label: 'project',
|
|
29
|
-
packageFiles: [ROOT_PACKAGE_FILE],
|
|
30
|
-
changelogPaths: [ROOT_CHANGELOG_PATH],
|
|
31
|
-
tagPrefixes: [project.tagPrefix],
|
|
32
|
-
previousTag: history.previousTag,
|
|
33
|
-
}, config),
|
|
34
|
-
]);
|
|
35
|
-
const { commits, diagnostics, parsedCommitCount, unparseableCommits } = history.unreleased;
|
|
36
|
-
const tag = history.previousTag;
|
|
37
|
-
const since = tag === undefined ? '(no previous release found)' : `since ${tag}`;
|
|
38
|
-
const decision = decideRelease({
|
|
39
|
-
naturalBump: history.unreleased.bump,
|
|
40
|
-
commitCount: commits.length,
|
|
41
|
-
force,
|
|
42
|
-
bumpOverride,
|
|
43
|
-
skipReasons: {
|
|
44
|
-
noCommits: `No commits ${since}. Pass --force to release at patch. Skipping.`,
|
|
45
|
-
noBumpWorthy: `No bump-worthy commits ${since}. Pass --force to release at patch (or --force --bump=X for a different level). Skipping.`,
|
|
46
|
-
},
|
|
47
|
-
});
|
|
48
|
-
if (decision.outcome === 'skip') {
|
|
49
|
-
const skipped = {
|
|
50
|
-
status: 'skipped',
|
|
51
|
-
commitCount: commits.length,
|
|
52
|
-
parsedCommitCount,
|
|
53
|
-
skipReason: decision.skipReason,
|
|
54
|
-
};
|
|
55
|
-
if (tag !== undefined) {
|
|
56
|
-
skipped.previousTag = tag;
|
|
57
|
-
}
|
|
58
|
-
if (unparseableCommits !== undefined) {
|
|
59
|
-
skipped.unparseableCommits = unparseableCommits;
|
|
60
|
-
}
|
|
61
|
-
attachChangelogDiagnostics(skipped, diagnostics);
|
|
62
|
-
return skipped;
|
|
63
|
-
}
|
|
64
|
-
const { releaseType } = decision;
|
|
65
|
-
const bump = planVersionBump([ROOT_PACKAGE_FILE], releaseType);
|
|
66
|
-
writes.push(...bump.writes);
|
|
67
|
-
const newTag = `${project.tagPrefix}${bump.newVersion}`;
|
|
68
|
-
const changelogs = planProjectChangelogs({
|
|
69
|
-
config,
|
|
70
|
-
history,
|
|
71
|
-
newTag,
|
|
72
|
-
rootOverrides,
|
|
73
|
-
overrideWarnings,
|
|
74
|
-
globalMatchedRootKeys,
|
|
75
|
-
});
|
|
76
|
-
const { changelogFiles, changelogJsonFiles } = changelogs;
|
|
77
|
-
writes.push(...changelogs.writes);
|
|
78
|
-
const previewFiles = [];
|
|
79
|
-
if (withReleaseNotes === true && config.changelogJson.enabled && changelogJsonFiles.length > 0) {
|
|
80
|
-
const previews = planReleaseNotesPreviews({
|
|
81
|
-
workspacePath: ROOT_CHANGELOG_PATH,
|
|
82
|
-
tag: newTag,
|
|
83
|
-
entries: changelogs.entries,
|
|
84
|
-
sectionOrder: deriveSectionOrder(workTypes),
|
|
85
|
-
});
|
|
86
|
-
writes.push(...previews.writes);
|
|
87
|
-
warnings.push(...previews.warnings);
|
|
88
|
-
previewFiles.push(...previews.writes.map((write) => write.path));
|
|
89
|
-
}
|
|
90
|
-
tags.push(newTag);
|
|
91
|
-
modifiedFiles.push(ROOT_PACKAGE_FILE, ...changelogFiles, ...changelogJsonFiles);
|
|
92
|
-
const result = {
|
|
93
|
-
status: 'released',
|
|
94
|
-
commitCount: commits.length,
|
|
95
|
-
parsedCommitCount,
|
|
96
|
-
releaseType,
|
|
97
|
-
currentVersion: bump.currentVersion,
|
|
98
|
-
newVersion: bump.newVersion,
|
|
99
|
-
tag: newTag,
|
|
100
|
-
bumpedFiles: bump.writes.map((write) => write.path),
|
|
101
|
-
changelogFiles,
|
|
102
|
-
commits,
|
|
103
|
-
};
|
|
104
|
-
if (previewFiles.length > 0) {
|
|
105
|
-
result.previewFiles = previewFiles;
|
|
106
|
-
}
|
|
107
|
-
if (changelogs.changelogPreservation.length > 0) {
|
|
108
|
-
result.changelogPreservation = changelogs.changelogPreservation;
|
|
109
|
-
}
|
|
110
|
-
if (tag !== undefined) {
|
|
111
|
-
result.previousTag = tag;
|
|
112
|
-
}
|
|
113
|
-
if (unparseableCommits !== undefined) {
|
|
114
|
-
result.unparseableCommits = unparseableCommits;
|
|
115
|
-
}
|
|
116
|
-
if (bumpOverride !== undefined) {
|
|
117
|
-
result.bumpOverride = bumpOverride;
|
|
118
|
-
}
|
|
119
|
-
attachChangelogDiagnostics(result, diagnostics);
|
|
120
|
-
return result;
|
|
121
|
-
}
|
|
122
|
-
function resolveOptionalOverrideArgs(args) {
|
|
123
|
-
return {
|
|
124
|
-
rootOverrides: args.rootOverrides ?? new Map(),
|
|
125
|
-
overrideWarnings: args.overrideWarnings ?? [],
|
|
126
|
-
globalMatchedRootKeys: args.globalMatchedRootKeys ?? new Set(),
|
|
127
|
-
warnings: args.warnings ?? [],
|
|
128
|
-
};
|
|
129
|
-
}
|
|
130
|
-
function planProjectChangelogs(args) {
|
|
131
|
-
const { config, history, newTag, rootOverrides, overrideWarnings, globalMatchedRootKeys } = args;
|
|
132
|
-
const today = new Date().toISOString().slice(0, 10);
|
|
133
|
-
const builtEntries = toReleaseEntries(history, newTag, today);
|
|
134
|
-
const applied = applyChangelogOverrides(builtEntries, rootOverrides);
|
|
135
|
-
if (applied.errors.length > 0) {
|
|
136
|
-
throw new Error(`Changelog override application failed:\n - ${applied.errors.join('\n - ')}`);
|
|
137
|
-
}
|
|
138
|
-
overrideWarnings.push(...applied.warnings);
|
|
139
|
-
for (const matched of applied.matchedKeys) {
|
|
140
|
-
globalMatchedRootKeys.add(matched);
|
|
141
|
-
}
|
|
142
|
-
const changelogJsonPath = resolveChangelogJsonPath(config, ROOT_CHANGELOG_PATH);
|
|
143
|
-
const sectionOrder = deriveSectionOrder(config.workTypes ?? { ...DEFAULT_WORK_TYPES });
|
|
144
|
-
const renderEntries = mergeChangelogEntriesWithDisk(changelogJsonPath, applied.entries);
|
|
145
|
-
const writes = [];
|
|
146
|
-
const changelogJsonFiles = [];
|
|
147
|
-
if (config.changelogJson.enabled) {
|
|
148
|
-
writes.push({ path: changelogJsonPath, content: renderChangelogJson(renderEntries) });
|
|
149
|
-
changelogJsonFiles.push(changelogJsonPath);
|
|
150
|
-
}
|
|
151
|
-
const changelogFile = joinPath(ROOT_CHANGELOG_PATH, 'CHANGELOG.md');
|
|
152
|
-
const preserved = planPreservedSections(changelogFile, renderEntries);
|
|
153
|
-
writes.push({
|
|
154
|
-
path: changelogFile,
|
|
155
|
-
content: renderChangelogMarkdown(renderEntries, { sectionOrder, preservedSections: preserved.sections }),
|
|
156
|
-
});
|
|
157
|
-
return {
|
|
158
|
-
changelogFiles: [changelogFile],
|
|
159
|
-
changelogJsonFiles,
|
|
160
|
-
changelogPreservation: preserved.preservation === undefined ? [] : [preserved.preservation],
|
|
161
|
-
entries: renderEntries,
|
|
162
|
-
writes,
|
|
163
|
-
};
|
|
164
|
-
}
|