pr-report-core 0.1.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.
Files changed (83) hide show
  1. package/dist/checks.d.mts +61 -62
  2. package/dist/checks.d.mts.map +1 -1
  3. package/dist/checks.mjs +8 -9
  4. package/dist/checks.mjs.map +1 -1
  5. package/dist/claim.d.mts +13 -14
  6. package/dist/claim.d.mts.map +1 -1
  7. package/dist/claim.mjs +0 -1
  8. package/dist/claim.mjs.map +1 -1
  9. package/dist/closing-issues.d.mts +18 -19
  10. package/dist/closing-issues.d.mts.map +1 -1
  11. package/dist/closing-issues.mjs +0 -1
  12. package/dist/closing-issues.mjs.map +1 -1
  13. package/dist/code-owners.d.mts +48 -49
  14. package/dist/code-owners.d.mts.map +1 -1
  15. package/dist/code-owners.mjs +41 -43
  16. package/dist/code-owners.mjs.map +1 -1
  17. package/dist/labels.d.mts +38 -40
  18. package/dist/labels.d.mts.map +1 -1
  19. package/dist/labels.mjs +0 -2
  20. package/dist/labels.mjs.map +1 -1
  21. package/dist/merge-after.d.mts +22 -16
  22. package/dist/merge-after.d.mts.map +1 -1
  23. package/dist/merge-after.mjs +97 -34
  24. package/dist/merge-after.mjs.map +1 -1
  25. package/dist/queue-comments.d.mts +2 -2
  26. package/dist/queue-order.d.mts +43 -30
  27. package/dist/queue-order.d.mts.map +1 -1
  28. package/dist/queue-order.mjs +33 -18
  29. package/dist/queue-order.mjs.map +1 -1
  30. package/dist/queue-owner.d.mts +30 -30
  31. package/dist/queue-owner.d.mts.map +1 -1
  32. package/dist/queue-owner.mjs +51 -51
  33. package/dist/queue-owner.mjs.map +1 -1
  34. package/dist/report.d.mts +9 -9
  35. package/dist/report.d.mts.map +1 -1
  36. package/dist/report.mjs +23 -23
  37. package/dist/report.mjs.map +1 -1
  38. package/dist/review-hold.d.mts +14 -14
  39. package/dist/ruleset.d.mts +10 -11
  40. package/dist/ruleset.d.mts.map +1 -1
  41. package/dist/ruleset.mjs +0 -1
  42. package/dist/ruleset.mjs.map +1 -1
  43. package/dist/set-aside.d.mts +28 -28
  44. package/dist/stack.d.mts +14 -15
  45. package/dist/stack.d.mts.map +1 -1
  46. package/dist/stack.mjs +0 -1
  47. package/dist/stack.mjs.map +1 -1
  48. package/dist/start-after.d.mts +20 -21
  49. package/dist/start-after.d.mts.map +1 -1
  50. package/dist/start-after.mjs +0 -1
  51. package/dist/start-after.mjs.map +1 -1
  52. package/dist/summarize.d.mts +2 -2
  53. package/dist/timestamp.d.mts +10 -10
  54. package/dist/tree.d.mts +5 -5
  55. package/dist/types.d.mts +32 -33
  56. package/dist/types.d.mts.map +1 -1
  57. package/package.json +8 -8
  58. package/src/checks.mts +74 -75
  59. package/src/checks.test.mts +30 -31
  60. package/src/claim.mts +13 -14
  61. package/src/closing-issues.mts +18 -19
  62. package/src/closing-issues.test.mts +2 -2
  63. package/src/code-owners.mts +107 -109
  64. package/src/labels.mts +38 -40
  65. package/src/merge-after.mts +164 -71
  66. package/src/merge-after.test.mts +80 -3
  67. package/src/queue-comments.mts +2 -2
  68. package/src/queue-order.mts +103 -83
  69. package/src/queue-order.test.mts +41 -4
  70. package/src/queue-owner.mts +103 -103
  71. package/src/queue-owner.test.mts +2 -2
  72. package/src/report.mts +49 -49
  73. package/src/review-hold.mts +14 -14
  74. package/src/review-hold.test.mts +3 -3
  75. package/src/ruleset.mts +10 -11
  76. package/src/set-aside.mts +28 -28
  77. package/src/stack.mts +14 -15
  78. package/src/stack.test.mts +4 -4
  79. package/src/start-after.mts +20 -21
  80. package/src/summarize.mts +2 -2
  81. package/src/timestamp.mts +14 -14
  82. package/src/tree.mts +5 -5
  83. package/src/types.mts +32 -33
@@ -34,49 +34,6 @@ export const parseCodeOwners = (text) => Arr.generate(function* () {
34
34
 
35
35
 
36
36
  export const ownersOf = (path, rules) => rules.findLast((rule) => toRegExp(rule.pattern).test(path))?.owners ?? [];
37
- const stripComment = (line) => {
38
- const at = line.indexOf('#');
39
- return at === -1 ? line : line.slice(0, at);
40
- };
41
- const toRegExp = (pattern) => {
42
- const directory = pattern.endsWith('/');
43
- const trimmed = pattern.replaceAll(/^\/|\/$/gu, '');
44
-
45
-
46
- const anchored = pattern.startsWith('/') || trimmed.includes('/');
47
- const body = globToRegExpSource(trimmed);
48
-
49
-
50
-
51
-
52
-
53
- const tail = directory
54
- ? '/.+'
55
- : (trimmed.split('/').at(-1) ?? '').includes('*')
56
- ? ''
57
- : '(?:/.+)?';
58
-
59
- return new RegExp(`^${anchored ? '' : '(?:.+/)?'}${body}${tail}$`, 'u');
60
- };
61
- const globToRegExpSource = (glob) => glob
62
- .split('/')
63
- .map((segment, index, segments) => segment === '**'
64
- ?
65
-
66
- index === segments.length - 1
67
- ? '.*'
68
- : '(?:.*/)?'
69
- : `${segment
70
- .split('')
71
- .map((char) => char === '*' ? '[^/]*' : char === '?' ? '[^/]' : escapeChar(char))
72
- .join('')}${index === segments.length - 1 ? '' : '/'}`)
73
- .join('');
74
-
75
-
76
-
77
-
78
- const escapeChar = (char) => String.raw `^$\.*+?()[]{}|/`.includes(char) ? `\\${char}` : char;
79
-
80
37
 
81
38
 
82
39
 
@@ -129,6 +86,47 @@ export const codeOwnerReview = ({ required, rules, files, filesComplete, approve
129
86
  const owned = files.some((path) => Arr.isNonEmpty(ownersOf(path, rules)));
130
87
  return owned ? { state: 'approved' } : { state: 'not-required' };
131
88
  };
89
+ const stripComment = (line) => {
90
+ const at = line.indexOf('#');
91
+ return at === -1 ? line : line.slice(0, at);
92
+ };
93
+
94
+
95
+
96
+
97
+ const escapeChar = (char) => String.raw `^$\.*+?()[]{}|/`.includes(char) ? `\\${char}` : char;
98
+ const globToRegExpSource = (glob) => glob
99
+ .split('/')
100
+ .map((segment, index, segments) => segment === '**'
101
+ ?
102
+
103
+ index === segments.length - 1
104
+ ? '.*'
105
+ : '(?:.*/)?'
106
+ : `${segment
107
+ .split('')
108
+ .map((char) => char === '*' ? '[^/]*' : char === '?' ? '[^/]' : escapeChar(char))
109
+ .join('')}${index === segments.length - 1 ? '' : '/'}`)
110
+ .join('');
111
+ const toRegExp = (pattern) => {
112
+ const directory = pattern.endsWith('/');
113
+ const trimmed = pattern.replaceAll(/^\/|\/$/gu, '');
114
+
115
+
116
+ const anchored = pattern.startsWith('/') || trimmed.includes('/');
117
+ const body = globToRegExpSource(trimmed);
118
+
119
+
120
+
121
+
122
+ const tail = directory
123
+ ? '/.+'
124
+ : (trimmed.split('/').at(-1) ?? '').includes('*')
125
+ ? ''
126
+ : '(?:/.+)?';
127
+
128
+ return new RegExp(`^${anchored ? '' : '(?:.+/)?'}${body}${tail}$`, 'u');
129
+ };
132
130
 
133
131
  const isTeam = (owner) => owner.includes('/');
134
132
  //# sourceMappingURL=code-owners.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"code-owners.mjs","sourceRoot":"","sources":["../src/code-owners.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"code-owners.mjs","sourceRoot":"","sources":["../src/code-owners.mts"],"names":[],"mappings":"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"}
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
- * so these strings, and the ones in `.github/workflows/`, are the whole of
4
- * their declaration: `unblock-prs` and `open-pr` act on them, and
5
- * `pr-report` and the Pull Requests Manager page report them.
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
- * and `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
11
- * nothing to any workflow.
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
- * turn. It is the whole of `unblock-prs`'s scope rule: a pull request without
17
- * it is passed over in silence, and one with it is rebased, released from
18
- * `skip-ci` and watched when its turn comes.
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
- * body cannot declare a `Merge-After:` — `changesets/action` overwrites the
27
- * title and body of it on every push to the base — so the ordering is
28
- * declared from the other side, by the pull request the release is waiting
29
- * for. A label rather than a trailer for the same reason `merge-queued` is
30
- * one: this repository is public, and a label needs write access while a
31
- * comment does not.
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
- * pull request merges or is closed, and there is no state left behind to
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
- * every layer of a stack: one above the bottom is carried along by the layer
44
- * below, and needs the label of its own once that layer merges and it is
45
- * moved onto the default branch.
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
- * those labelled `priority:low` last, the version pull request included.
52
- * They decide nothing else — what `Merge-After:`, a stack or
53
- * `blocks-release` holds back stays held, and a pull request already in
54
- * flight is watched whatever it carries. One carrying both counts as
55
- * neither. {@link PRIORITY_MID_LABEL} is not read there: it is the same as
56
- * carrying neither.
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
- * merge order counts it and can hide what carries it. It asks nothing of
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
- * it as in progress, as they show one an open pull request closes
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
- * for; the page and `pr-report` show a startable issue carrying it as
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
@@ -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;;;;;;;;;;;;;;;GAeG;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;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,YAAY,CAAC"}
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
@@ -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;;;;;;;;;;;;;;;GAeG;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;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,SAAS,CAAC"}
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"}
@@ -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
- * closed, simply never appears in the open list and so constrains nothing.
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
- * read exactly as {@link parseMergeAfter} reads its trailer
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
- * count preserved.
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
- * documenting it. A fence is how every document here already says "this is a
29
- * sample, not the thing itself", so it is the line to draw.
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
- * of the same bodies and has to draw the line in the same place — a document
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, one entry per cycle, each listing the numbers in
38
- * the order the edges run and rotated to start at its lowest number so that
39
- * the same cycle is always reported the same way.
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
- * is found by the same walk.
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;AAsBH;;;;;;;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;AAyBxC;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,iBAAiB,SAAU,MAAM,KAAG,MAehD,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,oBAAoB,iBACjB,WAAW,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,KACnD,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAoC9B,CAAC"}
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"}
@@ -11,42 +11,31 @@ 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
- const FENCE_LINE = /^[^\S\n]*(?:`{3,}|~{3,})/u;
22
-
23
20
 
24
21
 
25
22
 
23
+ const FENCE_LINE = /^[^\S\n]*(?<marker>`{3,}|~{3,})(?<rest>[^\n]*)$/u;
26
24
 
27
25
 
28
26
 
29
27
 
30
- export const parseMergeAfter = (body) => parseDeclaration(body, 'merge-after');
31
-
32
28
 
33
29
 
34
30
 
35
31
 
36
- export const parseStartAfter = (body) => parseDeclaration(body, 'start-after');
37
-
32
+ export const parseMergeAfter = (body) => parseDeclaration(body, 'merge-after');
38
33
 
39
34
 
40
35
 
41
36
 
42
37
 
43
- const parseDeclaration = (body, key) => Arr.uniq(outsideCodeFences(body)
44
- .matchAll(DECLARATION_LINE[key])
45
- .flatMap((line) => (line.groups?.['refs'] ?? '').matchAll(NUMBER_REF).flatMap((ref) => {
46
- const parsed = Num.safeParseInt(ref.groups?.['number'] ?? '');
47
- return Result.isOk(parsed) ? [parsed.value] : [];
48
- }))
49
- .toArray());
38
+ export const parseStartAfter = (body) => parseDeclaration(body, 'start-after');
50
39
 
51
40
 
52
41
 
@@ -62,14 +51,33 @@ const parseDeclaration = (body, key) => Arr.uniq(outsideCodeFences(body)
62
51
 
63
52
 
64
53
  export const outsideCodeFences = (body) => {
65
- let mut_inFence = false;
54
+
55
+ let mut_openedBy = undefined;
66
56
  return body
67
57
  .split('\n')
68
58
  .map((line) => {
69
- if (!FENCE_LINE.test(line)) {
70
- return mut_inFence ? '' : line;
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;
71
80
  }
72
- mut_inFence = !mut_inFence;
73
81
  return '';
74
82
  })
75
83
  .join('\n');
@@ -86,32 +94,87 @@ export const outsideCodeFences = (body) => {
86
94
 
87
95
 
88
96
 
97
+
98
+
99
+
100
+
101
+
102
+
89
103
  export const findMergeAfterCycles = (dependencies) => {
90
- const mut_finished = new Set();
104
+ const mut_covered = new Set();
91
105
  const mut_cycles = new Map();
92
- const visit = (node, walked) => {
93
- const at = walked.indexOf(node);
94
- if (at !== -1) {
106
+ for (const node of dependencies.keys()) {
107
+ if (mut_covered.has(node)) {
108
+ continue;
109
+ }
95
110
 
96
111
 
97
- const cycle = rotateToLowest(walked.slice(at));
98
- mut_cycles.set(cycle.join(','), cycle);
99
- return;
112
+ const cycle = shortestCycleThrough(node, dependencies);
113
+ if (cycle === undefined) {
114
+ continue;
100
115
  }
101
- if (mut_finished.has(node)) {
102
- return;
116
+ for (const member of cycle) {
117
+ mut_covered.add(member);
103
118
  }
104
- for (const dependency of dependencies.get(node) ?? []) {
105
- visit(dependency, Arr.toPushed(walked, node));
119
+ const rotated = rotateToLowest(cycle);
120
+ mut_cycles.set(rotated.join(','), rotated);
121
+ }
122
+ return Array.from(mut_cycles.values());
123
+ };
124
+
125
+
126
+
127
+
128
+
129
+
130
+ const parseDeclaration = (body, key) => Arr.uniq(outsideCodeFences(body)
131
+ .matchAll(DECLARATION_LINE[key])
132
+ .flatMap((line) => (line.groups?.['refs'] ?? '').matchAll(NUMBER_REF).flatMap((ref) => {
133
+ const parsed = Num.safeParseInt(ref.groups?.['number'] ?? '');
134
+ return Result.isOk(parsed) ? [parsed.value] : [];
135
+ }))
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;
106
145
  }
146
+ mut_reversed.push(previous);
147
+ mut_node = previous;
148
+ }
149
+ return mut_reversed.toReversed();
150
+ };
107
151
 
108
152
 
109
- mut_finished.add(node);
110
- };
111
- for (const node of dependencies.keys()) {
112
- visit(node, []);
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;
113
176
  }
114
- return Array.from(mut_cycles.values());
177
+ return undefined;
115
178
  };
116
179
  const rotateToLowest = (cycle) => {
117
180
  if (!Arr.isNonEmpty(cycle)) {
@@ -1 +1 @@
1
- {"version":3,"file":"merge-after.mjs","sourceRoot":"","sources":["../src/merge-after.mts"],"names":[],"mappings":"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"}
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
- * is one comment edited in place, and of several the oldest is the one.
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;