release-monorepo-semantically 1.12.0 → 1.13.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/README.md CHANGED
@@ -186,6 +186,45 @@ Note the `patch` list above repeats the default `fix`/`perf` matchers — since
186
186
 
187
187
  The default changelog template only renders `feat`/`fix`/`perf`/breaking commits under their own headings; anything else (including a newly release-triggering type like `docs`) renders under a generic "Other Changes" section (via the `hasOthers`/`findOthers` template helpers). Override `changelog`'s template if you want different grouping for a custom type.
188
188
 
189
+ ## Squash commits
190
+
191
+ > **Recommendation: don't squash-merge, or write one conventional message when you do.** Prefer merge commits or rebase-merging so every conventional commit reaches the release branch as-is. If you squash, the [Conventional Commits FAQ](https://www.conventionalcommits.org/en/v1.0.0/#faq) expects the maintainer to write the squash commit's message as a single conventional commit at merge time. The option below is a fallback for repositories that can't do either.
192
+
193
+ A squash merge collapses a branch into one commit. By default `report` reads only that commit's subject line, so the conventional commits folded into its body are invisible: a PR titled `chore: add both packages (#7)` that squashed `feat(pkg-a): …` and `fix(pkg-b): …` releases nothing.
194
+
195
+ There is no standard format for squash commit messages. Conventional Commits doesn't define one, and each Git host writes its own. So `report` doesn't guess: you describe your format with `report.squash`, and `report` then replaces each squash commit it detects with the commits listed in its body.
196
+
197
+ ```json
198
+ {
199
+ "report": { "squash": "github" }
200
+ }
201
+ ```
202
+
203
+ `"github"` is a preset for GitHub's default squash-merge message: the PR title ending in `(#<number>)`, and a body with one `* <commit header>` bullet per squashed commit. For any other format, give two regular expressions (JavaScript syntax, as JSON strings):
204
+
205
+ | Field | Tested against | Meaning |
206
+ | -------- | --------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
207
+ | `detect` | the commit's subject line | a match marks the commit as a squash commit |
208
+ | `entry` | each line of a squash commit body | a match is the header of one squashed commit: capture group 1 if the expression has one, otherwise the whole match |
209
+
210
+ The `"github"` preset is equivalent to:
211
+
212
+ ```json
213
+ {
214
+ "report": { "squash": { "detect": "\\(#\\d+\\)$", "entry": "^\\* (.+)$" } }
215
+ }
216
+ ```
217
+
218
+ How a detected squash commit is read:
219
+
220
+ - Each entry is parsed as its own conventional commit and goes through the normal [release rules](#configuring-release-rules). Entries keep the squash commit's hash, because the original commits don't exist on the release branch.
221
+ - The squash commit's own subject (the PR title) is **not** analyzed as well, so its changes aren't counted twice.
222
+ - If no body line matches `entry`, the commit falls back to its subject. For example, GitHub squashes a single-commit PR into that commit's own message, with no bullets.
223
+ - Only entry headers are read. A `BREAKING CHANGE:` footer inside a squashed commit's body is lost, so use `!` in the header (`feat(pkg-a)!: …`) to mark a breaking change.
224
+ - Explicit bump tags (`[major]`, `[minor]`, `[patch]`, `[skip-bump]`) work inside entries just as they do in regular commits.
225
+
226
+ An invalid regular expression fails `report` with `INVALID_CONFIG`.
227
+
189
228
  ## Templates
190
229
 
191
230
  Default templates ship with the package and are used automatically. Override per step with `--template <path>` (relative to the working directory) or the matching config section:
@@ -0,0 +1,21 @@
1
+ export interface SquashPatternConfig {
2
+ /** Regular expression tested against a commit's subject line; a match marks the commit as a squash commit. */
3
+ detect: string;
4
+ /** Regular expression tested against each body line of a squash commit; a match is the header of one squashed commit (capture group 1 if present, else the whole match). */
5
+ entry: string;
6
+ }
7
+ export type SquashPreset = 'github';
8
+ export declare const SQUASH_PRESETS: Record<SquashPreset, SquashPatternConfig>;
9
+ export declare class SquashCommitPattern {
10
+ private readonly detect;
11
+ private readonly entry;
12
+ static fromConfig(config: SquashPreset | SquashPatternConfig): SquashCommitPattern;
13
+ constructor(detect: RegExp, entry: RegExp);
14
+ /**
15
+ * Headers of the commits squashed into this one. Empty when the commit isn't a
16
+ * squash commit or its body lists no recognizable entries, in which case the
17
+ * commit should be read by its own subject.
18
+ */
19
+ findSquashedHeaders(subject: string, body: string): string[];
20
+ }
21
+ //# sourceMappingURL=SquashCommitPattern.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SquashCommitPattern.d.ts","sourceRoot":"","sources":["../../src/domain/SquashCommitPattern.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,8GAA8G;IAC9G,MAAM,EAAE,MAAM,CAAC;IACf,4KAA4K;IAC5K,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC;AAIpC,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,YAAY,EAAE,mBAAmB,CAEpE,CAAC;AAKF,qBAAa,mBAAmB;IAO5B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAPxB,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,mBAAmB,GAAG,mBAAmB;gBAM/D,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM;IAGhC;;;;OAIG;IACH,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE;CAS7D"}
@@ -0,0 +1,36 @@
1
+ // GitHub's default squash-merge message: the PR title suffixed with `(#<number>)`,
2
+ // and a body listing each squashed commit's header as a `* ` bullet.
3
+ export const SQUASH_PRESETS = {
4
+ github: { detect: '\\(#\\d+\\)$', entry: '^\\* (.+)$' },
5
+ };
6
+ // There is no standard for squash commit messages (Conventional Commits treats a
7
+ // squash as a single commit whose message the maintainer writes), so the
8
+ // consumer describes its own format here.
9
+ export class SquashCommitPattern {
10
+ detect;
11
+ entry;
12
+ static fromConfig(config) {
13
+ const { detect, entry } = typeof config === 'string' ? SQUASH_PRESETS[config] : config;
14
+ return new SquashCommitPattern(new RegExp(detect), new RegExp(entry));
15
+ }
16
+ constructor(detect, entry) {
17
+ this.detect = detect;
18
+ this.entry = entry;
19
+ }
20
+ /**
21
+ * Headers of the commits squashed into this one. Empty when the commit isn't a
22
+ * squash commit or its body lists no recognizable entries, in which case the
23
+ * commit should be read by its own subject.
24
+ */
25
+ findSquashedHeaders(subject, body) {
26
+ if (!this.detect.test(subject))
27
+ return [];
28
+ return body
29
+ .split(/\r?\n/)
30
+ .map((line) => line.match(this.entry))
31
+ .filter((match) => match !== null)
32
+ .map((match) => (match[1] ?? match[0]).trim())
33
+ .filter((header) => header.length > 0);
34
+ }
35
+ }
36
+ //# sourceMappingURL=SquashCommitPattern.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SquashCommitPattern.js","sourceRoot":"","sources":["../../src/domain/SquashCommitPattern.ts"],"names":[],"mappings":"AASA,mFAAmF;AACnF,qEAAqE;AACrE,MAAM,CAAC,MAAM,cAAc,GAA8C;IACvE,MAAM,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,EAAE;CACxD,CAAC;AAEF,iFAAiF;AACjF,yEAAyE;AACzE,0CAA0C;AAC1C,MAAM,OAAO,mBAAmB;IAOX;IACA;IAPnB,MAAM,CAAC,UAAU,CAAC,MAA0C;QAC1D,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACvF,OAAO,IAAI,mBAAmB,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,YACmB,MAAc,EACd,KAAa;QADb,WAAM,GAAN,MAAM,CAAQ;QACd,UAAK,GAAL,KAAK,CAAQ;IAC7B,CAAC;IAEJ;;;;OAIG;IACH,mBAAmB,CAAC,OAAe,EAAE,IAAY;QAC/C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,OAAO,EAAE,CAAC;QAC1C,OAAO,IAAI;aACR,KAAK,CAAC,OAAO,CAAC;aACd,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACrC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC;aACjC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aAC7C,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC3C,CAAC;CACF"}
@@ -1,4 +1,5 @@
1
1
  import { z } from 'zod';
2
+ import { SquashCommitPattern } from '../../domain/SquashCommitPattern.js';
2
3
  export declare const CONFIG_KEY = "report";
3
4
  export declare const PLUGIN_CONFIG_SCHEMA: z.ZodObject<{
4
5
  bumps: z.ZodDefault<z.ZodObject<{
@@ -21,6 +22,13 @@ export declare const PLUGIN_CONFIG_SCHEMA: z.ZodObject<{
21
22
  packages: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"*">, z.ZodArray<z.ZodString>]>>;
22
23
  }, z.core.$strip>>>;
23
24
  }, z.core.$strip>>;
25
+ squash: z.ZodPipe<z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"github">, z.ZodObject<{
26
+ detect: z.ZodString;
27
+ entry: z.ZodString;
28
+ }, z.core.$strip>]>>, z.ZodTransform<SquashCommitPattern | undefined, "github" | {
29
+ detect: string;
30
+ entry: string;
31
+ } | undefined>>;
24
32
  }, z.core.$strip>;
25
33
  export type PluginConfig = z.infer<typeof PLUGIN_CONFIG_SCHEMA>;
26
34
  //# sourceMappingURL=ReportConfig.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ReportConfig.d.ts","sourceRoot":"","sources":["../../../src/features/report/ReportConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,UAAU,WAAW,CAAC;AASnC,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;iBAQ/B,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
1
+ {"version":3,"file":"ReportConfig.d.ts","sourceRoot":"","sources":["../../../src/features/report/ReportConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAE1E,eAAO,MAAM,UAAU,WAAW,CAAC;AAsBnC,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAS/B,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { z } from 'zod';
2
2
  import { DEFAULT_MAJOR_MATCHERS, DEFAULT_MINOR_MATCHERS, DEFAULT_PATCH_MATCHERS } from '../../domain/ConventionalCommit.js';
3
+ import { SquashCommitPattern } from '../../domain/SquashCommitPattern.js';
3
4
  export const CONFIG_KEY = 'report';
4
5
  const BUMP_MATCHER_SCHEMA = z.object({
5
6
  type: z.string().optional(),
@@ -7,6 +8,17 @@ const BUMP_MATCHER_SCHEMA = z.object({
7
8
  breaking: z.boolean().optional(),
8
9
  packages: z.union([z.literal('*'), z.array(z.string())]).optional(),
9
10
  });
11
+ const isValidRegExp = (source) => {
12
+ try {
13
+ new RegExp(source);
14
+ return true;
15
+ }
16
+ catch {
17
+ return false;
18
+ }
19
+ };
20
+ const REGEXP_SCHEMA = z.string().min(1).refine(isValidRegExp, 'must be a valid regular expression');
21
+ const SQUASH_SCHEMA = z.union([z.literal('github'), z.object({ detect: REGEXP_SCHEMA, entry: REGEXP_SCHEMA })]);
10
22
  export const PLUGIN_CONFIG_SCHEMA = z.object({
11
23
  bumps: z
12
24
  .object({
@@ -15,5 +27,6 @@ export const PLUGIN_CONFIG_SCHEMA = z.object({
15
27
  patch: z.array(BUMP_MATCHER_SCHEMA).default(DEFAULT_PATCH_MATCHERS),
16
28
  })
17
29
  .default({ major: DEFAULT_MAJOR_MATCHERS, minor: DEFAULT_MINOR_MATCHERS, patch: DEFAULT_PATCH_MATCHERS }),
30
+ squash: SQUASH_SCHEMA.optional().transform((squash) => (squash === undefined ? undefined : SquashCommitPattern.fromConfig(squash))),
18
31
  });
19
32
  //# sourceMappingURL=ReportConfig.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ReportConfig.js","sourceRoot":"","sources":["../../../src/features/report/ReportConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAE5H,MAAM,CAAC,MAAM,UAAU,GAAG,QAAQ,CAAC;AAEnC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAChC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CACpE,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,KAAK,EAAE,CAAC;SACL,MAAM,CAAC;QACN,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC;QACnE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC;QACnE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC;KACpE,CAAC;SACD,OAAO,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC;CAC5G,CAAC,CAAC"}
1
+ {"version":3,"file":"ReportConfig.js","sourceRoot":"","sources":["../../../src/features/report/ReportConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5H,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAE1E,MAAM,CAAC,MAAM,UAAU,GAAG,QAAQ,CAAC;AAEnC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAChC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CACpE,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,CAAC,MAAc,EAAW,EAAE;IAChD,IAAI,CAAC;QACH,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,EAAE,oCAAoC,CAAC,CAAC;AAEpG,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC;AAEhH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,KAAK,EAAE,CAAC;SACL,MAAM,CAAC;QACN,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC;QACnE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC;QACnE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC;KACpE,CAAC;SACD,OAAO,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC;IAC3G,MAAM,EAAE,aAAa,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;CACpI,CAAC,CAAC"}
@@ -66,7 +66,7 @@ let ReportController = class ReportController {
66
66
  const releasedVersions = new Map();
67
67
  const releasedCommits = new Map();
68
68
  for (const pkg of this.publicPackages) {
69
- const commitsSinceTag = this.vsc.findManyCommitsSinceTag(pkg.getCommitTag());
69
+ const commitsSinceTag = this.vsc.findManyCommitsSinceTag(pkg.getCommitTag(), this.config.squash);
70
70
  const commitBumps = commitsSinceTag
71
71
  .map((c) => [c, c.bumpMatch(this.config.bumps, pkg.name)])
72
72
  .filter(([, level]) => level !== SemVerBumpType.NONE);
@@ -1 +1 @@
1
- {"version":3,"file":"ReportController.js","sourceRoot":"","sources":["../../../src/features/report/ReportController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ReportController.js","sourceRoot":"","sources":["../../../src/features/report/ReportController.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,9 @@
1
1
  import 'reflect-metadata';
2
2
  import { ConventionalCommit } from '../../../domain/ConventionalCommit.js';
3
3
  import { VSCService } from './VSCService.js';
4
+ import { SquashCommitPattern } from '../../../domain/SquashCommitPattern.js';
4
5
  export declare class GitService implements VSCService {
5
- findManyCommitsSinceTag(sinceTag: string): ConventionalCommit[];
6
+ findManyCommitsSinceTag(sinceTag: string, squash?: SquashCommitPattern): ConventionalCommit[];
6
7
  private tagExists;
7
8
  createTag(tagName: string): void;
8
9
  isWorkingTreeClean(): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"GitService.d.ts","sourceRoot":"","sources":["../../../../src/features/vcs/services/GitService.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAG1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAE3E,OAAO,EAAE,UAAU,EAAiB,MAAM,iBAAiB,CAAC;AAI5D,qBACa,UAAW,YAAW,UAAU;IAC3C,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,EAAE;IAO/D,OAAO,CAAC,SAAS;IASjB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAKhC,kBAAkB,IAAI,OAAO;IAK7B,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAS7B,IAAI,CAAC,WAAW,EAAE,OAAO,GAAG,IAAI;CAMjC"}
1
+ {"version":3,"file":"GitService.d.ts","sourceRoot":"","sources":["../../../../src/features/vcs/services/GitService.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAG1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAE3E,OAAO,EAAE,UAAU,EAAiB,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAI7E,qBACa,UAAW,YAAW,UAAU;IAC3C,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,mBAAmB,GAAG,kBAAkB,EAAE;IAiB7F,OAAO,CAAC,SAAS;IASjB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAKhC,kBAAkB,IAAI,OAAO;IAK7B,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAS7B,IAAI,CAAC,WAAW,EAAE,OAAO,GAAG,IAAI;CAMjC"}
@@ -11,12 +11,22 @@ import { register } from 'ts-ioc-container';
11
11
  import { VSCServiceKey } from './VSCService.js';
12
12
  import { whenConfig } from '../VCSConfig.js';
13
13
  let GitService = class GitService {
14
- findManyCommitsSinceTag(sinceTag) {
14
+ findManyCommitsSinceTag(sinceTag, squash) {
15
15
  const range = this.tagExists(sinceTag) ? `${sinceTag}..HEAD` : 'HEAD';
16
- const output = execSync(`git log ${range} --format="%H %s"`, { encoding: 'utf-8' }).trim();
16
+ // Fields separated by the ASCII unit separator, records by the record
17
+ // separator: a body can contain any printable text, including newlines.
18
+ const output = execSync(`git log ${range} --format="%H%x1f%s%x1f%b%x1e"`, { encoding: 'utf-8' }).trim();
17
19
  if (!output)
18
20
  return [];
19
- return output.split('\n').map((c) => ConventionalCommit.parse(c));
21
+ return output
22
+ .split('\x1e')
23
+ .map((record) => record.trim())
24
+ .filter((record) => record.length > 0)
25
+ .flatMap((record) => {
26
+ const [hash, subject, body = ''] = record.split('\x1f');
27
+ const headers = squash?.findSquashedHeaders(subject, body) ?? [];
28
+ return (headers.length > 0 ? headers : [subject]).map((header) => ConventionalCommit.parse(`${hash} ${header}`));
29
+ });
20
30
  }
21
31
  tagExists(tagName) {
22
32
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"GitService.js","sourceRoot":"","sources":["../../../../src/features/vcs/services/GitService.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAc,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAE5D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGtC,IAAM,UAAU,GAAhB,MAAM,UAAU;IACrB,uBAAuB,CAAC,QAAgB;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;QACtE,MAAM,MAAM,GAAG,QAAQ,CAAC,WAAW,KAAK,mBAAmB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3F,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QACvB,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,CAAC;IAEO,SAAS,CAAC,OAAe;QAC/B,IAAI,CAAC;YACH,QAAQ,CAAC,4CAA4C,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC9F,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,SAAS,CAAC,OAAe;QACvB,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAAE,OAAO;QACpC,QAAQ,CAAC,WAAW,OAAO,EAAE,CAAC,CAAC;IACjC,CAAC;IAED,kBAAkB;QAChB,MAAM,MAAM,GAAG,QAAQ,CAAC,wBAAwB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAChF,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,OAAe;QACpB,MAAM,iBAAiB,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QACzC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACtB,QAAQ,CAAC,+BAA+B,EAAE;YACxC,KAAK,EAAE,iBAAiB;YACxB,KAAK,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC;SACtC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,WAAoB;QACvB,QAAQ,CAAC,UAAU,CAAC,CAAC;QACrB,IAAI,WAAW,EAAE,CAAC;YAChB,QAAQ,CAAC,iBAAiB,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;CACF,CAAA;AA1CY,UAAU;IADtB,QAAQ,CAAC,aAAa,EAAE,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;GACtC,UAAU,CA0CtB"}
1
+ {"version":3,"file":"GitService.js","sourceRoot":"","sources":["../../../../src/features/vcs/services/GitService.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,12 @@
1
1
  import { ConventionalCommit } from '../../../domain/ConventionalCommit.js';
2
2
  import { SingleToken } from 'ts-ioc-container';
3
+ import { SquashCommitPattern } from '../../../domain/SquashCommitPattern.js';
3
4
  export interface VSCService {
4
- findManyCommitsSinceTag(sinceTag: string): ConventionalCommit[];
5
+ /**
6
+ * Commits since the given tag, newest first. With a squash pattern, a detected
7
+ * squash commit is replaced by the commits listed in its body.
8
+ */
9
+ findManyCommitsSinceTag(sinceTag: string, squash?: SquashCommitPattern): ConventionalCommit[];
5
10
  createTag(tagName: string): void;
6
11
  isWorkingTreeClean(): boolean;
7
12
  commit(message: string): void;
@@ -1 +1 @@
1
- {"version":3,"file":"VSCService.d.ts","sourceRoot":"","sources":["../../../../src/features/vcs/services/VSCService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,WAAW,UAAU;IACzB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAAC;IAChE,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,kBAAkB,IAAI,OAAO,CAAC;IAC9B,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,IAAI,CAAC,WAAW,EAAE,OAAO,GAAG,IAAI,CAAC;CAClC;AAED,eAAO,MAAM,aAAa,yBAA4C,CAAC"}
1
+ {"version":3,"file":"VSCService.d.ts","sourceRoot":"","sources":["../../../../src/features/vcs/services/VSCService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAE7E,MAAM,WAAW,UAAU;IACzB;;;OAGG;IACH,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,mBAAmB,GAAG,kBAAkB,EAAE,CAAC;IAC9F,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,kBAAkB,IAAI,OAAO,CAAC;IAC9B,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,IAAI,CAAC,WAAW,EAAE,OAAO,GAAG,IAAI,CAAC;CAClC;AAED,eAAO,MAAM,aAAa,yBAA4C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"VSCService.js","sourceRoot":"","sources":["../../../../src/features/vcs/services/VSCService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAU/C,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,WAAW,CAAa,YAAY,CAAC,CAAC"}
1
+ {"version":3,"file":"VSCService.js","sourceRoot":"","sources":["../../../../src/features/vcs/services/VSCService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAe/C,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,WAAW,CAAa,YAAY,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "release-monorepo-semantically",
3
- "version": "1.12.0",
3
+ "version": "1.13.0",
4
4
  "description": "cli commands to manage versioning of package in monorepo and generate changelog",
5
5
  "license": "ISC",
6
6
  "author": "",