apify-test-tools 0.10.2-beta.2 → 0.10.2-beta.3

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 (40) hide show
  1. package/.github/cli/apify-test-tools.mjs +124 -125
  2. package/CHANGELOG.md +1 -0
  3. package/README.md +55 -0
  4. package/bin/affected-actors.ts +166 -0
  5. package/bin/diff-changes.ts +25 -17
  6. package/bin/git.ts +52 -41
  7. package/bin/main.ts +43 -73
  8. package/dist/bin/affected-actors.d.ts +50 -0
  9. package/dist/bin/affected-actors.d.ts.map +1 -0
  10. package/dist/bin/affected-actors.js +89 -0
  11. package/dist/bin/affected-actors.js.map +1 -0
  12. package/dist/bin/diff-changes.d.ts +8 -2
  13. package/dist/bin/diff-changes.d.ts.map +1 -1
  14. package/dist/bin/diff-changes.js +16 -16
  15. package/dist/bin/diff-changes.js.map +1 -1
  16. package/dist/bin/git.d.ts +23 -13
  17. package/dist/bin/git.d.ts.map +1 -1
  18. package/dist/bin/git.js +44 -32
  19. package/dist/bin/git.js.map +1 -1
  20. package/dist/bin/main.js +39 -53
  21. package/dist/bin/main.js.map +1 -1
  22. package/dist/test/bundle/cli-bundle.test.js +9 -2
  23. package/dist/test/bundle/cli-bundle.test.js.map +1 -1
  24. package/dist/test/unit/bin/affected-actors.test.d.ts +2 -0
  25. package/dist/test/unit/bin/affected-actors.test.d.ts.map +1 -0
  26. package/dist/test/unit/bin/affected-actors.test.js +160 -0
  27. package/dist/test/unit/bin/affected-actors.test.js.map +1 -0
  28. package/dist/test/unit/bin/diff-changes.test.js +78 -49
  29. package/dist/test/unit/bin/diff-changes.test.js.map +1 -1
  30. package/dist/test/unit/bin/git.test.js +50 -53
  31. package/dist/test/unit/bin/git.test.js.map +1 -1
  32. package/dist/test/unit/should-built-and-test.test.js +23 -17
  33. package/dist/test/unit/should-built-and-test.test.js.map +1 -1
  34. package/dist/tsconfig.tsbuildinfo +1 -1
  35. package/package.json +1 -1
  36. package/test/bundle/cli-bundle.test.ts +9 -2
  37. package/test/unit/bin/affected-actors.test.ts +190 -0
  38. package/test/unit/bin/diff-changes.test.ts +87 -49
  39. package/test/unit/bin/git.test.ts +56 -53
  40. package/test/unit/should-built-and-test.test.ts +27 -17
@@ -0,0 +1,50 @@
1
+ import type { ActorConfig, Commit } from './types.js';
2
+ interface AffectedActorsOptions {
3
+ /** End of the range. */
4
+ head: string;
5
+ /** Only the commits on head that are not on base count, i.e. the branch's own changes. */
6
+ base?: string;
7
+ /**
8
+ * Only changes after this commit count. With `base` it's the last validated commit of the branch and is
9
+ * ignored when it isn't on the branch. Without `base` it must be an ancestor of head (e.g. the last release).
10
+ */
11
+ since?: string;
12
+ /** Glob relative to the repo root. Matching files count as changes even when .dockerignore lists them. */
13
+ testFilesGlob?: string;
14
+ actors: string[];
15
+ ignore: string[];
16
+ }
17
+ interface AffectedActors {
18
+ headSha: string;
19
+ /** Branch head points to, which is what git builds are made from. Null for a SHA or a detached HEAD. */
20
+ ref: string | null;
21
+ commits: Commit[];
22
+ changedFiles: string[];
23
+ changelog: string | null;
24
+ /** Actors with at least one functional change. They need a new build and tests. */
25
+ functionallyChangedActors: ActorConfig[];
26
+ /** Actors whose changes are all cosmetic (README, CHANGELOG, cosmetic .actor JSON). They only need a release build. */
27
+ cosmeticallyChangedActors: ActorConfig[];
28
+ }
29
+ /**
30
+ * Finds the Actors whose context changed in the given range. `base` selects the branch's own commits
31
+ * (a PR), `since` the commits after a known one (a release, or the last validated commit of a PR).
32
+ */
33
+ export declare const getAffectedActors: ({ head, base, since: sinceOption, testFilesGlob, actors, ignore, }: AffectedActorsOptions) => Promise<AffectedActors>;
34
+ /** The JSON document `get-affected-actors` prints. Versioned, since other commands and workflows consume it. */
35
+ export declare const toAffectedActorsDocument: ({ headSha, ref, commits, changedFiles, changelog, functionallyChangedActors, cosmeticallyChangedActors, }: AffectedActors) => {
36
+ version: number;
37
+ ref: string | null;
38
+ head: string;
39
+ commits: Commit[];
40
+ changedFiles: string[];
41
+ changelog: string | null;
42
+ functionallyChangedActors: {
43
+ actorFullName: string;
44
+ }[];
45
+ cosmeticallyChangedActors: {
46
+ actorFullName: string;
47
+ }[];
48
+ };
49
+ export {};
50
+ //# sourceMappingURL=affected-actors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"affected-actors.d.ts","sourceRoot":"","sources":["../../bin/affected-actors.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAGtD,UAAU,qBAAqB;IAC3B,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,0FAA0F;IAC1F,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0GAA0G;IAC1G,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,UAAU,cAAc;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,wGAAwG;IACxG,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,mFAAmF;IACnF,yBAAyB,EAAE,WAAW,EAAE,CAAC;IACzC,uHAAuH;IACvH,yBAAyB,EAAE,WAAW,EAAE,CAAC;CAC5C;AA4DD;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAU,oEAOrC,qBAAqB,KAAG,OAAO,CAAC,cAAc,CA4BhD,CAAC;AAEF,gHAAgH;AAChH,eAAO,MAAM,wBAAwB,GAAI,2GAQtC,cAAc;;;;;;;;;;;;;CAYhB,CAAC"}
@@ -0,0 +1,89 @@
1
+ import { getChangedActors } from './diff-changes.js';
2
+ import { getBranchOnlyChangedFiles, getChangedFilesBetween, getChangelogAdditions, getCommits, getCommitsBetween, hasMergeFromTarget, resolveBranchName, resolveCommitSha, resolveReleaseBaseCommit, } from './git.js';
3
+ import { logger } from './logger.js';
4
+ import { readConfigFile } from './utils/config/load-config.js';
5
+ /** The branch's own commits, after `since` when it is on the branch (see getCommits). */
6
+ const getBranchRange = async (head, base, since) => {
7
+ const commits = await getCommits({ sourceBranch: head, targetBranch: base, baseCommit: since });
8
+ return { commits, fromRef: `${commits[0].sha}~`, toRef: commits[commits.length - 1].sha };
9
+ };
10
+ /** Everything after `since` up to head. Unlike on a branch, `since` must be an ancestor of head. */
11
+ const getRangeSince = async (head, headSha, since) => {
12
+ const sinceSha = await resolveReleaseBaseCommit(since, head);
13
+ const commits = sinceSha === headSha ? [] : await getCommitsBetween(sinceSha, headSha);
14
+ return { commits, fromRef: sinceSha, toRef: headSha };
15
+ };
16
+ /**
17
+ * This is an optimization for the common case where a branch only has cosmetic changes but had to merge in
18
+ * functional changes from base (being up-to-date is a CI requirement). Base is already validated, and
19
+ * since the branch has no functional changes of its own, there is nothing new to validate.
20
+ * Exception: if the branch has any functional changes alongside the merge, we must re-test — even
21
+ * individually validated changes can have novel interactions when combined.
22
+ * Returns the Actors the branch's own commits changed, or undefined when it didn't merge base in.
23
+ *
24
+ * TODO: Apply this per Actor instead of to the whole branch. Changes merged in from base only interact with the
25
+ * branch's own changes in Actors whose context both touch, so an Actor that only base changed is already validated
26
+ * and can be skipped even when the branch changes other Actors functionally. Today any functional change of the
27
+ * branch's own keeps every Actor, and the log messages below describe the whole branch.
28
+ */
29
+ const getOwnChangesIfMergedFromBase = async (head, base, actorConfigs, testFilesGlob) => {
30
+ if (!(await hasMergeFromTarget(head, base)))
31
+ return undefined;
32
+ logger.info('[MERGE-FROM-TARGET-OPTIMIZATION]: There is merge from target branch, checking if there are no functional changes in our own branch. If so, we can skip tests');
33
+ const own = await getChangedActors({
34
+ filepathsChanged: await getBranchOnlyChangedFiles(head, base),
35
+ actorConfigs,
36
+ // Omit since to get full branch history. Validated functional commits can still interact with merged ones
37
+ commits: await getCommits({ sourceBranch: head, targetBranch: base }),
38
+ testFilesGlob,
39
+ });
40
+ logger.info(own.functional.length > 0
41
+ ? `[MERGE-FROM-TARGET-OPTIMIZATION]: Branch has ${own.functional.length} functional changes, cannot optimize, we continue with full check`
42
+ : '[MERGE-FROM-TARGET-OPTIMIZATION]: Branch itself has no functional changes, skipping tests');
43
+ return own;
44
+ };
45
+ /**
46
+ * Finds the Actors whose context changed in the given range. `base` selects the branch's own commits
47
+ * (a PR), `since` the commits after a known one (a release, or the last validated commit of a PR).
48
+ */
49
+ export const getAffectedActors = async ({ head, base, since: sinceOption, testFilesGlob, actors, ignore, }) => {
50
+ // An empty --since (e.g. an empty cache file) means the same as not passing it
51
+ const since = sinceOption || undefined;
52
+ if (!base && !since) {
53
+ throw new Error('Pass --base, --since, or both to select the commits to inspect.');
54
+ }
55
+ const headSha = await resolveCommitSha(head);
56
+ const { commits, fromRef, toRef } = base
57
+ ? await getBranchRange(head, base, since)
58
+ : await getRangeSince(head, headSha, since);
59
+ const actorConfigs = await readConfigFile({ actors, ignore });
60
+ // What the branch only merged in from base is already validated. Without functional changes of its own
61
+ // the branch has nothing to test, and without any changes of its own nothing to release either.
62
+ const own = base ? await getOwnChangesIfMergedFromBase(head, base, actorConfigs, testFilesGlob) : undefined;
63
+ const changedFiles = await getChangedFilesBetween(fromRef, toRef);
64
+ const changed = await getChangedActors({ filepathsChanged: changedFiles, actorConfigs, commits, testFilesGlob });
65
+ return {
66
+ headSha,
67
+ ref: await resolveBranchName(head),
68
+ commits,
69
+ changedFiles,
70
+ changelog: await getChangelogAdditions(fromRef, toRef, changedFiles),
71
+ functionallyChangedActors: own && own.functional.length === 0 ? [] : changed.functional,
72
+ cosmeticallyChangedActors: own && own.functional.length + own.cosmetic.length === 0 ? [] : changed.cosmetic,
73
+ };
74
+ };
75
+ /** The JSON document `get-affected-actors` prints. Versioned, since other commands and workflows consume it. */
76
+ export const toAffectedActorsDocument = ({ headSha, ref, commits, changedFiles, changelog, functionallyChangedActors, cosmeticallyChangedActors, }) => {
77
+ const names = (configs) => configs.map(({ actorFullName }) => ({ actorFullName }));
78
+ return {
79
+ version: 1,
80
+ ref,
81
+ head: headSha,
82
+ commits,
83
+ changedFiles,
84
+ changelog,
85
+ functionallyChangedActors: names(functionallyChangedActors),
86
+ cosmeticallyChangedActors: names(cosmeticallyChangedActors),
87
+ };
88
+ };
89
+ //# sourceMappingURL=affected-actors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"affected-actors.js","sourceRoot":"","sources":["../../bin/affected-actors.ts"],"names":[],"mappings":"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"}
@@ -2,10 +2,16 @@ import type { ActorConfig, Commit } from './types.js';
2
2
  interface ShouldBuildAndTestOptions {
3
3
  filepathsChanged: string[];
4
4
  actorConfigs: ActorConfig[];
5
- isLatest?: boolean;
6
5
  commits: Commit[];
7
6
  testFilesGlob?: string;
8
7
  }
9
- export declare const getChangedActors: ({ filepathsChanged, actorConfigs, isLatest, commits, testFilesGlob, }: ShouldBuildAndTestOptions) => Promise<ActorConfig[]>;
8
+ export interface ChangedActors {
9
+ /** Actors with at least one functional change. They need a new build and tests. */
10
+ functional: ActorConfig[];
11
+ /** Actors whose changes are all cosmetic. They only need a new build when released. */
12
+ cosmetic: ActorConfig[];
13
+ }
14
+ /** Finds the Actors the changed files belong to, split by the most impactful change each Actor has. */
15
+ export declare const getChangedActors: ({ filepathsChanged, actorConfigs, commits, testFilesGlob, }: ShouldBuildAndTestOptions) => Promise<ChangedActors>;
10
16
  export {};
11
17
  //# sourceMappingURL=diff-changes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"diff-changes.d.ts","sourceRoot":"","sources":["../../bin/diff-changes.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAGtD,UAAU,yBAAyB;IAC/B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAElB,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B;AAuJD,eAAO,MAAM,gBAAgB,GAAU,uEAMpC,yBAAyB,KAAG,OAAO,CAAC,WAAW,EAAE,CAsDnD,CAAC"}
1
+ {"version":3,"file":"diff-changes.d.ts","sourceRoot":"","sources":["../../bin/diff-changes.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAGtD,UAAU,yBAAyB;IAC/B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,OAAO,EAAE,MAAM,EAAE,CAAC;IAElB,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B;AAwJD,MAAM,WAAW,aAAa;IAC1B,mFAAmF;IACnF,UAAU,EAAE,WAAW,EAAE,CAAC;IAC1B,uFAAuF;IACvF,QAAQ,EAAE,WAAW,EAAE,CAAC;CAC3B;AAED,uGAAuG;AACvG,eAAO,MAAM,gBAAgB,GAAU,6DAKpC,yBAAyB,KAAG,OAAO,CAAC,aAAa,CAuDnD,CAAC"}
@@ -118,7 +118,8 @@ const logChangeGroups = (groups) => {
118
118
  }
119
119
  }
120
120
  };
121
- export const getChangedActors = async ({ filepathsChanged, actorConfigs, isLatest = false, commits, testFilesGlob, }) => {
121
+ /** Finds the Actors the changed files belong to, split by the most impactful change each Actor has. */
122
+ export const getChangedActors = async ({ filepathsChanged, actorConfigs, commits, testFilesGlob, }) => {
122
123
  const actorsChangedMap = new Map();
123
124
  const testFilesInContext = new Set();
124
125
  const isTestFile = testFilesGlob ? picomatch(testFilesGlob, { nocase: true, dot: true }) : () => false;
@@ -135,30 +136,29 @@ export const getChangedActors = async ({ filepathsChanged, actorConfigs, isLates
135
136
  }
136
137
  if (change.impact === 'ignored' || change.impact === 'outside-context')
137
138
  continue;
138
- if (change.impact === 'cosmetic' && !isLatest)
139
- continue;
140
- const entry = actorsChangedMap.get(actorConfig.folder.path) ?? { actorConfig, files: [] };
139
+ const entry = actorsChangedMap.get(actorConfig.folder.path) ?? {
140
+ actorConfig,
141
+ files: [],
142
+ hasFunctionalChange: false,
143
+ };
141
144
  entry.files.push(originalFilePath);
145
+ entry.hasFunctionalChange ||= change.impact === 'functional';
142
146
  actorsChangedMap.set(actorConfig.folder.path, entry);
143
147
  }
144
148
  }
145
- const actorsChanged = Array.from(actorsChangedMap.values()).map((entry) => entry.actorConfig);
146
149
  // Log changes grouped by actor set, so changes shared across actors are logged once
147
150
  // instead of being repeated per actor.
148
- const fileToActors = buildFileToActorsMap(actorsChangedMap);
149
- const groups = groupFilesByActorSet(fileToActors);
150
- logChangeGroups(groups);
151
+ logChangeGroups(groupFilesByActorSet(buildFileToActorsMap(actorsChangedMap)));
151
152
  for (const testFile of filepathsChanged.filter((filePath) => isTestFile(filePath) && !testFilesInContext.has(filePath))) {
152
153
  logger.warn(`[DIFF]: Test file ${testFile} is outside every Actor's context, so changing only it builds and tests nothing. ` +
153
154
  `Add its folder to "overrideActorContext" of the Actors it tests.`);
154
155
  }
155
- if (actorsChanged.length > 0) {
156
- const actors = actorsChanged.map((config) => config.actorFullName);
157
- logger.info(`[DIFF]: Actors to be built and tested: ${actors.join(', ')}`);
158
- }
159
- else {
160
- logger.info(`[DIFF]: No relevant files changed, skipping builds and tests`);
161
- }
162
- return actorsChanged;
156
+ const entries = Array.from(actorsChangedMap.values());
157
+ const functional = entries.filter((entry) => entry.hasFunctionalChange).map((entry) => entry.actorConfig);
158
+ const cosmetic = entries.filter((entry) => !entry.hasFunctionalChange).map((entry) => entry.actorConfig);
159
+ const names = (configs) => configs.map((config) => config.actorFullName).join(', ') || 'none';
160
+ logger.info(`[DIFF]: Actors with functional changes: ${names(functional)}`);
161
+ logger.info(`[DIFF]: Actors with only cosmetic changes: ${names(cosmetic)}`);
162
+ return { functional, cosmetic };
163
163
  };
164
164
  //# sourceMappingURL=diff-changes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"diff-changes.js","sourceRoot":"","sources":["../../bin/diff-changes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diff-changes.js","sourceRoot":"","sources":["../../bin/diff-changes.ts"],"names":[],"mappings":"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"}
package/dist/bin/git.d.ts CHANGED
@@ -1,9 +1,16 @@
1
1
  import type { Commit, Config } from './types.js';
2
2
  export declare const GIT_FORMAT_SEPARATOR = "\u00BB\u00A6\u00AB";
3
3
  /**
4
- * Gets the list of changed files between the given commits (inclusive).
4
+ * Gets the list of changed files between the given commits (inclusive), so it diffs from the parent of the oldest.
5
5
  */
6
6
  export declare const getChangedFiles: (commits: Commit[]) => Promise<string[]>;
7
+ /**
8
+ * Files that differ between two commits, i.e. changed by the commits in the range (fromRef, toRef]. fromRef's own
9
+ * changes are not included: to include them, pass its parent, `${sha}~` (as getChangedFiles does).
10
+ * Diffing the endpoints, rather than walking a commit list, is what keeps merges right: the oldest commit of a
11
+ * merged branch can predate fromRef, and its changes are already in fromRef.
12
+ */
13
+ export declare const getChangedFilesBetween: (fromRef: string, toRef: string) => Promise<string[]>;
7
14
  /**
8
15
  * Returns true if the branch contains a merge commit whose parent is reachable from targetBranch
9
16
  * (i.e. a genuine "merge from target" commit, not a merge of some unrelated branch).
@@ -21,6 +28,11 @@ export declare const getBranchOnlyChangedFiles: (sourceBranch: string, targetBra
21
28
  * @returns The SHA string if valid, otherwise throws an error.
22
29
  */
23
30
  export declare const parseBaseCommit: (shaOrCommit: string | undefined) => string | undefined;
31
+ /**
32
+ * Commits reachable from toRef but not from fromRef, oldest first: the range (fromRef, toRef], so fromRef itself is
33
+ * not included. To include it, pass its parent, `${sha}~`.
34
+ */
35
+ export declare const getCommitsBetween: (fromRef: string, toRef: string) => Promise<Commit[]>;
24
36
  /**
25
37
  * Gets the commits between sourceBranch and targetBranch (exclusive).
26
38
  * - If baseCommit is provided, only returns commits after the baseCommit.
@@ -32,6 +44,13 @@ export declare const parseCommit: (commitString: string) => Commit;
32
44
  * so a detached HEAD (no branch to point at) is an error rather than a guess.
33
45
  */
34
46
  export declare const getCurrentBranch: () => Promise<string>;
47
+ /** Resolves a ref (branch, remote branch, SHA, HEAD, ...) to the full SHA of the commit it points to. */
48
+ export declare const resolveCommitSha: (ref: string) => Promise<string>;
49
+ /**
50
+ * Branch name a ref points to, without the remote: `origin/foo` and `foo` both give `foo`, and `HEAD`
51
+ * gives the checked-out branch. Null when there is no branch to point at (a SHA, a tag, a detached HEAD).
52
+ */
53
+ export declare const resolveBranchName: (ref: string) => Promise<string | null>;
35
54
  /**
36
55
  * Picks the repo URL to build from. By default it's the `origin` remote, and runBuilds then checks it against
37
56
  * each Actor's default version, so a fork or mirror remote can't repoint a published Actor. An explicit
@@ -55,16 +74,7 @@ export declare const getRepoName: (repoUrl: string) => string;
55
74
  * Unlike the PR path (getCommits), there is no lenient fallback. Falling back to "everything"
56
75
  * would rebuild the latest build of every Actor and post it to Slack, so every problem is an error.
57
76
  */
58
- export declare const resolveReleaseBaseCommit: (baseCommit: string) => Promise<string>;
59
- /**
60
- * Everything that changed since the last release (baseSha, exclusive) up to HEAD, or null when there
61
- * are no new commits. Changed files come from diffing the range directly instead of from the commit
62
- * list: with a merge commit, the oldest commit of the merged branch can be older than baseSha, and
63
- * diffing from its parent would pull in already-released changes.
64
- */
65
- export declare const getReleaseChanges: (baseSha: string) => Promise<{
66
- commits: Commit[];
67
- changedFiles: string[];
68
- changelog: string | null;
69
- } | null>;
77
+ export declare const resolveReleaseBaseCommit: (baseCommit: string, head?: string) => Promise<string>;
78
+ /** Returns the lines added to the root CHANGELOG.md between fromRef and toRef, or null if it didn't change. */
79
+ export declare const getChangelogAdditions: (fromRef: string, toRef: string, changedFiles: string[]) => Promise<string | null>;
70
80
  //# sourceMappingURL=git.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../bin/git.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAGjD,eAAO,MAAM,oBAAoB,uBAAQ,CAAC;AAG1C;;GAEG;AACH,eAAO,MAAM,eAAe,GAAU,SAAS,MAAM,EAAE,sBAetD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAAU,cAAc,MAAM,EAAE,cAAc,MAAM,KAAG,OAAO,CAAC,OAAO,CAoCpG,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,yBAAyB,GAAU,cAAc,MAAM,EAAE,cAAc,MAAM,KAAG,OAAO,CAAC,MAAM,EAAE,CAM5G,CAAC;AAIF;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,aAAa,MAAM,GAAG,SAAS,KAAG,MAAM,GAAG,SAc1E,CAAC;AAaF;;;GAGG;AACH,eAAO,MAAM,UAAU,GAAU,6CAI9B,IAAI,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,GAAG,YAAY,CAAC,KAAG,OAAO,CAAC,MAAM,EAAE,CA8BjF,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,cAAc,MAAM,KAAG,MAYlD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,QAAa,OAAO,CAAC,MAAM,CAUvD,CAAC;AAaF;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAU,iBAAiB,MAAM,GAAG,SAAS;;;EAGtE,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAAI,SAAS,MAAM,KAAG,MAUlD,CAAC;AAEF,sGAAsG;AACtG,eAAO,MAAM,WAAW,GAAI,SAAS,MAAM,KAAG,MAE7C,CAAC;AAKF;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,GAAU,YAAY,MAAM,KAAG,OAAO,CAAC,MAAM,CAuCjF,CAAC;AAiCF;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAAU,SAAS,MAAM;;;;SAYtD,CAAC"}
1
+ {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../bin/git.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAGjD,eAAO,MAAM,oBAAoB,uBAAQ,CAAC;AAG1C;;GAEG;AACH,eAAO,MAAM,eAAe,GAAU,SAAS,MAAM,EAAE,sBAQtD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,GAAU,SAAS,MAAM,EAAE,OAAO,MAAM,sBAQ1E,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAAU,cAAc,MAAM,EAAE,cAAc,MAAM,KAAG,OAAO,CAAC,OAAO,CAoCpG,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,yBAAyB,GAAU,cAAc,MAAM,EAAE,cAAc,MAAM,KAAG,OAAO,CAAC,MAAM,EAAE,CAM5G,CAAC;AAIF;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,aAAa,MAAM,GAAG,SAAS,KAAG,MAAM,GAAG,SAc1E,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAU,SAAS,MAAM,EAAE,OAAO,MAAM,KAAG,OAAO,CAAC,MAAM,EAAE,CAQxF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,UAAU,GAAU,6CAI9B,IAAI,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,GAAG,YAAY,CAAC,KAAG,OAAO,CAAC,MAAM,EAAE,CA8BjF,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,cAAc,MAAM,KAAG,MAYlD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,QAAa,OAAO,CAAC,MAAM,CAUvD,CAAC;AAEF,yGAAyG;AACzG,eAAO,MAAM,gBAAgB,GAAU,KAAK,MAAM,KAAG,OAAO,CAAC,MAAM,CACyC,CAAC;AAE7G;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAU,KAAK,MAAM,KAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAK1E,CAAC;AAaF;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAU,iBAAiB,MAAM,GAAG,SAAS;;;EAGtE,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAAI,SAAS,MAAM,KAAG,MAUlD,CAAC;AAEF,sGAAsG;AACtG,eAAO,MAAM,WAAW,GAAI,SAAS,MAAM,KAAG,MAE7C,CAAC;AAKF;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,GAAU,YAAY,MAAM,EAAE,aAAa,KAAG,OAAO,CAAC,MAAM,CAuChG,CAAC;AAIF,+GAA+G;AAC/G,eAAO,MAAM,qBAAqB,GAC9B,SAAS,MAAM,EACf,OAAO,MAAM,EACb,cAAc,MAAM,EAAE,KACvB,OAAO,CAAC,MAAM,GAAG,IAAI,CA0BvB,CAAC"}
package/dist/bin/git.js CHANGED
@@ -3,7 +3,7 @@ import { GitCommandError, runGitCommand } from './utils.js';
3
3
  export const GIT_FORMAT_SEPARATOR = '»¦«';
4
4
  const GIT_LOG_FORMAT = ['%H', '%aN<%aE>', '%aD', '%s'].join(GIT_FORMAT_SEPARATOR);
5
5
  /**
6
- * Gets the list of changed files between the given commits (inclusive).
6
+ * Gets the list of changed files between the given commits (inclusive), so it diffs from the parent of the oldest.
7
7
  */
8
8
  export const getChangedFiles = async (commits) => {
9
9
  // getCommits never returns an empty list (the rerun check returns all commits when the base commit
@@ -11,7 +11,18 @@ export const getChangedFiles = async (commits) => {
11
11
  if (commits.length === 0) {
12
12
  throw new Error('Cannot get changed files: the commit list is empty. This should never happen.');
13
13
  }
14
- const changedFilesString = await runGitCommand(['diff', '--name-only', `${commits[0].sha}~..${commits[commits.length - 1].sha}`], { operation: 'get the list of changed files between commits' });
14
+ return getChangedFilesBetween(`${commits[0].sha}~`, commits[commits.length - 1].sha);
15
+ };
16
+ /**
17
+ * Files that differ between two commits, i.e. changed by the commits in the range (fromRef, toRef]. fromRef's own
18
+ * changes are not included: to include them, pass its parent, `${sha}~` (as getChangedFiles does).
19
+ * Diffing the endpoints, rather than walking a commit list, is what keeps merges right: the oldest commit of a
20
+ * merged branch can predate fromRef, and its changes are already in fromRef.
21
+ */
22
+ export const getChangedFilesBetween = async (fromRef, toRef) => {
23
+ const changedFilesString = await runGitCommand(['diff', '--name-only', `${fromRef}..${toRef}`], {
24
+ operation: 'get the list of changed files between commits',
25
+ });
15
26
  const changedFiles = changedFilesString.split('\n').filter(Boolean);
16
27
  logger.info(`Changed files (up to 50): ${changedFiles.slice(0, 50).join(', ')}`);
17
28
  return changedFiles;
@@ -83,8 +94,14 @@ export const parseBaseCommit = (shaOrCommit) => {
83
94
  }
84
95
  return sha;
85
96
  };
86
- const fetchAllBranchCommits = async (sourceBranch, targetBranch) => {
87
- const output = await runGitCommand(['log', `--pretty=format:${GIT_LOG_FORMAT}`, `${targetBranch}..${sourceBranch}`], { operation: 'list commits reachable from the source ref but absent from the target ref' });
97
+ /**
98
+ * Commits reachable from toRef but not from fromRef, oldest first: the range (fromRef, toRef], so fromRef itself is
99
+ * not included. To include it, pass its parent, `${sha}~`.
100
+ */
101
+ export const getCommitsBetween = async (fromRef, toRef) => {
102
+ const output = await runGitCommand(['log', `--pretty=format:${GIT_LOG_FORMAT}`, `${fromRef}..${toRef}`], {
103
+ operation: 'list commits reachable from the source ref but absent from the target ref',
104
+ });
88
105
  const commitsStrings = output.split('\n');
89
106
  const commits = commitsStrings.map((commitString) => parseCommit(commitString));
90
107
  commits.reverse();
@@ -96,7 +113,7 @@ const fetchAllBranchCommits = async (sourceBranch, targetBranch) => {
96
113
  */
97
114
  export const getCommits = async ({ sourceBranch, targetBranch, baseCommit, }) => {
98
115
  const baseCommitSha = parseBaseCommit(baseCommit);
99
- const commits = await fetchAllBranchCommits(sourceBranch, targetBranch);
116
+ const commits = await getCommitsBetween(targetBranch, sourceBranch);
100
117
  // The last validated (base) commit being the branch HEAD means nothing new was pushed since the last
101
118
  // validation — the dev reran the workflow (or force-pushed to the same state) to trigger a clean test
102
119
  const headSha = commits[commits.length - 1]?.sha;
@@ -143,6 +160,18 @@ export const getCurrentBranch = async () => {
143
160
  }
144
161
  return branch;
145
162
  };
163
+ /** Resolves a ref (branch, remote branch, SHA, HEAD, ...) to the full SHA of the commit it points to. */
164
+ export const resolveCommitSha = async (ref) => runGitCommand(['rev-parse', '--verify', `${ref}^{commit}`], { operation: `resolve ${ref} to a commit` });
165
+ /**
166
+ * Branch name a ref points to, without the remote: `origin/foo` and `foo` both give `foo`, and `HEAD`
167
+ * gives the checked-out branch. Null when there is no branch to point at (a SHA, a tag, a detached HEAD).
168
+ */
169
+ export const resolveBranchName = async (ref) => {
170
+ const fullName = await runGitCommand(['rev-parse', '--symbolic-full-name', ref], {
171
+ operation: `resolve the branch name of ${ref}`,
172
+ });
173
+ return fullName.match(/^refs\/(?:heads|remotes\/[^/]+)\/(.+)$/)?.[1] ?? null;
174
+ };
146
175
  /**
147
176
  * Reads the repository URL from the `origin` remote, rewritten to the SSH form the Apify platform
148
177
  * uses for Git repo sources, e.g. git@github.com:apify-store/google-maps
@@ -190,14 +219,14 @@ const ZERO_SHA_REGEX = /^0{40}$/;
190
219
  * Unlike the PR path (getCommits), there is no lenient fallback. Falling back to "everything"
191
220
  * would rebuild the latest build of every Actor and post it to Slack, so every problem is an error.
192
221
  */
193
- export const resolveReleaseBaseCommit = async (baseCommit) => {
222
+ export const resolveReleaseBaseCommit = async (baseCommit, head = 'HEAD') => {
194
223
  const sha = parseBaseCommit(baseCommit);
195
224
  if (!sha) {
196
- throw new Error('--base-commit is required for release. See the README section "Releasing Actors".');
225
+ throw new Error('A base commit is required for release. See the README section "Releasing Actors".');
197
226
  }
198
227
  if (ZERO_SHA_REGEX.test(sha)) {
199
228
  throw new Error(`Base commit is ${sha}, which means the branch was just created and there is no previous release to diff against. ` +
200
- `Rerun with --base-commit set to the last commit before the changes you want to release.`);
229
+ `Rerun with the base commit set to the last commit before the changes you want to release.`);
201
230
  }
202
231
  // --quiet suppresses Git's error text for a missing commit, but Git still exits with code 1.
203
232
  const verifiedSha = await runGitCommand(['rev-parse', '--verify', '--quiet', `${sha}^{commit}`], {
@@ -212,27 +241,27 @@ export const resolveReleaseBaseCommit = async (baseCommit) => {
212
241
  `(fetch the full history, e.g. fetch-depth: 0 in actions/checkout) or the branch was force-pushed.`);
213
242
  }
214
243
  // git merge-base A B outputs the common ancestor. If that equals A, then A is an ancestor of B.
215
- const mergeBase = await runGitCommand(['merge-base', verifiedSha, 'HEAD'], {
216
- operation: 'check whether the release base commit is an ancestor of HEAD',
244
+ const mergeBase = await runGitCommand(['merge-base', verifiedSha, head], {
245
+ operation: `check whether the release base commit is an ancestor of ${head}`,
217
246
  }).catch((error) => {
218
247
  if (error instanceof GitCommandError && error.exitCode === 1)
219
248
  return '';
220
249
  throw error;
221
250
  });
222
251
  if (mergeBase !== sha) {
223
- throw new Error(`Base commit ${sha} is not an ancestor of HEAD, most likely because the branch was force-pushed. ` +
224
- `The changed files cannot be determined reliably. Rerun with --base-commit set to an ancestor of HEAD ` +
252
+ throw new Error(`Base commit ${sha} is not an ancestor of ${head}, most likely because the branch was force-pushed. ` +
253
+ `The changed files cannot be determined reliably. Rerun with the base commit set to an ancestor of ${head} ` +
225
254
  `from before the changes you want to release.`);
226
255
  }
227
256
  return sha;
228
257
  };
229
258
  const CHANGELOG_PATH = 'CHANGELOG.md';
230
- /** Returns the lines added to the root CHANGELOG.md between baseSha and HEAD, or null if it didn't change. */
231
- const getChangelogAdditions = async (baseSha, changedFiles) => {
259
+ /** Returns the lines added to the root CHANGELOG.md between fromRef and toRef, or null if it didn't change. */
260
+ export const getChangelogAdditions = async (fromRef, toRef, changedFiles) => {
232
261
  if (!changedFiles.includes(CHANGELOG_PATH)) {
233
262
  return null;
234
263
  }
235
- const diff = await runGitCommand(['diff', baseSha, 'HEAD', '--', CHANGELOG_PATH], {
264
+ const diff = await runGitCommand(['diff', fromRef, toRef, '--', CHANGELOG_PATH], {
236
265
  operation: 'read changelog changes since the last release',
237
266
  });
238
267
  const added = [];
@@ -254,21 +283,4 @@ const getChangelogAdditions = async (baseSha, changedFiles) => {
254
283
  }
255
284
  return added.join('\n').trim();
256
285
  };
257
- /**
258
- * Everything that changed since the last release (baseSha, exclusive) up to HEAD, or null when there
259
- * are no new commits. Changed files come from diffing the range directly instead of from the commit
260
- * list: with a merge commit, the oldest commit of the merged branch can be older than baseSha, and
261
- * diffing from its parent would pull in already-released changes.
262
- */
263
- export const getReleaseChanges = async (baseSha) => {
264
- if ((await runGitCommand(['rev-parse', 'HEAD'], { operation: 'identify the current release commit' })) === baseSha) {
265
- return null;
266
- }
267
- const commits = await fetchAllBranchCommits('HEAD', baseSha);
268
- const changedFiles = await runGitCommand(['diff', '--name-only', baseSha, 'HEAD'], {
269
- operation: 'list files changed since the last release',
270
- }).then((output) => output.split('\n').filter(Boolean));
271
- const changelog = await getChangelogAdditions(baseSha, changedFiles);
272
- return { commits, changedFiles, changelog };
273
- };
274
286
  //# sourceMappingURL=git.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"git.js","sourceRoot":"","sources":["../../bin/git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE5D,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC;AAC1C,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;AAElF;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,OAAiB,EAAE,EAAE;IACvD,mGAAmG;IACnG,sGAAsG;IACtG,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,+EAA+E,CAAC,CAAC;IACrG,CAAC;IAED,MAAM,kBAAkB,GAAG,MAAM,aAAa,CAC1C,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EACjF,EAAE,SAAS,EAAE,+CAA+C,EAAE,CACjE,CAAC;IAEF,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACpE,MAAM,CAAC,IAAI,CAAC,6BAA6B,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjF,OAAO,YAAY,CAAC;AACxB,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EAAE,YAAoB,EAAE,YAAoB,EAAoB,EAAE;IACrG,MAAM,SAAS,GAAG,CACd,MAAM,aAAa,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,GAAG,YAAY,KAAK,YAAY,EAAE,CAAC,EAAE;QAC/F,SAAS,EAAE,gFAAgF;KAC9F,CAAC,CACL;SACI,KAAK,CAAC,IAAI,CAAC;SACX,MAAM,CAAC,OAAO,CAAC,CAAC;IAErB,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,CACZ,MAAM,aAAa,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,oBAAoB,EAAE,GAAG,CAAC,EAAE;YAC1D,SAAS,EAAE,+BAA+B;SAC7C,CAAC,CACL,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACb,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC3B,kDAAkD;YAClD,6FAA6F;YAC7F,IAAI,SAAiB,CAAC;YACtB,IAAI,CAAC;gBACD,SAAS,GAAG,MAAM,aAAa,CAAC,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE;oBAClE,SAAS,EAAE,kEAAkE;iBAChF,CAAC,CAAC;YACP,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,yEAAyE;gBACzE,IAAI,KAAK,YAAY,eAAe,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;oBAC3D,SAAS;gBACb,CAAC;gBACD,MAAM,KAAK,CAAC;YAChB,CAAC;YACD,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;gBACvB,OAAO,IAAI,CAAC;YAChB,CAAC;QACL,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,EAAE,YAAoB,EAAE,YAAoB,EAAqB,EAAE;IAC7G,MAAM,MAAM,GAAG,MAAM,aAAa,CAC9B,CAAC,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,kBAAkB,EAAE,GAAG,YAAY,KAAK,YAAY,EAAE,CAAC,EAC7F,EAAE,SAAS,EAAE,8DAA8D,EAAE,CAChF,CAAC;IACF,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC9C,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,iBAAiB,CAAC;AAEpC;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,WAA+B,EAAsB,EAAE;IACnF,IAAI,CAAC,WAAW;QAAE,OAAO,SAAS,CAAC;IACnC,IAAI,GAAW,CAAC;IAChB,IAAI,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9B,GAAG,GAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAY,CAAC,GAAG,CAAC;IAClD,CAAC;SAAM,CAAC;QACJ,GAAG,GAAG,WAAW,CAAC;IACtB,CAAC;IACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACX,6BAA6B,GAAG,0EAA0E,WAAW,IAAI,CAC5H,CAAC;IACN,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,KAAK,EAAE,YAAoB,EAAE,YAAoB,EAAqB,EAAE;IAClG,MAAM,MAAM,GAAG,MAAM,aAAa,CAC9B,CAAC,KAAK,EAAE,mBAAmB,cAAc,EAAE,EAAE,GAAG,YAAY,KAAK,YAAY,EAAE,CAAC,EAChF,EAAE,SAAS,EAAE,2EAA2E,EAAE,CAC7F,CAAC;IACF,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC;IAChF,OAAO,CAAC,OAAO,EAAE,CAAC;IAClB,OAAO,OAAO,CAAC;AACnB,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAAE,EAC7B,YAAY,EACZ,YAAY,EACZ,UAAU,GACiD,EAAqB,EAAE;IAClF,MAAM,aAAa,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,MAAM,qBAAqB,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IAExE,qGAAqG;IACrG,sGAAsG;IACtG,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC;IACjD,IAAI,aAAa,KAAK,SAAS,IAAI,aAAa,KAAK,OAAO,EAAE,CAAC;QAC3D,MAAM,CAAC,IAAI,CACP,qKAAqK,aAAa,4BAA4B,CACjN,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,2BAA2B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/E,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,MAAM,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,KAAK,aAAa,CAAC,CAAC;IAEpF,MAAM,aAAa,GAAG,eAAe,KAAK,CAAC,CAAC,CAAC;IAC7C,IAAI,aAAa,EAAE,CAAC;QAChB,MAAM,qBAAqB,GAAG,OAAO,CAAC,KAAK,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC;QACjE,MAAM,CAAC,IAAI,CACP,qBAAqB,aAAa,aAAa,eAAe,eAAe,qBAAqB,CAAC,MAAM,mBAAmB,CAC/H,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,2BAA2B,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7F,OAAO,qBAAqB,CAAC;IACjC,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,eAAe,aAAa,iDAAiD,OAAO,CAAC,MAAM,UAAU,CAAC,CAAC;IACnH,MAAM,CAAC,IAAI,CAAC,2BAA2B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/E,OAAO,OAAO,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,YAAoB,EAAU,EAAE;IACxD,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACxD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,kCAAkC,YAAY,EAAE,CAAC,CAAC;IACtE,CAAC;IACD,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC;IAC5C,OAAO;QACH,GAAG;QACH,MAAM;QACN,IAAI;QACJ,OAAO;KACV,CAAC;AACN,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,IAAqB,EAAE;IACxD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,CAAC,WAAW,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE;QACtE,SAAS,EAAE,0CAA0C;KACxD,CAAC,CAAC;IACH,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CACX,qGAAqG,CACxG,CAAC;IACN,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,gBAAgB,GAAG,KAAK,IAAqB,EAAE;IACjD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE;QAChE,SAAS,EAAE,gCAAgC;KAC9C,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,OAAO,CAAC,0BAA0B,EAAE,iBAAiB,CAAC,CAAC;AACzE,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,eAAmC,EAAE,EAAE,CAAC,CAAC;IAC1E,OAAO,EAAE,eAAe,IAAI,CAAC,MAAM,gBAAgB,EAAE,CAAC;IACtD,mBAAmB,EAAE,eAAe,KAAK,SAAS;CACrD,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAAe,EAAU,EAAE;IACxD,OAAO,OAAO;SACT,IAAI,EAAE;SACN,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SACb,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC;SAC7B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;SACjB,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;SACnB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;SACrB,WAAW,EAAE,CAAC;AACvB,CAAC,CAAC;AAEF,sGAAsG;AACtG,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,OAAe,EAAU,EAAE;IACnD,OAAO,gBAAgB,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAG,CAAC;AACvD,CAAC,CAAC;AAEF,+EAA+E;AAC/E,MAAM,cAAc,GAAG,SAAS,CAAC;AAEjC;;;;GAIG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,EAAE,UAAkB,EAAmB,EAAE;IAClF,MAAM,GAAG,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IACxC,IAAI,CAAC,GAAG,EAAE,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,mFAAmF,CAAC,CAAC;IACzG,CAAC;IACD,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CACX,kBAAkB,GAAG,8FAA8F;YAC/G,yFAAyF,CAChG,CAAC;IACN,CAAC;IACD,6FAA6F;IAC7F,MAAM,WAAW,GAAG,MAAM,aAAa,CAAC,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,GAAG,WAAW,CAAC,EAAE;QAC7F,SAAS,EAAE,qDAAqD;KACnE,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;QACxB,IAAI,KAAK,YAAY,eAAe,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACxE,MAAM,KAAK,CAAC;IAChB,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACX,eAAe,GAAG,mEAAmE;YACjF,mGAAmG,CAC1G,CAAC;IACN,CAAC;IACD,gGAAgG;IAChG,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,CAAC,YAAY,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE;QACvE,SAAS,EAAE,8DAA8D;KAC5E,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;QACxB,IAAI,KAAK,YAAY,eAAe,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACxE,MAAM,KAAK,CAAC;IAChB,CAAC,CAAC,CAAC;IACH,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CACX,eAAe,GAAG,gFAAgF;YAC9F,uGAAuG;YACvG,8CAA8C,CACrD,CAAC;IACN,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,cAAc,CAAC;AAEtC,8GAA8G;AAC9G,MAAM,qBAAqB,GAAG,KAAK,EAAE,OAAe,EAAE,YAAsB,EAA0B,EAAE;IACpG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QACzC,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE;QAC9E,SAAS,EAAE,+CAA+C;KAC7D,CAAC,CAAC;IAEH,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAC7B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,0EAA0E;QAC1E,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;YACtF,gBAAgB,GAAG,IAAI,CAAC;YACxB,SAAS;QACb,CAAC;QACD,IAAI,gBAAgB,EAAE,CAAC;YACnB,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1B,MAAM;YACV,CAAC;YACD,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACrC,CAAC;QACL,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;AACnC,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EAAE,OAAe,EAAE,EAAE;IACvD,IACI,CAAC,MAAM,aAAa,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,qCAAqC,EAAE,CAAC,CAAC,KAAK,OAAO,EAChH,CAAC;QACC,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7D,MAAM,YAAY,GAAG,MAAM,aAAa,CAAC,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE;QAC/E,SAAS,EAAE,2CAA2C;KACzD,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,MAAM,qBAAqB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACrE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;AAChD,CAAC,CAAC"}
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../bin/git.ts"],"names":[],"mappings":"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"}