@releasekit/notes 0.2.0-next.9 → 0.2.1
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/LICENSE +21 -0
- package/README.md +3 -1
- package/dist/aggregator-YA7LC3KJ.js +13 -0
- package/dist/chunk-ATNNRK62.js +165 -0
- package/dist/{chunk-BLWJTLRD.js → chunk-IKER5VME.js} +687 -429
- package/dist/chunk-SAUES3BF.js +231 -0
- package/dist/cli.d.ts +8 -0
- package/dist/cli.js +13 -29
- package/dist/index.d.ts +8 -182
- package/dist/index.js +13 -7
- package/package.json +43 -36
- package/dist/cli.cjs +0 -1750
- package/dist/cli.d.cts +0 -1
- package/dist/index.cjs +0 -1656
- package/dist/index.d.cts +0 -182
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
// ../core/dist/index.js
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
var LOG_LEVELS = {
|
|
4
|
+
error: 0,
|
|
5
|
+
warn: 1,
|
|
6
|
+
info: 2,
|
|
7
|
+
debug: 3,
|
|
8
|
+
trace: 4
|
|
9
|
+
};
|
|
10
|
+
var PREFIXES = {
|
|
11
|
+
error: "[ERROR]",
|
|
12
|
+
warn: "[WARN]",
|
|
13
|
+
info: "[INFO]",
|
|
14
|
+
debug: "[DEBUG]",
|
|
15
|
+
trace: "[TRACE]"
|
|
16
|
+
};
|
|
17
|
+
var COLORS = {
|
|
18
|
+
error: chalk.red,
|
|
19
|
+
warn: chalk.yellow,
|
|
20
|
+
info: chalk.blue,
|
|
21
|
+
debug: chalk.gray,
|
|
22
|
+
trace: chalk.dim
|
|
23
|
+
};
|
|
24
|
+
var currentLevel = "info";
|
|
25
|
+
var quietMode = false;
|
|
26
|
+
function setLogLevel(level) {
|
|
27
|
+
currentLevel = level;
|
|
28
|
+
}
|
|
29
|
+
function setQuietMode(quiet) {
|
|
30
|
+
quietMode = quiet;
|
|
31
|
+
}
|
|
32
|
+
function shouldLog(level) {
|
|
33
|
+
if (quietMode && level !== "error") return false;
|
|
34
|
+
return LOG_LEVELS[level] <= LOG_LEVELS[currentLevel];
|
|
35
|
+
}
|
|
36
|
+
function log(message, level = "info") {
|
|
37
|
+
if (!shouldLog(level)) return;
|
|
38
|
+
const formatted = COLORS[level](`${PREFIXES[level]} ${message}`);
|
|
39
|
+
console.error(formatted);
|
|
40
|
+
}
|
|
41
|
+
function error(message) {
|
|
42
|
+
log(message, "error");
|
|
43
|
+
}
|
|
44
|
+
function warn(message) {
|
|
45
|
+
log(message, "warn");
|
|
46
|
+
}
|
|
47
|
+
function info(message) {
|
|
48
|
+
log(message, "info");
|
|
49
|
+
}
|
|
50
|
+
function success(message) {
|
|
51
|
+
if (!shouldLog("info")) return;
|
|
52
|
+
console.error(chalk.green(`[SUCCESS] ${message}`));
|
|
53
|
+
}
|
|
54
|
+
function debug(message) {
|
|
55
|
+
log(message, "debug");
|
|
56
|
+
}
|
|
57
|
+
var ReleaseKitError = class _ReleaseKitError extends Error {
|
|
58
|
+
constructor(message) {
|
|
59
|
+
super(message);
|
|
60
|
+
this.name = this.constructor.name;
|
|
61
|
+
}
|
|
62
|
+
logError() {
|
|
63
|
+
log(this.message, "error");
|
|
64
|
+
if (this.suggestions.length > 0) {
|
|
65
|
+
log("\nSuggested solutions:", "info");
|
|
66
|
+
for (const [i, suggestion] of this.suggestions.entries()) {
|
|
67
|
+
log(`${i + 1}. ${suggestion}`, "info");
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
static isReleaseKitError(error2) {
|
|
72
|
+
return error2 instanceof _ReleaseKitError;
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
var EXIT_CODES = {
|
|
76
|
+
SUCCESS: 0,
|
|
77
|
+
GENERAL_ERROR: 1,
|
|
78
|
+
CONFIG_ERROR: 2,
|
|
79
|
+
INPUT_ERROR: 3,
|
|
80
|
+
TEMPLATE_ERROR: 4,
|
|
81
|
+
LLM_ERROR: 5,
|
|
82
|
+
GITHUB_ERROR: 6,
|
|
83
|
+
GIT_ERROR: 7,
|
|
84
|
+
VERSION_ERROR: 8,
|
|
85
|
+
PUBLISH_ERROR: 9
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
// src/output/markdown.ts
|
|
89
|
+
import * as fs from "fs";
|
|
90
|
+
import * as path from "path";
|
|
91
|
+
var TYPE_ORDER = ["added", "changed", "deprecated", "removed", "fixed", "security"];
|
|
92
|
+
var TYPE_LABELS = {
|
|
93
|
+
added: "Added",
|
|
94
|
+
changed: "Changed",
|
|
95
|
+
deprecated: "Deprecated",
|
|
96
|
+
removed: "Removed",
|
|
97
|
+
fixed: "Fixed",
|
|
98
|
+
security: "Security"
|
|
99
|
+
};
|
|
100
|
+
function groupEntriesByType(entries) {
|
|
101
|
+
const grouped = /* @__PURE__ */ new Map();
|
|
102
|
+
for (const type of TYPE_ORDER) {
|
|
103
|
+
grouped.set(type, []);
|
|
104
|
+
}
|
|
105
|
+
for (const entry of entries) {
|
|
106
|
+
const existing = grouped.get(entry.type) ?? [];
|
|
107
|
+
existing.push(entry);
|
|
108
|
+
grouped.set(entry.type, existing);
|
|
109
|
+
}
|
|
110
|
+
return grouped;
|
|
111
|
+
}
|
|
112
|
+
function formatEntry(entry) {
|
|
113
|
+
let line;
|
|
114
|
+
if (entry.breaking && entry.scope) {
|
|
115
|
+
line = `- **BREAKING** **${entry.scope}**: ${entry.description}`;
|
|
116
|
+
} else if (entry.breaking) {
|
|
117
|
+
line = `- **BREAKING** ${entry.description}`;
|
|
118
|
+
} else if (entry.scope) {
|
|
119
|
+
line = `- **${entry.scope}**: ${entry.description}`;
|
|
120
|
+
} else {
|
|
121
|
+
line = `- ${entry.description}`;
|
|
122
|
+
}
|
|
123
|
+
if (entry.issueIds && entry.issueIds.length > 0) {
|
|
124
|
+
line += ` (${entry.issueIds.join(", ")})`;
|
|
125
|
+
}
|
|
126
|
+
return line;
|
|
127
|
+
}
|
|
128
|
+
function formatVersion(context, options) {
|
|
129
|
+
const lines = [];
|
|
130
|
+
const versionLabel = options?.includePackageName && context.packageName ? `${context.packageName}@${context.version}` : context.version;
|
|
131
|
+
const versionHeader = context.previousVersion ? `## [${versionLabel}]` : `## ${versionLabel}`;
|
|
132
|
+
lines.push(`${versionHeader} - ${context.date}`);
|
|
133
|
+
lines.push("");
|
|
134
|
+
if (context.compareUrl) {
|
|
135
|
+
lines.push(`[Full Changelog](${context.compareUrl})`);
|
|
136
|
+
lines.push("");
|
|
137
|
+
}
|
|
138
|
+
if (context.enhanced?.summary) {
|
|
139
|
+
lines.push(context.enhanced.summary);
|
|
140
|
+
lines.push("");
|
|
141
|
+
}
|
|
142
|
+
const grouped = groupEntriesByType(context.entries);
|
|
143
|
+
for (const [type, entries] of grouped) {
|
|
144
|
+
if (entries.length === 0) continue;
|
|
145
|
+
lines.push(`### ${TYPE_LABELS[type]}`);
|
|
146
|
+
for (const entry of entries) {
|
|
147
|
+
lines.push(formatEntry(entry));
|
|
148
|
+
}
|
|
149
|
+
lines.push("");
|
|
150
|
+
}
|
|
151
|
+
return lines.join("\n");
|
|
152
|
+
}
|
|
153
|
+
function formatHeader() {
|
|
154
|
+
return `# Changelog
|
|
155
|
+
|
|
156
|
+
All notable changes to this project will be documented in this file.
|
|
157
|
+
|
|
158
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
159
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
160
|
+
|
|
161
|
+
`;
|
|
162
|
+
}
|
|
163
|
+
function renderMarkdown(contexts, options) {
|
|
164
|
+
const sections = [formatHeader()];
|
|
165
|
+
for (const context of contexts) {
|
|
166
|
+
sections.push(formatVersion(context, options));
|
|
167
|
+
}
|
|
168
|
+
return sections.join("\n");
|
|
169
|
+
}
|
|
170
|
+
function prependVersion(existingPath, context, options) {
|
|
171
|
+
let existing = "";
|
|
172
|
+
if (fs.existsSync(existingPath)) {
|
|
173
|
+
existing = fs.readFileSync(existingPath, "utf-8");
|
|
174
|
+
const headerEnd = existing.indexOf("\n## ");
|
|
175
|
+
if (headerEnd >= 0) {
|
|
176
|
+
const header = existing.slice(0, headerEnd);
|
|
177
|
+
const body = existing.slice(headerEnd + 1);
|
|
178
|
+
const newVersion = formatVersion(context, options);
|
|
179
|
+
return `${header}
|
|
180
|
+
|
|
181
|
+
${newVersion}
|
|
182
|
+
${body}`;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
return renderMarkdown([context]);
|
|
186
|
+
}
|
|
187
|
+
function writeMarkdown(outputPath, contexts, config, dryRun, options) {
|
|
188
|
+
const content = renderMarkdown(contexts, options);
|
|
189
|
+
const label = /changelog/i.test(outputPath) ? "Changelog" : "Release notes";
|
|
190
|
+
if (dryRun) {
|
|
191
|
+
info(`Would write ${label.toLowerCase()} to ${outputPath}`);
|
|
192
|
+
debug("--- Preview ---");
|
|
193
|
+
debug(content);
|
|
194
|
+
debug("--- End Preview ---");
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
const dir = path.dirname(outputPath);
|
|
198
|
+
if (!fs.existsSync(dir)) {
|
|
199
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
200
|
+
}
|
|
201
|
+
if (outputPath === "-") {
|
|
202
|
+
process.stdout.write(content);
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
if (config.updateStrategy === "prepend" && fs.existsSync(outputPath) && contexts.length === 1) {
|
|
206
|
+
const firstContext = contexts[0];
|
|
207
|
+
if (firstContext) {
|
|
208
|
+
const updated = prependVersion(outputPath, firstContext, options);
|
|
209
|
+
fs.writeFileSync(outputPath, updated, "utf-8");
|
|
210
|
+
}
|
|
211
|
+
} else {
|
|
212
|
+
fs.writeFileSync(outputPath, content, "utf-8");
|
|
213
|
+
}
|
|
214
|
+
success(`${label} written to ${outputPath}`);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
export {
|
|
218
|
+
setLogLevel,
|
|
219
|
+
setQuietMode,
|
|
220
|
+
error,
|
|
221
|
+
warn,
|
|
222
|
+
info,
|
|
223
|
+
success,
|
|
224
|
+
debug,
|
|
225
|
+
ReleaseKitError,
|
|
226
|
+
EXIT_CODES,
|
|
227
|
+
formatVersion,
|
|
228
|
+
renderMarkdown,
|
|
229
|
+
prependVersion,
|
|
230
|
+
writeMarkdown
|
|
231
|
+
};
|
package/dist/cli.d.ts
CHANGED
|
@@ -1 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import './core/config.ts';
|
|
3
|
+
import './core/pipeline.ts';
|
|
4
|
+
import './core/types.ts';
|
|
5
|
+
import './errors/index.ts';
|
|
6
|
+
import './input/package-versioner.ts';
|
|
7
|
+
import './monorepo/aggregator.ts';
|
|
8
|
+
import './output/json.ts';
|
|
9
|
+
import './output/markdown.ts';
|
package/dist/cli.js
CHANGED
|
@@ -1,22 +1,25 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
|
-
EXIT_CODES,
|
|
4
3
|
NotesError,
|
|
5
|
-
createTemplateContext,
|
|
6
|
-
detectMonorepo,
|
|
7
4
|
getDefaultConfig,
|
|
8
5
|
getExitCode,
|
|
9
6
|
loadConfig,
|
|
10
7
|
parsePackageVersioner,
|
|
11
8
|
runPipeline,
|
|
12
|
-
saveAuth
|
|
13
|
-
|
|
14
|
-
|
|
9
|
+
saveAuth
|
|
10
|
+
} from "./chunk-IKER5VME.js";
|
|
11
|
+
import {
|
|
12
|
+
EXIT_CODES,
|
|
13
|
+
error,
|
|
14
|
+
info,
|
|
15
|
+
setLogLevel,
|
|
16
|
+
setQuietMode,
|
|
17
|
+
success
|
|
18
|
+
} from "./chunk-SAUES3BF.js";
|
|
15
19
|
|
|
16
20
|
// src/cli.ts
|
|
17
21
|
import * as fs from "fs";
|
|
18
22
|
import * as readline from "readline";
|
|
19
|
-
import { error, info, setLogLevel, setQuietMode, success } from "@releasekit/core";
|
|
20
23
|
import { Command } from "commander";
|
|
21
24
|
var program = new Command();
|
|
22
25
|
program.name("releasekit-notes").description("Generate changelogs with LLM-powered enhancement and flexible templating").version("0.1.0");
|
|
@@ -82,29 +85,10 @@ program.command("generate", { isDefault: true }).description("Generate changelog
|
|
|
82
85
|
}
|
|
83
86
|
info(`Filtered to package: ${options.target}`);
|
|
84
87
|
}
|
|
85
|
-
if (options.monorepo
|
|
86
|
-
|
|
87
|
-
const detected = detectMonorepo(process.cwd());
|
|
88
|
-
if (!detected.isMonorepo) {
|
|
89
|
-
info("No monorepo detected, using single package mode");
|
|
90
|
-
await runPipeline(input, config, options.dryRun ?? false);
|
|
91
|
-
} else {
|
|
92
|
-
info(`Monorepo detected with packages at ${detected.packagesPath}`);
|
|
93
|
-
const contexts = input.packages.map(createTemplateContext);
|
|
94
|
-
writeMonorepoChangelogs(
|
|
95
|
-
contexts,
|
|
96
|
-
{
|
|
97
|
-
rootPath: config.monorepo?.rootPath ?? process.cwd(),
|
|
98
|
-
packagesPath: config.monorepo?.packagesPath ?? detected.packagesPath,
|
|
99
|
-
mode: monorepoMode
|
|
100
|
-
},
|
|
101
|
-
config,
|
|
102
|
-
options.dryRun ?? false
|
|
103
|
-
);
|
|
104
|
-
}
|
|
105
|
-
} else {
|
|
106
|
-
await runPipeline(input, config, options.dryRun ?? false);
|
|
88
|
+
if (options.monorepo) {
|
|
89
|
+
config.monorepo = { ...config.monorepo, mode: options.monorepo };
|
|
107
90
|
}
|
|
91
|
+
await runPipeline(input, config, options.dryRun ?? false);
|
|
108
92
|
if (options.dryRun) {
|
|
109
93
|
info("Dry run complete - no files were written");
|
|
110
94
|
} else {
|
package/dist/index.d.ts
CHANGED
|
@@ -1,182 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
export {
|
|
3
|
-
|
|
4
|
-
export
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
interface RetryOptions {
|
|
10
|
-
maxAttempts?: number;
|
|
11
|
-
initialDelay?: number;
|
|
12
|
-
maxDelay?: number;
|
|
13
|
-
backoffFactor?: number;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
type ChangelogType = 'added' | 'changed' | 'deprecated' | 'removed' | 'fixed' | 'security';
|
|
17
|
-
interface ChangelogEntry {
|
|
18
|
-
type: ChangelogType;
|
|
19
|
-
description: string;
|
|
20
|
-
issueIds?: string[];
|
|
21
|
-
scope?: string;
|
|
22
|
-
originalType?: string;
|
|
23
|
-
breaking?: boolean;
|
|
24
|
-
}
|
|
25
|
-
interface PackageChangelog {
|
|
26
|
-
packageName: string;
|
|
27
|
-
version: string;
|
|
28
|
-
previousVersion: string | null;
|
|
29
|
-
revisionRange: string;
|
|
30
|
-
repoUrl: string | null;
|
|
31
|
-
date: string;
|
|
32
|
-
entries: ChangelogEntry[];
|
|
33
|
-
}
|
|
34
|
-
type InputSource = 'package-versioner' | 'conventional-changelog' | 'git-log' | 'manual';
|
|
35
|
-
interface ChangelogInput {
|
|
36
|
-
source: InputSource;
|
|
37
|
-
packages: PackageChangelog[];
|
|
38
|
-
metadata?: {
|
|
39
|
-
repoUrl?: string;
|
|
40
|
-
defaultBranch?: string;
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
interface EnhancedData {
|
|
44
|
-
entries: ChangelogEntry[];
|
|
45
|
-
summary?: string;
|
|
46
|
-
categories?: Record<string, ChangelogEntry[]>;
|
|
47
|
-
releaseNotes?: string;
|
|
48
|
-
}
|
|
49
|
-
interface TemplateContext {
|
|
50
|
-
packageName: string;
|
|
51
|
-
version: string;
|
|
52
|
-
previousVersion: string | null;
|
|
53
|
-
date: string;
|
|
54
|
-
repoUrl: string | null;
|
|
55
|
-
entries: ChangelogEntry[];
|
|
56
|
-
compareUrl?: string;
|
|
57
|
-
enhanced?: EnhancedData;
|
|
58
|
-
}
|
|
59
|
-
interface DocumentContext {
|
|
60
|
-
project: {
|
|
61
|
-
name: string;
|
|
62
|
-
repoUrl?: string;
|
|
63
|
-
};
|
|
64
|
-
versions: TemplateContext[];
|
|
65
|
-
unreleased?: TemplateContext;
|
|
66
|
-
compareUrls?: Record<string, string>;
|
|
67
|
-
}
|
|
68
|
-
interface LLMOptions {
|
|
69
|
-
timeout?: number;
|
|
70
|
-
maxTokens?: number;
|
|
71
|
-
temperature?: number;
|
|
72
|
-
}
|
|
73
|
-
interface LLMConfig {
|
|
74
|
-
provider: string;
|
|
75
|
-
model: string;
|
|
76
|
-
baseURL?: string;
|
|
77
|
-
apiKey?: string;
|
|
78
|
-
options?: LLMOptions;
|
|
79
|
-
concurrency?: number;
|
|
80
|
-
retry?: RetryOptions;
|
|
81
|
-
tasks?: {
|
|
82
|
-
summarize?: boolean;
|
|
83
|
-
enhance?: boolean;
|
|
84
|
-
categorize?: boolean;
|
|
85
|
-
releaseNotes?: boolean;
|
|
86
|
-
};
|
|
87
|
-
categories?: Array<{
|
|
88
|
-
name: string;
|
|
89
|
-
description: string;
|
|
90
|
-
}>;
|
|
91
|
-
style?: string;
|
|
92
|
-
}
|
|
93
|
-
type OutputFormat = 'markdown' | 'github-release' | 'json';
|
|
94
|
-
interface OutputConfig {
|
|
95
|
-
format: OutputFormat;
|
|
96
|
-
file?: string;
|
|
97
|
-
options?: Record<string, unknown>;
|
|
98
|
-
}
|
|
99
|
-
type MonorepoMode = 'root' | 'packages' | 'both';
|
|
100
|
-
interface MonorepoConfig {
|
|
101
|
-
mode?: MonorepoMode;
|
|
102
|
-
rootPath?: string;
|
|
103
|
-
packagesPath?: string;
|
|
104
|
-
}
|
|
105
|
-
type UpdateStrategy = 'prepend' | 'regenerate';
|
|
106
|
-
type TemplateEngine = 'handlebars' | 'liquid' | 'ejs';
|
|
107
|
-
interface TemplateConfig {
|
|
108
|
-
path?: string;
|
|
109
|
-
engine?: TemplateEngine;
|
|
110
|
-
}
|
|
111
|
-
interface Config {
|
|
112
|
-
input?: {
|
|
113
|
-
source?: string;
|
|
114
|
-
file?: string;
|
|
115
|
-
};
|
|
116
|
-
output: OutputConfig[];
|
|
117
|
-
monorepo?: MonorepoConfig;
|
|
118
|
-
templates?: TemplateConfig;
|
|
119
|
-
llm?: LLMConfig;
|
|
120
|
-
updateStrategy?: UpdateStrategy;
|
|
121
|
-
}
|
|
122
|
-
interface CompleteOptions {
|
|
123
|
-
maxTokens?: number;
|
|
124
|
-
temperature?: number;
|
|
125
|
-
timeout?: number;
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
declare function createTemplateContext(pkg: PackageChangelog): TemplateContext;
|
|
129
|
-
declare function runPipeline(input: ChangelogInput, config: Config, dryRun: boolean): Promise<void>;
|
|
130
|
-
declare function processInput(inputJson: string, config: Config, dryRun: boolean): Promise<void>;
|
|
131
|
-
|
|
132
|
-
declare abstract class NotesError extends ReleaseKitError {
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
declare class InputParseError extends NotesError {
|
|
136
|
-
readonly code = "INPUT_PARSE_ERROR";
|
|
137
|
-
readonly suggestions: string[];
|
|
138
|
-
}
|
|
139
|
-
declare class TemplateError extends NotesError {
|
|
140
|
-
readonly code = "TEMPLATE_ERROR";
|
|
141
|
-
readonly suggestions: string[];
|
|
142
|
-
}
|
|
143
|
-
declare class LLMError extends NotesError {
|
|
144
|
-
readonly code = "LLM_ERROR";
|
|
145
|
-
readonly suggestions: string[];
|
|
146
|
-
}
|
|
147
|
-
declare class GitHubError extends NotesError {
|
|
148
|
-
readonly code = "GITHUB_ERROR";
|
|
149
|
-
readonly suggestions: string[];
|
|
150
|
-
}
|
|
151
|
-
declare class ConfigError extends NotesError {
|
|
152
|
-
readonly code = "CONFIG_ERROR";
|
|
153
|
-
readonly suggestions: string[];
|
|
154
|
-
}
|
|
155
|
-
declare function getExitCode(error: NotesError): number;
|
|
156
|
-
|
|
157
|
-
declare function parsePackageVersioner(json: string): ChangelogInput;
|
|
158
|
-
declare function parsePackageVersionerFile(filePath: string): ChangelogInput;
|
|
159
|
-
declare function parsePackageVersionerStdin(): Promise<ChangelogInput>;
|
|
160
|
-
|
|
161
|
-
interface MonorepoOptions {
|
|
162
|
-
rootPath: string;
|
|
163
|
-
packagesPath: string;
|
|
164
|
-
mode: 'root' | 'packages' | 'both';
|
|
165
|
-
}
|
|
166
|
-
declare function aggregateToRoot(contexts: TemplateContext[]): TemplateContext;
|
|
167
|
-
|
|
168
|
-
declare function writeMonorepoChangelogs(contexts: TemplateContext[], options: MonorepoOptions, config: {
|
|
169
|
-
updateStrategy?: 'prepend' | 'regenerate';
|
|
170
|
-
}, dryRun: boolean): void;
|
|
171
|
-
declare function detectMonorepo(cwd: string): {
|
|
172
|
-
isMonorepo: boolean;
|
|
173
|
-
packagesPath: string;
|
|
174
|
-
};
|
|
175
|
-
|
|
176
|
-
declare function renderJson(contexts: TemplateContext[]): string;
|
|
177
|
-
declare function writeJson(outputPath: string, contexts: TemplateContext[], dryRun: boolean): void;
|
|
178
|
-
|
|
179
|
-
declare function renderMarkdown(contexts: TemplateContext[]): string;
|
|
180
|
-
declare function writeMarkdown(outputPath: string, contexts: TemplateContext[], config: Config, dryRun: boolean): void;
|
|
181
|
-
|
|
182
|
-
export { NotesError as ChangelogCreatorError, type ChangelogEntry, type ChangelogInput, type ChangelogType, type CompleteOptions, type Config, ConfigError, type DocumentContext, type EnhancedData, GitHubError, InputParseError, type InputSource, type LLMConfig, LLMError, type LLMOptions, type MonorepoConfig, type MonorepoMode, NotesError, type OutputConfig, type OutputFormat, type PackageChangelog, type RetryOptions, type TemplateConfig, type TemplateContext, type TemplateEngine, TemplateError, type UpdateStrategy, aggregateToRoot, createTemplateContext, detectMonorepo, getDefaultConfig, getExitCode, loadConfig, parsePackageVersioner, parsePackageVersionerFile, parsePackageVersionerStdin, processInput, renderJson, renderMarkdown, runPipeline, writeJson, writeMarkdown, writeMonorepoChangelogs };
|
|
1
|
+
export { getDefaultConfig, loadAuth, loadConfig, saveAuth } from './core/config.ts';
|
|
2
|
+
export { PipelineResult, createTemplateContext, processInput, runPipeline } from './core/pipeline.ts';
|
|
3
|
+
export * from './core/types.ts';
|
|
4
|
+
export * from './errors/index.ts';
|
|
5
|
+
export { parsePackageVersioner, parsePackageVersionerFile, parsePackageVersionerStdin } from './input/package-versioner.ts';
|
|
6
|
+
export { aggregateToRoot, detectMonorepo, writeMonorepoChangelogs } from './monorepo/aggregator.ts';
|
|
7
|
+
export { renderJson, writeJson } from './output/json.ts';
|
|
8
|
+
export { formatVersion, renderMarkdown, writeMarkdown } from './output/markdown.ts';
|
package/dist/index.js
CHANGED
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ConfigError,
|
|
3
|
-
EXIT_CODES,
|
|
4
3
|
GitHubError,
|
|
5
4
|
InputParseError,
|
|
6
5
|
LLMError,
|
|
7
6
|
NotesError,
|
|
8
7
|
TemplateError,
|
|
9
|
-
aggregateToRoot,
|
|
10
8
|
createTemplateContext,
|
|
11
|
-
detectMonorepo,
|
|
12
9
|
getDefaultConfig,
|
|
13
10
|
getExitCode,
|
|
14
11
|
loadAuth,
|
|
@@ -18,13 +15,21 @@ import {
|
|
|
18
15
|
parsePackageVersionerStdin,
|
|
19
16
|
processInput,
|
|
20
17
|
renderJson,
|
|
21
|
-
renderMarkdown,
|
|
22
18
|
runPipeline,
|
|
23
19
|
saveAuth,
|
|
24
|
-
writeJson
|
|
25
|
-
|
|
20
|
+
writeJson
|
|
21
|
+
} from "./chunk-IKER5VME.js";
|
|
22
|
+
import {
|
|
23
|
+
aggregateToRoot,
|
|
24
|
+
detectMonorepo,
|
|
26
25
|
writeMonorepoChangelogs
|
|
27
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-ATNNRK62.js";
|
|
27
|
+
import {
|
|
28
|
+
EXIT_CODES,
|
|
29
|
+
formatVersion,
|
|
30
|
+
renderMarkdown,
|
|
31
|
+
writeMarkdown
|
|
32
|
+
} from "./chunk-SAUES3BF.js";
|
|
28
33
|
export {
|
|
29
34
|
NotesError as ChangelogCreatorError,
|
|
30
35
|
ConfigError,
|
|
@@ -37,6 +42,7 @@ export {
|
|
|
37
42
|
aggregateToRoot,
|
|
38
43
|
createTemplateContext,
|
|
39
44
|
detectMonorepo,
|
|
45
|
+
formatVersion,
|
|
40
46
|
getDefaultConfig,
|
|
41
47
|
getExitCode,
|
|
42
48
|
loadAuth,
|
package/package.json
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@releasekit/notes",
|
|
3
|
-
"version": "0.2.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.2.1",
|
|
4
|
+
"description": "Release notes and changelog generation with LLM-powered enhancement and flexible templating",
|
|
5
5
|
"type": "module",
|
|
6
|
-
"main": "./dist/index.cjs",
|
|
7
6
|
"module": "./dist/index.js",
|
|
8
7
|
"types": "./dist/index.d.ts",
|
|
9
8
|
"exports": {
|
|
@@ -11,27 +10,19 @@
|
|
|
11
10
|
"import": {
|
|
12
11
|
"types": "./dist/index.d.ts",
|
|
13
12
|
"default": "./dist/index.js"
|
|
14
|
-
},
|
|
15
|
-
"require": {
|
|
16
|
-
"types": "./dist/index.d.cts",
|
|
17
|
-
"default": "./dist/index.cjs"
|
|
18
13
|
}
|
|
19
14
|
}
|
|
20
15
|
},
|
|
21
16
|
"bin": {
|
|
22
17
|
"releasekit-notes": "dist/cli.js"
|
|
23
18
|
},
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
|
|
31
|
-
"lint": "biome check .",
|
|
32
|
-
"typecheck": "tsc --noEmit"
|
|
33
|
-
},
|
|
34
|
-
"keywords": ["changelog", "release-notes", "llm", "template", "cli"],
|
|
19
|
+
"keywords": [
|
|
20
|
+
"changelog",
|
|
21
|
+
"release-notes",
|
|
22
|
+
"llm",
|
|
23
|
+
"template",
|
|
24
|
+
"cli"
|
|
25
|
+
],
|
|
35
26
|
"author": "Sam Maister <goosewobbler@protonmail.com>",
|
|
36
27
|
"license": "MIT",
|
|
37
28
|
"repository": {
|
|
@@ -39,33 +30,49 @@
|
|
|
39
30
|
"url": "git+https://github.com/goosewobbler/releasekit.git",
|
|
40
31
|
"directory": "packages/notes"
|
|
41
32
|
},
|
|
42
|
-
"files": [
|
|
33
|
+
"files": [
|
|
34
|
+
"dist",
|
|
35
|
+
"templates",
|
|
36
|
+
"README.md",
|
|
37
|
+
"LICENSE"
|
|
38
|
+
],
|
|
43
39
|
"publishConfig": {
|
|
44
40
|
"access": "public"
|
|
45
41
|
},
|
|
46
42
|
"dependencies": {
|
|
47
|
-
"@anthropic-ai/sdk": "^0.
|
|
48
|
-
"@octokit/rest": "^
|
|
49
|
-
"
|
|
50
|
-
"
|
|
51
|
-
"
|
|
52
|
-
"commander": "catalog:",
|
|
53
|
-
"ejs": "^3.1.10",
|
|
43
|
+
"@anthropic-ai/sdk": "^0.78.0",
|
|
44
|
+
"@octokit/rest": "^22.0.1",
|
|
45
|
+
"chalk": "^5.6.2",
|
|
46
|
+
"commander": "^14.0.3",
|
|
47
|
+
"ejs": "^4.0.1",
|
|
54
48
|
"handlebars": "^4.7.8",
|
|
55
|
-
"liquidjs": "^10.
|
|
56
|
-
"openai": "^
|
|
57
|
-
"
|
|
49
|
+
"liquidjs": "^10.25.0",
|
|
50
|
+
"openai": "^6.27.0",
|
|
51
|
+
"smol-toml": "^1.6.0",
|
|
52
|
+
"zod": "^4.3.6"
|
|
58
53
|
},
|
|
59
54
|
"devDependencies": {
|
|
60
|
-
"@biomejs/biome": "
|
|
55
|
+
"@biomejs/biome": "^2.4.6",
|
|
61
56
|
"@types/ejs": "^3.1.5",
|
|
62
|
-
"@types/node": "
|
|
63
|
-
"@vitest/coverage-v8": "
|
|
64
|
-
"tsup": "
|
|
65
|
-
"typescript": "
|
|
66
|
-
"vitest": "
|
|
57
|
+
"@types/node": "^22.19.15",
|
|
58
|
+
"@vitest/coverage-v8": "^4.1.0",
|
|
59
|
+
"tsup": "^8.5.1",
|
|
60
|
+
"typescript": "^5.9.3",
|
|
61
|
+
"vitest": "^4.1.0",
|
|
62
|
+
"@releasekit/core": "0.0.0",
|
|
63
|
+
"@releasekit/config": "0.0.0"
|
|
67
64
|
},
|
|
68
65
|
"engines": {
|
|
69
66
|
"node": ">=20"
|
|
67
|
+
},
|
|
68
|
+
"scripts": {
|
|
69
|
+
"build": "tsup",
|
|
70
|
+
"dev": "tsup --watch",
|
|
71
|
+
"clean": "rm -rf dist coverage .turbo",
|
|
72
|
+
"test": "vitest run",
|
|
73
|
+
"test:unit": "vitest run --coverage",
|
|
74
|
+
"test:coverage": "vitest run --coverage",
|
|
75
|
+
"lint": "biome check .",
|
|
76
|
+
"typecheck": "tsc --noEmit"
|
|
70
77
|
}
|
|
71
|
-
}
|
|
78
|
+
}
|