@descent-vtt/spec-guard 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/CHANGELOG.md +162 -0
- package/README.md +201 -14
- package/dist/cli.d.ts +2 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +10 -0
- package/dist/cli.js.map +1 -1
- package/dist/comments.d.ts.map +1 -1
- package/dist/comments.js +41 -19
- package/dist/comments.js.map +1 -1
- package/dist/engine.d.ts +117 -6
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +279 -150
- package/dist/engine.js.map +1 -1
- package/dist/glob.d.ts +11 -1
- package/dist/glob.d.ts.map +1 -1
- package/dist/glob.js +20 -5
- package/dist/glob.js.map +1 -1
- package/dist/graph.d.ts +124 -0
- package/dist/graph.d.ts.map +1 -0
- package/dist/graph.js +241 -0
- package/dist/graph.js.map +1 -0
- package/dist/imports.d.ts.map +1 -1
- package/dist/imports.js +10 -4
- package/dist/imports.js.map +1 -1
- package/dist/index.d.ts +6 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/layers.d.ts +72 -0
- package/dist/layers.d.ts.map +1 -0
- package/dist/layers.js +102 -0
- package/dist/layers.js.map +1 -0
- package/dist/parser.d.ts +36 -1
- package/dist/parser.d.ts.map +1 -1
- package/dist/parser.js +189 -4
- package/dist/parser.js.map +1 -1
- package/dist/polyglot.d.ts +11 -1
- package/dist/polyglot.d.ts.map +1 -1
- package/dist/polyglot.js +21 -17
- package/dist/polyglot.js.map +1 -1
- package/dist/reporter.d.ts.map +1 -1
- package/dist/reporter.js +62 -5
- package/dist/reporter.js.map +1 -1
- package/dist/runner.d.ts +25 -0
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +318 -93
- package/dist/runner.js.map +1 -1
- package/dist/text.d.ts +9 -1
- package/dist/text.d.ts.map +1 -1
- package/dist/text.js +29 -18
- package/dist/text.js.map +1 -1
- package/dist/types.d.ts +60 -2
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/comments.js
CHANGED
|
@@ -110,31 +110,53 @@ const NO_COMMENTS = {
|
|
|
110
110
|
strings: [],
|
|
111
111
|
};
|
|
112
112
|
/** Extension to comment syntax. Anything absent is left unclassified. */
|
|
113
|
-
const BY_EXTENSION = new Map(
|
|
114
|
-
...['.js', '.mjs', '.cjs', '.jsx', '.ts', '.mts', '.cts', '.tsx'].map((extension) => [extension, JS_LIKE]),
|
|
115
|
-
...['.c', '.h', '.cc', '.cpp', '.cxx', '.hpp', '.java', '.kt', '.kts', '.scala', '.swift', '.dart', '.php', '.m', '.mm', '.zig'].map((extension) => [extension, C_LIKE]),
|
|
116
|
-
...['.cs', '.csx'].map((extension) => [extension, C_SHARP]),
|
|
117
|
-
...['.rs'].map((extension) => [extension, RUST]),
|
|
118
|
-
...['.go'].map((extension) => [extension, GO]),
|
|
119
|
-
...['.py', '.pyi', '.rb', '.sh', '.bash', '.zsh', '.yaml', '.yml', '.toml', '.tf', '.pl', '.r'].map((extension) => [extension, HASH]),
|
|
120
|
-
...['.sql', '.lua', '.hs', '.elm'].map((extension) => [extension, SQL_LIKE]),
|
|
121
|
-
...['.html', '.htm', '.xml', '.svg', '.vue', '.svelte', '.md', '.markdown'].map((extension) => [extension, MARKUP]),
|
|
122
|
-
// .jsonc is named for the comments it allows, so it gets the C-style reader.
|
|
123
|
-
...['.jsonc'].map((extension) => [extension, C_LIKE]),
|
|
124
|
-
...['.json', '.txt', '.csv', '.tsv', '.lock', '.log'].map((extension) => [extension, NO_COMMENTS]),
|
|
125
|
-
]);
|
|
126
|
-
/** The comment syntax for a path, or null when the language is unknown. */
|
|
127
|
-
export function syntaxFor(filePath) {
|
|
128
|
-
return BY_EXTENSION.get(path.extname(filePath).toLowerCase()) ?? null;
|
|
129
|
-
}
|
|
113
|
+
const BY_EXTENSION = new Map();
|
|
130
114
|
/**
|
|
131
115
|
* The same profiles, addressed by name instead of by extension.
|
|
132
116
|
*
|
|
133
117
|
* For callers that already know what language they are looking at and must not
|
|
134
118
|
* re-derive it from the path. Two ways of answering "which language is this"
|
|
135
|
-
* is one more than the number that can be right
|
|
119
|
+
* is one more than the number that can be right, so this is filled from the
|
|
120
|
+
* same calls rather than from a second list.
|
|
136
121
|
*/
|
|
137
|
-
const BY_NAME = new Map(
|
|
122
|
+
const BY_NAME = new Map();
|
|
123
|
+
/**
|
|
124
|
+
* Records the files one profile covers.
|
|
125
|
+
*
|
|
126
|
+
* A call per language rather than a table of rows, and the shape is chosen for
|
|
127
|
+
* a specific reason. This table has been written three ways: ten spread
|
|
128
|
+
* `.map()` calls, then an array of `[extensions, syntax]` pairs, and now this.
|
|
129
|
+
* The first two share a failure mode - a mutation inside the callback, or a row
|
|
130
|
+
* emptied to `[]`, makes this module throw while it is loading, and a mutant
|
|
131
|
+
* that stops a module loading produces no test results at all, which the
|
|
132
|
+
* mutation runner reads as "no test killed it". Twenty such mutants have sat in
|
|
133
|
+
* this table across the two earlier shapes, looking like untested code while
|
|
134
|
+
* the suite caught every one of them.
|
|
135
|
+
*
|
|
136
|
+
* Emptying an argument list here cannot throw. It produces a table that is
|
|
137
|
+
* simply *wrong* - `syntaxFor('a.cs')` answers null - which is something a test
|
|
138
|
+
* can see, and one does. See ADR-0003.
|
|
139
|
+
*/
|
|
140
|
+
function register(syntax, extensions) {
|
|
141
|
+
BY_NAME.set(syntax.name, syntax);
|
|
142
|
+
for (const extension of extensions)
|
|
143
|
+
BY_EXTENSION.set(extension, syntax);
|
|
144
|
+
}
|
|
145
|
+
register(JS_LIKE, ['.js', '.mjs', '.cjs', '.jsx', '.ts', '.mts', '.cts', '.tsx']);
|
|
146
|
+
register(C_LIKE, ['.c', '.h', '.cc', '.cpp', '.cxx', '.hpp', '.java', '.kt', '.kts', '.scala', '.swift', '.dart', '.php', '.m', '.mm', '.zig']);
|
|
147
|
+
register(C_SHARP, ['.cs', '.csx']);
|
|
148
|
+
register(RUST, ['.rs']);
|
|
149
|
+
register(GO, ['.go']);
|
|
150
|
+
register(HASH, ['.py', '.pyi', '.rb', '.sh', '.bash', '.zsh', '.yaml', '.yml', '.toml', '.tf', '.pl', '.r']);
|
|
151
|
+
register(SQL_LIKE, ['.sql', '.lua', '.hs', '.elm']);
|
|
152
|
+
register(MARKUP, ['.html', '.htm', '.xml', '.svg', '.vue', '.svelte', '.md', '.markdown']);
|
|
153
|
+
// .jsonc is named for the comments it allows, so it gets the C-style reader.
|
|
154
|
+
register(C_LIKE, ['.jsonc']);
|
|
155
|
+
register(NO_COMMENTS, ['.json', '.txt', '.csv', '.tsv', '.lock', '.log']);
|
|
156
|
+
/** The comment syntax for a path, or null when the language is unknown. */
|
|
157
|
+
export function syntaxFor(filePath) {
|
|
158
|
+
return BY_EXTENSION.get(path.extname(filePath).toLowerCase()) ?? null;
|
|
159
|
+
}
|
|
138
160
|
export function syntaxNamed(name) {
|
|
139
161
|
return BY_NAME.get(name) ?? null;
|
|
140
162
|
}
|
package/dist/comments.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"comments.js","sourceRoot":"","sources":["../src/comments.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"comments.js","sourceRoot":"","sources":["../src/comments.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAqB7B,MAAM,MAAM,GAA0B;IACpC,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE;IACvC,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE;CACxC,CAAC;AAEF,MAAM,MAAM,GAAkB;IAC5B,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,CAAC,IAAI,CAAC;IACZ,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACrB,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,MAAM;CAChB,CAAC;AAEF,MAAM,OAAO,GAAkB;IAC7B,GAAG,MAAM;IACT,IAAI,EAAE,YAAY;IAClB,OAAO,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;CAC9D,CAAC;AAEF,MAAM,OAAO,GAAkB;IAC7B,GAAG,MAAM;IACT,IAAI,EAAE,IAAI;IACV,iDAAiD;IACjD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,MAAM,CAAC;CAChE,CAAC;AAEF,MAAM,IAAI,GAAkB;IAC1B,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,CAAC,IAAI,CAAC;IACZ,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACrB,+EAA+E;IAC/E,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE;QACP,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;QAC3C,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE;QACzC,GAAG,MAAM;KACV;CACF,CAAC;AAEF,MAAM,EAAE,GAAkB;IACxB,GAAG,MAAM;IACT,IAAI,EAAE,IAAI;IACV,OAAO,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;CAC/D,CAAC;AAEF,MAAM,IAAI,GAAkB;IAC1B,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,CAAC,GAAG,CAAC;IACX,KAAK,EAAE,EAAE;IACT,MAAM,EAAE,KAAK;IACb,0EAA0E;IAC1E,mDAAmD;IACnD,OAAO,EAAE;QACP,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE;QAC3C,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE;QAC3C,GAAG,MAAM;KACV;CACF,CAAC;AAEF,MAAM,QAAQ,GAAkB;IAC9B,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,CAAC,IAAI,CAAC;IACZ,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACrB,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,MAAM;CAChB,CAAC;AAEF,MAAM,MAAM,GAAkB;IAC5B,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,EAAE;IACR,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACxB,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,EAAE;CACZ,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,WAAW,GAAkB;IACjC,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,EAAE;IACR,KAAK,EAAE,EAAE;IACT,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,EAAE;CACZ,CAAC;AAEF,yEAAyE;AACzE,MAAM,YAAY,GAAG,IAAI,GAAG,EAAyB,CAAC;AAEtD;;;;;;;GAOG;AACH,MAAM,OAAO,GAAG,IAAI,GAAG,EAAyB,CAAC;AAEjD;;;;;;;;;;;;;;;;GAgBG;AACH,SAAS,QAAQ,CAAC,MAAqB,EAAE,UAA6B;IACpE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACjC,KAAK,MAAM,SAAS,IAAI,UAAU;QAAE,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAC1E,CAAC;AAED,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAClF,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AAChJ,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AACnC,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACxB,QAAQ,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACtB,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AAC7G,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AACpD,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;AAC3F,6EAA6E;AAC7E,QAAQ,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC7B,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AAE1E,2EAA2E;AAC3E,MAAM,UAAU,SAAS,CAAC,QAAgB;IACxC,OAAO,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,IAAI,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AACnC,CAAC;AAWD,qEAAqE;AACrE,SAAS,WAAW,CAAC,MAAc,EAAE,EAAU,EAAE,IAAgB;IAC/D,IAAI,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IAClC,OAAO,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QAC7B,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;YAC1C,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QACD,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC;YAAE,OAAO,EAAE,GAAG,EAAE,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QAClG,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAC/C,CAAC;AAED,2EAA2E;AAC3E,SAAS,UAAU,CAAC,MAAc,EAAE,EAAU,EAAE,IAA+B,EAAE,MAAe;IAC9F,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC;IAC3B,IAAI,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;IAC7B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,OAAO,KAAK,GAAG,MAAM,CAAC,MAAM,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC1C,IAAI,MAAM,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;YAC7C,KAAK,IAAI,CAAC,CAAC;YACX,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC;YACrB,SAAS;QACX,CAAC;QACD,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC;YACpC,KAAK,IAAI,CAAC,CAAC;YACX,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC;YACtB,SAAS;QACX,CAAC;QACD,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC;AAC7C,CAAC;AAmBD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,SAAS,CAAC,MAAc,EAAE,MAAqB;IAC7D,MAAM,QAAQ,GAAmB,EAAE,CAAC;IACpC,MAAM,OAAO,GAAmB,EAAE,CAAC;IACnC,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,OAAO,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,KAAK,CAAC;QACpB,MAAM,UAAU,GAAG,CAAC,KAAa,EAAW,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAE/E,0EAA0E;QAC1E,4EAA4E;QAC5E,wEAAwE;QACxE,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACxE,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;YACpD,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,YAAY,GAAG,IAAI,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;YACjE,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5B,wEAAwE;gBACxE,wDAAwD;gBACxD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAC5C,KAAK,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;gBACjD,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACN,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;gBAClE,IAAI,SAAS,EAAE,CAAC;oBACd,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;oBACjE,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;oBACjB,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;oBAC9B,IAAI,CAAC,IAAI,CAAC,MAAM;wBAAE,YAAY,GAAG,IAAI,CAAC;gBACxC,CAAC;YACH,CAAC;QACH,CAAC;QAED,uEAAuE;QACvE,IAAI,KAAK,IAAI,KAAK;YAAE,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;AAC7C,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,aAAa,CAAC,MAAc,EAAE,MAAqB;IACjE,OAAO,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC;AAC5C,CAAC;AAeD,MAAM,YAAY,GAAgB;IAChC,UAAU,EAAE,KAAK;IACjB,MAAM,EAAE,IAAI;IACZ,SAAS,EAAE,GAAG,EAAE,CAAC,KAAK;CACvB,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,MAAc,EAAE,QAAgB;IAChE,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IACnC,IAAI,CAAC,MAAM;QAAE,OAAO,YAAY,CAAC;IAEjC,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,OAAO;QACL,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,MAAM,CAAC,IAAI;QACnB,SAAS,CAAC,MAAc;YACtB,IAAI,GAAG,GAAG,CAAC,CAAC;YACZ,IAAI,IAAI,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;YAC7B,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;gBACnB,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC9B,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAiB,CAAC;gBACjD,IAAI,MAAM,GAAG,KAAK;oBAAE,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC;qBAC9B,IAAI,MAAM,IAAI,GAAG;oBAAE,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;;oBACjC,OAAO,IAAI,CAAC;YACnB,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/engine.d.ts
CHANGED
|
@@ -19,18 +19,70 @@
|
|
|
19
19
|
* flags are answered by a single pass.
|
|
20
20
|
*/
|
|
21
21
|
import { type CommentMask } from './comments.js';
|
|
22
|
+
import { type DirectoryReader } from './glob.js';
|
|
22
23
|
import { type SkippedPath } from './scope.js';
|
|
23
24
|
import type { EngineName, MatchLocation, SearchOptions, SearchResult } from './types.js';
|
|
24
25
|
/** Files larger than this are skipped by both engines, keeping them in sync. */
|
|
25
26
|
export declare const MAX_FILE_SIZE: number;
|
|
26
|
-
|
|
27
|
+
/**
|
|
28
|
+
* One rule about file size, in one place.
|
|
29
|
+
*
|
|
30
|
+
* It used to be written twice and spelled differently each time - `size <=
|
|
31
|
+
* MAX_FILE_SIZE` where a file was admitted and `size > MAX_FILE_SIZE` where one
|
|
32
|
+
* was skipped - so the boundary was defined by two expressions that had to be
|
|
33
|
+
* kept complementary by hand. ripgrep is given the same number as
|
|
34
|
+
* `--max-filesize`, which is also inclusive, so all three now agree by
|
|
35
|
+
* construction rather than by inspection.
|
|
36
|
+
*/
|
|
37
|
+
export declare function withinSizeLimit(size: number): boolean;
|
|
38
|
+
/** Hard cap on collected locations; the reporter only ever shows a handful. */
|
|
39
|
+
export declare const MAX_COLLECTED_MATCHES = 500;
|
|
40
|
+
/** Most files read at once. Enough to keep a disk busy, few enough to be polite. */
|
|
41
|
+
export declare const MAX_CONCURRENT_READS = 16;
|
|
42
|
+
/** How many readers to start for a file list: never more than there are files. */
|
|
43
|
+
export declare function readConcurrency(fileCount: number): number;
|
|
44
|
+
/**
|
|
45
|
+
* The target list for a request that names none: the root itself.
|
|
46
|
+
*
|
|
47
|
+
* Shared by the walker and the ripgrep argv rather than written out at each,
|
|
48
|
+
* because the two must agree on what "no target" means - ripgrep given an empty
|
|
49
|
+
* path argument searches nothing at all, and a walk given one searches
|
|
50
|
+
* everything.
|
|
51
|
+
*/
|
|
52
|
+
export declare const ROOT_TARGETS: readonly string[];
|
|
53
|
+
/**
|
|
54
|
+
* Total ordering on POSIX paths, ties included.
|
|
55
|
+
*
|
|
56
|
+
* Three call sites used to inline `a < b ? -1 : 1`, which is correct only
|
|
57
|
+
* because no caller can produce two equal paths - and therefore had no
|
|
58
|
+
* behaviour to test at the tie. Stating the tie makes the function total, the
|
|
59
|
+
* ordering identical, and the comparison something a test can pin down.
|
|
60
|
+
*/
|
|
61
|
+
export declare function comparePaths(a: string, b: string): number;
|
|
62
|
+
/**
|
|
63
|
+
* Everything a walk of the tree depends on - which is everything except the
|
|
64
|
+
* pattern, since enumeration never looks inside a file.
|
|
65
|
+
*
|
|
66
|
+
* A separate type because callers that only want the file list had to invent a
|
|
67
|
+
* symbol to ask for one, and an invented value is a value no test can be wrong
|
|
68
|
+
* about. The import assertions passed `symbol: ""`.
|
|
69
|
+
*/
|
|
70
|
+
export interface WalkRequest {
|
|
27
71
|
/** Absolute root directory. All targets are resolved against it. */
|
|
28
72
|
root: string;
|
|
29
|
-
/** Literal string or regular expression source. */
|
|
30
|
-
symbol: string;
|
|
31
73
|
/** Existing target paths, relative to root, POSIX separators. */
|
|
32
74
|
targets: string[];
|
|
33
75
|
options: SearchOptions;
|
|
76
|
+
/**
|
|
77
|
+
* Ignored here. Declared optional so that a `SearchRequest` written inline -
|
|
78
|
+
* which every existing caller of `enumerateCandidates` does - still satisfies
|
|
79
|
+
* TypeScript's excess-property check.
|
|
80
|
+
*/
|
|
81
|
+
symbol?: string;
|
|
82
|
+
}
|
|
83
|
+
export interface SearchRequest extends WalkRequest {
|
|
84
|
+
/** Literal string or regular expression source. */
|
|
85
|
+
symbol: string;
|
|
34
86
|
}
|
|
35
87
|
export interface Engine {
|
|
36
88
|
readonly name: EngineName;
|
|
@@ -43,6 +95,16 @@ export interface Engine {
|
|
|
43
95
|
}
|
|
44
96
|
export type EnginePreference = 'auto' | 'ripgrep' | 'javascript';
|
|
45
97
|
export declare function escapeRegExp(value: string): string;
|
|
98
|
+
/**
|
|
99
|
+
* Trims a line to snippet length, and takes the line terminator off it.
|
|
100
|
+
*
|
|
101
|
+
* The terminator is a lone CR, not a newline: the caller slices up to the
|
|
102
|
+
* `\n`, so on a CRLF file the carriage return is the one byte that survives.
|
|
103
|
+
* This used to strip `\r?\n$`, which cannot match anything the caller passes -
|
|
104
|
+
* so every snippet from a Windows-authored file carried a CR into the report,
|
|
105
|
+
* where it returns the terminal cursor to column 0 and overwrites the line.
|
|
106
|
+
*/
|
|
107
|
+
export declare function truncate(value: string): string;
|
|
46
108
|
/**
|
|
47
109
|
* Orders matches by path, then by line. ripgrep searches in parallel and emits
|
|
48
110
|
* files in no fixed order, so this is what makes snippet output stable.
|
|
@@ -55,6 +117,17 @@ interface Tally {
|
|
|
55
117
|
/** Matches skipped because they were inside a comment. */
|
|
56
118
|
commentCount: number;
|
|
57
119
|
}
|
|
120
|
+
/**
|
|
121
|
+
* One walk, plus everything that decides what counts as a match within it.
|
|
122
|
+
*
|
|
123
|
+
* Exported because the runner groups assertions before handing them here, and
|
|
124
|
+
* it used to do so against a list of its own that was missing four of these
|
|
125
|
+
* fields. Being too coarse there costs no correctness - `sharesOnePass` checks
|
|
126
|
+
* again and declines - but it did cost the batching: a group of five where two
|
|
127
|
+
* requests disagreed was refused as a whole and run as five separate searches,
|
|
128
|
+
* rather than as the three-and-two it actually was.
|
|
129
|
+
*/
|
|
130
|
+
export declare function passKey(request: SearchRequest): string;
|
|
58
131
|
/** Runs requests through the batch API when the engine has one. */
|
|
59
132
|
export declare function runSearches(engine: Engine, requests: SearchRequest[]): Promise<SearchResult[]>;
|
|
60
133
|
export declare function resetRipgrepProbe(): void;
|
|
@@ -81,6 +154,25 @@ export declare function findRipgrep(): Promise<string | null>;
|
|
|
81
154
|
* must not be undone by a user's `glob="*.ts"`.
|
|
82
155
|
*/
|
|
83
156
|
export declare function buildRipgrepArgs(request: SearchRequest, patterns?: readonly string[]): string[];
|
|
157
|
+
/**
|
|
158
|
+
* What a run says when ripgrep exits with a code that is neither 0 nor 1.
|
|
159
|
+
*
|
|
160
|
+
* Separate from the spawn because it is the only part a reader ever sees, and
|
|
161
|
+
* inside the promise the only way to produce one was to break a real
|
|
162
|
+
* subprocess - so the exact text, including whether the trailing newline every
|
|
163
|
+
* command writes ends up in the middle of the sentence, was never asserted.
|
|
164
|
+
*/
|
|
165
|
+
export declare function ripgrepFailureMessage(code: number | null, errors: string): string;
|
|
166
|
+
/**
|
|
167
|
+
* Turns ripgrep's `--files-with-matches --null` output into candidate files.
|
|
168
|
+
*
|
|
169
|
+
* Split out from the spawn so that the parsing has somewhere to be tested from:
|
|
170
|
+
* inside the promise it could only be reached by running a real subprocess,
|
|
171
|
+
* which is why the separator handling, the exclusion filter and the ordering
|
|
172
|
+
* were all covered only incidentally, by whatever a real tree happened to
|
|
173
|
+
* contain.
|
|
174
|
+
*/
|
|
175
|
+
export declare function parseRipgrepFiles(stdout: string, root: string, excludeFiles: ReadonlySet<string>): CandidateFile[];
|
|
84
176
|
/**
|
|
85
177
|
* Pulls the paths out of ripgrep's stderr.
|
|
86
178
|
*
|
|
@@ -105,7 +197,7 @@ export interface Enumeration {
|
|
|
105
197
|
exceeded: boolean;
|
|
106
198
|
bytes: number;
|
|
107
199
|
/** Paths the walk declined to inspect, with the reason for each. */
|
|
108
|
-
skipped: SkippedPath[];
|
|
200
|
+
skipped: readonly SkippedPath[];
|
|
109
201
|
}
|
|
110
202
|
export interface EnumerationBudget {
|
|
111
203
|
maxFiles: number;
|
|
@@ -128,7 +220,15 @@ export declare const ANY_FILE_PROBE: EnumerationBudget;
|
|
|
128
220
|
* work, so finding out a tree is "too big" costs a bounded number of stats
|
|
129
221
|
* rather than a full traversal.
|
|
130
222
|
*/
|
|
131
|
-
export declare function enumerateCandidates(request:
|
|
223
|
+
export declare function enumerateCandidates(request: WalkRequest, budget?: EnumerationBudget,
|
|
224
|
+
/**
|
|
225
|
+
* Directory reader, forwarded to the walk. Exists for the same reason
|
|
226
|
+
* `walkFiles` takes one: the interesting behaviour here is what the
|
|
227
|
+
* enumeration does with a directory it *cannot* read, and there is no
|
|
228
|
+
* portable way to create one - Windows has no chmod, and a permission bit set
|
|
229
|
+
* by a test is a permission bit a failed test leaves behind.
|
|
230
|
+
*/
|
|
231
|
+
readDirectory?: DirectoryReader): Promise<Enumeration>;
|
|
132
232
|
/** Counts matches in one file and records per-line snippets. */
|
|
133
233
|
export declare function scanContent(content: string, relativePath: string, regexp: RegExp,
|
|
134
234
|
/**
|
|
@@ -159,14 +259,25 @@ export declare const javascriptEngine: BatchEngine;
|
|
|
159
259
|
* The budget is set just below each crossover, so choosing JavaScript is never
|
|
160
260
|
* the slower option by more than a few milliseconds, while a small tree on
|
|
161
261
|
* Windows avoids a spawn that would cost ten times the whole search.
|
|
262
|
+
*
|
|
263
|
+
* Taking the platform as an argument rather than reading it: a decision that is
|
|
264
|
+
* explicitly about two platforms cannot be verified on one of them if the other
|
|
265
|
+
* branch is only reachable by being that other platform. Both are now asserted
|
|
266
|
+
* everywhere the suite runs.
|
|
162
267
|
*/
|
|
268
|
+
export declare function smallTreeBudget(platform: NodeJS.Platform): EnumerationBudget;
|
|
163
269
|
export declare const SMALL_TREE_BUDGET: EnumerationBudget;
|
|
164
270
|
/** Exported so the code list can be asserted; EACCES and friends are not
|
|
165
271
|
* reproducible on demand from a real spawn. */
|
|
166
272
|
export declare function isMissingBinary(error: unknown): boolean;
|
|
167
273
|
/** Resolves the engine to use, honouring an explicit preference. */
|
|
168
274
|
export declare function resolveEngine(preference?: EnginePreference): Promise<Engine>;
|
|
169
|
-
|
|
275
|
+
/**
|
|
276
|
+
* `searchBatch` is required rather than optional: `createCachedEngine` always
|
|
277
|
+
* supplies one, and typing it as maybe-absent only meant every caller that
|
|
278
|
+
* wanted it wrote a cast asserting what the factory already guaranteed.
|
|
279
|
+
*/
|
|
280
|
+
export type CachedEngine = Engine & Required<Pick<Engine, 'searchBatch'>> & {
|
|
170
281
|
fallbacks: string[];
|
|
171
282
|
};
|
|
172
283
|
/**
|
package/dist/engine.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAMH,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
|