@nielspeter/eess-md 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +45 -2
- package/dist/builders/links.d.ts.map +1 -1
- package/dist/builders/links.js +2 -3
- package/dist/builders/links.js.map +1 -1
- package/dist/builders/pointers.d.ts.map +1 -1
- package/dist/builders/pointers.js +2 -3
- package/dist/builders/pointers.js.map +1 -1
- package/dist/builders/task-items.d.ts.map +1 -1
- package/dist/builders/task-items.js +2 -3
- package/dist/builders/task-items.js.map +1 -1
- package/dist/conditions/pointer-resolve.d.ts +8 -3
- package/dist/conditions/pointer-resolve.d.ts.map +1 -1
- package/dist/conditions/pointer-resolve.js +80 -35
- package/dist/conditions/pointer-resolve.js.map +1 -1
- package/dist/corpus.d.ts +10 -3
- package/dist/corpus.d.ts.map +1 -1
- package/dist/corpus.js +5 -27
- package/dist/corpus.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -1
- package/dist/index.js.map +1 -1
- package/dist/model/by-document.d.ts +21 -0
- package/dist/model/by-document.d.ts.map +1 -0
- package/dist/model/by-document.js +19 -0
- package/dist/model/by-document.js.map +1 -0
- package/dist/model/document.d.ts +1 -1
- package/dist/model/document.d.ts.map +1 -1
- package/dist/model/links.d.ts.map +1 -1
- package/dist/model/links.js +1 -7
- package/dist/model/links.js.map +1 -1
- package/dist/model/task-items.d.ts.map +1 -1
- package/dist/model/task-items.js +1 -7
- package/dist/model/task-items.js.map +1 -1
- package/dist/model/text-of.d.ts +14 -0
- package/dist/model/text-of.d.ts.map +1 -0
- package/dist/model/text-of.js +19 -0
- package/dist/model/text-of.js.map +1 -0
- package/dist/rules/adr.d.ts +8 -0
- package/dist/rules/adr.d.ts.map +1 -1
- package/dist/rules/adr.js +18 -6
- package/dist/rules/adr.js.map +1 -1
- package/dist/rules/ledger.d.ts +10 -0
- package/dist/rules/ledger.d.ts.map +1 -1
- package/dist/rules/ledger.js +5 -3
- package/dist/rules/ledger.js.map +1 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -19,7 +19,7 @@ import { corpus, docs, links, pointers } from '@nielspeter/eess-md'
|
|
|
19
19
|
|
|
20
20
|
const c = corpus({
|
|
21
21
|
roots: ['docs/**'],
|
|
22
|
-
frozen: ['**/completed/**', '**/archived/**'], // historical
|
|
22
|
+
frozen: ['**/completed/**', '**/archived/**'], // historical: links still checked, pointers not
|
|
23
23
|
})
|
|
24
24
|
|
|
25
25
|
// markdown-to-markdown links resolve
|
|
@@ -27,7 +27,9 @@ links(c).that().areInternal().should().resolve().check()
|
|
|
27
27
|
|
|
28
28
|
// `path:line` code pointers ground against real files
|
|
29
29
|
// (resolves by unique path-suffix: `admin/index.vue` matches the one file
|
|
30
|
-
// ending with it
|
|
30
|
+
// ending with it. A bare name matching SEVERAL files is a violation naming
|
|
31
|
+
// the candidates — it identifies none of them. Pass `{ paths: 'exact' }` to
|
|
32
|
+
// require full repo paths instead.)
|
|
31
33
|
pointers(c).that().areLive().should().resolve().check()
|
|
32
34
|
|
|
33
35
|
// documents have the sections/tables they should
|
|
@@ -38,6 +40,43 @@ docs(c).that().resideInFolder('docs/adr/**').should().haveSection('Context').che
|
|
|
38
40
|
`.that().should().check()` chain as every other eess dialect — with `.because()`,
|
|
39
41
|
`.warn()`, `.excluding()`, and baseline mode all working unchanged.
|
|
40
42
|
|
|
43
|
+
## What did the corpus actually load?
|
|
44
|
+
|
|
45
|
+
A green rule over an empty corpus is the failure mode this project exists to catch, so
|
|
46
|
+
`corpus()` will tell you what it found. The returned `Corpus` is inspectable, not just
|
|
47
|
+
something you pass to a builder:
|
|
48
|
+
|
|
49
|
+
```typescript
|
|
50
|
+
import { corpus } from '@nielspeter/eess-md'
|
|
51
|
+
|
|
52
|
+
const c = corpus({ roots: ['docs/**'], frozen: ['**/archived/**'] })
|
|
53
|
+
|
|
54
|
+
// Every document the globs matched, parsed — the denominator behind your rules.
|
|
55
|
+
for (const d of c.documents()) {
|
|
56
|
+
console.log(d.relPath, d.frozen ? '(frozen)' : '', `${d.sections.length} sections`)
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
console.log(c.documents().length) // 0 here means the globs matched nothing, not that all is well
|
|
60
|
+
console.log(c.root) // repo root the globs, links and `path:line` pointers resolve against
|
|
61
|
+
console.log(c.fileIndex.size) // every file under that root — what link/pointer resolution searches
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Each `MdDocument` carries `relPath`, `file`, `frozen`, `text`, `sections`, `tables`,
|
|
65
|
+
`codeBlocks` and the raw mdast `root`, so a one-off question about the corpus is a loop,
|
|
66
|
+
not a new rule.
|
|
67
|
+
|
|
68
|
+
Two things worth knowing:
|
|
69
|
+
|
|
70
|
+
- **`frozen` documents are loaded, not skipped.** They appear in `documents()` with
|
|
71
|
+
`frozen: true`; it is the rules that treat them as history. So `documents().length` is
|
|
72
|
+
the total, and `documents().filter((d) => !d.frozen).length` is what a gate will fail on.
|
|
73
|
+
- **`root` defaults to `process.cwd()`**, which is why a gate run from a subdirectory
|
|
74
|
+
silently resolves a different set. If a corpus comes back smaller than you expect, print
|
|
75
|
+
`c.root` first.
|
|
76
|
+
|
|
77
|
+
`@nielspeter/eess-gherkin`'s `features()` returns the same shape of answer — `root`,
|
|
78
|
+
`features()` and `scenarios()` — for the same reason.
|
|
79
|
+
|
|
41
80
|
## Binding a spec table to code: `rows()` + `correspondence()`
|
|
42
81
|
|
|
43
82
|
A markdown table is a **spec** — a package list, an ADR index, a field
|
|
@@ -97,6 +136,10 @@ of that, and **you don't need it to get value from `eess-md`** — links, pointe
|
|
|
97
136
|
sections, and tables all validate through the generic primitives above. Reach for
|
|
98
137
|
`adrEnforcement()` only if your ADRs follow the tier model; otherwise compose your
|
|
99
138
|
own gate from `haveSection` / `haveTable` / `haveTableRowsSatisfying` / `resolve`.
|
|
139
|
+
The same goes for a citation form the preset does not know — a rule id in your
|
|
140
|
+
own architecture tool, cited in a Mechanism cell: `rows()` over that column into
|
|
141
|
+
a `correspondence()` against the set you hold, both directions. The docs page's
|
|
142
|
+
"Citing something that is not a file or a test" section is the worked recipe.
|
|
100
143
|
|
|
101
144
|
```typescript
|
|
102
145
|
import { adrEnforcement } from '@nielspeter/eess-md/rules/adr'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"links.d.ts","sourceRoot":"","sources":["../../src/builders/links.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAkB,MAAM,kBAAkB,CAAA;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAgB,KAAK,MAAM,EAAkB,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"links.d.ts","sourceRoot":"","sources":["../../src/builders/links.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAkB,MAAM,kBAAkB,CAAA;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAgB,KAAK,MAAM,EAAkB,MAAM,mBAAmB,CAAA;AAE7E,OAAO,EAAgB,KAAK,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAEhF,YAAY,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAElE,sEAAsE;AACtE,YAAY,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAW/C;;GAEG;AACH,qBAAa,eAAgB,SAAQ,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC;IAC9D,SAAS,CAAC,WAAW,IAAI,MAAM,EAAE;IAIjC,8DAA8D;IAC9D,WAAW,IAAI,IAAI;IAInB,iFAAiF;IACjF,WAAW,IAAI,IAAI;IAInB;;;;OAIG;IACH,OAAO,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,IAAI;CAG5C;AAED,iEAAiE;AACjE,wBAAgB,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,CAErD"}
|
package/dist/builders/links.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { RuleBuilder } from '@nielspeter/eess';
|
|
2
2
|
import { collectLinks } from '../model/links.js';
|
|
3
|
+
import { stampedByDocument } from '../model/by-document.js';
|
|
3
4
|
import { linkResolves } from '../conditions/resolve.js';
|
|
4
5
|
const areInternal = () => ({
|
|
5
6
|
description: 'are internal',
|
|
@@ -14,9 +15,7 @@ const areExternal = () => ({
|
|
|
14
15
|
*/
|
|
15
16
|
export class LinkRuleBuilder extends RuleBuilder {
|
|
16
17
|
getElements() {
|
|
17
|
-
return this.project
|
|
18
|
-
.documents()
|
|
19
|
-
.flatMap((doc) => collectLinks(doc.root, doc.text).map((link) => ({ ...link, doc })));
|
|
18
|
+
return stampedByDocument(this.project, (doc) => collectLinks(doc.root, doc.text));
|
|
20
19
|
}
|
|
21
20
|
/** Filter to links that point within the repo (no scheme). */
|
|
22
21
|
areInternal() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"links.js","sourceRoot":"","sources":["../../src/builders/links.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAkB,MAAM,kBAAkB,CAAA;AAE9D,OAAO,EAAE,YAAY,EAA+B,MAAM,mBAAmB,CAAA;AAC7E,OAAO,EAAE,YAAY,EAA2B,MAAM,0BAA0B,CAAA;AAOhF,MAAM,WAAW,GAAG,GAAsB,EAAE,CAAC,CAAC;IAC5C,WAAW,EAAE,cAAc;IAC3B,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ;CACzB,CAAC,CAAA;AACF,MAAM,WAAW,GAAG,GAAsB,EAAE,CAAC,CAAC;IAC5C,WAAW,EAAE,cAAc;IAC3B,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ;CACxB,CAAC,CAAA;AAEF;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,WAA2B;IACpD,WAAW;QACnB,OAAO,IAAI,CAAC,OAAO
|
|
1
|
+
{"version":3,"file":"links.js","sourceRoot":"","sources":["../../src/builders/links.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAkB,MAAM,kBAAkB,CAAA;AAE9D,OAAO,EAAE,YAAY,EAA+B,MAAM,mBAAmB,CAAA;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,EAAE,YAAY,EAA2B,MAAM,0BAA0B,CAAA;AAOhF,MAAM,WAAW,GAAG,GAAsB,EAAE,CAAC,CAAC;IAC5C,WAAW,EAAE,cAAc;IAC3B,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ;CACzB,CAAC,CAAA;AACF,MAAM,WAAW,GAAG,GAAsB,EAAE,CAAC,CAAC;IAC5C,WAAW,EAAE,cAAc;IAC3B,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ;CACxB,CAAC,CAAA;AAEF;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,WAA2B;IACpD,WAAW;QACnB,OAAO,iBAAiB,CAAY,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;IAC9F,CAAC;IAED,8DAA8D;IAC9D,WAAW;QACT,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,CAAA;IACzC,CAAC;IAED,iFAAiF;IACjF,WAAW;QACT,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,CAAA;IACzC,CAAC;IAED;;;;OAIG;IACH,OAAO,CAAC,OAA4B;QAClC,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAA;IAC/D,CAAC;CACF;AAED,iEAAiE;AACjE,MAAM,UAAU,KAAK,CAAC,MAAc;IAClC,OAAO,IAAI,eAAe,CAAC,MAAM,CAAC,CAAA;AACpC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pointers.d.ts","sourceRoot":"","sources":["../../src/builders/pointers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAkB,MAAM,kBAAkB,CAAA;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAmB,KAAK,SAAS,EAAqB,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"pointers.d.ts","sourceRoot":"","sources":["../../src/builders/pointers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAkB,MAAM,kBAAkB,CAAA;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAmB,KAAK,SAAS,EAAqB,MAAM,sBAAsB,CAAA;AAEzF,OAAO,EAAmB,KAAK,qBAAqB,EAAE,MAAM,kCAAkC,CAAA;AAE9F,iFAAiF;AACjF,YAAY,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAWrD;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC;IACpE,SAAS,CAAC,WAAW,IAAI,SAAS,EAAE;IAMpC,qEAAqE;IACrE,OAAO,IAAI,IAAI;IAIf,mEAAmE;IACnE,SAAS,IAAI,IAAI;IAIjB;;;;;OAKG;IACH,OAAO,CAAC,OAAO,CAAC,EAAE,qBAAqB,GAAG,IAAI;CAG/C;AAED,gEAAgE;AAChE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,kBAAkB,CAE3D"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { RuleBuilder } from '@nielspeter/eess';
|
|
2
2
|
import { extractPointers } from '../model/pointers.js';
|
|
3
|
+
import { stampedByDocument } from '../model/by-document.js';
|
|
3
4
|
import { pointerResolves } from '../conditions/pointer-resolve.js';
|
|
4
5
|
const areLive = () => ({
|
|
5
6
|
description: 'are live (not in a frozen folder)',
|
|
@@ -14,9 +15,7 @@ const areFrozen = () => ({
|
|
|
14
15
|
*/
|
|
15
16
|
export class PointerRuleBuilder extends RuleBuilder {
|
|
16
17
|
getElements() {
|
|
17
|
-
return this.project
|
|
18
|
-
.documents()
|
|
19
|
-
.flatMap((doc) => extractPointers(doc.text, doc.root).map((p) => ({ ...p, doc })));
|
|
18
|
+
return stampedByDocument(this.project, (doc) => extractPointers(doc.text, doc.root));
|
|
20
19
|
}
|
|
21
20
|
/** Filter to pointers in live documents (not in a frozen folder). */
|
|
22
21
|
areLive() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pointers.js","sourceRoot":"","sources":["../../src/builders/pointers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAkB,MAAM,kBAAkB,CAAA;AAE9D,OAAO,EAAE,eAAe,EAAqC,MAAM,sBAAsB,CAAA;AACzF,OAAO,EAAE,eAAe,EAA8B,MAAM,kCAAkC,CAAA;AAK9F,MAAM,OAAO,GAAG,GAAyB,EAAE,CAAC,CAAC;IAC3C,WAAW,EAAE,mCAAmC;IAChD,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM;CAC3B,CAAC,CAAA;AACF,MAAM,SAAS,GAAG,GAAyB,EAAE,CAAC,CAAC;IAC7C,WAAW,EAAE,gCAAgC;IAC7C,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM;CAC1B,CAAC,CAAA;AAEF;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,WAA8B;IAC1D,WAAW;QACnB,OAAO,IAAI,CAAC,OAAO
|
|
1
|
+
{"version":3,"file":"pointers.js","sourceRoot":"","sources":["../../src/builders/pointers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAkB,MAAM,kBAAkB,CAAA;AAE9D,OAAO,EAAE,eAAe,EAAqC,MAAM,sBAAsB,CAAA;AACzF,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,EAAE,eAAe,EAA8B,MAAM,kCAAkC,CAAA;AAK9F,MAAM,OAAO,GAAG,GAAyB,EAAE,CAAC,CAAC;IAC3C,WAAW,EAAE,mCAAmC;IAChD,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM;CAC3B,CAAC,CAAA;AACF,MAAM,SAAS,GAAG,GAAyB,EAAE,CAAC,CAAC;IAC7C,WAAW,EAAE,gCAAgC;IAC7C,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM;CAC1B,CAAC,CAAA;AAEF;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,WAA8B;IAC1D,WAAW;QACnB,OAAO,iBAAiB,CAAe,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAC3D,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CACpC,CAAA;IACH,CAAC;IAED,qEAAqE;IACrE,OAAO;QACL,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAA;IACrC,CAAC;IAED,mEAAmE;IACnE,SAAS;QACP,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,CAAA;IACvC,CAAC;IAED;;;;;OAKG;IACH,OAAO,CAAC,OAA+B;QACrC,OAAO,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAA;IAClE,CAAC;CACF;AAED,gEAAgE;AAChE,MAAM,UAAU,QAAQ,CAAC,MAAc;IACrC,OAAO,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAA;AACvC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-items.d.ts","sourceRoot":"","sources":["../../src/builders/task-items.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAkB,MAAM,kBAAkB,CAAA;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"task-items.d.ts","sourceRoot":"","sources":["../../src/builders/task-items.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAkB,MAAM,kBAAkB,CAAA;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAG7E,0EAA0E;AAC1E,MAAM,WAAW,UAAW,SAAQ,aAAa;IAC/C,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAA;CACzB;AAWD;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC;IACtE,SAAS,CAAC,WAAW,IAAI,UAAU,EAAE;IAIrC,sCAAsC;IACtC,OAAO,IAAI,IAAI;IAIf,yCAAyC;IACzC,UAAU,IAAI,IAAI;CAGnB;AAED,kEAAkE;AAClE,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,mBAAmB,CAE7D"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { RuleBuilder } from '@nielspeter/eess';
|
|
2
2
|
import { collectTaskItems } from '../model/task-items.js';
|
|
3
|
+
import { stampedByDocument } from '../model/by-document.js';
|
|
3
4
|
const areOpen = () => ({
|
|
4
5
|
description: 'are open',
|
|
5
6
|
test: (t) => !t.checked,
|
|
@@ -13,9 +14,7 @@ const areChecked = () => ({
|
|
|
13
14
|
*/
|
|
14
15
|
export class TaskItemRuleBuilder extends RuleBuilder {
|
|
15
16
|
getElements() {
|
|
16
|
-
return this.project
|
|
17
|
-
.documents()
|
|
18
|
-
.flatMap((doc) => collectTaskItems(doc.root).map((t) => ({ ...t, doc })));
|
|
17
|
+
return stampedByDocument(this.project, (doc) => collectTaskItems(doc.root));
|
|
19
18
|
}
|
|
20
19
|
/** Filter to open boxes (`- [ ]`). */
|
|
21
20
|
areOpen() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-items.js","sourceRoot":"","sources":["../../src/builders/task-items.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAkB,MAAM,kBAAkB,CAAA;AAG9D,OAAO,EAAE,gBAAgB,EAAsB,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"task-items.js","sourceRoot":"","sources":["../../src/builders/task-items.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAkB,MAAM,kBAAkB,CAAA;AAG9D,OAAO,EAAE,gBAAgB,EAAsB,MAAM,wBAAwB,CAAA;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAO3D,MAAM,OAAO,GAAG,GAA0B,EAAE,CAAC,CAAC;IAC5C,WAAW,EAAE,UAAU;IACvB,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO;CACxB,CAAC,CAAA;AACF,MAAM,UAAU,GAAG,GAA0B,EAAE,CAAC,CAAC;IAC/C,WAAW,EAAE,aAAa;IAC1B,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO;CACvB,CAAC,CAAA;AAEF;;GAEG;AACH,MAAM,OAAO,mBAAoB,SAAQ,WAA+B;IAC5D,WAAW;QACnB,OAAO,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;IAC7E,CAAC;IAED,sCAAsC;IACtC,OAAO;QACL,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAA;IACrC,CAAC;IAED,yCAAyC;IACzC,UAAU;QACR,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,CAAA;IACxC,CAAC;CACF;AAED,kEAAkE;AAClE,MAAM,UAAU,SAAS,CAAC,MAAc;IACtC,OAAO,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAA;AACxC,CAAC"}
|
|
@@ -7,7 +7,10 @@ export interface PointerResolveOptions {
|
|
|
7
7
|
* - `suffix` (default) — a pointer resolves to the one file whose repo-relative
|
|
8
8
|
* path *ends with* the pointer path on a `/` boundary. Bare basenames are the
|
|
9
9
|
* single-segment case, so `index.vue` and `admin/index.vue` resolve by the
|
|
10
|
-
* same rule. Multiple matches → ambiguous
|
|
10
|
+
* same rule. Multiple matches → ambiguous, which is a violation naming the
|
|
11
|
+
* candidates (bug 0254). `externalRoots` are tried first and win if the
|
|
12
|
+
* pointer grounds there; if they do not resolve it — including when none is
|
|
13
|
+
* present on disk — the ambiguity is reported rather than skipped.
|
|
11
14
|
* - `exact` — a pointer must be the exact repo-relative path; no suffix or
|
|
12
15
|
* basename leniency. Choose this when pointers are required to carry full
|
|
13
16
|
* paths (e.g. the external repo's `spec-check.ts` strictness).
|
|
@@ -37,8 +40,10 @@ export declare function presentExternalRoots(roots: readonly string[]): readonly
|
|
|
37
40
|
* Classification mirrors the hand-rolled `spec-check.ts`:
|
|
38
41
|
* - **broken** — no file matches the pointer path
|
|
39
42
|
* - **stale** — file exists but is shorter than the referenced line
|
|
40
|
-
* - **ambiguous** — a path-suffix matching several files
|
|
41
|
-
*
|
|
43
|
+
* - **ambiguous** — a path-suffix matching several files. It names none of
|
|
44
|
+
* them, so it is a violation like the others, and the message lists the
|
|
45
|
+
* candidates (bug 0254 — it used to be skipped silently while still counting
|
|
46
|
+
* toward the caller's denominator). No autofix: the repair is a choice.
|
|
42
47
|
* - **ok** — otherwise
|
|
43
48
|
*
|
|
44
49
|
* Resolution (default `suffix` mode): exact repo-relative path first, else the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pointer-resolve.d.ts","sourceRoot":"","sources":["../../src/conditions/pointer-resolve.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"pointer-resolve.d.ts","sourceRoot":"","sources":["../../src/conditions/pointer-resolve.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAEjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAGrD,+DAA+D;AAC/D,MAAM,WAAW,qBAAqB;IACpC;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAA;IACnC;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC3C;AAED,kFAAkF;AAClF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,MAAM,EAAE,CAShF;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,qBAA0B,GAClC,SAAS,CAAC,SAAS,CAAC,CAoLtB"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { readFileSync, statSync } from 'node:fs';
|
|
2
2
|
import { join } from 'node:path';
|
|
3
|
+
import { pathSuffixIndex } from '@nielspeter/eess/internal';
|
|
3
4
|
import { mdViolation } from '../model/violation.js';
|
|
4
5
|
/** The subset of `roots` that actually exist on disk — for gate summary lines. */
|
|
5
6
|
export function presentExternalRoots(roots) {
|
|
@@ -20,8 +21,10 @@ export function presentExternalRoots(roots) {
|
|
|
20
21
|
* Classification mirrors the hand-rolled `spec-check.ts`:
|
|
21
22
|
* - **broken** — no file matches the pointer path
|
|
22
23
|
* - **stale** — file exists but is shorter than the referenced line
|
|
23
|
-
* - **ambiguous** — a path-suffix matching several files
|
|
24
|
-
*
|
|
24
|
+
* - **ambiguous** — a path-suffix matching several files. It names none of
|
|
25
|
+
* them, so it is a violation like the others, and the message lists the
|
|
26
|
+
* candidates (bug 0254 — it used to be skipped silently while still counting
|
|
27
|
+
* toward the caller's denominator). No autofix: the repair is a choice.
|
|
25
28
|
* - **ok** — otherwise
|
|
26
29
|
*
|
|
27
30
|
* Resolution (default `suffix` mode): exact repo-relative path first, else the
|
|
@@ -33,15 +36,13 @@ export function presentExternalRoots(roots) {
|
|
|
33
36
|
export function pointerResolves(corpus, options = {}) {
|
|
34
37
|
const mode = options.paths ?? 'suffix';
|
|
35
38
|
const externalRoots = options.externalRoots ?? [];
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
byBasename.set(base, [rel]);
|
|
44
|
-
}
|
|
39
|
+
// Bug 0257: one resolver, shared with `eess-crossvalidate`. This file used to
|
|
40
|
+
// carry its own basename index and its own three-way match type; both were the
|
|
41
|
+
// kernel's `pathSuffixIndex` written a second time, down to the exact-wins
|
|
42
|
+
// precedence. What stays here is the POLICY — what a `none` means, whether an
|
|
43
|
+
// `ambiguous` fails, when to consult external roots — which is genuinely this
|
|
44
|
+
// dialect's and differs from crossvalidate's.
|
|
45
|
+
const paths = pathSuffixIndex(corpus.fileIndex);
|
|
45
46
|
const lineCountCache = new Map();
|
|
46
47
|
const lineCount = (rel) => {
|
|
47
48
|
const cached = lineCountCache.get(rel);
|
|
@@ -55,34 +56,69 @@ export function pointerResolves(corpus, options = {}) {
|
|
|
55
56
|
description: 'resolve to a real file and line',
|
|
56
57
|
evaluate: (pointers, ctx) => pointers.flatMap((p) => {
|
|
57
58
|
const wanted = p.path.replace(/^\.?\//, '');
|
|
58
|
-
|
|
59
|
-
// Narrow by last segment, then confirm the full suffix.
|
|
60
|
-
const uniqueSuffix = () => {
|
|
61
|
-
const lastSeg = wanted.slice(wanted.lastIndexOf('/') + 1);
|
|
62
|
-
const matches = (byBasename.get(lastSeg) ?? []).filter((f) => f === wanted || f.endsWith('/' + wanted));
|
|
63
|
-
const only = matches[0];
|
|
64
|
-
if (matches.length === 1 && only !== undefined)
|
|
65
|
-
return { kind: 'unique', file: only };
|
|
66
|
-
if (matches.length > 1)
|
|
67
|
-
return { kind: 'ambiguous' };
|
|
68
|
-
return { kind: 'none' };
|
|
69
|
-
};
|
|
59
|
+
const match = paths.resolve(wanted);
|
|
70
60
|
let targetRel = null;
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
61
|
+
// Bug 0254: an ambiguous suffix used to `return []` here, commented
|
|
62
|
+
// "reported elsewhere, never failed". There was no elsewhere — nothing
|
|
63
|
+
// counted or printed them, and they were still inside the caller's
|
|
64
|
+
// denominator, so 16 of this repo's own 463 live pointers sat inside a
|
|
65
|
+
// summary reading "all ground in code" having grounded in nothing. A
|
|
66
|
+
// skip that reads as a pass is ADR-010's subject exactly.
|
|
67
|
+
//
|
|
68
|
+
// It falls through to the null-target path instead of returning here,
|
|
69
|
+
// so a corpus with `externalRoots` still gets to resolve it there — an
|
|
70
|
+
// in-repo ambiguity is not evidence about an external checkout.
|
|
71
|
+
//
|
|
72
|
+
// **That fall-through has to be complete, and the first version was not.**
|
|
73
|
+
// Review found both exits from the external-roots block swallowing the
|
|
74
|
+
// ambiguity: no root present on disk returned `[]` (the same silent skip
|
|
75
|
+
// this bug exists to close, through a door the fix left open), and a
|
|
76
|
+
// present-but-no-match returned "not in the repo" — false, since the
|
|
77
|
+
// pointer is in the repo twice, and it discards the candidates and the
|
|
78
|
+
// remedy. `ambiguousViolation()` below is now the fallback on every exit
|
|
79
|
+
// that would otherwise skip or misreport.
|
|
80
|
+
let ambiguousWith = [];
|
|
81
|
+
if (match.kind === 'exact') {
|
|
82
|
+
// Exact repo-relative path — preferred in both modes, and it beats an
|
|
83
|
+
// ambiguity it is itself part of.
|
|
84
|
+
targetRel = match.file;
|
|
74
85
|
}
|
|
75
86
|
else if (mode === 'suffix') {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
targetRel = m.kind === 'unique' ? m.file : null;
|
|
87
|
+
if (match.kind === 'ambiguous')
|
|
88
|
+
ambiguousWith = match.files;
|
|
89
|
+
targetRel = match.kind === 'unique' ? match.file : null;
|
|
80
90
|
}
|
|
91
|
+
/**
|
|
92
|
+
* The ambiguous finding, built once and used at every exit that would
|
|
93
|
+
* otherwise skip or misclassify it. `searched` names the external roots
|
|
94
|
+
* when there were any, so the reader can see the pointer was not simply
|
|
95
|
+
* unexamined.
|
|
96
|
+
*/
|
|
97
|
+
const ambiguousViolation = (searched = []) => [
|
|
98
|
+
mdViolation({
|
|
99
|
+
element: `${p.doc.relPath} → ${p.raw}`,
|
|
100
|
+
file: p.doc.file,
|
|
101
|
+
line: p.line,
|
|
102
|
+
message: `ambiguous code pointer: "${p.raw}" matches ${ambiguousWith.length} files ` +
|
|
103
|
+
`(${ambiguousWith.join(', ')}) — cite a longer suffix so it names one` +
|
|
104
|
+
(searched.length > 0
|
|
105
|
+
? `; also not under external root(s) ${searched.join(', ')}`
|
|
106
|
+
: ''),
|
|
107
|
+
sourceText: p.doc.text,
|
|
108
|
+
context: ctx,
|
|
109
|
+
}),
|
|
110
|
+
];
|
|
81
111
|
if (targetRel === null && externalRoots.length > 0) {
|
|
82
112
|
// Not in-repo, external roots configured (plan 0069 Phase 5).
|
|
83
113
|
const present = presentExternalRoots(externalRoots);
|
|
84
|
-
if (present.length === 0)
|
|
114
|
+
if (present.length === 0) {
|
|
115
|
+
// The documented skip (plan 0069) is for a pointer whose only hope
|
|
116
|
+
// was an absent checkout. An ambiguous one already failed in-repo,
|
|
117
|
+
// and that has nothing to do with the missing root.
|
|
118
|
+
if (ambiguousWith.length > 0)
|
|
119
|
+
return ambiguousViolation();
|
|
85
120
|
return []; // skipped, not passed — caller reports the scope
|
|
121
|
+
}
|
|
86
122
|
for (const rootDir of present) {
|
|
87
123
|
const abs = join(rootDir, wanted);
|
|
88
124
|
let external;
|
|
@@ -107,6 +143,8 @@ export function pointerResolves(corpus, options = {}) {
|
|
|
107
143
|
}
|
|
108
144
|
return []; // grounds in the external root
|
|
109
145
|
}
|
|
146
|
+
if (ambiguousWith.length > 0)
|
|
147
|
+
return ambiguousViolation(present);
|
|
110
148
|
return [
|
|
111
149
|
mdViolation({
|
|
112
150
|
element: `${p.doc.relPath} → ${p.raw}`,
|
|
@@ -118,18 +156,25 @@ export function pointerResolves(corpus, options = {}) {
|
|
|
118
156
|
}),
|
|
119
157
|
];
|
|
120
158
|
}
|
|
159
|
+
if (targetRel === null && ambiguousWith.length > 0) {
|
|
160
|
+
// Ambiguous: the path matches several files, so it names none of them.
|
|
161
|
+
// No autofix on purpose — the repair is a judgement about which file
|
|
162
|
+
// was meant, and a deterministic rewrite would pick whichever sorted
|
|
163
|
+
// first and call it fixed. Message carries the remedy because
|
|
164
|
+
// `because` is rule-level and one rule covers all three classes.
|
|
165
|
+
return ambiguousViolation();
|
|
166
|
+
}
|
|
121
167
|
if (targetRel === null) {
|
|
122
168
|
// Broken. If exactly one file uniquely resolves the shortened path, the
|
|
123
169
|
// repair is deterministic — attach an autofix that expands it to the
|
|
124
170
|
// full repo-relative path (plan 0066). Ambiguous → no fix.
|
|
125
|
-
const
|
|
126
|
-
const fix = m.kind === 'unique' && m.file !== wanted
|
|
171
|
+
const fix = match.kind === 'unique' && match.file !== wanted
|
|
127
172
|
? {
|
|
128
173
|
file: p.doc.file,
|
|
129
174
|
start: p.pathStart,
|
|
130
175
|
end: p.pathEnd,
|
|
131
|
-
replacement:
|
|
132
|
-
describe: `rewrite pointer "${p.path}" → "${
|
|
176
|
+
replacement: match.file,
|
|
177
|
+
describe: `rewrite pointer "${p.path}" → "${match.file}"`,
|
|
133
178
|
}
|
|
134
179
|
: undefined;
|
|
135
180
|
return [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pointer-resolve.js","sourceRoot":"","sources":["../../src/conditions/pointer-resolve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"pointer-resolve.js","sourceRoot":"","sources":["../../src/conditions/pointer-resolve.ts"],"names":[],"mappings":"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"}
|
package/dist/corpus.d.ts
CHANGED
|
@@ -6,9 +6,16 @@ export interface CorpusOptions {
|
|
|
6
6
|
/** Globs (repo-relative, POSIX) selecting the markdown files to load, e.g. `['docs/**']`. */
|
|
7
7
|
readonly roots: readonly string[];
|
|
8
8
|
/**
|
|
9
|
-
* Globs marking frozen folders — historical records
|
|
10
|
-
*
|
|
11
|
-
*
|
|
9
|
+
* Globs marking frozen folders — historical records held to their own time
|
|
10
|
+
* rather than to today's code.
|
|
11
|
+
*
|
|
12
|
+
* What this actually does, stated after the previous wording was measured
|
|
13
|
+
* false (bug 0253): a frozen document's LINKS are still checked, and its code
|
|
14
|
+
* pointers are excluded from `pointers().areLive()` — so they are not examined
|
|
15
|
+
* at all. They are not "reported but never failed"; nothing reports them.
|
|
16
|
+
*
|
|
17
|
+
* Defaults to the near-universal `completed`/`archived`; extend for your
|
|
18
|
+
* project's lifecycle folders (`delivered`, `wont-do`, …).
|
|
12
19
|
*/
|
|
13
20
|
readonly frozen?: readonly string[];
|
|
14
21
|
/**
|
package/dist/corpus.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"corpus.d.ts","sourceRoot":"","sources":["../src/corpus.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"corpus.d.ts","sourceRoot":"","sources":["../src/corpus.ts"],"names":[],"mappings":"AAOA,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAEpE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,6FAA6F;IAC7F,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;IACjC;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACnC;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACnC,qFAAqF;IACrF,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,MAAM;IACrB,4BAA4B;IAC5B,SAAS,IAAI,UAAU,EAAE,CAAA;IACzB,6CAA6C;IAC7C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,gGAAgG;IAChG,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;CACxC;AAKD;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAwCrD"}
|
package/dist/corpus.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { walkFiles } from '@nielspeter/eess/internal';
|
|
2
|
+
import { readFileSync } from 'node:fs';
|
|
3
|
+
import { join } from 'node:path';
|
|
3
4
|
import { fromMarkdown } from 'mdast-util-from-markdown';
|
|
4
5
|
import { gfm } from 'micromark-extension-gfm';
|
|
5
6
|
import { gfmFromMarkdown } from 'mdast-util-gfm';
|
|
@@ -7,30 +8,6 @@ import picomatch from 'picomatch';
|
|
|
7
8
|
import { buildDocument } from './model/document.js';
|
|
8
9
|
const DEFAULT_FROZEN = ['**/completed/**', '**/archived/**'];
|
|
9
10
|
const BUILTIN_IGNORE = ['node_modules', '.git', 'dist', 'coverage', '.output', '.nuxt', '.vercel'];
|
|
10
|
-
function toPosix(p) {
|
|
11
|
-
return sep === '/' ? p : p.split(sep).join('/');
|
|
12
|
-
}
|
|
13
|
-
function walk(dir, root, ignoreDirs, acc) {
|
|
14
|
-
let entries;
|
|
15
|
-
try {
|
|
16
|
-
entries = readdirSync(dir, { withFileTypes: true });
|
|
17
|
-
}
|
|
18
|
-
catch (err) {
|
|
19
|
-
void err; // unreadable dir (permissions, dangling symlink) — deliberately skipped
|
|
20
|
-
return;
|
|
21
|
-
}
|
|
22
|
-
for (const e of entries) {
|
|
23
|
-
const abs = join(dir, e.name);
|
|
24
|
-
if (e.isDirectory()) {
|
|
25
|
-
if (ignoreDirs.has(e.name))
|
|
26
|
-
continue;
|
|
27
|
-
walk(abs, root, ignoreDirs, acc);
|
|
28
|
-
}
|
|
29
|
-
else if (e.isFile()) {
|
|
30
|
-
acc.push(toPosix(relative(root, abs)));
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
11
|
/**
|
|
35
12
|
* Load a markdown corpus. Walks `roots` from `cwd`, parses each `.md` file with
|
|
36
13
|
* GFM enabled, and records frozen membership per file. The full repo file tree
|
|
@@ -40,7 +17,8 @@ export function corpus(options) {
|
|
|
40
17
|
const root = options.cwd ?? process.cwd();
|
|
41
18
|
const ignoreDirs = new Set(BUILTIN_IGNORE);
|
|
42
19
|
const allFiles = [];
|
|
43
|
-
|
|
20
|
+
const allFilesWalked = walkFiles(root, root, ignoreDirs);
|
|
21
|
+
allFiles.push(...allFilesWalked);
|
|
44
22
|
const matchesRoot = picomatch([...options.roots]);
|
|
45
23
|
const matchesFrozen = picomatch([...(options.frozen ?? DEFAULT_FROZEN)]);
|
|
46
24
|
const matchesIgnore = options.ignore && options.ignore.length > 0 ? picomatch([...options.ignore]) : () => false;
|
package/dist/corpus.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"corpus.js","sourceRoot":"","sources":["../src/corpus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"corpus.js","sourceRoot":"","sources":["../src/corpus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,SAAS,MAAM,WAAW,CAAA;AACjC,OAAO,EAAE,aAAa,EAAmB,MAAM,qBAAqB,CAAA;AA2CpE,MAAM,cAAc,GAAG,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAA;AAC5D,MAAM,cAAc,GAAG,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,CAAA;AAElG;;;;GAIG;AACH,MAAM,UAAU,MAAM,CAAC,OAAsB;IAC3C,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAA;IACzC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,CAAA;IAE1C,MAAM,QAAQ,GAAa,EAAE,CAAA;IAC7B,MAAM,cAAc,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,CAAA;IACxD,QAAQ,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAA;IAEhC,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;IACjD,MAAM,aAAa,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,cAAc,CAAC,CAAC,CAAC,CAAA;IACxE,MAAM,aAAa,GACjB,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAA;IAE5F,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAA;IACnC,MAAM,MAAM,GAAG,GAAG,EAAE,CAAA;IACpB,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAA;IAElC,MAAM,SAAS,GAAiB,QAAQ;SACrC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;SAC/E,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACX,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QAC3B,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;QACtC,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE;YAC9B,UAAU,EAAE,CAAC,MAAM,CAAC;YACpB,eAAe,EAAE,CAAC,QAAQ,CAAC;SAC5B,CAAC,CAAA;QACF,OAAO,aAAa,CAAC;YACnB,IAAI,EAAE,GAAG;YACT,OAAO,EAAE,GAAG;YACZ,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC;YAC1B,IAAI;YACJ,IAAI,EAAE,IAAI;SACX,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEJ,OAAO;QACL,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS;QAC1B,IAAI;QACJ,SAAS;KACV,CAAA;AACH,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
export { corpus } from './corpus.js';
|
|
2
2
|
export type { CorpusOptions, Corpus } from './corpus.js';
|
|
3
3
|
export type { Predicate, Condition, ConditionContext, ArchFix, PresetReportOptions, PresetBaseOptions, } from '@nielspeter/eess';
|
|
4
|
-
export { RuleBuilder, finishPreset, generateCodeFrame, not, dispatchRule, validateOverrides, } from '@nielspeter/eess';
|
|
4
|
+
export { RuleBuilder, finishPreset, generateCodeFrame, not, dispatchRule, validateOverrides, reportViolations, isArchConfigError, } from '@nielspeter/eess';
|
|
5
5
|
export { correspondence, CorrespondenceBuilder } from '@nielspeter/eess';
|
|
6
|
+
export { collectResult, mergeCollectResults, hasEvidence } from '@nielspeter/eess';
|
|
7
|
+
export type { CollectResult } from '@nielspeter/eess';
|
|
8
|
+
export type { CorrespondenceOptions, RelationSpec, KeyBy } from '@nielspeter/eess';
|
|
6
9
|
export type { MdDocument, MdSection, MdTable, MdCodeBlock } from './model/document.js';
|
|
7
10
|
export type { MdRow, ColumnSpec, RowMatchOptions, RowMatchMode } from './model/rows.js';
|
|
8
11
|
export { matchTableRows } from './model/rows.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAOxD,YAAY,EACV,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,OAAO,EACP,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,GAAG,EACH,YAAY,EACZ,iBAAiB,GAClB,MAAM,kBAAkB,CAAA;AASzB,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAOxD,YAAY,EACV,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,OAAO,EACP,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,GAAG,EACH,YAAY,EACZ,iBAAiB,EAMjB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,kBAAkB,CAAA;AASzB,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AAOxE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAClF,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAMrD,YAAY,EAAE,qBAAqB,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAGlF,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACtF,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AACvF,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAGzD,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAC1D,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAC5D,YAAY,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AACjD,YAAY,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AACjE,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AACrE,YAAY,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAA;AACtE,YAAY,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AAC5E,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAC1D,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AACzE,YAAY,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC7E,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAGnG,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAClE,YAAY,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAA;AACpE,YAAY,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -6,7 +6,13 @@
|
|
|
6
6
|
// from `@nielspeter/eess-md/rules/adr`.
|
|
7
7
|
// Corpus loader
|
|
8
8
|
export { corpus } from './corpus.js';
|
|
9
|
-
export { RuleBuilder, finishPreset, generateCodeFrame, not, dispatchRule, validateOverrides,
|
|
9
|
+
export { RuleBuilder, finishPreset, generateCodeFrame, not, dispatchRule, validateOverrides,
|
|
10
|
+
// Bug 0276, second pass. `finishPreset` was already here; its siblings were
|
|
11
|
+
// not, so a standalone consumer could finish a preset and neither report
|
|
12
|
+
// without throwing nor catch what the seam throws. ADR-008 names
|
|
13
|
+
// `reportViolations` as the one emitter, and ADR-014's configuration findings
|
|
14
|
+
// arrive as an `ArchConfigError` a caller has to recognise.
|
|
15
|
+
reportViolations, isArchConfigError, } from '@nielspeter/eess';
|
|
10
16
|
// `correspondence`/`CorrespondenceBuilder`: not touched by this package's
|
|
11
17
|
// OWN source (so the family.rules.ts code-import scan can't see this gap —
|
|
12
18
|
// review found it manually), but this README's own "Binding a spec table to
|
|
@@ -16,6 +22,13 @@ export { RuleBuilder, finishPreset, generateCodeFrame, not, dispatchRule, valida
|
|
|
16
22
|
// compile against @nielspeter/eess-md alone, the exact second-install this
|
|
17
23
|
// plan exists to close.
|
|
18
24
|
export { correspondence, CorrespondenceBuilder } from '@nielspeter/eess';
|
|
25
|
+
// ADR-014's receipt: this package's own rules merge with it, so a standalone
|
|
26
|
+
// `eess-md` consumer must reach it without a second kernel install (plan 0089).
|
|
27
|
+
//
|
|
28
|
+
// Bug 0276: the merge was here and the CONSTRUCTOR was not, which is the same
|
|
29
|
+
// gap the other way round. A consumer handed a receipt could combine two and not
|
|
30
|
+
// build one. Import-driven `check:family` owed nothing here either.
|
|
31
|
+
export { collectResult, mergeCollectResults, hasEvidence } from '@nielspeter/eess';
|
|
19
32
|
export { matchTableRows } from './model/rows.js';
|
|
20
33
|
// Entry points
|
|
21
34
|
export { docs, DocsRuleBuilder } from './builders/docs.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,EAAE;AACF,iFAAiF;AACjF,gFAAgF;AAChF,gFAAgF;AAChF,wCAAwC;AAExC,gBAAgB;AAChB,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAgBpC,OAAO,EACL,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,GAAG,EACH,YAAY,EACZ,iBAAiB,GAClB,MAAM,kBAAkB,CAAA;AACzB,0EAA0E;AAC1E,2EAA2E;AAC3E,4EAA4E;AAC5E,+DAA+D;AAC/D,6EAA6E;AAC7E,qEAAqE;AACrE,2EAA2E;AAC3E,wBAAwB;AACxB,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,EAAE;AACF,iFAAiF;AACjF,gFAAgF;AAChF,gFAAgF;AAChF,wCAAwC;AAExC,gBAAgB;AAChB,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAgBpC,OAAO,EACL,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,GAAG,EACH,YAAY,EACZ,iBAAiB;AACjB,4EAA4E;AAC5E,yEAAyE;AACzE,iEAAiE;AACjE,8EAA8E;AAC9E,4DAA4D;AAC5D,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,kBAAkB,CAAA;AACzB,0EAA0E;AAC1E,2EAA2E;AAC3E,4EAA4E;AAC5E,+DAA+D;AAC/D,6EAA6E;AAC7E,qEAAqE;AACrE,2EAA2E;AAC3E,wBAAwB;AACxB,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AACxE,6EAA6E;AAC7E,gFAAgF;AAChF,EAAE;AACF,8EAA8E;AAC9E,iFAAiF;AACjF,oEAAoE;AACpE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAYlF,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAGhD,eAAe;AACf,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAC1D,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAG5D,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAErE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAA;AAEtE,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAC1D,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAEzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAExD,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAG7E,oDAAoD;AACpD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAElE,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAA"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Corpus } from '../corpus.js';
|
|
2
|
+
import type { MdDocument } from './document.js';
|
|
3
|
+
/**
|
|
4
|
+
* Every reference in the corpus, each stamped with the document it came from.
|
|
5
|
+
*
|
|
6
|
+
* `links`, `pointers` and `task-items` each walked the corpus and re-attached
|
|
7
|
+
* `doc` to what their collector returned — `no-copy-paste` reported the first
|
|
8
|
+
* two at 100%. The collector is the parameter, which is all that ever differed;
|
|
9
|
+
* even its argument order did (`collectLinks(root, text)` against
|
|
10
|
+
* `extractPointers(text, root)`), which is why this takes a callback rather
|
|
11
|
+
* than a `(root, text)` pair.
|
|
12
|
+
*
|
|
13
|
+
* The stamp is not decoration. An md element's violation is reported at
|
|
14
|
+
* `doc.relPath`, so a reference that loses its document is a finding with no
|
|
15
|
+
* file — unactionable, and ADR-009 rule 2's whole subject. One place to attach
|
|
16
|
+
* it is one place for that to be true.
|
|
17
|
+
*/
|
|
18
|
+
export declare function stampedByDocument<Ref extends object>(corpus: Corpus, collect: (doc: MdDocument) => readonly Ref[]): (Ref & {
|
|
19
|
+
doc: MdDocument;
|
|
20
|
+
})[];
|
|
21
|
+
//# sourceMappingURL=by-document.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"by-document.d.ts","sourceRoot":"","sources":["../../src/model/by-document.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAE/C;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,SAAS,MAAM,EAClD,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,SAAS,GAAG,EAAE,GAC3C,CAAC,GAAG,GAAG;IAAE,GAAG,EAAE,UAAU,CAAA;CAAE,CAAC,EAAE,CAE/B"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Every reference in the corpus, each stamped with the document it came from.
|
|
3
|
+
*
|
|
4
|
+
* `links`, `pointers` and `task-items` each walked the corpus and re-attached
|
|
5
|
+
* `doc` to what their collector returned — `no-copy-paste` reported the first
|
|
6
|
+
* two at 100%. The collector is the parameter, which is all that ever differed;
|
|
7
|
+
* even its argument order did (`collectLinks(root, text)` against
|
|
8
|
+
* `extractPointers(text, root)`), which is why this takes a callback rather
|
|
9
|
+
* than a `(root, text)` pair.
|
|
10
|
+
*
|
|
11
|
+
* The stamp is not decoration. An md element's violation is reported at
|
|
12
|
+
* `doc.relPath`, so a reference that loses its document is a finding with no
|
|
13
|
+
* file — unactionable, and ADR-009 rule 2's whole subject. One place to attach
|
|
14
|
+
* it is one place for that to be true.
|
|
15
|
+
*/
|
|
16
|
+
export function stampedByDocument(corpus, collect) {
|
|
17
|
+
return corpus.documents().flatMap((doc) => collect(doc).map((ref) => ({ ...ref, doc })));
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=by-document.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"by-document.js","sourceRoot":"","sources":["../../src/model/by-document.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,iBAAiB,CAC/B,MAAc,EACd,OAA4C;IAE5C,OAAO,MAAM,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;AAC1F,CAAC"}
|
package/dist/model/document.d.ts
CHANGED
|
@@ -50,7 +50,7 @@ export interface MdDocument {
|
|
|
50
50
|
readonly file: string;
|
|
51
51
|
/** Repo-relative path (POSIX separators), e.g. `docs/adr/0001-x.md` */
|
|
52
52
|
readonly relPath: string;
|
|
53
|
-
/** In a frozen folder — historical record;
|
|
53
|
+
/** In a frozen folder — historical record; links still checked, pointers not examined (bug 0253) */
|
|
54
54
|
readonly frozen: boolean;
|
|
55
55
|
/** Raw source text */
|
|
56
56
|
readonly text: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../src/model/document.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAe,MAAM,OAAO,CAAA;AAE9C;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,uCAAuC;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,2CAA2C;IAC3C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,4CAA4C;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,iCAAiC;IACjC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;IAClC,qDAAqD;IACrD,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAAA;IAC7C;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAA;IACpC,0CAA0C;IAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,iFAAiF;IACjF,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAA;CACxC;AAED,kDAAkD;AAClD,MAAM,WAAW,WAAW;IAC1B,yEAAyE;IACzE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,4BAA4B;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,2CAA2C;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,UAAU;IACzB,yBAAyB;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,uEAAuE;IACvE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,
|
|
1
|
+
{"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../src/model/document.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAe,MAAM,OAAO,CAAA;AAE9C;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,uCAAuC;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,2CAA2C;IAC3C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,4CAA4C;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,iCAAiC;IACjC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;IAClC,qDAAqD;IACrD,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAAA;IAC7C;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAA;IACpC,0CAA0C;IAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,iFAAiF;IACjF,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAA;CACxC;AAED,kDAAkD;AAClD,MAAM,WAAW,WAAW;IAC1B,yEAAyE;IACzE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,4BAA4B;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,2CAA2C;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,UAAU;IACzB,yBAAyB;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,uEAAuE;IACvE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,oGAAoG;IACpG,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB,sBAAsB;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,QAAQ,EAAE,SAAS,SAAS,EAAE,CAAA;IACvC,QAAQ,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,CAAA;IACnC,6DAA6D;IAC7D,QAAQ,CAAC,UAAU,EAAE,SAAS,WAAW,EAAE,CAAA;IAC3C,uCAAuC;IACvC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;CACpB;AAsBD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,OAAO,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,IAAI,CAAA;CACX,GAAG,UAAU,CAwCb"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"links.d.ts","sourceRoot":"","sources":["../../src/model/links.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAS,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"links.d.ts","sourceRoot":"","sources":["../../src/model/links.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAS,MAAM,OAAO,CAAA;AAExC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAE/C,gFAAgF;AAChF,MAAM,WAAW,SAAS;IACxB,8EAA8E;IAC9E,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,iBAAiB;IACjB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,2CAA2C;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,8EAA8E;IAC9E,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAC1B;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACzB;AAKD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE,CAoCrE;AAED,qGAAqG;AACrG,MAAM,WAAW,MAAO,SAAQ,SAAS;IACvC,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAA;CACzB"}
|
package/dist/model/links.js
CHANGED
|
@@ -1,12 +1,6 @@
|
|
|
1
|
+
import { textOf } from './text-of.js';
|
|
1
2
|
// A URL is external if it has a scheme (`https:`, `mailto:`) or is protocol-relative.
|
|
2
3
|
const EXTERNAL_RE = /^([a-z][a-z0-9+.-]*:|\/\/)/i;
|
|
3
|
-
function textOf(node) {
|
|
4
|
-
if ('value' in node && typeof node.value === 'string')
|
|
5
|
-
return node.value;
|
|
6
|
-
if ('children' in node)
|
|
7
|
-
return node.children.map((c) => textOf(c)).join('');
|
|
8
|
-
return '';
|
|
9
|
-
}
|
|
10
4
|
/**
|
|
11
5
|
* Collect inline markdown links (`[text](url)`) from a document tree. Links
|
|
12
6
|
* inside fenced code are not parsed as `link` nodes by mdast, so they are
|
package/dist/model/links.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"links.js","sourceRoot":"","sources":["../../src/model/links.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"links.js","sourceRoot":"","sources":["../../src/model/links.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAuBrC,sFAAsF;AACtF,MAAM,WAAW,GAAG,6BAA6B,CAAA;AAEjD;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,IAAU,EAAE,MAAe;IACtD,MAAM,GAAG,GAAgB,EAAE,CAAA;IAC3B,MAAM,KAAK,GAAG,CAAC,IAAW,EAAQ,EAAE;QAClC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACzB,yEAAyE;YACzE,wEAAwE;YACxE,2EAA2E;YAC3E,2EAA2E;YAC3E,2CAA2C;YAC3C,IAAI,QAA4B,CAAA;YAChC,IAAI,MAA0B,CAAA;YAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAA;YAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAA;YACxC,IAAI,MAAM,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC3E,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;gBAC1C,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBACrC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;oBACb,QAAQ,GAAG,QAAQ,GAAG,GAAG,CAAA;oBACzB,MAAM,GAAG,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAA;gBACrC,CAAC;YACH,CAAC;YACD,GAAG,CAAC,IAAI,CAAC;gBACP,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC;gBAClB,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC;gBACpC,QAAQ,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;gBACpC,QAAQ;gBACR,MAAM;aACP,CAAC,CAAA;QACJ,CAAC;QACD,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;YACvB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ;gBAAE,KAAK,CAAC,KAAK,CAAC,CAAA;QACjD,CAAC;IACH,CAAC,CAAA;IACD,KAAK,CAAC,IAAI,CAAC,CAAA;IACX,OAAO,GAAG,CAAA;AACZ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-items.d.ts","sourceRoot":"","sources":["../../src/model/task-items.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAS,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"task-items.d.ts","sourceRoot":"","sources":["../../src/model/task-items.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAS,MAAM,OAAO,CAAA;AAGxC,kEAAkE;AAClE,MAAM,WAAW,aAAa;IAC5B,yEAAyE;IACzE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,qFAAqF;IACrF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,0DAA0D;IAC1D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,GAAG,aAAa,EAAE,CAoB5D"}
|
package/dist/model/task-items.js
CHANGED
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
if ('value' in node && typeof node.value === 'string')
|
|
3
|
-
return node.value;
|
|
4
|
-
if ('children' in node)
|
|
5
|
-
return node.children.map((c) => textOf(c)).join('');
|
|
6
|
-
return '';
|
|
7
|
-
}
|
|
1
|
+
import { textOf } from './text-of.js';
|
|
8
2
|
/**
|
|
9
3
|
* Collect GFM task-list items from a document tree.
|
|
10
4
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-items.js","sourceRoot":"","sources":["../../src/model/task-items.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"task-items.js","sourceRoot":"","sources":["../../src/model/task-items.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAYrC;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAU;IACzC,MAAM,GAAG,GAAoB,EAAE,CAAA;IAC/B,MAAM,KAAK,GAAG,CAAC,IAAW,EAAE,YAAqB,EAAQ,EAAE;QACzD,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAC/B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ;gBAAE,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;YACrD,OAAM;QACR,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAClE,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAA;gBACxE,MAAM,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;gBAC5E,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,CAAA;YACjF,CAAC;QACH,CAAC;QACD,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;YACvB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ;gBAAE,KAAK,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;QAC/D,CAAC;IACH,CAAC,CAAA;IACD,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IAClB,OAAO,GAAG,CAAA;AACZ,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Nodes } from 'mdast';
|
|
2
|
+
/**
|
|
3
|
+
* The visible text of an mdast node, with formatting flattened.
|
|
4
|
+
*
|
|
5
|
+
* `[**bold** link](url)` is three nodes; a rule that reads a link's text wants
|
|
6
|
+
* `bold link`. Recursing over `children` and concatenating leaf `value`s is what
|
|
7
|
+
* produces that, and returning `''` for a node with neither — an image, a
|
|
8
|
+
* thematic break — is deliberate: it contributes nothing to the reader's text.
|
|
9
|
+
*
|
|
10
|
+
* Extracted because `links.ts` and `task-items.ts` each carried a byte-identical
|
|
11
|
+
* copy, which `no-copy-paste` reported at 100%.
|
|
12
|
+
*/
|
|
13
|
+
export declare function textOf(node: Nodes): string;
|
|
14
|
+
//# sourceMappingURL=text-of.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-of.d.ts","sourceRoot":"","sources":["../../src/model/text-of.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAElC;;;;;;;;;;GAUG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,KAAK,GAAG,MAAM,CAI1C"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The visible text of an mdast node, with formatting flattened.
|
|
3
|
+
*
|
|
4
|
+
* `[**bold** link](url)` is three nodes; a rule that reads a link's text wants
|
|
5
|
+
* `bold link`. Recursing over `children` and concatenating leaf `value`s is what
|
|
6
|
+
* produces that, and returning `''` for a node with neither — an image, a
|
|
7
|
+
* thematic break — is deliberate: it contributes nothing to the reader's text.
|
|
8
|
+
*
|
|
9
|
+
* Extracted because `links.ts` and `task-items.ts` each carried a byte-identical
|
|
10
|
+
* copy, which `no-copy-paste` reported at 100%.
|
|
11
|
+
*/
|
|
12
|
+
export function textOf(node) {
|
|
13
|
+
if ('value' in node && typeof node.value === 'string')
|
|
14
|
+
return node.value;
|
|
15
|
+
if ('children' in node)
|
|
16
|
+
return node.children.map((c) => textOf(c)).join('');
|
|
17
|
+
return '';
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=text-of.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-of.js","sourceRoot":"","sources":["../../src/model/text-of.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,MAAM,UAAU,MAAM,CAAC,IAAW;IAChC,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,KAAK,CAAA;IACxE,IAAI,UAAU,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC3E,OAAO,EAAE,CAAA;AACX,CAAC"}
|
package/dist/rules/adr.d.ts
CHANGED
|
@@ -29,6 +29,14 @@ export interface AdrEnforcementOptions extends PresetBaseOptions {
|
|
|
29
29
|
* resolve; a soft-tier clause declared as such passes.
|
|
30
30
|
*
|
|
31
31
|
* Emits per-rule ids so `overrides` can downgrade/disable individual checks.
|
|
32
|
+
*
|
|
33
|
+
* The citation check resolves two forms — a backticked file path and an
|
|
34
|
+
* `it('…')` title. A Mechanism cell that cites something else (a rule id in
|
|
35
|
+
* your own architecture tool, a CI job) is not resolved here, and this preset
|
|
36
|
+
* takes no plugin for it: what counts as a live id is your fact, not the
|
|
37
|
+
* corpus's. Compose that check from `rows()` + `correspondence()` against the
|
|
38
|
+
* set you hold — the worked recipe is "Citing something that is not a file or
|
|
39
|
+
* a test" on the `eess-md` docs page.
|
|
32
40
|
*/
|
|
33
41
|
export declare function adrEnforcement(corpus: Corpus, options?: AdrEnforcementOptions): ArchViolation[];
|
|
34
42
|
//# sourceMappingURL=adr.d.ts.map
|
package/dist/rules/adr.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adr.d.ts","sourceRoot":"","sources":["../../src/rules/adr.ts"],"names":[],"mappings":"AAEA,OAAO,EAKL,KAAK,aAAa,EAClB,KAAK,iBAAiB,
|
|
1
|
+
{"version":3,"file":"adr.d.ts","sourceRoot":"","sources":["../../src/rules/adr.ts"],"names":[],"mappings":"AAEA,OAAO,EAKL,KAAK,aAAa,EAClB,KAAK,iBAAiB,EAEvB,MAAM,kBAAkB,CAAA;AACzB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAW1C;;;;;GAKG;AACH,MAAM,WAAW,qBAAsB,SAAQ,iBAAiB;IAC9D,uDAAuD;IACvD,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;IACrB,sEAAsE;IACtE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAClC,kEAAkE;IAClE,QAAQ,CAAC,OAAO,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IACtE,iDAAiD;IACjD,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAClC,wFAAwF;IACxF,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAA;CACnC;AAuDD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,qBAA0B,GAClC,aAAa,EAAE,CAgDjB"}
|
package/dist/rules/adr.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { existsSync, readFileSync } from 'node:fs';
|
|
2
2
|
import { join } from 'node:path';
|
|
3
|
-
import { dispatchRule, finishPreset, validateOverrides, not, } from '@nielspeter/eess';
|
|
3
|
+
import { dispatchRule, finishPreset, validateOverrides, not, mergeCollectResults, } from '@nielspeter/eess';
|
|
4
4
|
import { docs } from '../builders/docs.js';
|
|
5
5
|
import { haveNameMatching } from '../predicates/document.js';
|
|
6
6
|
import { haveTableRowsSatisfying } from '../conditions/table-rows.js';
|
|
@@ -61,6 +61,14 @@ function validateCitations(ctx, corpus) {
|
|
|
61
61
|
* resolve; a soft-tier clause declared as such passes.
|
|
62
62
|
*
|
|
63
63
|
* Emits per-rule ids so `overrides` can downgrade/disable individual checks.
|
|
64
|
+
*
|
|
65
|
+
* The citation check resolves two forms — a backticked file path and an
|
|
66
|
+
* `it('…')` title. A Mechanism cell that cites something else (a rule id in
|
|
67
|
+
* your own architecture tool, a CI job) is not resolved here, and this preset
|
|
68
|
+
* takes no plugin for it: what counts as a live id is your fact, not the
|
|
69
|
+
* corpus's. Compose that check from `rows()` + `correspondence()` against the
|
|
70
|
+
* set you hold — the worked recipe is "Citing something that is not a file or
|
|
71
|
+
* a test" on the `eess-md` docs page.
|
|
64
72
|
*/
|
|
65
73
|
export function adrEnforcement(corpus, options = {}) {
|
|
66
74
|
const dir = options.dir ?? 'docs/adr/**';
|
|
@@ -85,9 +93,13 @@ export function adrEnforcement(corpus, options = {}) {
|
|
|
85
93
|
.satisfy(notIndexDoc)
|
|
86
94
|
.should()
|
|
87
95
|
.satisfy(haveTableRowsSatisfying({ section, columns, row: (ctx) => validateTier(ctx, tiers) }));
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
96
|
+
// The kernel merge, not a spread: a spread drops each receipt's evidence, and
|
|
97
|
+
// this preset's own all-off case (every rule id overridden `'off'`) is then
|
|
98
|
+
// indistinguishable from a healthy run that found nothing — bug 0261, measured
|
|
99
|
+
// in this very function.
|
|
100
|
+
const parts = [
|
|
101
|
+
dispatchRule(declared, 'adr/enforcement-declared', 'error', options.overrides),
|
|
102
|
+
dispatchRule(validTiers, 'adr/valid-tiers', 'error', options.overrides),
|
|
91
103
|
];
|
|
92
104
|
if (verify) {
|
|
93
105
|
const citations = docs(corpus)
|
|
@@ -96,8 +108,8 @@ export function adrEnforcement(corpus, options = {}) {
|
|
|
96
108
|
.satisfy(notIndexDoc)
|
|
97
109
|
.should()
|
|
98
110
|
.satisfy(haveTableRowsSatisfying({ section, columns, row: (ctx) => validateCitations(ctx, corpus) }));
|
|
99
|
-
|
|
111
|
+
parts.push(dispatchRule(citations, 'adr/citations-resolve', 'error', options.overrides));
|
|
100
112
|
}
|
|
101
|
-
return finishPreset(
|
|
113
|
+
return finishPreset(mergeCollectResults(parts), options);
|
|
102
114
|
}
|
|
103
115
|
//# sourceMappingURL=adr.js.map
|
package/dist/rules/adr.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adr.js","sourceRoot":"","sources":["../../src/rules/adr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,GAAG,
|
|
1
|
+
{"version":3,"file":"adr.js","sourceRoot":"","sources":["../../src/rules/adr.ts"],"names":[],"mappings":"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"}
|
package/dist/rules/ledger.d.ts
CHANGED
|
@@ -74,6 +74,16 @@ export interface HonestyAtCloseOptions extends PresetReportOptions {
|
|
|
74
74
|
*/
|
|
75
75
|
readonly expectEmptyHeaders?: boolean;
|
|
76
76
|
}
|
|
77
|
+
/**
|
|
78
|
+
* The `State:` token in the header region, with its line — one scan, shared by
|
|
79
|
+
* the done-item test and the placement check so the two cannot disagree about
|
|
80
|
+
* what a document says it is.
|
|
81
|
+
*/
|
|
82
|
+
export declare function findState(text: string, vocabulary: readonly string[]): {
|
|
83
|
+
state?: string;
|
|
84
|
+
raw: string;
|
|
85
|
+
line: number;
|
|
86
|
+
} | null;
|
|
77
87
|
/**
|
|
78
88
|
* Run the honesty-at-close gate over a corpus. Throws `ArchRuleError` on any
|
|
79
89
|
* finding. Placement is checked on every item; ledger reconciliation only on
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ledger.d.ts","sourceRoot":"","sources":["../../src/rules/ledger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,mBAAmB,
|
|
1
|
+
{"version":3,"file":"ledger.d.ts","sourceRoot":"","sources":["../../src/rules/ledger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,mBAAmB,EAAuB,MAAM,kBAAkB,CAAA;AAE9F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAE1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAK1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,WAAW,qBAAsB,SAAQ,mBAAmB;IAChE;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACxC,sEAAsE;IACtE,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACvC;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAA;IAC/B;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACnC;;;;OAIG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC3C;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAA;CACtC;AA+ED;;;;GAIG;AACH,wBAAgB,SAAS,CACvB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,SAAS,MAAM,EAAE,GAC5B;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CA6BtD;AA+ND;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsFG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,qBAA0B,GAClC,aAAa,EAAE,CA2EjB;AAED,2DAA2D;AAC3D,MAAM,WAAW,WAAW;IAC1B,mDAAmD;IACnD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,wEAAwE;IACxE,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAA;IAClC,4EAA4E;IAC5E,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,qFAAqF;IACrF,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,qBAA0B,GAAG,WAAW,CAqB5F"}
|
package/dist/rules/ledger.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { finishPreset } from '@nielspeter/eess';
|
|
1
|
+
import { finishPreset, mergeCollectResults } from '@nielspeter/eess';
|
|
2
2
|
import { collectTaskItems } from '../model/task-items.js';
|
|
3
3
|
import { docs } from '../builders/docs.js';
|
|
4
4
|
import { taskItems } from '../builders/task-items.js';
|
|
@@ -76,7 +76,7 @@ function stripFencedCode(s) {
|
|
|
76
76
|
* the done-item test and the placement check so the two cannot disagree about
|
|
77
77
|
* what a document says it is.
|
|
78
78
|
*/
|
|
79
|
-
function findState(text, vocabulary) {
|
|
79
|
+
export function findState(text, vocabulary) {
|
|
80
80
|
const known = stateMatcher(vocabulary);
|
|
81
81
|
const canonical = (m) => vocabulary.find((s) => s.toLowerCase().replace(/’/g, "'") === m.toLowerCase().replace(/’/g, "'")) ?? m;
|
|
82
82
|
const lines = stripFencedCode(text).split('\n');
|
|
@@ -405,7 +405,9 @@ export function honestyAtClose(corpus, options = {}) {
|
|
|
405
405
|
if (!anyDeferredDisposedBoxOnADoneItem)
|
|
406
406
|
deferredLieRule = deferredLieRule.expectEmpty();
|
|
407
407
|
const deferredLieViolations = deferredLieRule.violations();
|
|
408
|
-
|
|
408
|
+
// Merged, not spread: all three are receipts, and a spread would discard every
|
|
409
|
+
// `examined` this preset just earned — the denominator `check:ledger` prints.
|
|
410
|
+
return finishPreset(mergeCollectResults([headerViolations, silentOpenBoxViolations, deferredLieViolations]), options);
|
|
409
411
|
}
|
|
410
412
|
/**
|
|
411
413
|
* The denominator, computed by the preset itself.
|
package/dist/rules/ledger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ledger.js","sourceRoot":"","sources":["../../src/rules/ledger.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ledger.js","sourceRoot":"","sources":["../../src/rules/ledger.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nielspeter/eess-md",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "Architecture testing for a Markdown corpus — the Markdown dialect of the eess family. Links resolve, code pointers ground, ADRs declare enforcement.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -34,6 +34,7 @@
|
|
|
34
34
|
"license": "MIT",
|
|
35
35
|
"scripts": {
|
|
36
36
|
"prepublishOnly": "npm run build",
|
|
37
|
+
"prebuild": "rm -rf dist",
|
|
37
38
|
"build": "tsc -p tsconfig.build.json",
|
|
38
39
|
"test": "vitest run",
|
|
39
40
|
"test:watch": "vitest",
|
|
@@ -48,7 +49,7 @@
|
|
|
48
49
|
"eess"
|
|
49
50
|
],
|
|
50
51
|
"dependencies": {
|
|
51
|
-
"@nielspeter/eess": "^0.
|
|
52
|
+
"@nielspeter/eess": "^0.5.0",
|
|
52
53
|
"mdast-util-from-markdown": "^2.0.3",
|
|
53
54
|
"mdast-util-gfm": "^3.1.0",
|
|
54
55
|
"micromark-extension-gfm": "^3.0.0",
|