release-monorepo-semantically 1.5.0 → 1.5.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.
Files changed (76) hide show
  1. package/dist/CliOptions.d.ts +2 -2
  2. package/dist/CliOptions.d.ts.map +1 -1
  3. package/dist/MonorepoController.d.ts +9 -27
  4. package/dist/MonorepoController.d.ts.map +1 -1
  5. package/dist/MonorepoController.js +44 -156
  6. package/dist/MonorepoController.js.map +1 -1
  7. package/dist/MonorepoController.spec.js +50 -203
  8. package/dist/MonorepoController.spec.js.map +1 -1
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +25 -17
  11. package/dist/index.js.map +1 -1
  12. package/dist/main.spec.js +5 -6
  13. package/dist/main.spec.js.map +1 -1
  14. package/dist/models/NpmPackage.d.ts +11 -3
  15. package/dist/models/NpmPackage.d.ts.map +1 -1
  16. package/dist/models/NpmPackage.js +50 -5
  17. package/dist/models/NpmPackage.js.map +1 -1
  18. package/dist/models/ReleaseTypes.d.ts +0 -12
  19. package/dist/models/ReleaseTypes.d.ts.map +1 -1
  20. package/dist/models/SemVerBumpType.d.ts +1 -0
  21. package/dist/models/SemVerBumpType.d.ts.map +1 -1
  22. package/dist/models/SemVerBumpType.js +4 -0
  23. package/dist/models/SemVerBumpType.js.map +1 -1
  24. package/dist/plugins/ChangelogPlugin.d.ts +13 -0
  25. package/dist/plugins/ChangelogPlugin.d.ts.map +1 -0
  26. package/dist/plugins/ChangelogPlugin.js +33 -0
  27. package/dist/plugins/ChangelogPlugin.js.map +1 -0
  28. package/dist/plugins/GitPlugin.d.ts +15 -0
  29. package/dist/plugins/GitPlugin.d.ts.map +1 -0
  30. package/dist/plugins/GitPlugin.js +41 -0
  31. package/dist/plugins/GitPlugin.js.map +1 -0
  32. package/dist/plugins/NpmPlugin.d.ts +11 -0
  33. package/dist/plugins/NpmPlugin.d.ts.map +1 -0
  34. package/dist/plugins/NpmPlugin.js +27 -0
  35. package/dist/plugins/NpmPlugin.js.map +1 -0
  36. package/dist/plugins/PackageJsonPlugin.d.ts +10 -0
  37. package/dist/plugins/PackageJsonPlugin.d.ts.map +1 -0
  38. package/dist/plugins/PackageJsonPlugin.js +26 -0
  39. package/dist/plugins/PackageJsonPlugin.js.map +1 -0
  40. package/dist/plugins/ReleasePlugin.d.ts +24 -0
  41. package/dist/plugins/ReleasePlugin.d.ts.map +1 -0
  42. package/dist/plugins/ReleasePlugin.js +3 -0
  43. package/dist/plugins/ReleasePlugin.js.map +1 -0
  44. package/dist/plugins/ReleasePlugin.spec.d.ts +2 -0
  45. package/dist/plugins/ReleasePlugin.spec.d.ts.map +1 -0
  46. package/dist/plugins/ReleasePlugin.spec.js +108 -0
  47. package/dist/plugins/ReleasePlugin.spec.js.map +1 -0
  48. package/dist/services/ChangelogView.d.ts +11 -20
  49. package/dist/services/ChangelogView.d.ts.map +1 -1
  50. package/dist/services/ChangelogView.js +21 -32
  51. package/dist/services/ChangelogView.js.map +1 -1
  52. package/dist/services/HandlebarsRenderService.d.ts +1 -0
  53. package/dist/services/HandlebarsRenderService.d.ts.map +1 -1
  54. package/dist/services/HandlebarsRenderService.js +44 -0
  55. package/dist/services/HandlebarsRenderService.js.map +1 -1
  56. package/dist/services/NodeFileSystemService.d.ts +6 -2
  57. package/dist/services/NodeFileSystemService.d.ts.map +1 -1
  58. package/dist/services/NodeFileSystemService.js +27 -4
  59. package/dist/services/NodeFileSystemService.js.map +1 -1
  60. package/dist/services/PackageManager.d.ts +2 -4
  61. package/dist/services/PackageManager.d.ts.map +1 -1
  62. package/dist/services/PackageManager.js +5 -14
  63. package/dist/services/PackageManager.js.map +1 -1
  64. package/dist/services/PackageManager.spec.js +6 -27
  65. package/dist/services/PackageManager.spec.js.map +1 -1
  66. package/dist/services/ReleaseCommitView.d.ts +10 -3
  67. package/dist/services/ReleaseCommitView.d.ts.map +1 -1
  68. package/dist/services/ReleaseCommitView.js +5 -4
  69. package/dist/services/ReleaseCommitView.js.map +1 -1
  70. package/dist/utils.d.ts +3 -0
  71. package/dist/utils.d.ts.map +1 -0
  72. package/dist/utils.js +13 -0
  73. package/dist/utils.js.map +1 -0
  74. package/package.json +1 -1
  75. package/templates/changelog.hbs +11 -11
  76. package/templates/release-commit-msg.hbs +7 -7
@@ -5,7 +5,7 @@ export interface TemplateOverrides {
5
5
  export interface CliOptions extends TemplateOverrides {
6
6
  help: boolean;
7
7
  dryRun: boolean;
8
- push: boolean;
9
- publish: boolean;
8
+ noPush: boolean;
9
+ noPublish: boolean;
10
10
  }
11
11
  //# sourceMappingURL=CliOptions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CliOptions.d.ts","sourceRoot":"","sources":["../src/CliOptions.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,UAAW,SAAQ,iBAAiB;IACnD,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB"}
1
+ {"version":3,"file":"CliOptions.d.ts","sourceRoot":"","sources":["../src/CliOptions.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,UAAW,SAAQ,iBAAiB;IACnD,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;CACpB"}
@@ -1,37 +1,19 @@
1
- import { ReleaseCommitView } from './services/ReleaseCommitView';
2
- import { ChangelogView } from './services/ChangelogView';
3
- import { PackageManager } from './services/PackageManager';
4
1
  import { NodeFileSystemService } from './services/NodeFileSystemService';
5
2
  import { GitService } from './services/GitService';
6
3
  import { ConsoleLogger } from './services/ConsoleLogger';
7
4
  import { CliOptions } from './CliOptions';
8
- type ReleaseOptions = Partial<Pick<CliOptions, 'dryRun' | 'push' | 'publish'>>;
5
+ import { ReleasePlugin } from './plugins/ReleasePlugin';
6
+ type ReleaseOptions = Partial<Pick<CliOptions, 'dryRun' | 'noPush' | 'noPublish'>>;
9
7
  export declare class MonorepoController {
10
- private fileSystemService;
11
- private vcsService;
12
- private changelog;
13
- private releaseCommitView;
14
- private packageManager;
8
+ private readonly plugins;
9
+ private fs;
10
+ private vsc;
15
11
  private logger;
16
- private packages;
17
- private rootPackageJson;
18
- constructor(fileSystemService: NodeFileSystemService, vcsService: GitService, changelog: ChangelogView, releaseCommitView: ReleaseCommitView, packageManager: PackageManager, logger: ConsoleLogger);
19
- discoverRootPackageJSON(): void;
20
- discoverPackages(): void;
21
- private resolveWorkspacePackageJsonPath;
22
- private getInternalPackageNames;
23
- private getPackageDir;
24
- private getDependencyUpdates;
25
- private applyDependencyUpdates;
26
- private isNonEmptyChangeSet;
27
- private parseVersionBump;
28
- private collectReleaseCommits;
29
- private logStep;
30
- private renderChangelog;
31
- private createTags;
32
- private toReleaseCommitPackage;
33
- private publishPackages;
12
+ private packageSortedList;
13
+ constructor(plugins: ReleasePlugin[], fs: NodeFileSystemService, vsc: GitService, logger: ConsoleLogger);
14
+ discoverPackages(monorepoPath: string): void;
34
15
  release(options?: ReleaseOptions): void;
16
+ private logStep;
35
17
  }
36
18
  export {};
37
19
  //# sourceMappingURL=MonorepoController.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MonorepoController.d.ts","sourceRoot":"","sources":["../src/MonorepoController.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAGzD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,KAAK,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;AAE/E,qBAAa,kBAAkB;IAK3B,OAAO,CAAC,iBAAiB;IACzB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,iBAAiB;IACzB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,MAAM;IAThB,OAAO,CAAC,QAAQ,CAAoB;IACpC,OAAO,CAAC,eAAe,CAAe;gBAG5B,iBAAiB,EAAE,qBAAqB,EACxC,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,aAAa,EACxB,iBAAiB,EAAE,iBAAiB,EACpC,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,aAAa;IAG/B,uBAAuB,IAAI,IAAI;IAI/B,gBAAgB,IAAI,IAAI;IAcxB,OAAO,CAAC,+BAA+B;IAKvC,OAAO,CAAC,uBAAuB;IAI/B,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,oBAAoB;IA0B5B,OAAO,CAAC,sBAAsB;IAmB9B,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,eAAe;IAqBvB,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,sBAAsB;IAwB9B,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,OAAO,GAAE,cAAmB,GAAG,IAAI;CAqD5C"}
1
+ {"version":3,"file":"MonorepoController.d.ts","sourceRoot":"","sources":["../src/MonorepoController.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAGxD,KAAK,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC;AAEnF,qBAAa,kBAAkB;IAI3B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,MAAM;IANhB,OAAO,CAAC,iBAAiB,CAAoB;gBAG1B,OAAO,EAAE,aAAa,EAAE,EACjC,EAAE,EAAE,qBAAqB,EACzB,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,aAAa;IAG/B,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAQ5C,OAAO,CAAC,OAAO,GAAE,cAAmB,GAAG,IAAI;IAgD3C,OAAO,CAAC,OAAO;CAGhB"}
@@ -1,180 +1,68 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.MonorepoController = void 0;
7
4
  const NpmPackage_1 = require("./models/NpmPackage");
8
5
  const SemVerBumpType_1 = require("./models/SemVerBumpType");
9
6
  const sortLessDependenciesFirst_1 = require("./sortLessDependenciesFirst");
10
- const node_path_1 = __importDefault(require("node:path"));
11
7
  class MonorepoController {
12
- fileSystemService;
13
- vcsService;
14
- changelog;
15
- releaseCommitView;
16
- packageManager;
8
+ plugins;
9
+ fs;
10
+ vsc;
17
11
  logger;
18
- packages = [];
19
- rootPackageJson;
20
- constructor(fileSystemService, vcsService, changelog, releaseCommitView, packageManager, logger) {
21
- this.fileSystemService = fileSystemService;
22
- this.vcsService = vcsService;
23
- this.changelog = changelog;
24
- this.releaseCommitView = releaseCommitView;
25
- this.packageManager = packageManager;
12
+ packageSortedList = [];
13
+ constructor(plugins, fs, vsc, logger) {
14
+ this.plugins = plugins;
15
+ this.fs = fs;
16
+ this.vsc = vsc;
26
17
  this.logger = logger;
27
18
  }
28
- discoverRootPackageJSON() {
29
- this.rootPackageJson = this.fileSystemService.readJson(node_path_1.default.resolve(process.cwd(), 'package.json'));
19
+ discoverPackages(monorepoPath) {
20
+ const { workspaces = [] } = this.fs.readPackageJsonOrFail(monorepoPath);
21
+ const packageJsonList = this.fs.findManyPackageJsonByGlob(workspaces, monorepoPath);
22
+ this.packageSortedList = (0, sortLessDependenciesFirst_1.sortLessDependenciesFirst)(packageJsonList.map(([pkgPath, pkg]) => NpmPackage_1.NpmPackage.createFromPackage(pkg, pkgPath)).filter((p) => !p.isPrivate));
30
23
  }
31
- discoverPackages() {
32
- const workspaceEntries = this.fileSystemService.findManyByGlob(this.rootPackageJson.workspaces ?? [], process.cwd());
33
- const packageJsonPaths = Array.from(new Set(workspaceEntries.map((entryPath) => this.resolveWorkspacePackageJsonPath(entryPath)).filter((entryPath) => Boolean(entryPath))));
34
- this.packages = packageJsonPaths.map((packageJsonPath) => {
35
- const pkg = this.fileSystemService.readJson(packageJsonPath);
36
- return NpmPackage_1.NpmPackage.createFromPackage(pkg, packageJsonPath);
37
- });
38
- }
39
- resolveWorkspacePackageJsonPath(entryPath) {
40
- const packageJsonPath = node_path_1.default.basename(entryPath) === 'package.json' ? entryPath : node_path_1.default.resolve(entryPath, 'package.json');
41
- return this.fileSystemService.fileExists(packageJsonPath) ? packageJsonPath : undefined;
42
- }
43
- getInternalPackageNames() {
44
- return new Set(this.packages.map((pkg) => pkg.name));
45
- }
46
- getPackageDir(pkg) {
47
- return node_path_1.default.dirname(pkg.path);
48
- }
49
- getDependencyUpdates(packageName, releasedVersions) {
50
- const packageJson = this.fileSystemService.readJson(node_path_1.default.resolve(this.getPackageDir(packageName), 'package.json'));
51
- const packageDependencies = packageName.filterDependencies(this.getInternalPackageNames());
52
- const changes = [];
53
- for (const depName of packageDependencies) {
54
- const depVersion = releasedVersions.get(depName);
55
- if (!depVersion) {
24
+ release(options = {}) {
25
+ const { dryRun = false, noPush = false, noPublish = false } = options;
26
+ const releasedVersions = new Map();
27
+ const releasedCommits = new Map();
28
+ for (const pkg of this.packageSortedList) {
29
+ const pkgReleaseCommits = this.vsc.findManyCommitsSinceTag(pkg.getCommitTag()).filter((c) => c.matchesScope(pkg.name) && c.isReleaseTrigger());
30
+ const dependencyUpdates = pkg.getDependencyUpdates(releasedVersions);
31
+ const versionBump = (0, SemVerBumpType_1.aggregateBumpTypes)(...pkgReleaseCommits.map((c) => c.bumpType), dependencyUpdates.length ? SemVerBumpType_1.SemVerBumpType.MINOR : SemVerBumpType_1.SemVerBumpType.NONE);
32
+ if (versionBump === SemVerBumpType_1.SemVerBumpType.NONE) {
33
+ this.logStep('SKIP', `${pkg.name}@${pkg.version}`);
56
34
  continue;
57
35
  }
58
- const currentVersion = packageJson.dependencies?.[depName];
59
- if (currentVersion && currentVersion !== depVersion) {
60
- changes.push({
61
- packageName: depName,
62
- oldVersion: currentVersion,
63
- newVersion: depVersion,
36
+ const newVersion = pkg.getNewVersion(versionBump);
37
+ releasedVersions.set(pkg.name, newVersion);
38
+ releasedCommits.set(pkg.name, pkgReleaseCommits);
39
+ this.logStep('BUMP', `${pkg.name} ${pkg.version} -> ${newVersion} (${(0, SemVerBumpType_1.bumpTypeToString)(versionBump)})`);
40
+ for (const plugin of this.plugins) {
41
+ plugin.onPackageReleased?.({
42
+ dryRun,
43
+ noPush,
44
+ noPublish,
45
+ pkg: pkg,
46
+ releasedVersions,
47
+ releasedCommits: pkgReleaseCommits,
48
+ releasedPackages: this.packageSortedList.filter((pkg) => releasedVersions.has(pkg.name)),
64
49
  });
65
50
  }
66
51
  }
67
- return changes;
68
- }
69
- applyDependencyUpdates(packageName, changes) {
70
- if (changes.length === 0) {
71
- return;
52
+ for (const plugin of this.plugins) {
53
+ plugin.onReleaseComplete?.({
54
+ dryRun,
55
+ noPush,
56
+ noPublish,
57
+ releasedVersions,
58
+ releasedPackages: this.packageSortedList.filter((pkg) => releasedVersions.has(pkg.name)),
59
+ releasedCommits,
60
+ });
72
61
  }
73
- const packageJson = this.fileSystemService.readJson(node_path_1.default.resolve(this.getPackageDir(packageName), 'package.json'));
74
- packageJson.dependencies ??= {};
75
- for (const change of changes) {
76
- packageJson.dependencies[change.packageName] = change.newVersion;
77
- }
78
- this.fileSystemService.writeJson(node_path_1.default.resolve(this.getPackageDir(packageName), 'package.json'), packageJson);
79
- }
80
- isNonEmptyChangeSet(changes) {
81
- return changes.some((change) => change.oldVersion !== change.newVersion);
82
- }
83
- parseVersionBump(commits, versionBumpFromDependency) {
84
- return Math.max(SemVerBumpType_1.SemVerBumpType.NONE, ...commits.map((commit) => (commit.isBreaking ? SemVerBumpType_1.SemVerBumpType.MAJOR : commit.bumpType)), versionBumpFromDependency);
85
- }
86
- collectReleaseCommits(commits) {
87
- return commits.filter((commit) => commit.isReleaseTrigger());
88
62
  }
89
63
  logStep(step, detail) {
90
64
  this.logger.info(`${step.padEnd(8)} ${detail}`);
91
65
  }
92
- renderChangelog(pkg, currentVersion, packageVersion, dependencyUpdates, releaseCommits) {
93
- for (const commit of releaseCommits) {
94
- this.changelog.addLog(commit);
95
- }
96
- this.changelog.render({
97
- packageName: pkg.name,
98
- packageVersion,
99
- previousVersion: currentVersion,
100
- packagePath: this.getPackageDir(pkg),
101
- dependencyUpdates,
102
- });
103
- this.logStep('WRITE', `${pkg.name} CHANGELOG.md`);
104
- }
105
- createTags(releasedPackages) {
106
- for (const releasedPackage of releasedPackages) {
107
- this.vcsService.createTag(`${releasedPackage.pkg.name}@${releasedPackage.version}`);
108
- this.logStep('TAG', `${releasedPackage.pkg.name}@${releasedPackage.version}`);
109
- }
110
- }
111
- toReleaseCommitPackage(pkg, previousVersion, version, commits, dependencyUpdates) {
112
- return {
113
- name: pkg.name,
114
- version,
115
- previousVersion,
116
- commits: commits.map((commit) => ({
117
- type: commit.type,
118
- subject: commit.subject,
119
- isBreaking: commit.isBreaking,
120
- })),
121
- dependencyUpdates: dependencyUpdates.map((dependencyUpdate) => ({
122
- packageName: dependencyUpdate.packageName,
123
- oldVersion: dependencyUpdate.oldVersion,
124
- newVersion: dependencyUpdate.newVersion,
125
- })),
126
- };
127
- }
128
- publishPackages(releasedPackages) {
129
- for (const releasedPackage of releasedPackages) {
130
- this.packageManager.publish(releasedPackage.pkg);
131
- this.logStep('PUBLISH', `${releasedPackage.pkg.name}@${releasedPackage.version}`);
132
- }
133
- }
134
- release(options = {}) {
135
- const { dryRun = false, push = true, publish = true } = options;
136
- const sorted = (0, sortLessDependenciesFirst_1.sortLessDependenciesFirst)(this.packages.filter((p) => !p.isPrivate));
137
- const releasedVersions = new Map(this.packages.map((pkg) => [pkg.name, pkg.version]));
138
- const releasedPackages = [];
139
- const releaseCommitPackages = [];
140
- for (const pkg of sorted) {
141
- const currentVersion = releasedVersions.get(pkg.name) ?? pkg.version;
142
- const commits = this.vcsService.findManyCommitsSinceTag(`${pkg.name}@${currentVersion}`);
143
- const scopedCommits = commits.filter((commit) => commit.matchesScope(pkg.name));
144
- const dependencyUpdates = this.getDependencyUpdates(pkg, releasedVersions);
145
- const versionBumpFromDependencies = this.isNonEmptyChangeSet(dependencyUpdates) ? SemVerBumpType_1.SemVerBumpType.MINOR : SemVerBumpType_1.SemVerBumpType.NONE;
146
- const versionBump = this.parseVersionBump(scopedCommits, versionBumpFromDependencies);
147
- if (versionBump === SemVerBumpType_1.SemVerBumpType.NONE) {
148
- this.logStep('SKIP', `${pkg.name}@${currentVersion}`);
149
- continue;
150
- }
151
- const newVersion = (0, SemVerBumpType_1.bumpVersion)(currentVersion, versionBump);
152
- const releaseCommits = this.collectReleaseCommits(scopedCommits);
153
- this.applyDependencyUpdates(pkg, dependencyUpdates);
154
- this.packageManager.bumpVersion(pkg, versionBump);
155
- releasedVersions.set(pkg.name, newVersion);
156
- releasedPackages.push({ pkg, version: newVersion });
157
- releaseCommitPackages.push(this.toReleaseCommitPackage(pkg, currentVersion, newVersion, releaseCommits, dependencyUpdates));
158
- this.logStep('BUMP', `${pkg.name} ${currentVersion} -> ${newVersion} (${(0, SemVerBumpType_1.bumpTypeToString)(versionBump)})`);
159
- this.renderChangelog(pkg, currentVersion, newVersion, dependencyUpdates, releaseCommits);
160
- }
161
- if (dryRun) {
162
- return;
163
- }
164
- // create release commit
165
- const commitMessage = this.releaseCommitView.render({ packages: releaseCommitPackages });
166
- this.vcsService.commit(commitMessage);
167
- this.logStep('COMMIT', commitMessage.split('\n', 1)[0]);
168
- // create git tags for every released package
169
- this.createTags(releasedPackages);
170
- if (push) {
171
- this.vcsService.push(releasedPackages.length > 0);
172
- this.logStep('PUSH', `HEAD${releasedPackages.length > 0 ? ` and ${releasedPackages.length} tag(s)` : ''}`);
173
- }
174
- if (publish) {
175
- this.publishPackages(releasedPackages);
176
- }
177
- }
178
66
  }
179
67
  exports.MonorepoController = MonorepoController;
180
68
  //# sourceMappingURL=MonorepoController.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MonorepoController.js","sourceRoot":"","sources":["../src/MonorepoController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MonorepoController.js","sourceRoot":"","sources":["../src/MonorepoController.ts"],"names":[],"mappings":"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"}
@@ -5,230 +5,77 @@ const MonorepoController_1 = require("./MonorepoController");
5
5
  const NpmPackage_1 = require("./models/NpmPackage");
6
6
  const ConventionalCommit_1 = require("./models/ConventionalCommit");
7
7
  (0, vitest_1.describe)('MonorepoController.discoverPackages', () => {
8
- (0, vitest_1.it)('given directory workspaces when packages are discovered then package.json files are resolved', () => {
9
- const packageJsonByPath = new Map([
10
- [
11
- '/repo/packages/a/package.json',
12
- {
13
- name: 'pkg-a',
14
- version: '1.0.0',
15
- },
16
- ],
17
- [
18
- '/repo/packages/b/package.json',
19
- {
20
- name: 'pkg-b',
21
- version: '1.0.0',
22
- },
23
- ],
24
- ]);
25
- const fileSystemService = {
26
- findManyByGlob: vitest_1.vi.fn().mockReturnValue(['/repo/packages/a', '/repo/packages/b/package.json']),
27
- readJson: vitest_1.vi.fn((filePath) => packageJsonByPath.get(filePath)),
28
- fileExists: vitest_1.vi.fn((filePath) => packageJsonByPath.has(filePath)),
29
- };
30
- const controller = new MonorepoController_1.MonorepoController(fileSystemService, {}, {}, {}, {}, {});
31
- controller.rootPackageJson = {
32
- name: 'root',
33
- version: '1.0.0',
34
- workspaces: ['packages/*'],
35
- };
36
- controller.discoverPackages();
37
- (0, vitest_1.expect)(fileSystemService.readJson).toHaveBeenCalledWith('/repo/packages/a/package.json');
38
- (0, vitest_1.expect)(fileSystemService.readJson).toHaveBeenCalledWith('/repo/packages/b/package.json');
39
- (0, vitest_1.expect)(controller.packages.map((pkg) => pkg.name)).toEqual(['pkg-a', 'pkg-b']);
8
+ (0, vitest_1.it)('given workspace package json files when packages are discovered then private packages are excluded', () => {
9
+ const fs = {
10
+ readPackageJsonOrFail: vitest_1.vi.fn().mockReturnValue({ workspaces: ['packages/*'] }),
11
+ findManyPackageJsonByGlob: vitest_1.vi.fn().mockReturnValue([
12
+ ['/repo/packages/a/package.json', { name: 'pkg-a', version: '1.0.0' }],
13
+ ['/repo/packages/private/package.json', { name: 'pkg-private', version: '1.0.0', private: true }],
14
+ ]),
15
+ };
16
+ const controller = new MonorepoController_1.MonorepoController([], fs, {}, {});
17
+ controller.discoverPackages('/repo');
18
+ (0, vitest_1.expect)(fs.readPackageJsonOrFail).toHaveBeenCalledWith('/repo');
19
+ (0, vitest_1.expect)(fs.findManyPackageJsonByGlob).toHaveBeenCalledWith(['packages/*'], '/repo');
20
+ (0, vitest_1.expect)(controller.packageSortedList.map((pkg) => pkg.name)).toEqual(['pkg-a']);
40
21
  });
41
22
  });
42
23
  (0, vitest_1.describe)('MonorepoController.release', () => {
43
- (0, vitest_1.it)('given a skipped bump when release runs then changelog is not rendered', () => {
44
- const fileSystemService = {
45
- readJson: vitest_1.vi.fn(),
24
+ (0, vitest_1.it)('given no release-triggering commits when release runs then it logs skip and calls only finalize hook', () => {
25
+ const plugin = {
26
+ onPackageReleased: vitest_1.vi.fn(),
27
+ onReleaseComplete: vitest_1.vi.fn(),
46
28
  };
47
- const vcs = {
29
+ const vsc = {
48
30
  findManyCommitsSinceTag: vitest_1.vi.fn().mockReturnValue([]),
49
- createTag: vitest_1.vi.fn(),
50
- commit: vitest_1.vi.fn(),
51
- push: vitest_1.vi.fn(),
52
- };
53
- const changelog = {
54
- addLog: vitest_1.vi.fn(),
55
- render: vitest_1.vi.fn(),
56
- };
57
- const releaseCommitView = {
58
- render: vitest_1.vi.fn().mockReturnValue('release commit message'),
59
- };
60
- const packageManager = {
61
- bumpVersion: vitest_1.vi.fn(),
62
- publish: vitest_1.vi.fn(),
63
31
  };
64
32
  const logger = {
65
33
  info: vitest_1.vi.fn(),
66
34
  };
67
- const controller = new MonorepoController_1.MonorepoController(fileSystemService, vcs, changelog, releaseCommitView, packageManager, logger);
68
- controller.packages = [
69
- NpmPackage_1.NpmPackage.createFromPackage({
70
- name: 'pkg-a',
71
- version: '1.0.0',
72
- }, '/repo/packages/pkg-a/package.json'),
35
+ const controller = new MonorepoController_1.MonorepoController([plugin], {}, vsc, logger);
36
+ controller.packageSortedList = [
37
+ NpmPackage_1.NpmPackage.createFromPackage({ name: 'pkg-a', version: '1.0.0' }, '/repo/packages/pkg-a/package.json'),
73
38
  ];
74
39
  controller.release();
75
- (0, vitest_1.expect)(changelog.render).not.toHaveBeenCalled();
40
+ (0, vitest_1.expect)(plugin.onPackageReleased).not.toHaveBeenCalled();
41
+ (0, vitest_1.expect)(plugin.onReleaseComplete).toHaveBeenCalledWith({
42
+ dryRun: false,
43
+ noPush: false,
44
+ noPublish: false,
45
+ releasedVersions: new Map(),
46
+ releasedPackages: [],
47
+ releasedCommits: new Map(),
48
+ });
76
49
  (0, vitest_1.expect)(logger.info).toHaveBeenCalledWith('SKIP pkg-a@1.0.0');
77
- (0, vitest_1.expect)(logger.info).not.toHaveBeenCalledWith('WRITE pkg-a CHANGELOG.md');
78
- (0, vitest_1.expect)(releaseCommitView.render).toHaveBeenCalledWith({ packages: [] });
79
- (0, vitest_1.expect)(vcs.commit).toHaveBeenCalledWith('release commit message');
80
50
  });
81
- (0, vitest_1.it)('given multiple bumped packages when release runs then release commit receives all package changes', () => {
82
- const fileSystemService = {
83
- readJson: vitest_1.vi.fn((filePath) => {
84
- if (filePath === '/repo/packages/pkg-a/package.json') {
85
- return { name: 'pkg-a', version: '1.0.0' };
86
- }
87
- if (filePath === '/repo/packages/pkg-b/package.json') {
88
- return { name: 'pkg-b', version: '2.0.0' };
89
- }
90
- return undefined;
91
- }),
92
- writeJson: vitest_1.vi.fn(),
51
+ (0, vitest_1.it)('given release-triggering commits when release runs then it calls package and finalize plugin hooks with released state', () => {
52
+ const plugin = {
53
+ onPackageReleased: vitest_1.vi.fn(),
54
+ onReleaseComplete: vitest_1.vi.fn(),
93
55
  };
94
- const vcs = {
56
+ const vsc = {
95
57
  findManyCommitsSinceTag: vitest_1.vi
96
58
  .fn()
97
59
  .mockImplementation((tag) => tag === 'pkg-a@1.0.0' ? [ConventionalCommit_1.ConventionalCommit.parse('feat(pkg-a): add feature')] : [ConventionalCommit_1.ConventionalCommit.parse('fix(pkg-b): resolve bug')]),
98
- createTag: vitest_1.vi.fn(),
99
- commit: vitest_1.vi.fn(),
100
- push: vitest_1.vi.fn(),
101
- };
102
- const changelog = {
103
- addLog: vitest_1.vi.fn(),
104
- render: vitest_1.vi.fn(),
105
- };
106
- const releaseCommitView = {
107
- render: vitest_1.vi.fn().mockReturnValue('release commit message'),
108
- };
109
- const packageManager = {
110
- bumpVersion: vitest_1.vi.fn(),
111
- publish: vitest_1.vi.fn(),
112
60
  };
113
61
  const logger = {
114
62
  info: vitest_1.vi.fn(),
115
63
  };
116
- const controller = new MonorepoController_1.MonorepoController(fileSystemService, vcs, changelog, releaseCommitView, packageManager, logger);
117
- controller.packages = [
118
- NpmPackage_1.NpmPackage.createFromPackage({
119
- name: 'pkg-a',
120
- version: '1.0.0',
121
- }, '/repo/packages/pkg-a/package.json'),
122
- NpmPackage_1.NpmPackage.createFromPackage({
123
- name: 'pkg-b',
124
- version: '2.0.0',
125
- }, '/repo/packages/pkg-b/package.json'),
126
- ];
127
- controller.release();
128
- (0, vitest_1.expect)(releaseCommitView.render).toHaveBeenCalledWith({
129
- packages: [
130
- {
131
- name: 'pkg-a',
132
- version: '1.1.0',
133
- previousVersion: '1.0.0',
134
- commits: [{ type: 'feat', subject: 'add feature', isBreaking: false }],
135
- dependencyUpdates: [],
136
- },
137
- {
138
- name: 'pkg-b',
139
- version: '2.0.1',
140
- previousVersion: '2.0.0',
141
- commits: [{ type: 'fix', subject: 'resolve bug', isBreaking: false }],
142
- dependencyUpdates: [],
143
- },
144
- ],
145
- });
146
- (0, vitest_1.expect)(vcs.commit).toHaveBeenCalledWith('release commit message');
147
- });
148
- (0, vitest_1.it)('given released packages when release runs then it pushes tags and publishes packages by default', () => {
149
- const fileSystemService = {
150
- readJson: vitest_1.vi.fn((filePath) => {
151
- if (filePath === '/repo/packages/pkg-a/package.json') {
152
- return { name: 'pkg-a', version: '1.0.0' };
153
- }
154
- return undefined;
155
- }),
156
- writeJson: vitest_1.vi.fn(),
157
- };
158
- const vcs = {
159
- findManyCommitsSinceTag: vitest_1.vi.fn().mockReturnValue([ConventionalCommit_1.ConventionalCommit.parse('fix(pkg-a): release me')]),
160
- createTag: vitest_1.vi.fn(),
161
- commit: vitest_1.vi.fn(),
162
- push: vitest_1.vi.fn(),
163
- };
164
- const changelog = {
165
- addLog: vitest_1.vi.fn(),
166
- render: vitest_1.vi.fn(),
167
- };
168
- const releaseCommitView = {
169
- render: vitest_1.vi.fn().mockReturnValue('release commit message'),
170
- };
171
- const packageManager = {
172
- bumpVersion: vitest_1.vi.fn(),
173
- publish: vitest_1.vi.fn(),
174
- };
175
- const logger = {
176
- info: vitest_1.vi.fn(),
177
- };
178
- const controller = new MonorepoController_1.MonorepoController(fileSystemService, vcs, changelog, releaseCommitView, packageManager, logger);
179
- controller.packages = [
180
- NpmPackage_1.NpmPackage.createFromPackage({
181
- name: 'pkg-a',
182
- version: '1.0.0',
183
- }, '/repo/packages/pkg-a/package.json'),
184
- ];
185
- controller.release();
186
- (0, vitest_1.expect)(vcs.push).toHaveBeenCalledWith(true);
187
- (0, vitest_1.expect)(packageManager.publish).toHaveBeenCalledTimes(1);
188
- (0, vitest_1.expect)(packageManager.publish).toHaveBeenCalledWith(vitest_1.expect.objectContaining({
189
- name: 'pkg-a',
190
- }));
191
- });
192
- (0, vitest_1.it)('given no push and no publish options when release runs then remote mutations are skipped', () => {
193
- const fileSystemService = {
194
- readJson: vitest_1.vi.fn((filePath) => {
195
- if (filePath === '/repo/packages/pkg-a/package.json') {
196
- return { name: 'pkg-a', version: '1.0.0' };
197
- }
198
- return undefined;
199
- }),
200
- writeJson: vitest_1.vi.fn(),
201
- };
202
- const vcs = {
203
- findManyCommitsSinceTag: vitest_1.vi.fn().mockReturnValue([ConventionalCommit_1.ConventionalCommit.parse('fix(pkg-a): release me')]),
204
- createTag: vitest_1.vi.fn(),
205
- commit: vitest_1.vi.fn(),
206
- push: vitest_1.vi.fn(),
207
- };
208
- const changelog = {
209
- addLog: vitest_1.vi.fn(),
210
- render: vitest_1.vi.fn(),
211
- };
212
- const releaseCommitView = {
213
- render: vitest_1.vi.fn().mockReturnValue('release commit message'),
214
- };
215
- const packageManager = {
216
- bumpVersion: vitest_1.vi.fn(),
217
- publish: vitest_1.vi.fn(),
218
- };
219
- const logger = {
220
- info: vitest_1.vi.fn(),
221
- };
222
- const controller = new MonorepoController_1.MonorepoController(fileSystemService, vcs, changelog, releaseCommitView, packageManager, logger);
223
- controller.packages = [
224
- NpmPackage_1.NpmPackage.createFromPackage({
225
- name: 'pkg-a',
226
- version: '1.0.0',
227
- }, '/repo/packages/pkg-a/package.json'),
228
- ];
229
- controller.release({ push: false, publish: false });
230
- (0, vitest_1.expect)(vcs.push).not.toHaveBeenCalled();
231
- (0, vitest_1.expect)(packageManager.publish).not.toHaveBeenCalled();
64
+ const controller = new MonorepoController_1.MonorepoController([plugin], {}, vsc, logger);
65
+ const pkgA = NpmPackage_1.NpmPackage.createFromPackage({ name: 'pkg-a', version: '1.0.0' }, '/repo/packages/pkg-a/package.json');
66
+ const pkgB = NpmPackage_1.NpmPackage.createFromPackage({ name: 'pkg-b', version: '2.0.0' }, '/repo/packages/pkg-b/package.json');
67
+ controller.packageSortedList = [pkgA, pkgB];
68
+ controller.release({ noPush: true, noPublish: true });
69
+ (0, vitest_1.expect)(plugin.onPackageReleased).toHaveBeenCalledTimes(2);
70
+ (0, vitest_1.expect)(plugin.onReleaseComplete).toHaveBeenCalledTimes(1);
71
+ const finalizeArg = plugin.onReleaseComplete.mock.calls[0][0];
72
+ (0, vitest_1.expect)(finalizeArg.noPush).toBe(true);
73
+ (0, vitest_1.expect)(finalizeArg.noPublish).toBe(true);
74
+ (0, vitest_1.expect)(finalizeArg.releasedPackages.map((pkg) => pkg.name)).toEqual(['pkg-a', 'pkg-b']);
75
+ (0, vitest_1.expect)(finalizeArg.releasedVersions.get('pkg-a')).toBe('1.1.0');
76
+ (0, vitest_1.expect)(finalizeArg.releasedVersions.get('pkg-b')).toBe('2.0.1');
77
+ (0, vitest_1.expect)(finalizeArg.releasedCommits.get('pkg-a')).toHaveLength(1);
78
+ (0, vitest_1.expect)(finalizeArg.releasedCommits.get('pkg-b')).toHaveLength(1);
232
79
  });
233
80
  });
234
81
  //# sourceMappingURL=MonorepoController.spec.js.map