@williamthorsen/release-kit 10.2.0 → 10.2.2
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/.readyup/kits/default.js +1 -1
- package/.readyup/kits/npm-auto-publish.js +135 -23
- package/.readyup/manifest.json +3 -3
- package/CHANGELOG.md +30 -0
- package/README.md +12 -8
- package/dist/esm/assertCleanWorkingTree.js +2 -0
- package/dist/esm/buildChangelogEntries.js +2 -2
- package/dist/esm/buildReleaseSummary.d.ts +1 -1
- package/dist/esm/changelogJsonFile.d.ts +1 -3
- package/dist/esm/changelogJsonFile.js +4 -18
- package/dist/esm/commitCommand.js +10 -17
- package/dist/esm/createTags.js +6 -16
- package/dist/esm/detectUndeclaredTagPrefixes.js +2 -0
- package/dist/esm/getCommitsSinceTarget.js +3 -0
- package/dist/esm/init/checks.js +2 -1
- package/dist/esm/injectReleaseNotesIntoReadme.d.ts +2 -0
- package/dist/esm/injectReleaseNotesIntoReadme.js +13 -10
- package/dist/esm/planReleaseNotesPreviews.d.ts +13 -0
- package/dist/esm/planReleaseNotesPreviews.js +43 -0
- package/dist/esm/planVersionBump.d.ts +9 -0
- package/dist/esm/{bumpAllVersions.js → planVersionBump.js} +15 -26
- package/dist/esm/prepareCommand.d.ts +0 -4
- package/dist/esm/prepareCommand.js +51 -45
- package/dist/esm/previewTagPrefixes.js +2 -0
- package/dist/esm/pushRelease.js +2 -0
- package/dist/esm/releaseFiles.d.ts +4 -0
- package/dist/esm/releaseFiles.js +34 -0
- package/dist/esm/releasePlan.d.ts +10 -0
- package/dist/esm/releasePlan.js +53 -0
- package/dist/esm/releasePrepare.d.ts +3 -3
- package/dist/esm/releasePrepare.js +53 -54
- package/dist/esm/releasePrepareMono.d.ts +3 -2
- package/dist/esm/releasePrepareMono.js +48 -52
- package/dist/esm/releasePrepareProject.d.ts +3 -0
- package/dist/esm/releasePrepareProject.js +33 -37
- package/dist/esm/renderChangelogMarkdown.d.ts +0 -7
- package/dist/esm/renderChangelogMarkdown.js +0 -13
- package/dist/esm/reportPrepare.d.ts +5 -1
- package/dist/esm/reportPrepare.js +36 -17
- package/dist/esm/resolveReleaseTags.js +5 -1
- package/dist/esm/runGitCliff.d.ts +1 -2
- package/dist/esm/runGitCliff.js +11 -11
- package/dist/esm/sync-labels/syncCommand.js +2 -2
- package/dist/esm/types.d.ts +4 -9
- package/dist/esm/workTypesData.d.ts +1 -1
- package/package.json +2 -2
- package/dist/esm/bumpAllVersions.d.ts +0 -3
- package/dist/esm/writeReleaseNotesPreviews.d.ts +0 -18
- package/dist/esm/writeReleaseNotesPreviews.js +0 -63
package/dist/esm/types.d.ts
CHANGED
|
@@ -39,11 +39,6 @@ export interface PropagationSource {
|
|
|
39
39
|
packageName: string;
|
|
40
40
|
newVersion: string;
|
|
41
41
|
}
|
|
42
|
-
export interface BumpResult {
|
|
43
|
-
currentVersion: string;
|
|
44
|
-
newVersion: string;
|
|
45
|
-
files: string[];
|
|
46
|
-
}
|
|
47
42
|
export interface PolicyViolation {
|
|
48
43
|
commitHash: string;
|
|
49
44
|
commitSubject: string;
|
|
@@ -64,6 +59,7 @@ export interface ReleasedWorkspaceResult {
|
|
|
64
59
|
tag: string;
|
|
65
60
|
bumpedFiles: string[];
|
|
66
61
|
changelogFiles: string[];
|
|
62
|
+
previewFiles?: string[];
|
|
67
63
|
commits?: Commit[];
|
|
68
64
|
bumpOverride?: ReleaseType;
|
|
69
65
|
propagatedFrom?: PropagationSource[];
|
|
@@ -93,6 +89,7 @@ export interface ReleasedProjectResult {
|
|
|
93
89
|
tag: string;
|
|
94
90
|
bumpedFiles: string[];
|
|
95
91
|
changelogFiles: string[];
|
|
92
|
+
previewFiles?: string[];
|
|
96
93
|
commits: Commit[];
|
|
97
94
|
bumpOverride?: ReleaseType;
|
|
98
95
|
}
|
|
@@ -111,10 +108,8 @@ export interface PrepareResult {
|
|
|
111
108
|
tags: string[];
|
|
112
109
|
formatCommand?: {
|
|
113
110
|
command: string;
|
|
114
|
-
executed: boolean;
|
|
115
111
|
files: string[];
|
|
116
112
|
} | undefined;
|
|
117
|
-
dryRun: boolean;
|
|
118
113
|
warnings?: string[] | undefined;
|
|
119
114
|
project?: ProjectPrepareResult | undefined;
|
|
120
115
|
}
|
|
@@ -167,8 +162,8 @@ export declare const versionPatternsSchema: z.ZodObject<{
|
|
|
167
162
|
minor: z.ZodArray<z.ZodString>;
|
|
168
163
|
}, z.core.$strict>;
|
|
169
164
|
export declare const breakingPolicyValueSchema: z.ZodEnum<{
|
|
170
|
-
optional: "optional";
|
|
171
165
|
forbidden: "forbidden";
|
|
166
|
+
optional: "optional";
|
|
172
167
|
required: "required";
|
|
173
168
|
}>;
|
|
174
169
|
export declare const labelSpecSchema: z.ZodObject<{
|
|
@@ -186,8 +181,8 @@ export declare const repoLabelsSchema: z.ZodObject<{
|
|
|
186
181
|
export type RepoLabelsConfig = z.infer<typeof repoLabelsSchema>;
|
|
187
182
|
export declare const releaseKitConfigSchema: z.ZodObject<{
|
|
188
183
|
breakingPolicies: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<{
|
|
189
|
-
optional: "optional";
|
|
190
184
|
forbidden: "forbidden";
|
|
185
|
+
optional: "optional";
|
|
191
186
|
required: "required";
|
|
192
187
|
}>>>;
|
|
193
188
|
changelogJson: z.ZodOptional<z.ZodObject<{
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@williamthorsen/release-kit",
|
|
3
|
-
"version": "10.2.
|
|
3
|
+
"version": "10.2.2",
|
|
4
4
|
"description": "Version-bumping and changelog-generation toolkit for release workflows",
|
|
5
5
|
"keywords": [],
|
|
6
6
|
"homepage": "https://github.com/williamthorsen/node-monorepo-tools/tree/main/packages/release-kit#readme",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"semver": "7.8.5",
|
|
45
45
|
"yaml": "2.9.0",
|
|
46
46
|
"zod": "4.4.3",
|
|
47
|
-
"@williamthorsen/nmr-core": "0.9.
|
|
47
|
+
"@williamthorsen/nmr-core": "0.9.2"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
50
|
"@types/semver": "7.7.1",
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import type { BumpResult, ReleaseType } from './types.js';
|
|
2
|
-
export declare function bumpAllVersions(packageFiles: readonly string[], releaseType: ReleaseType, dryRun: boolean): BumpResult;
|
|
3
|
-
export declare function setAllVersions(packageFiles: readonly string[], newVersion: string, dryRun: boolean): BumpResult;
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
export interface WriteReleaseNotesPreviewsOptions {
|
|
2
|
-
workspacePath: string;
|
|
3
|
-
tag: string;
|
|
4
|
-
changelogJsonPath: string;
|
|
5
|
-
sectionOrder: string[];
|
|
6
|
-
dryRun: boolean;
|
|
7
|
-
}
|
|
8
|
-
export interface PreviewFileResult {
|
|
9
|
-
filePath: string;
|
|
10
|
-
outcome: 'created' | 'overwritten' | 'skipped-no-readme' | 'failed' | 'dry-run';
|
|
11
|
-
error?: string;
|
|
12
|
-
}
|
|
13
|
-
export interface WriteReleaseNotesPreviewsResult {
|
|
14
|
-
injectedReadme?: PreviewFileResult;
|
|
15
|
-
releaseNotes?: PreviewFileResult;
|
|
16
|
-
renderSkipped: boolean;
|
|
17
|
-
}
|
|
18
|
-
export declare function writeReleaseNotesPreviews(options: WriteReleaseNotesPreviewsOptions): WriteReleaseNotesPreviewsResult;
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { existsSync, readFileSync } from 'node:fs';
|
|
2
|
-
import path from 'node:path';
|
|
3
|
-
import { reportError, writeFileWithCheck } from '@williamthorsen/nmr-core';
|
|
4
|
-
import { extractVersion } from "./changelogJsonUtils.js";
|
|
5
|
-
import { dim } from "./format.js";
|
|
6
|
-
import { renderInjectedReadme } from "./injectReleaseNotesIntoReadme.js";
|
|
7
|
-
export function writeReleaseNotesPreviews(options) {
|
|
8
|
-
const { workspacePath, tag, changelogJsonPath, sectionOrder, dryRun } = options;
|
|
9
|
-
const version = extractVersion(tag);
|
|
10
|
-
const readmePath = path.join(workspacePath, 'README.md');
|
|
11
|
-
let readmeExists = existsSync(readmePath);
|
|
12
|
-
let readmeUnreadable = false;
|
|
13
|
-
let readmeContent = '';
|
|
14
|
-
if (readmeExists) {
|
|
15
|
-
try {
|
|
16
|
-
readmeContent = readFileSync(readmePath, 'utf8');
|
|
17
|
-
}
|
|
18
|
-
catch (error) {
|
|
19
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
20
|
-
console.warn(`Warning: failed to read ${readmePath}: ${message}; skipping injected-README preview`);
|
|
21
|
-
readmeExists = false;
|
|
22
|
-
readmeUnreadable = true;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
const rendered = renderInjectedReadme(readmeContent, changelogJsonPath, tag, sectionOrder);
|
|
26
|
-
if (rendered === undefined) {
|
|
27
|
-
return { renderSkipped: true };
|
|
28
|
-
}
|
|
29
|
-
const docsDir = path.join(workspacePath, 'docs');
|
|
30
|
-
const readmePreviewPath = path.join(docsDir, `README.v${version}.md`);
|
|
31
|
-
const releaseNotesPreviewPath = path.join(docsDir, `RELEASE_NOTES.v${version}.md`);
|
|
32
|
-
let injectedReadme;
|
|
33
|
-
if (readmeExists) {
|
|
34
|
-
injectedReadme = writePreviewFile(readmePreviewPath, rendered.injectedReadme, dryRun);
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
if (!readmeUnreadable) {
|
|
38
|
-
console.warn(`Warning: ${readmePath} not found; skipping injected-README preview but still writing standalone release notes`);
|
|
39
|
-
}
|
|
40
|
-
injectedReadme = { filePath: readmePreviewPath, outcome: 'skipped-no-readme' };
|
|
41
|
-
}
|
|
42
|
-
const releaseNotesContent = rendered.releaseNotesMarkdown.endsWith('\n')
|
|
43
|
-
? rendered.releaseNotesMarkdown
|
|
44
|
-
: `${rendered.releaseNotesMarkdown}\n`;
|
|
45
|
-
const releaseNotes = writePreviewFile(releaseNotesPreviewPath, releaseNotesContent, dryRun);
|
|
46
|
-
return { injectedReadme, releaseNotes, renderSkipped: false };
|
|
47
|
-
}
|
|
48
|
-
function writePreviewFile(filePath, content, dryRun) {
|
|
49
|
-
if (dryRun) {
|
|
50
|
-
console.info(dim(` [dry-run] Would write ${filePath}`));
|
|
51
|
-
return { filePath, outcome: 'dry-run' };
|
|
52
|
-
}
|
|
53
|
-
const result = writeFileWithCheck(filePath, content, { dryRun: false, overwrite: true });
|
|
54
|
-
if (result.outcome === 'failed') {
|
|
55
|
-
reportError(`Failed to write ${filePath}: ${result.error ?? 'unknown error'}`);
|
|
56
|
-
return { filePath, outcome: 'failed', ...(result.error !== undefined && { error: result.error }) };
|
|
57
|
-
}
|
|
58
|
-
if (result.outcome === 'created' || result.outcome === 'overwritten') {
|
|
59
|
-
console.info(dim(` Wrote ${filePath}`));
|
|
60
|
-
return { filePath, outcome: result.outcome };
|
|
61
|
-
}
|
|
62
|
-
return { filePath, outcome: 'failed', error: `unexpected outcome: ${result.outcome}` };
|
|
63
|
-
}
|