@descent-vtt/spec-guard 0.4.0 → 0.5.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/CHANGELOG.md +65 -0
- package/README.md +205 -27
- package/dist/cli.d.ts +8 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +40 -7
- package/dist/cli.js.map +1 -1
- package/dist/comments.d.ts +23 -4
- package/dist/comments.d.ts.map +1 -1
- package/dist/comments.js +40 -14
- package/dist/comments.js.map +1 -1
- package/dist/engine.d.ts +9 -0
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +23 -5
- package/dist/engine.js.map +1 -1
- package/dist/imports.d.ts +28 -4
- package/dist/imports.d.ts.map +1 -1
- package/dist/imports.js +36 -4
- package/dist/imports.js.map +1 -1
- package/dist/index.d.ts +11 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -5
- package/dist/index.js.map +1 -1
- package/dist/parser.d.ts.map +1 -1
- package/dist/parser.js +28 -23
- package/dist/parser.js.map +1 -1
- package/dist/polyglot.d.ts +129 -0
- package/dist/polyglot.d.ts.map +1 -0
- package/dist/polyglot.js +544 -0
- package/dist/polyglot.js.map +1 -0
- package/dist/reporter.d.ts +41 -0
- package/dist/reporter.d.ts.map +1 -1
- package/dist/reporter.js +154 -1
- package/dist/reporter.js.map +1 -1
- package/dist/runner.d.ts +37 -2
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +244 -23
- package/dist/runner.js.map +1 -1
- package/dist/text.d.ts +26 -0
- package/dist/text.d.ts.map +1 -0
- package/dist/text.js +69 -0
- package/dist/text.js.map +1 -0
- package/dist/types.d.ts +76 -2
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/types.d.ts
CHANGED
|
@@ -76,6 +76,31 @@ export interface SearchOptions {
|
|
|
76
76
|
/** Absolute file paths to exclude from results (the spec files themselves). */
|
|
77
77
|
excludeFiles: ReadonlySet<string>;
|
|
78
78
|
}
|
|
79
|
+
/**
|
|
80
|
+
* One line of a debt baseline: a file that is allowed to violate, and by how
|
|
81
|
+
* much.
|
|
82
|
+
*
|
|
83
|
+
* Counts, not line numbers. A line number is invalidated by every edit above
|
|
84
|
+
* it, which would turn the baseline into a file nobody can keep current; a
|
|
85
|
+
* per-file count survives refactoring and still catches the two cases that
|
|
86
|
+
* matter - a new file starting to violate, and an existing one violating more.
|
|
87
|
+
* What it does not catch is a violation moving within a file it already
|
|
88
|
+
* covers, and ADR-0009 says so rather than implying otherwise.
|
|
89
|
+
*/
|
|
90
|
+
export interface BaselineEntry {
|
|
91
|
+
/** Path relative to the root, forward slashes. */
|
|
92
|
+
path: string;
|
|
93
|
+
/** How many matches this file is allowed to contribute. */
|
|
94
|
+
declared: number;
|
|
95
|
+
}
|
|
96
|
+
/** How strictly the baseline has to match reality. */
|
|
97
|
+
export type RatchetMode = 'two-sided' | 'one-way';
|
|
98
|
+
/** A baseline entry that claims more violations than the code has. */
|
|
99
|
+
export interface StaleBaselineEntry {
|
|
100
|
+
path: string;
|
|
101
|
+
declared: number;
|
|
102
|
+
found: number;
|
|
103
|
+
}
|
|
79
104
|
/** Inclusive bounds an actual count must satisfy. */
|
|
80
105
|
export interface Bounds {
|
|
81
106
|
min?: number;
|
|
@@ -101,10 +126,18 @@ export interface SearchResult {
|
|
|
101
126
|
commentMatches: number;
|
|
102
127
|
/** Files whose language has no known comment syntax, so nothing was excluded. */
|
|
103
128
|
unclassifiedFiles: number;
|
|
104
|
-
/** What was not inspected, and why. Never empty for a reason nobody stated. */
|
|
105
|
-
scope: ScopeLedger;
|
|
106
129
|
/** Up to `maxSnippets` match locations, in file order. */
|
|
107
130
|
matches: MatchLocation[];
|
|
131
|
+
/**
|
|
132
|
+
* How many matches each matching file holds.
|
|
133
|
+
*
|
|
134
|
+
* Uncapped, unlike `matches`, because a baseline has to be evaluated against
|
|
135
|
+
* every file that matched rather than the first few - a ratchet that only saw
|
|
136
|
+
* the first five violations would let the sixth through.
|
|
137
|
+
*/
|
|
138
|
+
fileCounts: ReadonlyMap<string, number>;
|
|
139
|
+
/** What was not inspected, and why. Never empty for a reason nobody stated. */
|
|
140
|
+
scope: ScopeLedger;
|
|
108
141
|
/** Engine that produced this result. */
|
|
109
142
|
engine: EngineName;
|
|
110
143
|
}
|
|
@@ -127,8 +160,29 @@ export interface Assertion {
|
|
|
127
160
|
search?: SearchOptions;
|
|
128
161
|
/** Present on the import assertions. */
|
|
129
162
|
imports?: ImportQuery;
|
|
163
|
+
/**
|
|
164
|
+
* Known violations that do not count. Empty when the directive declared none.
|
|
165
|
+
*
|
|
166
|
+
* Always present rather than optional: `baseline ?? []` at the two places
|
|
167
|
+
* that read it was a branch nothing could reach, because resolution always
|
|
168
|
+
* fills this in. An unreachable fallback is indistinguishable from a
|
|
169
|
+
* reachable one when you are reading the code.
|
|
170
|
+
*/
|
|
171
|
+
baseline: readonly BaselineEntry[];
|
|
172
|
+
/** Whether a baseline entry that no longer matches fails the run. */
|
|
173
|
+
ratchet: RatchetMode;
|
|
130
174
|
/** Targets that do not exist on disk. */
|
|
131
175
|
missingTargets: string[];
|
|
176
|
+
/**
|
|
177
|
+
* Tolerate a scope containing no files.
|
|
178
|
+
*
|
|
179
|
+
* Off by default. An assertion over an empty scope passes without inspecting
|
|
180
|
+
* anything, which is indistinguishable in a report from an assertion that
|
|
181
|
+
* inspected a thousand files and found nothing - and one of those two is a
|
|
182
|
+
* lie. Set by `allow-empty="true"` for the rules where covering nothing yet
|
|
183
|
+
* is the honest state of the world.
|
|
184
|
+
*/
|
|
185
|
+
allowEmpty: boolean;
|
|
132
186
|
}
|
|
133
187
|
export interface AssertionResult {
|
|
134
188
|
ok: boolean;
|
|
@@ -156,6 +210,26 @@ export interface AssertionResult {
|
|
|
156
210
|
unclassifiedFiles: number;
|
|
157
211
|
/** What this assertion did not inspect, and why. */
|
|
158
212
|
scope: ScopeLedger;
|
|
213
|
+
/**
|
|
214
|
+
* Matches excluded because a baseline entry accounted for them.
|
|
215
|
+
*
|
|
216
|
+
* Reported for the same reason `commentMatches` is: this is the other way an
|
|
217
|
+
* assertion can pass without the code being clean, and a reader is entitled
|
|
218
|
+
* to know it happened.
|
|
219
|
+
*/
|
|
220
|
+
baselinedMatches: number;
|
|
221
|
+
/** Baseline entries that claim more violations than the code has. */
|
|
222
|
+
staleBaseline: StaleBaselineEntry[];
|
|
223
|
+
/**
|
|
224
|
+
* How many matches each matching file holds, in file order.
|
|
225
|
+
*
|
|
226
|
+
* The raw material for writing a baseline, which is why it is not capped the
|
|
227
|
+
* way `matches` is.
|
|
228
|
+
*/
|
|
229
|
+
fileMatches: Array<{
|
|
230
|
+
file: string;
|
|
231
|
+
count: number;
|
|
232
|
+
}>;
|
|
159
233
|
engine?: EngineName;
|
|
160
234
|
durationMs: number;
|
|
161
235
|
}
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE3D;;;;;GAKG;AAEH,0DAA0D;AAC1D,MAAM,MAAM,aAAa,GACrB,gBAAgB,GAChB,cAAc,GACd,gBAAgB,GAChB,uBAAuB,GACvB,qBAAqB,CAAC;AAE1B,oDAAoD;AACpD,MAAM,WAAW,WAAW;IAC1B,2DAA2D;IAC3D,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,mEAAmE;IACnE,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,yDAAyD;AACzD,MAAM,WAAW,cAAc;IAC7B,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,0EAA0E;IAC1E,YAAY,EAAE,MAAM,CAAC;IACrB,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,oEAAoE;AACpE,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,aAAa,CAAC;IACpB,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7C,QAAQ,EAAE,cAAc,CAAC;IACzB,uDAAuD;IACvD,GAAG,EAAE,MAAM,CAAC;CACb;AAED,gFAAgF;AAChF,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,cAAc,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,MAAM,EAAE,cAAc,EAAE,CAAC;CAC1B;AAED,sEAAsE;AACtE,MAAM,WAAW,aAAa;IAC5B,0EAA0E;IAC1E,KAAK,EAAE,OAAO,CAAC;IACf,iEAAiE;IACjE,IAAI,EAAE,OAAO,CAAC;IACd,iCAAiC;IACjC,UAAU,EAAE,OAAO,CAAC;IACpB,wEAAwE;IACxE,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB;;;OAGG;IACH,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB;;;;;OAKG;IACH,cAAc,EAAE,OAAO,CAAC;IACxB;;;;;;OAMG;IACH,KAAK,EAAE,WAAW,CAAC;IACnB,+EAA+E;IAC/E,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACnC;AAED,qDAAqD;AACrD,MAAM,WAAW,MAAM;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,yDAAyD;AACzD,MAAM,WAAW,aAAa;IAC5B,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,MAAM,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,uDAAuD;IACvD,KAAK,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,cAAc,EAAE,MAAM,CAAC;IACvB,iFAAiF;IACjF,iBAAiB,EAAE,MAAM,CAAC;IAC1B,+EAA+E;IAC/E,KAAK,EAAE,WAAW,CAAC;IACnB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|