@contractual/changesets 0.1.0-dev.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/LICENSE +21 -0
- package/dist/changesets/consume.d.ts +23 -0
- package/dist/changesets/consume.d.ts.map +1 -0
- package/dist/changesets/consume.js +89 -0
- package/dist/changesets/consume.js.map +1 -0
- package/dist/changesets/create.d.ts +23 -0
- package/dist/changesets/create.d.ts.map +1 -0
- package/dist/changesets/create.js +72 -0
- package/dist/changesets/create.js.map +1 -0
- package/dist/changesets/index.d.ts +5 -0
- package/dist/changesets/index.d.ts.map +1 -0
- package/dist/changesets/index.js +5 -0
- package/dist/changesets/index.js.map +1 -0
- package/dist/changesets/naming.d.ts +20 -0
- package/dist/changesets/naming.d.ts.map +1 -0
- package/dist/changesets/naming.js +115 -0
- package/dist/changesets/naming.js.map +1 -0
- package/dist/changesets/read.d.ts +37 -0
- package/dist/changesets/read.d.ts.map +1 -0
- package/dist/changesets/read.js +111 -0
- package/dist/changesets/read.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -0
- package/dist/versioning/changelog.d.ts +16 -0
- package/dist/versioning/changelog.d.ts.map +1 -0
- package/dist/versioning/changelog.js +63 -0
- package/dist/versioning/changelog.js.map +1 -0
- package/dist/versioning/index.d.ts +3 -0
- package/dist/versioning/index.d.ts.map +1 -0
- package/dist/versioning/index.js +3 -0
- package/dist/versioning/index.js.map +1 -0
- package/dist/versioning/manager.d.ts +149 -0
- package/dist/versioning/manager.d.ts.map +1 -0
- package/dist/versioning/manager.js +307 -0
- package/dist/versioning/manager.js.map +1 -0
- package/package.json +54 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (C) 2025 Omer Morad
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Changeset consumption utilities
|
|
3
|
+
* Processes changesets for the version command
|
|
4
|
+
*/
|
|
5
|
+
import type { BumpType, ChangesetFile } from '@contractual/types';
|
|
6
|
+
/**
|
|
7
|
+
* Aggregate bumps from multiple changesets
|
|
8
|
+
* For each contract, the highest bump type wins
|
|
9
|
+
*
|
|
10
|
+
* @param changesets - Array of parsed changeset files
|
|
11
|
+
* @returns Map of contract name to aggregated bump type
|
|
12
|
+
*/
|
|
13
|
+
export declare function aggregateBumps(changesets: readonly ChangesetFile[]): Record<string, BumpType>;
|
|
14
|
+
/**
|
|
15
|
+
* Extract the markdown section for a specific contract from changesets
|
|
16
|
+
* Combines all change descriptions for the contract across all changesets
|
|
17
|
+
*
|
|
18
|
+
* @param changesets - Array of parsed changeset files
|
|
19
|
+
* @param contractName - Name of the contract to extract changes for
|
|
20
|
+
* @returns Combined markdown content for the contract
|
|
21
|
+
*/
|
|
22
|
+
export declare function extractContractChanges(changesets: readonly ChangesetFile[], contractName: string): string;
|
|
23
|
+
//# sourceMappingURL=consume.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consume.d.ts","sourceRoot":"","sources":["../../changesets/consume.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAkBlE;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,UAAU,EAAE,SAAS,aAAa,EAAE,GACnC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAW1B;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,SAAS,aAAa,EAAE,EACpC,YAAY,EAAE,MAAM,GACnB,MAAM,CAiBR"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Changeset consumption utilities
|
|
3
|
+
* Processes changesets for the version command
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Bump type priority for comparison (higher = more significant)
|
|
7
|
+
*/
|
|
8
|
+
const BUMP_PRIORITY = {
|
|
9
|
+
major: 3,
|
|
10
|
+
minor: 2,
|
|
11
|
+
patch: 1,
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Compare two bump types and return the higher priority one
|
|
15
|
+
*/
|
|
16
|
+
function higherBump(a, b) {
|
|
17
|
+
return BUMP_PRIORITY[a] >= BUMP_PRIORITY[b] ? a : b;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Aggregate bumps from multiple changesets
|
|
21
|
+
* For each contract, the highest bump type wins
|
|
22
|
+
*
|
|
23
|
+
* @param changesets - Array of parsed changeset files
|
|
24
|
+
* @returns Map of contract name to aggregated bump type
|
|
25
|
+
*/
|
|
26
|
+
export function aggregateBumps(changesets) {
|
|
27
|
+
const aggregated = {};
|
|
28
|
+
for (const changeset of changesets) {
|
|
29
|
+
for (const [contract, bump] of Object.entries(changeset.bumps)) {
|
|
30
|
+
const existing = aggregated[contract];
|
|
31
|
+
aggregated[contract] = existing ? higherBump(existing, bump) : bump;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return aggregated;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Extract the markdown section for a specific contract from changesets
|
|
38
|
+
* Combines all change descriptions for the contract across all changesets
|
|
39
|
+
*
|
|
40
|
+
* @param changesets - Array of parsed changeset files
|
|
41
|
+
* @param contractName - Name of the contract to extract changes for
|
|
42
|
+
* @returns Combined markdown content for the contract
|
|
43
|
+
*/
|
|
44
|
+
export function extractContractChanges(changesets, contractName) {
|
|
45
|
+
const sections = [];
|
|
46
|
+
for (const changeset of changesets) {
|
|
47
|
+
// Only process changesets that affect this contract
|
|
48
|
+
if (!(contractName in changeset.bumps)) {
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
// Extract the section for this contract from the body
|
|
52
|
+
const section = extractSectionFromBody(changeset.body, contractName);
|
|
53
|
+
if (section) {
|
|
54
|
+
sections.push(section);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return sections.join('\n\n');
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Extract a contract's section from a changeset body
|
|
61
|
+
* Looks for ## ContractName and extracts content until the next ## or end
|
|
62
|
+
*/
|
|
63
|
+
function extractSectionFromBody(body, contractName) {
|
|
64
|
+
const lines = body.split('\n');
|
|
65
|
+
const headerPattern = new RegExp(`^##\\s+${escapeRegex(contractName)}\\s*$`);
|
|
66
|
+
let inSection = false;
|
|
67
|
+
const sectionLines = [];
|
|
68
|
+
for (const line of lines) {
|
|
69
|
+
if (headerPattern.test(line)) {
|
|
70
|
+
inSection = true;
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
if (inSection) {
|
|
74
|
+
// Check if we've hit the next section
|
|
75
|
+
if (line.startsWith('## ')) {
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
78
|
+
sectionLines.push(line);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return sectionLines.join('\n').trim();
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Escape special regex characters in a string
|
|
85
|
+
*/
|
|
86
|
+
function escapeRegex(str) {
|
|
87
|
+
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=consume.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consume.js","sourceRoot":"","sources":["../../changesets/consume.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;GAEG;AACH,MAAM,aAAa,GAAuC;IACxD,KAAK,EAAE,CAAC;IACR,KAAK,EAAE,CAAC;IACR,KAAK,EAAE,CAAC;CACA,CAAC;AAEX;;GAEG;AACH,SAAS,UAAU,CAAC,CAAW,EAAE,CAAW;IAC1C,OAAO,aAAa,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAC5B,UAAoC;IAEpC,MAAM,UAAU,GAA6B,EAAE,CAAC;IAEhD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,KAAK,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/D,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;YACtC,UAAU,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACtE,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CACpC,UAAoC,EACpC,YAAoB;IAEpB,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,oDAAoD;QACpD,IAAI,CAAC,CAAC,YAAY,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YACvC,SAAS;QACX,CAAC;QAED,sDAAsD;QACtD,MAAM,OAAO,GAAG,sBAAsB,CAAC,SAAS,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QACrE,IAAI,OAAO,EAAE,CAAC;YACZ,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC;AAED;;;GAGG;AACH,SAAS,sBAAsB,CAAC,IAAY,EAAE,YAAoB;IAChE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,aAAa,GAAG,IAAI,MAAM,CAAC,UAAU,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAE7E,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,MAAM,YAAY,GAAa,EAAE,CAAC;IAElC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,SAAS,GAAG,IAAI,CAAC;YACjB,SAAS;QACX,CAAC;QAED,IAAI,SAAS,EAAE,CAAC;YACd,sCAAsC;YACtC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3B,MAAM;YACR,CAAC;YACD,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,GAAW;IAC9B,OAAO,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AACpD,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Changeset creation utilities
|
|
3
|
+
* Creates changeset files from diff results
|
|
4
|
+
*/
|
|
5
|
+
import type { DiffResult, BumpType } from '@contractual/types';
|
|
6
|
+
/**
|
|
7
|
+
* Result of creating a changeset file
|
|
8
|
+
*/
|
|
9
|
+
export interface CreateChangesetResult {
|
|
10
|
+
/** Generated filename (e.g., "brave-tigers-fly.md") */
|
|
11
|
+
filename: string;
|
|
12
|
+
/** Full content of the changeset file including frontmatter and body */
|
|
13
|
+
content: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Create a changeset from diff results
|
|
17
|
+
*
|
|
18
|
+
* @param results - Array of diff results from comparing specs
|
|
19
|
+
* @param overrides - Optional map of contract name to bump type overrides
|
|
20
|
+
* @returns Object with filename and content for the changeset file
|
|
21
|
+
*/
|
|
22
|
+
export declare function createChangeset(results: DiffResult[], overrides?: Readonly<Record<string, BumpType>>): CreateChangesetResult;
|
|
23
|
+
//# sourceMappingURL=create.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../changesets/create.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAkB,MAAM,oBAAoB,CAAC;AAG/E;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,uDAAuD;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,OAAO,EAAE,MAAM,CAAC;CACjB;AAgCD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,UAAU,EAAE,EACrB,SAAS,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,GAC7C,qBAAqB,CA0CvB"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Changeset creation utilities
|
|
3
|
+
* Creates changeset files from diff results
|
|
4
|
+
*/
|
|
5
|
+
import { generateChangesetName } from './naming.js';
|
|
6
|
+
/**
|
|
7
|
+
* Severity label mapping for display purposes
|
|
8
|
+
*/
|
|
9
|
+
const SEVERITY_LABELS = {
|
|
10
|
+
breaking: 'BREAKING',
|
|
11
|
+
'non-breaking': 'minor',
|
|
12
|
+
patch: 'patch',
|
|
13
|
+
unknown: 'unknown',
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Map change severity to display label
|
|
17
|
+
*/
|
|
18
|
+
function severityToLabel(severity) {
|
|
19
|
+
return SEVERITY_LABELS[severity];
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Determine the suggested bump type for a contract based on its changes
|
|
23
|
+
*/
|
|
24
|
+
function determineBumpType(result) {
|
|
25
|
+
if (result.summary.breaking > 0) {
|
|
26
|
+
return 'major';
|
|
27
|
+
}
|
|
28
|
+
if (result.summary.nonBreaking > 0) {
|
|
29
|
+
return 'minor';
|
|
30
|
+
}
|
|
31
|
+
return 'patch';
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Create a changeset from diff results
|
|
35
|
+
*
|
|
36
|
+
* @param results - Array of diff results from comparing specs
|
|
37
|
+
* @param overrides - Optional map of contract name to bump type overrides
|
|
38
|
+
* @returns Object with filename and content for the changeset file
|
|
39
|
+
*/
|
|
40
|
+
export function createChangeset(results, overrides) {
|
|
41
|
+
const filename = `${generateChangesetName()}.md`;
|
|
42
|
+
// Build YAML frontmatter
|
|
43
|
+
const bumps = {};
|
|
44
|
+
for (const result of results) {
|
|
45
|
+
if (result.changes.length === 0) {
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
const suggestedBump = determineBumpType(result);
|
|
49
|
+
bumps[result.contract] = overrides?.[result.contract] ?? suggestedBump;
|
|
50
|
+
}
|
|
51
|
+
// Generate YAML frontmatter
|
|
52
|
+
const yamlLines = Object.entries(bumps).map(([contract, bump]) => `"${contract}": ${bump}`);
|
|
53
|
+
const frontmatter = `---\n${yamlLines.join('\n')}\n---`;
|
|
54
|
+
// Generate markdown body with changes grouped by contract
|
|
55
|
+
const bodyParts = [];
|
|
56
|
+
for (const result of results) {
|
|
57
|
+
if (result.changes.length === 0) {
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
bodyParts.push(`## ${result.contract}`);
|
|
61
|
+
bodyParts.push('');
|
|
62
|
+
for (const change of result.changes) {
|
|
63
|
+
const label = severityToLabel(change.severity);
|
|
64
|
+
bodyParts.push(`- **[${label}]** ${change.message}`);
|
|
65
|
+
}
|
|
66
|
+
bodyParts.push('');
|
|
67
|
+
}
|
|
68
|
+
const body = bodyParts.join('\n').trim();
|
|
69
|
+
const content = `${frontmatter}\n\n${body}\n`;
|
|
70
|
+
return { filename, content };
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=create.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../changesets/create.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAYpD;;GAEG;AACH,MAAM,eAAe,GAAmC;IACtD,QAAQ,EAAE,UAAU;IACpB,cAAc,EAAE,OAAO;IACvB,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,SAAS;CACV,CAAC;AAEX;;GAEG;AACH,SAAS,eAAe,CAAC,QAAwB;IAC/C,OAAO,eAAe,CAAC,QAAQ,CAAC,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,MAAkB;IAC3C,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;QAChC,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;QACnC,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC7B,OAAqB,EACrB,SAA8C;IAE9C,MAAM,QAAQ,GAAG,GAAG,qBAAqB,EAAE,KAAK,CAAC;IAEjD,yBAAyB;IACzB,MAAM,KAAK,GAA6B,EAAE,CAAC;IAC3C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,SAAS;QACX,CAAC;QACD,MAAM,aAAa,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAChD,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,SAAS,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC;IACzE,CAAC;IAED,4BAA4B;IAC5B,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CACzC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,QAAQ,MAAM,IAAI,EAAE,CAC/C,CAAC;IACF,MAAM,WAAW,GAAG,QAAQ,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;IAExD,0DAA0D;IAC1D,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,SAAS;QACX,CAAC;QAED,SAAS,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QACxC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEnB,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC/C,SAAS,CAAC,IAAI,CAAC,QAAQ,KAAK,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrB,CAAC;IAED,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,GAAG,WAAW,OAAO,IAAI,IAAI,CAAC;IAE9C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../changesets/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../changesets/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Changeset naming utilities
|
|
3
|
+
* Generates random three-word names for changeset files
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Generate a random three-word changeset name
|
|
7
|
+
* Format: adjective-noun-verb (e.g., "brave-tigers-fly")
|
|
8
|
+
*/
|
|
9
|
+
export declare function generateChangesetName(): string;
|
|
10
|
+
/**
|
|
11
|
+
* Generate a unique changeset name that doesn't collide with existing names
|
|
12
|
+
* Retries with new random names until a unique one is found
|
|
13
|
+
*
|
|
14
|
+
* @param existingNames - Array of existing changeset names to avoid
|
|
15
|
+
* @param maxRetries - Maximum number of retries before giving up (default: 100)
|
|
16
|
+
* @returns A unique changeset name
|
|
17
|
+
* @throws Error if unable to generate a unique name after max retries
|
|
18
|
+
*/
|
|
19
|
+
export declare function generateUniqueChangesetName(existingNames: string[], maxRetries?: number): string;
|
|
20
|
+
//# sourceMappingURL=naming.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"naming.d.ts","sourceRoot":"","sources":["../../changesets/naming.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAqFH;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAM9C;AAED;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CACzC,aAAa,EAAE,MAAM,EAAE,EACvB,UAAU,SAAM,GACf,MAAM,CAaR"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Changeset naming utilities
|
|
3
|
+
* Generates random three-word names for changeset files
|
|
4
|
+
*/
|
|
5
|
+
const ADJECTIVES = [
|
|
6
|
+
'brave',
|
|
7
|
+
'calm',
|
|
8
|
+
'eager',
|
|
9
|
+
'fancy',
|
|
10
|
+
'gentle',
|
|
11
|
+
'happy',
|
|
12
|
+
'jolly',
|
|
13
|
+
'kind',
|
|
14
|
+
'lively',
|
|
15
|
+
'mighty',
|
|
16
|
+
'noble',
|
|
17
|
+
'proud',
|
|
18
|
+
'quick',
|
|
19
|
+
'ready',
|
|
20
|
+
'sharp',
|
|
21
|
+
'swift',
|
|
22
|
+
'tender',
|
|
23
|
+
'vivid',
|
|
24
|
+
'warm',
|
|
25
|
+
'zesty',
|
|
26
|
+
];
|
|
27
|
+
const NOUNS = [
|
|
28
|
+
'bears',
|
|
29
|
+
'cats',
|
|
30
|
+
'dogs',
|
|
31
|
+
'eagles',
|
|
32
|
+
'foxes',
|
|
33
|
+
'geese',
|
|
34
|
+
'hawks',
|
|
35
|
+
'ibis',
|
|
36
|
+
'jays',
|
|
37
|
+
'kites',
|
|
38
|
+
'lions',
|
|
39
|
+
'mice',
|
|
40
|
+
'newts',
|
|
41
|
+
'owls',
|
|
42
|
+
'pandas',
|
|
43
|
+
'quails',
|
|
44
|
+
'ravens',
|
|
45
|
+
'seals',
|
|
46
|
+
'tigers',
|
|
47
|
+
'wolves',
|
|
48
|
+
];
|
|
49
|
+
const VERBS = [
|
|
50
|
+
'fly',
|
|
51
|
+
'run',
|
|
52
|
+
'jump',
|
|
53
|
+
'swim',
|
|
54
|
+
'dance',
|
|
55
|
+
'sing',
|
|
56
|
+
'play',
|
|
57
|
+
'rest',
|
|
58
|
+
'hunt',
|
|
59
|
+
'roam',
|
|
60
|
+
'climb',
|
|
61
|
+
'glide',
|
|
62
|
+
'soar',
|
|
63
|
+
'leap',
|
|
64
|
+
'dash',
|
|
65
|
+
'drift',
|
|
66
|
+
'march',
|
|
67
|
+
'prowl',
|
|
68
|
+
'race',
|
|
69
|
+
'sprint',
|
|
70
|
+
];
|
|
71
|
+
/**
|
|
72
|
+
* Get a random element from an array
|
|
73
|
+
* @throws {Error} If the array is empty
|
|
74
|
+
*/
|
|
75
|
+
function randomElement(array) {
|
|
76
|
+
if (array.length === 0) {
|
|
77
|
+
throw new Error('Cannot get random element from empty array');
|
|
78
|
+
}
|
|
79
|
+
const index = Math.floor(Math.random() * array.length);
|
|
80
|
+
const element = array[index];
|
|
81
|
+
// This assertion is safe because we've checked array.length > 0 and index is within bounds
|
|
82
|
+
return element;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Generate a random three-word changeset name
|
|
86
|
+
* Format: adjective-noun-verb (e.g., "brave-tigers-fly")
|
|
87
|
+
*/
|
|
88
|
+
export function generateChangesetName() {
|
|
89
|
+
const adjective = randomElement(ADJECTIVES);
|
|
90
|
+
const noun = randomElement(NOUNS);
|
|
91
|
+
const verb = randomElement(VERBS);
|
|
92
|
+
return `${adjective}-${noun}-${verb}`;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Generate a unique changeset name that doesn't collide with existing names
|
|
96
|
+
* Retries with new random names until a unique one is found
|
|
97
|
+
*
|
|
98
|
+
* @param existingNames - Array of existing changeset names to avoid
|
|
99
|
+
* @param maxRetries - Maximum number of retries before giving up (default: 100)
|
|
100
|
+
* @returns A unique changeset name
|
|
101
|
+
* @throws Error if unable to generate a unique name after max retries
|
|
102
|
+
*/
|
|
103
|
+
export function generateUniqueChangesetName(existingNames, maxRetries = 100) {
|
|
104
|
+
const existingSet = new Set(existingNames);
|
|
105
|
+
for (let i = 0; i < maxRetries; i++) {
|
|
106
|
+
const name = generateChangesetName();
|
|
107
|
+
if (!existingSet.has(name)) {
|
|
108
|
+
return name;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
// Fallback: append timestamp to ensure uniqueness
|
|
112
|
+
const baseName = generateChangesetName();
|
|
113
|
+
return `${baseName}-${Date.now()}`;
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=naming.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"naming.js","sourceRoot":"","sources":["../../changesets/naming.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,UAAU,GAAG;IACjB,OAAO;IACP,MAAM;IACN,OAAO;IACP,OAAO;IACP,QAAQ;IACR,OAAO;IACP,OAAO;IACP,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,QAAQ;IACR,OAAO;IACP,MAAM;IACN,OAAO;CACC,CAAC;AAEX,MAAM,KAAK,GAAG;IACZ,OAAO;IACP,MAAM;IACN,MAAM;IACN,QAAQ;IACR,OAAO;IACP,OAAO;IACP,OAAO;IACP,MAAM;IACN,MAAM;IACN,OAAO;IACP,OAAO;IACP,MAAM;IACN,OAAO;IACP,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,QAAQ;CACA,CAAC;AAEX,MAAM,KAAK,GAAG;IACZ,KAAK;IACL,KAAK;IACL,MAAM;IACN,MAAM;IACN,OAAO;IACP,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,OAAO;IACP,OAAO;IACP,MAAM;IACN,MAAM;IACN,MAAM;IACN,OAAO;IACP,OAAO;IACP,OAAO;IACP,MAAM;IACN,QAAQ;CACA,CAAC;AAEX;;;GAGG;AACH,SAAS,aAAa,CAAI,KAAmB;IAC3C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IAC7B,2FAA2F;IAC3F,OAAO,OAAY,CAAC;AACtB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB;IACnC,MAAM,SAAS,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAElC,OAAO,GAAG,SAAS,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;AACxC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,2BAA2B,CACzC,aAAuB,EACvB,UAAU,GAAG,GAAG;IAEhB,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;IAE3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,qBAAqB,EAAE,CAAC;QACrC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,kDAAkD;IAClD,MAAM,QAAQ,GAAG,qBAAqB,EAAE,CAAC;IACzC,OAAO,GAAG,QAAQ,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Changeset reading and parsing utilities
|
|
3
|
+
* Parses changeset files from the .contractual/changesets directory
|
|
4
|
+
*/
|
|
5
|
+
import type { BumpType, ChangesetFile } from '@contractual/types';
|
|
6
|
+
/**
|
|
7
|
+
* Error thrown when parsing a changeset file fails
|
|
8
|
+
*/
|
|
9
|
+
export declare class ChangesetParseError extends Error {
|
|
10
|
+
readonly filename?: string | undefined;
|
|
11
|
+
constructor(message: string, filename?: string | undefined);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Parsed changeset content (before wrapping with filename)
|
|
15
|
+
*/
|
|
16
|
+
export interface ParsedChangesetContent {
|
|
17
|
+
/** Map of contract name to bump type */
|
|
18
|
+
bumps: Record<string, BumpType>;
|
|
19
|
+
/** Markdown body with change descriptions */
|
|
20
|
+
body: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Parse a changeset file content into its components
|
|
24
|
+
*
|
|
25
|
+
* @param content - Raw content of the changeset file
|
|
26
|
+
* @returns Parsed bumps and body
|
|
27
|
+
* @throws {ChangesetParseError} If the content is malformed
|
|
28
|
+
*/
|
|
29
|
+
export declare function parseChangeset(content: string): ParsedChangesetContent;
|
|
30
|
+
/**
|
|
31
|
+
* Read all changeset files from a directory
|
|
32
|
+
*
|
|
33
|
+
* @param changesetsDir - Path to the changesets directory
|
|
34
|
+
* @returns Array of parsed changeset files
|
|
35
|
+
*/
|
|
36
|
+
export declare function readChangesets(changesetsDir: string): Promise<ChangesetFile[]>;
|
|
37
|
+
//# sourceMappingURL=read.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../changesets/read.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAOlE;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;aAG1B,QAAQ,CAAC,EAAE,MAAM;gBADjC,OAAO,EAAE,MAAM,EACC,QAAQ,CAAC,EAAE,MAAM,YAAA;CAKpC;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAChC,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAC;CACd;AASD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,sBAAsB,CA4CtE;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAoCpF"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Changeset reading and parsing utilities
|
|
3
|
+
* Parses changeset files from the .contractual/changesets directory
|
|
4
|
+
*/
|
|
5
|
+
import { readdir, readFile } from 'node:fs/promises';
|
|
6
|
+
import { join } from 'node:path';
|
|
7
|
+
import { parse as parseYaml } from 'yaml';
|
|
8
|
+
/**
|
|
9
|
+
* Valid bump type values
|
|
10
|
+
*/
|
|
11
|
+
const VALID_BUMP_TYPES = ['major', 'minor', 'patch'];
|
|
12
|
+
/**
|
|
13
|
+
* Error thrown when parsing a changeset file fails
|
|
14
|
+
*/
|
|
15
|
+
export class ChangesetParseError extends Error {
|
|
16
|
+
filename;
|
|
17
|
+
constructor(message, filename) {
|
|
18
|
+
super(filename ? `Failed to parse changeset "${filename}": ${message}` : message);
|
|
19
|
+
this.filename = filename;
|
|
20
|
+
this.name = 'ChangesetParseError';
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Validate that a value is a valid bump type
|
|
25
|
+
*/
|
|
26
|
+
function isValidBumpType(value) {
|
|
27
|
+
return VALID_BUMP_TYPES.includes(value);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Parse a changeset file content into its components
|
|
31
|
+
*
|
|
32
|
+
* @param content - Raw content of the changeset file
|
|
33
|
+
* @returns Parsed bumps and body
|
|
34
|
+
* @throws {ChangesetParseError} If the content is malformed
|
|
35
|
+
*/
|
|
36
|
+
export function parseChangeset(content) {
|
|
37
|
+
const trimmed = content.trim();
|
|
38
|
+
// Check for frontmatter delimiter
|
|
39
|
+
if (!trimmed.startsWith('---')) {
|
|
40
|
+
throw new ChangesetParseError('Changeset must start with YAML frontmatter (---)');
|
|
41
|
+
}
|
|
42
|
+
// Find the closing frontmatter delimiter
|
|
43
|
+
const secondDelimiter = trimmed.indexOf('---', 3);
|
|
44
|
+
if (secondDelimiter === -1) {
|
|
45
|
+
throw new ChangesetParseError('Changeset frontmatter must be closed with ---');
|
|
46
|
+
}
|
|
47
|
+
// Extract YAML and body
|
|
48
|
+
const yamlContent = trimmed.slice(3, secondDelimiter).trim();
|
|
49
|
+
const body = trimmed.slice(secondDelimiter + 3).trim();
|
|
50
|
+
// Parse YAML
|
|
51
|
+
let parsed;
|
|
52
|
+
try {
|
|
53
|
+
parsed = parseYaml(yamlContent);
|
|
54
|
+
}
|
|
55
|
+
catch (yamlError) {
|
|
56
|
+
const message = yamlError instanceof Error ? yamlError.message : 'Invalid YAML';
|
|
57
|
+
throw new ChangesetParseError(`Invalid YAML in frontmatter: ${message}`);
|
|
58
|
+
}
|
|
59
|
+
if (parsed === null || typeof parsed !== 'object' || Array.isArray(parsed)) {
|
|
60
|
+
throw new ChangesetParseError('Changeset frontmatter must contain a YAML object');
|
|
61
|
+
}
|
|
62
|
+
// Validate and extract bumps
|
|
63
|
+
const bumps = {};
|
|
64
|
+
for (const [key, value] of Object.entries(parsed)) {
|
|
65
|
+
if (!isValidBumpType(value)) {
|
|
66
|
+
throw new ChangesetParseError(`Invalid bump type "${String(value)}" for contract "${key}". Must be ${VALID_BUMP_TYPES.join(', ')}.`);
|
|
67
|
+
}
|
|
68
|
+
bumps[key] = value;
|
|
69
|
+
}
|
|
70
|
+
return { bumps, body };
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Read all changeset files from a directory
|
|
74
|
+
*
|
|
75
|
+
* @param changesetsDir - Path to the changesets directory
|
|
76
|
+
* @returns Array of parsed changeset files
|
|
77
|
+
*/
|
|
78
|
+
export async function readChangesets(changesetsDir) {
|
|
79
|
+
let files;
|
|
80
|
+
try {
|
|
81
|
+
files = await readdir(changesetsDir);
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
// Directory doesn't exist or can't be read - no changesets
|
|
85
|
+
if (error.code === 'ENOENT') {
|
|
86
|
+
return [];
|
|
87
|
+
}
|
|
88
|
+
throw error;
|
|
89
|
+
}
|
|
90
|
+
// Filter to only .md files
|
|
91
|
+
const mdFiles = files.filter((file) => file.endsWith('.md'));
|
|
92
|
+
const changesets = [];
|
|
93
|
+
for (const filename of mdFiles) {
|
|
94
|
+
const filePath = join(changesetsDir, filename);
|
|
95
|
+
const content = await readFile(filePath, 'utf-8');
|
|
96
|
+
try {
|
|
97
|
+
const { bumps, body } = parseChangeset(content);
|
|
98
|
+
changesets.push({ filename, path: filePath, bumps, body });
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
// Re-throw with filename context
|
|
102
|
+
if (error instanceof ChangesetParseError) {
|
|
103
|
+
throw new ChangesetParseError(error.message, filename);
|
|
104
|
+
}
|
|
105
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
106
|
+
throw new ChangesetParseError(message, filename);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return changesets;
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=read.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read.js","sourceRoot":"","sources":["../../changesets/read.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { generateChangesetName, generateUniqueChangesetName, } from './changesets/naming.js';
|
|
2
|
+
export { createChangeset, type CreateChangesetResult } from './changesets/create.js';
|
|
3
|
+
export { parseChangeset, readChangesets, ChangesetParseError, type ParsedChangesetContent, } from './changesets/read.js';
|
|
4
|
+
export { aggregateBumps, extractContractChanges } from './changesets/consume.js';
|
|
5
|
+
export { VersionManager, PreReleaseManager, VERSIONS_FILE, SNAPSHOTS_DIR, CHANGESETS_DIR, PRE_RELEASE_FILE, DEFAULT_VERSION, SPEC_EXTENSIONS, incrementVersion, incrementVersionWithPreRelease, VersionError, type BumpOperationResult, } from './versioning/manager.js';
|
|
6
|
+
export { formatDate, appendChangelog } from './versioning/changelog.js';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,EACrB,2BAA2B,GAC5B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,KAAK,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACrF,OAAO,EACL,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,KAAK,sBAAsB,GAC5B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAGjF,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,8BAA8B,EAC9B,YAAY,EACZ,KAAK,mBAAmB,GACzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// Changesets
|
|
2
|
+
export { generateChangesetName, generateUniqueChangesetName, } from './changesets/naming.js';
|
|
3
|
+
export { createChangeset } from './changesets/create.js';
|
|
4
|
+
export { parseChangeset, readChangesets, ChangesetParseError, } from './changesets/read.js';
|
|
5
|
+
export { aggregateBumps, extractContractChanges } from './changesets/consume.js';
|
|
6
|
+
// Versioning
|
|
7
|
+
export { VersionManager, PreReleaseManager, VERSIONS_FILE, SNAPSHOTS_DIR, CHANGESETS_DIR, PRE_RELEASE_FILE, DEFAULT_VERSION, SPEC_EXTENSIONS, incrementVersion, incrementVersionWithPreRelease, VersionError, } from './versioning/manager.js';
|
|
8
|
+
export { formatDate, appendChangelog } from './versioning/changelog.js';
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,OAAO,EACL,qBAAqB,EACrB,2BAA2B,GAC5B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,eAAe,EAA8B,MAAM,wBAAwB,CAAC;AACrF,OAAO,EACL,cAAc,EACd,cAAc,EACd,mBAAmB,GAEpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEjF,aAAa;AACb,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,8BAA8B,EAC9B,YAAY,GAEb,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC"}
|