pr-report-core 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/checks.d.mts +61 -62
- package/dist/checks.d.mts.map +1 -1
- package/dist/checks.mjs +0 -1
- package/dist/checks.mjs.map +1 -1
- package/dist/claim.d.mts +13 -14
- package/dist/claim.d.mts.map +1 -1
- package/dist/claim.mjs +0 -1
- package/dist/claim.mjs.map +1 -1
- package/dist/closing-issues.d.mts +18 -19
- package/dist/closing-issues.d.mts.map +1 -1
- package/dist/closing-issues.mjs +0 -1
- package/dist/closing-issues.mjs.map +1 -1
- package/dist/code-owners.d.mts +33 -34
- package/dist/code-owners.d.mts.map +1 -1
- package/dist/code-owners.mjs +0 -2
- package/dist/code-owners.mjs.map +1 -1
- package/dist/labels.d.mts +38 -40
- package/dist/labels.d.mts.map +1 -1
- package/dist/labels.mjs +0 -2
- package/dist/labels.mjs.map +1 -1
- package/dist/merge-after.d.mts +22 -16
- package/dist/merge-after.d.mts.map +1 -1
- package/dist/merge-after.mjs +87 -24
- package/dist/merge-after.mjs.map +1 -1
- package/dist/queue-comments.d.mts +2 -2
- package/dist/queue-order.d.mts +32 -32
- package/dist/queue-order.mjs +0 -2
- package/dist/queue-order.mjs.map +1 -1
- package/dist/queue-owner.d.mts +13 -13
- package/dist/queue-owner.mjs.map +1 -1
- package/dist/report.d.mts +4 -4
- package/dist/review-hold.d.mts +14 -14
- package/dist/ruleset.d.mts +10 -11
- package/dist/ruleset.d.mts.map +1 -1
- package/dist/ruleset.mjs +0 -1
- package/dist/ruleset.mjs.map +1 -1
- package/dist/set-aside.d.mts +28 -28
- package/dist/stack.d.mts +14 -15
- package/dist/stack.d.mts.map +1 -1
- package/dist/stack.mjs +0 -1
- package/dist/stack.mjs.map +1 -1
- package/dist/start-after.d.mts +20 -21
- package/dist/start-after.d.mts.map +1 -1
- package/dist/start-after.mjs +0 -1
- package/dist/start-after.mjs.map +1 -1
- package/dist/summarize.d.mts +2 -2
- package/dist/timestamp.d.mts +10 -10
- package/dist/tree.d.mts +5 -5
- package/dist/types.d.mts +32 -33
- package/dist/types.d.mts.map +1 -1
- package/package.json +8 -8
- package/src/checks.mts +64 -65
- package/src/checks.test.mts +30 -31
- package/src/claim.mts +13 -14
- package/src/closing-issues.mts +18 -19
- package/src/closing-issues.test.mts +2 -2
- package/src/code-owners.mts +39 -41
- package/src/labels.mts +38 -40
- package/src/merge-after.mts +142 -49
- package/src/merge-after.test.mts +80 -3
- package/src/queue-comments.mts +2 -2
- package/src/queue-order.mts +60 -62
- package/src/queue-order.test.mts +6 -6
- package/src/queue-owner.mts +25 -25
- package/src/queue-owner.test.mts +2 -2
- package/src/report.mts +9 -9
- package/src/review-hold.mts +14 -14
- package/src/review-hold.test.mts +3 -3
- package/src/ruleset.mts +10 -11
- package/src/set-aside.mts +28 -28
- package/src/stack.mts +14 -15
- package/src/stack.test.mts +4 -4
- package/src/start-after.mts +20 -21
- package/src/summarize.mts +2 -2
- package/src/timestamp.mts +14 -14
- package/src/tree.mts +5 -5
- package/src/types.mts +32 -33
package/dist/labels.d.mts
CHANGED
|
@@ -1,59 +1,58 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The labels this repository's queue is made of. They exist only on GitHub,
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
2
|
+
* The labels this repository's queue is made of. They exist only on GitHub, so
|
|
3
|
+
* these strings, and the ones in `.github/workflows/`, are the whole of their
|
|
4
|
+
* declaration: `unblock-prs` and `open-pr` act on them, and `pr-report` and the
|
|
5
|
+
* Pull Requests Manager page report them.
|
|
6
6
|
*/
|
|
7
7
|
/**
|
|
8
|
-
* The label that says "not yet": the check workflows skip while it is on
|
|
9
|
-
*
|
|
10
|
-
* status. It is a label, deliberately — a `skip-ci` in the title means
|
|
11
|
-
*
|
|
8
|
+
* The label that says "not yet": the check workflows skip while it is on and
|
|
9
|
+
* `skip-ci-label.yml` holds the merge with a `pending` `no-skip-ci-label`
|
|
10
|
+
* status. It is a label, deliberately — a `skip-ci` in the title means nothing
|
|
11
|
+
* to any workflow.
|
|
12
12
|
*/
|
|
13
13
|
export declare const SKIP_CI_LABEL = "skip-ci";
|
|
14
14
|
/**
|
|
15
|
-
* The label that says a pull request has been reviewed and is waiting its
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
15
|
+
* The label that says a pull request has been reviewed and is waiting its turn.
|
|
16
|
+
* It is the whole of `unblock-prs`'s scope rule: a pull request without it is
|
|
17
|
+
* passed over in silence, and one with it is rebased, released from `skip-ci`
|
|
18
|
+
* and watched when its turn comes.
|
|
19
19
|
*/
|
|
20
20
|
export declare const MERGE_QUEUED_LABEL = "merge-queued";
|
|
21
21
|
/**
|
|
22
22
|
* The label a pull request carries to say the next release must contain it:
|
|
23
23
|
* while it is open, the version pull request is not picked.
|
|
24
24
|
*
|
|
25
|
-
* It exists because the version pull request is the one pull request whose
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
25
|
+
* It exists because the version pull request is the one pull request whose body
|
|
26
|
+
* cannot declare a `Merge-After:` — `changesets/action` overwrites the title
|
|
27
|
+
* and body of it on every push to the base — so the ordering is declared from
|
|
28
|
+
* the other side, by the pull request the release is waiting for. A label
|
|
29
|
+
* rather than a trailer for the same reason `merge-queued` is one: this
|
|
30
|
+
* repository is public, and a label needs write access while a comment does
|
|
31
|
+
* not.
|
|
32
32
|
*
|
|
33
|
-
* Nothing ever takes it off. The constraint is "open", so it ends when the
|
|
34
|
-
*
|
|
35
|
-
* clean up.
|
|
33
|
+
* Nothing ever takes it off. The constraint is "open", so it ends when the pull
|
|
34
|
+
* request merges or is closed, and there is no state left behind to clean up.
|
|
36
35
|
*/
|
|
37
36
|
export declare const BLOCKS_RELEASE_LABEL = "blocks-release";
|
|
38
37
|
/**
|
|
39
38
|
* The label that asks `unblock-prs` to keep a pull request on the tip of the
|
|
40
39
|
* default branch while it waits, so that its diff stays readable for review.
|
|
41
40
|
* It is honoured only together with `skip-ci`, under which the push runs no
|
|
42
|
-
* checks, and only when the queue has nothing to do. `open-pr` puts it on
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
41
|
+
* checks, and only when the queue has nothing to do. `open-pr` puts it on every
|
|
42
|
+
* layer of a stack: one above the bottom is carried along by the layer below,
|
|
43
|
+
* and needs the label of its own once that layer merges and it is moved onto
|
|
44
|
+
* the default branch.
|
|
46
45
|
*/
|
|
47
46
|
export declare const AUTO_REBASE_LABEL = "auto-rebase";
|
|
48
47
|
/**
|
|
49
48
|
* The labels that move a pull request within `unblock-prs`'s pick order:
|
|
50
|
-
* among the ones it may pick, those labelled `priority:high` go first and
|
|
51
|
-
*
|
|
52
|
-
* They decide nothing else — what `Merge-After:`, a stack or
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
*
|
|
49
|
+
* among the ones it may pick, those labelled `priority:high` go first and those
|
|
50
|
+
* labelled `priority:low` last, the version pull request included.
|
|
51
|
+
* They decide nothing else — what `Merge-After:`, a stack or `blocks-release`
|
|
52
|
+
* holds back stays held, and a pull request already in flight is watched
|
|
53
|
+
* whatever it carries. One carrying both counts as neither.
|
|
54
|
+
* {@link PRIORITY_MID_LABEL} is not read there: it is the same as carrying
|
|
55
|
+
* neither.
|
|
57
56
|
*/
|
|
58
57
|
export declare const PRIORITY_HIGH_LABEL = "priority:high";
|
|
59
58
|
export declare const PRIORITY_LOW_LABEL = "priority:low";
|
|
@@ -64,8 +63,8 @@ export declare const PRIORITY_LOW_LABEL = "priority:low";
|
|
|
64
63
|
export declare const PRIORITY_MID_LABEL = "priority:mid";
|
|
65
64
|
/**
|
|
66
65
|
* The label that says the author is holding a pull request back for now.
|
|
67
|
-
* Also on GitHub, and read only by the Pull Requests Manager page, whose
|
|
68
|
-
*
|
|
66
|
+
* Also on GitHub, and read only by the Pull Requests Manager page, whose merge
|
|
67
|
+
* order counts it and can hide what carries it. It asks nothing of
|
|
69
68
|
* `unblock-prs`: what is held is simply not labelled `merge-queued`.
|
|
70
69
|
*/
|
|
71
70
|
export declare const PENDING_LABEL = "pending";
|
|
@@ -73,8 +72,8 @@ export declare const PENDING_LABEL = "pending";
|
|
|
73
72
|
* The label that says someone has started an issue, before there is a pull
|
|
74
73
|
* request to say so. `start-issue` puts it on, and refuses an issue that
|
|
75
74
|
* already carries it, so that two sessions do not pick up the same one; the
|
|
76
|
-
* Pull Requests Manager page and `pr-report` show a startable issue carrying
|
|
77
|
-
*
|
|
75
|
+
* Pull Requests Manager page and `pr-report` show a startable issue carrying it
|
|
76
|
+
* as in progress, as they show one an open pull request closes
|
|
78
77
|
* (`start-after.mts`'s `progressOf`). Nothing takes it off when the work
|
|
79
78
|
* merges: the issue closes, and the label with it stops mattering.
|
|
80
79
|
*/
|
|
@@ -82,9 +81,8 @@ export declare const IN_PROGRESS_LABEL = "in-progress";
|
|
|
82
81
|
/**
|
|
83
82
|
* The label that says someone means to start an issue next. It holds nothing
|
|
84
83
|
* back — `start-issue` takes it off as it puts {@link IN_PROGRESS_LABEL} on —
|
|
85
|
-
* and only tells whoever is choosing what to start that this one is spoken
|
|
86
|
-
*
|
|
87
|
-
* planned.
|
|
84
|
+
* and only tells whoever is choosing what to start that this one is spoken for;
|
|
85
|
+
* the page and `pr-report` show a startable issue carrying it as planned.
|
|
88
86
|
*/
|
|
89
87
|
export declare const PLANNED_LABEL = "planned";
|
|
90
88
|
//# sourceMappingURL=labels.d.mts.map
|
package/dist/labels.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"labels.d.mts","sourceRoot":"","sources":["../src/labels.mts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,aAAa,YAAY,CAAC;AAEvC;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,iBAAiB,CAAC;AAEjD
|
|
1
|
+
{"version":3,"file":"labels.d.mts","sourceRoot":"","sources":["../src/labels.mts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,aAAa,YAAY,CAAC;AAEvC;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,iBAAiB,CAAC;AAEjD;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,oBAAoB,mBAAmB,CAAC;AAErD;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,gBAAgB,CAAC;AAE/C;;;;;;;;;GASG;AACH,eAAO,MAAM,mBAAmB,kBAAkB,CAAC;AAEnD,eAAO,MAAM,kBAAkB,iBAAiB,CAAC;AAEjD;;;GAGG;AACH,eAAO,MAAM,kBAAkB,iBAAiB,CAAC;AAEjD;;;;;GAKG;AACH,eAAO,MAAM,aAAa,YAAY,CAAC;AAEvC;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,gBAAgB,CAAC;AAE/C;;;;;GAKG;AACH,eAAO,MAAM,aAAa,YAAY,CAAC"}
|
package/dist/labels.mjs
CHANGED
|
@@ -33,7 +33,6 @@ export const MERGE_QUEUED_LABEL = 'merge-queued';
|
|
|
33
33
|
|
|
34
34
|
|
|
35
35
|
|
|
36
|
-
|
|
37
36
|
export const BLOCKS_RELEASE_LABEL = 'blocks-release';
|
|
38
37
|
|
|
39
38
|
|
|
@@ -85,6 +84,5 @@ export const IN_PROGRESS_LABEL = 'in-progress';
|
|
|
85
84
|
|
|
86
85
|
|
|
87
86
|
|
|
88
|
-
|
|
89
87
|
export const PLANNED_LABEL = 'planned';
|
|
90
88
|
//# sourceMappingURL=labels.mjs.map
|
package/dist/labels.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"labels.mjs","sourceRoot":"","sources":["../src/labels.mts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,SAAS,CAAC;AAEvC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,cAAc,CAAC;AAEjD
|
|
1
|
+
{"version":3,"file":"labels.mjs","sourceRoot":"","sources":["../src/labels.mts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,SAAS,CAAC;AAEvC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,cAAc,CAAC;AAEjD;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,gBAAgB,CAAC;AAErD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,aAAa,CAAC;AAE/C;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,eAAe,CAAC;AAEnD,MAAM,CAAC,MAAM,kBAAkB,GAAG,cAAc,CAAC;AAEjD;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,cAAc,CAAC;AAEjD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,SAAS,CAAC;AAEvC;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,aAAa,CAAC;AAE/C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,SAAS,CAAC"}
|
package/dist/merge-after.d.mts
CHANGED
|
@@ -8,42 +8,48 @@
|
|
|
8
8
|
*
|
|
9
9
|
* Duplicates are dropped and the order within the declaration is not kept:
|
|
10
10
|
* what is being read is a set of things that have to have happened, not a
|
|
11
|
-
* sequence. A number that names no pull request, or one that is already
|
|
12
|
-
*
|
|
11
|
+
* sequence. A number that names no pull request, or one that is already closed,
|
|
12
|
+
* simply never appears in the open list and so constrains nothing.
|
|
13
13
|
*/
|
|
14
14
|
export declare const parseMergeAfter: (body: string) => readonly number[];
|
|
15
15
|
/**
|
|
16
|
-
* The numbers an issue body declares it waits for before it is started,
|
|
17
|
-
*
|
|
16
|
+
* The numbers an issue body declares it waits for before it is started, read
|
|
17
|
+
* exactly as {@link parseMergeAfter} reads its trailer
|
|
18
18
|
* (`docs/issue-start-after.md`).
|
|
19
19
|
*/
|
|
20
20
|
export declare const parseStartAfter: (body: string) => readonly number[];
|
|
21
21
|
/**
|
|
22
|
-
* The body with the contents of its fenced code blocks blanked out, line
|
|
23
|
-
*
|
|
22
|
+
* The body with the contents of its fenced code blocks blanked out, line count
|
|
23
|
+
* preserved.
|
|
24
24
|
*
|
|
25
25
|
* A declaration and an example of one are the same text, and the pull request
|
|
26
26
|
* that introduced this feature had to describe it: written in a fence, the
|
|
27
|
-
* example would have been read as a constraint on the pull request
|
|
28
|
-
*
|
|
29
|
-
*
|
|
27
|
+
* example would have been read as a constraint on the pull request documenting
|
|
28
|
+
* it. A fence is how every document here already says "this is a sample, not
|
|
29
|
+
* the thing itself", so it is the line to draw.
|
|
30
30
|
*
|
|
31
|
-
* Exported because `pr-report` reads the closing keywords (`Closes #12`) out
|
|
32
|
-
*
|
|
31
|
+
* Exported because `pr-report` reads the closing keywords (`Closes #12`) out of
|
|
32
|
+
* the same bodies and has to draw the line in the same place — a document
|
|
33
33
|
* showing what a declaration looks like must not become one.
|
|
34
34
|
*/
|
|
35
35
|
export declare const outsideCodeFences: (body: string) => string;
|
|
36
36
|
/**
|
|
37
|
-
* The `Merge-After` cycles,
|
|
38
|
-
*
|
|
39
|
-
*
|
|
37
|
+
* The `Merge-After` cycles, each listing the numbers in the order the edges run
|
|
38
|
+
* and rotated to start at its lowest number so that the same cycle is always
|
|
39
|
+
* reported the same way.
|
|
40
|
+
*
|
|
41
|
+
* Every number that lies on any cycle appears in at least one entry — callers
|
|
42
|
+
* take `cycles.flat()` as the set of numbers on a cycle. Each entry is the
|
|
43
|
+
* shortest cycle through the first number, in key order, that no earlier entry
|
|
44
|
+
* covers, so a component with several loops yields one entry per loop needed to
|
|
45
|
+
* cover it rather than every loop it holds.
|
|
40
46
|
*
|
|
41
47
|
* A cycle is not a state anything here can resolve: every pull request on one
|
|
42
48
|
* waits for another that waits, in the end, for it. Naming it is the whole of
|
|
43
49
|
* what can be done about it — without this the members would each report
|
|
44
50
|
* "waiting on #N" for as long as the loop runs, with nothing saying why that
|
|
45
|
-
* never changes. A pull request that declares itself is a cycle of one, and
|
|
46
|
-
*
|
|
51
|
+
* never changes. A pull request that declares itself is a cycle of one, and is
|
|
52
|
+
* found by the same search.
|
|
47
53
|
*/
|
|
48
54
|
export declare const findMergeAfterCycles: (dependencies: ReadonlyMap<number, readonly number[]>) => readonly (readonly number[])[];
|
|
49
55
|
//# sourceMappingURL=merge-after.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge-after.d.mts","sourceRoot":"","sources":["../src/merge-after.mts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"merge-after.d.mts","sourceRoot":"","sources":["../src/merge-after.mts"],"names":[],"mappings":"AAAA;;;;GAIG;AAwBH;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,SAAU,MAAM,KAAG,SAAS,MAAM,EACvB,CAAC;AAExC;;;;GAIG;AACH,eAAO,MAAM,eAAe,SAAU,MAAM,KAAG,SAAS,MAAM,EACvB,CAAC;AAExC;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,iBAAiB,SAAU,MAAM,KAAG,MA2ChD,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,oBAAoB,iBACjB,WAAW,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,KACnD,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EA4B9B,CAAC"}
|
package/dist/merge-after.mjs
CHANGED
|
@@ -11,14 +11,16 @@ import { Arr, Num, Result } from 'ts-data-forge';
|
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
|
|
14
|
-
|
|
15
14
|
const NUMBER_REF = /(?<![\w./-])#(?<number>\d+)\b/gu;
|
|
16
15
|
const DECLARATION_LINE = {
|
|
17
16
|
'merge-after': /^[^\S\n]*merge-after[^\S\n]*:(?<refs>[^\n]*)$/gimu,
|
|
18
17
|
'start-after': /^[^\S\n]*start-after[^\S\n]*:(?<refs>[^\n]*)$/gimu,
|
|
19
18
|
};
|
|
20
19
|
|
|
21
|
-
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
const FENCE_LINE = /^[^\S\n]*(?<marker>`{3,}|~{3,})(?<rest>[^\n]*)$/u;
|
|
22
24
|
|
|
23
25
|
|
|
24
26
|
|
|
@@ -49,14 +51,33 @@ export const parseStartAfter = (body) => parseDeclaration(body, 'start-after');
|
|
|
49
51
|
|
|
50
52
|
|
|
51
53
|
export const outsideCodeFences = (body) => {
|
|
52
|
-
|
|
54
|
+
|
|
55
|
+
let mut_openedBy = undefined;
|
|
53
56
|
return body
|
|
54
57
|
.split('\n')
|
|
55
58
|
.map((line) => {
|
|
56
|
-
|
|
57
|
-
|
|
59
|
+
const fence = FENCE_LINE.exec(line)?.groups;
|
|
60
|
+
const marker = fence?.['marker'];
|
|
61
|
+
const rest = fence?.['rest'] ?? '';
|
|
62
|
+
if (mut_openedBy === undefined) {
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
if (marker === undefined ||
|
|
66
|
+
(marker.startsWith('`') && rest.includes('`'))) {
|
|
67
|
+
return line;
|
|
68
|
+
}
|
|
69
|
+
mut_openedBy = marker;
|
|
70
|
+
return '';
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
if (marker !== undefined &&
|
|
76
|
+
marker.at(0) === mut_openedBy.at(0) &&
|
|
77
|
+
marker.length >= mut_openedBy.length &&
|
|
78
|
+
rest.trim() === '') {
|
|
79
|
+
mut_openedBy = undefined;
|
|
58
80
|
}
|
|
59
|
-
mut_inFence = !mut_inFence;
|
|
60
81
|
return '';
|
|
61
82
|
})
|
|
62
83
|
.join('\n');
|
|
@@ -73,30 +94,30 @@ export const outsideCodeFences = (body) => {
|
|
|
73
94
|
|
|
74
95
|
|
|
75
96
|
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
|
|
76
103
|
export const findMergeAfterCycles = (dependencies) => {
|
|
77
|
-
const
|
|
104
|
+
const mut_covered = new Set();
|
|
78
105
|
const mut_cycles = new Map();
|
|
79
|
-
const
|
|
80
|
-
|
|
81
|
-
|
|
106
|
+
for (const node of dependencies.keys()) {
|
|
107
|
+
if (mut_covered.has(node)) {
|
|
108
|
+
continue;
|
|
109
|
+
}
|
|
82
110
|
|
|
83
111
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
}
|
|
88
|
-
if (mut_finished.has(node)) {
|
|
89
|
-
return;
|
|
112
|
+
const cycle = shortestCycleThrough(node, dependencies);
|
|
113
|
+
if (cycle === undefined) {
|
|
114
|
+
continue;
|
|
90
115
|
}
|
|
91
|
-
for (const
|
|
92
|
-
|
|
116
|
+
for (const member of cycle) {
|
|
117
|
+
mut_covered.add(member);
|
|
93
118
|
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
mut_finished.add(node);
|
|
97
|
-
};
|
|
98
|
-
for (const node of dependencies.keys()) {
|
|
99
|
-
visit(node, []);
|
|
119
|
+
const rotated = rotateToLowest(cycle);
|
|
120
|
+
mut_cycles.set(rotated.join(','), rotated);
|
|
100
121
|
}
|
|
101
122
|
return Array.from(mut_cycles.values());
|
|
102
123
|
};
|
|
@@ -113,6 +134,48 @@ const parseDeclaration = (body, key) => Arr.uniq(outsideCodeFences(body)
|
|
|
113
134
|
return Result.isOk(parsed) ? [parsed.value] : [];
|
|
114
135
|
}))
|
|
115
136
|
.toArray());
|
|
137
|
+
|
|
138
|
+
const pathFromStart = (start, end, reachedFrom) => {
|
|
139
|
+
const mut_reversed = [end];
|
|
140
|
+
let mut_node = end;
|
|
141
|
+
while (mut_node !== start) {
|
|
142
|
+
const previous = reachedFrom.get(mut_node);
|
|
143
|
+
if (previous === undefined) {
|
|
144
|
+
break;
|
|
145
|
+
}
|
|
146
|
+
mut_reversed.push(previous);
|
|
147
|
+
mut_node = previous;
|
|
148
|
+
}
|
|
149
|
+
return mut_reversed.toReversed();
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
const shortestCycleThrough = (start, dependencies) => {
|
|
156
|
+
|
|
157
|
+
const mut_reachedFrom = new Map();
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
let mut_frontier = [start];
|
|
161
|
+
while (Arr.isNonEmpty(mut_frontier)) {
|
|
162
|
+
const mut_nextFrontier = [];
|
|
163
|
+
for (const node of mut_frontier) {
|
|
164
|
+
for (const next of dependencies.get(node) ?? []) {
|
|
165
|
+
if (next === start) {
|
|
166
|
+
return pathFromStart(start, node, mut_reachedFrom);
|
|
167
|
+
}
|
|
168
|
+
if (mut_reachedFrom.has(next)) {
|
|
169
|
+
continue;
|
|
170
|
+
}
|
|
171
|
+
mut_reachedFrom.set(next, node);
|
|
172
|
+
mut_nextFrontier.push(next);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
mut_frontier = mut_nextFrontier;
|
|
176
|
+
}
|
|
177
|
+
return undefined;
|
|
178
|
+
};
|
|
116
179
|
const rotateToLowest = (cycle) => {
|
|
117
180
|
if (!Arr.isNonEmpty(cycle)) {
|
|
118
181
|
return cycle;
|
package/dist/merge-after.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge-after.mjs","sourceRoot":"","sources":["../src/merge-after.mts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEjD
|
|
1
|
+
{"version":3,"file":"merge-after.mjs","sourceRoot":"","sources":["../src/merge-after.mts"],"names":[],"mappings":"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"}
|
|
@@ -30,8 +30,8 @@ export type QueueComment<A> = Readonly<{
|
|
|
30
30
|
applies: boolean;
|
|
31
31
|
}>;
|
|
32
32
|
/**
|
|
33
|
-
* Reads `comments`, oldest first, for the oldest comment of each kind: each
|
|
34
|
-
*
|
|
33
|
+
* Reads `comments`, oldest first, for the oldest comment of each kind: each is
|
|
34
|
+
* one comment edited in place, and of several the oldest is the one.
|
|
35
35
|
*/
|
|
36
36
|
export declare const readQueueComments: (comments: readonly OwnComment[], state: Readonly<{
|
|
37
37
|
headSha: string;
|
package/dist/queue-order.d.mts
CHANGED
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
* Where each pull request stands in `unblock-prs`'s queue, and the order the
|
|
3
3
|
* worker picks the ones it may pick.
|
|
4
4
|
*
|
|
5
|
-
* The worker decides on someone's machine, from what `gh` and `git` return,
|
|
6
|
-
*
|
|
5
|
+
* The worker decides on someone's machine, from what `gh` and `git` return, and
|
|
6
|
+
* the Pull Requests Manager page draws the same queue from what GraphQL
|
|
7
7
|
* returns. So the deciding is here, once, over facts either side can supply,
|
|
8
8
|
* and each side does only its own reading: the worker reads some facts only
|
|
9
9
|
* when the answer needs them — the checks of a `BLOCKED` pull request, the
|
|
10
|
-
* native stack of one without auto-merge — which is why
|
|
11
|
-
*
|
|
10
|
+
* native stack of one without auto-merge — which is why {@link queueStanding}
|
|
11
|
+
* asks for them rather than taking them all up front.
|
|
12
12
|
*
|
|
13
13
|
* What the worker alone knows is left out: which pull requests one run has
|
|
14
14
|
* demoted (`demotions.mts` in `unblock-prs`) lives in that run's memory, so
|
|
@@ -26,8 +26,8 @@ export type QueueFacts = Readonly<{
|
|
|
26
26
|
headRef: string;
|
|
27
27
|
baseRef: string;
|
|
28
28
|
/**
|
|
29
|
-
* GitHub's `mergeStateStatus` — `BEHIND`, `DIRTY`, `CLEAN`, `BLOCKED` and
|
|
30
|
-
*
|
|
29
|
+
* GitHub's `mergeStateStatus` — `BEHIND`, `DIRTY`, `CLEAN`, `BLOCKED` and so
|
|
30
|
+
* on — or as near to it as the reader can tell.
|
|
31
31
|
*/
|
|
32
32
|
mergeState: string;
|
|
33
33
|
autoMerge: boolean;
|
|
@@ -43,8 +43,8 @@ export type QueueGraphMember = Readonly<{
|
|
|
43
43
|
baseRef: string;
|
|
44
44
|
fromFork: boolean;
|
|
45
45
|
/**
|
|
46
|
-
* The open issues it closes, whose `Start-After:` it inherits. Absent for
|
|
47
|
-
*
|
|
46
|
+
* The open issues it closes, whose `Start-After:` it inherits. Absent for a
|
|
47
|
+
* reader that did not read them: nothing is inherited.
|
|
48
48
|
*/
|
|
49
49
|
closes?: readonly number[];
|
|
50
50
|
}>;
|
|
@@ -53,8 +53,8 @@ export type QueueGraph = Readonly<{
|
|
|
53
53
|
/** Which open pull request each stacked one is on: child → parent. */
|
|
54
54
|
stackParents: ReadonlyMap<number, number>;
|
|
55
55
|
/**
|
|
56
|
-
* What each pull request must merge after: what it declared, the one it
|
|
57
|
-
*
|
|
56
|
+
* What each pull request must merge after: what it declared, the one it is
|
|
57
|
+
* stacked on, and what it inherits.
|
|
58
58
|
*/
|
|
59
59
|
dependencies: ReadonlyMap<number, readonly number[]>;
|
|
60
60
|
/**
|
|
@@ -168,9 +168,9 @@ export type QueueStanding = Readonly<{
|
|
|
168
168
|
/** The branch `changesets/action` opens the version pull request from. */
|
|
169
169
|
export declare const versionBranchName: (defaultBranch: string) => string;
|
|
170
170
|
/**
|
|
171
|
-
* Whether a pull request from `headRef` is the version pull request. The
|
|
172
|
-
*
|
|
173
|
-
*
|
|
171
|
+
* Whether a pull request from `headRef` is the version pull request. The branch
|
|
172
|
+
* is the only stable handle on it: the title and body are rewritten on every
|
|
173
|
+
* run, and the number changes with every release.
|
|
174
174
|
*/
|
|
175
175
|
export declare const isVersionBranch: (headRef: string, defaultBranch: string) => boolean;
|
|
176
176
|
/**
|
|
@@ -184,8 +184,8 @@ export declare const isSafeRefName: (name: string) => boolean;
|
|
|
184
184
|
export declare const isMergeableState: (mergeState: string) => boolean;
|
|
185
185
|
/**
|
|
186
186
|
* The stacks, the declared order and its cycles, and what holds the release,
|
|
187
|
-
* read off the open pull requests. `startAfterOf` is what the issues they
|
|
188
|
-
*
|
|
187
|
+
* read off the open pull requests. `startAfterOf` is what the issues they close
|
|
188
|
+
* declare, each issue's `Start-After:` by its number.
|
|
189
189
|
*/
|
|
190
190
|
export declare const queueGraph: (pulls: readonly QueueGraphMember[], defaultBranch: string, startAfterOf?: ReadonlyMap<number, readonly number[]>) => QueueGraph;
|
|
191
191
|
/**
|
|
@@ -194,23 +194,23 @@ export declare const queueGraph: (pulls: readonly QueueGraphMember[], defaultBra
|
|
|
194
194
|
*/
|
|
195
195
|
export declare const queueStanding: (pr: QueueFacts, context: QueueContext, reads?: QueueReads) => QueueStanding;
|
|
196
196
|
/**
|
|
197
|
-
* Whether what {@link queueStanding} decided is worth asking the review
|
|
198
|
-
*
|
|
199
|
-
*
|
|
200
|
-
*
|
|
197
|
+
* Whether what {@link queueStanding} decided is worth asking the review about:
|
|
198
|
+
* one about to be picked, or one about to be watched while GitHub still calls
|
|
199
|
+
* it `BLOCKED`. A merge state GitHub already calls mergeable is its own answer
|
|
200
|
+
* that nothing but the checks is left.
|
|
201
201
|
*/
|
|
202
202
|
export declare const asksReview: (standing: QueueStanding, mergeState: string) => boolean;
|
|
203
203
|
/**
|
|
204
204
|
* The standing once the review is known: a hold that waits for someone holds
|
|
205
|
-
* it; one that only a bypass merges, and none at all, change nothing here —
|
|
206
|
-
*
|
|
205
|
+
* it; one that only a bypass merges, and none at all, change nothing here — the
|
|
206
|
+
* worker leaves the first unarmed, which is not a question of order.
|
|
207
207
|
*/
|
|
208
208
|
export declare const withReviewHold: (standing: QueueStanding, mergeState: string, hold: ReviewHold | undefined) => QueueStanding;
|
|
209
209
|
export type QueuePriority = 'high' | 'low' | 'none' | 'both';
|
|
210
210
|
/**
|
|
211
|
-
* Which priority label a pull request carries: `both` is the two at once,
|
|
212
|
-
*
|
|
213
|
-
*
|
|
211
|
+
* Which priority label a pull request carries: `both` is the two at once, which
|
|
212
|
+
* contradict each other and so count as neither. `priority:mid` is the same as
|
|
213
|
+
* neither here.
|
|
214
214
|
*/
|
|
215
215
|
export declare const priorityOfLabels: (labels: readonly string[]) => QueuePriority;
|
|
216
216
|
/**
|
|
@@ -223,15 +223,15 @@ export declare const priorityRankOfLabels: (labels: readonly string[]) => 0 | 1
|
|
|
223
223
|
* ruleset bypass merges ({@link ReviewHold}): that one ranks with
|
|
224
224
|
* `priority:low` unless labelled `priority:high` — alone, since the two
|
|
225
225
|
* together count as neither. Picked, it is released, goes green and is set
|
|
226
|
-
* aside for a person, so the cycle spent on it lands nothing; picked last,
|
|
227
|
-
*
|
|
228
|
-
*
|
|
226
|
+
* aside for a person, so the cycle spent on it lands nothing; picked last, it
|
|
227
|
+
* still has its checks run. `priority:high` is a person saying they want that
|
|
228
|
+
* verdict now, and is the one way to ask for it, so it still counts.
|
|
229
229
|
*/
|
|
230
230
|
export declare const pickPriorityRank: (labels: readonly string[], bypass: boolean) => 0 | 1 | 2;
|
|
231
231
|
/**
|
|
232
|
-
* The order the worker picks candidates in. The declared order has already
|
|
233
|
-
*
|
|
234
|
-
*
|
|
232
|
+
* The order the worker picks candidates in. The declared order has already been
|
|
233
|
+
* applied, as a gate rather than a sort, so this is lowest number first within
|
|
234
|
+
* these ranks, outermost first:
|
|
235
235
|
*
|
|
236
236
|
* 1. What a watch has seen green and still open (`demoted`) goes after
|
|
237
237
|
* everything else, the release and `priority:high` included: everything
|
|
@@ -249,8 +249,8 @@ export declare const pickPriorityRank: (labels: readonly string[], bypass: boole
|
|
|
249
249
|
* release: it only says that when a queued change and the release are
|
|
250
250
|
* both ready, the change goes first.
|
|
251
251
|
*
|
|
252
|
-
* `toSorted` is stable, so each sort keeps the order of the one before it
|
|
253
|
-
*
|
|
252
|
+
* `toSorted` is stable, so each sort keeps the order of the one before it among
|
|
253
|
+
* equals, and the last one is the outermost.
|
|
254
254
|
*/
|
|
255
255
|
export declare const orderCandidates: <P>(candidates: readonly P[], factsOf: (candidate: P) => QueueFacts, context: Readonly<{
|
|
256
256
|
defaultBranch: string;
|
package/dist/queue-order.mjs
CHANGED
|
@@ -268,7 +268,6 @@ export const orderCandidates = (candidates, factsOf, context) => {
|
|
|
268
268
|
|
|
269
269
|
|
|
270
270
|
|
|
271
|
-
|
|
272
271
|
const hasLabel = (pr, name) => pr.labels.includes(name);
|
|
273
272
|
|
|
274
273
|
const outOfScopeReason = (pr, context) => {
|
|
@@ -283,7 +282,6 @@ const outOfScopeReason = (pr, context) => {
|
|
|
283
282
|
|
|
284
283
|
|
|
285
284
|
|
|
286
|
-
|
|
287
285
|
return pr.isDraft
|
|
288
286
|
? 'draft'
|
|
289
287
|
: pr.baseRef !== context.defaultBranch &&
|
package/dist/queue-order.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue-order.mjs","sourceRoot":"","sources":["../src/queue-order.mts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,GACd,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAG1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAqItD,0EAA0E;AAC1E,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,aAAqB,EAAU,EAAE,CACjE,qBAAqB,aAAa,EAAW,CAAC;AAEhD;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,OAAe,EACf,aAAqB,EACZ,EAAE,CAAC,OAAO,KAAK,iBAAiB,CAAC,aAAa,CAAC,CAAC;AAE3D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAY,EAAW,EAAE,CACrD,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAErD,wEAAwE;AACxE,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,UAAkB,EAAW,EAAE,CAC9D,UAAU,KAAK,OAAO;IACtB,UAAU,KAAK,WAAW;IAC1B,UAAU,KAAK,UAAU,CAAC;AAE5B;;;;GAIG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,KAAkC,EAClC,aAAqB,EACrB,YAAY,GAA2C,IAAI,GAAG,EAG3D,EACS,EAAE;IACd,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IAE7D,MAAM,YAAY,GAAG,gBAAgB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAE7D,4EAA4E;IAC5E,MAAM,eAAe,GAAG,iBAAiB,CAAC;QACxC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACpE,YAAY;QACZ,UAAU,EAAE,IAAI,GAAG,EAAU;KAC9B,CAAC,CAAC;IAEH,MAAM,QAAQ,GAA2C,IAAI,GAAG,CAC9D,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;QAChB,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;QAE3C,OAAO;YACL,EAAE,CAAC,MAAM;YACT,
|
|
1
|
+
{"version":3,"file":"queue-order.mjs","sourceRoot":"","sources":["../src/queue-order.mts"],"names":[],"mappings":"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"}
|