gurkencheck 0.0.6 → 0.0.9
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 +134 -3
- package/dist/config-parser.d.ts.map +1 -1
- package/dist/config-parser.js +7 -1
- package/dist/config-parser.js.map +1 -1
- package/dist/diagnostics.d.ts +34 -0
- package/dist/diagnostics.d.ts.map +1 -0
- package/dist/diagnostics.js +53 -0
- package/dist/diagnostics.js.map +1 -0
- package/dist/exit-codes.d.ts +10 -0
- package/dist/exit-codes.d.ts.map +1 -0
- package/dist/exit-codes.js +10 -0
- package/dist/exit-codes.js.map +1 -0
- package/dist/feature-finder.d.ts +38 -0
- package/dist/feature-finder.d.ts.map +1 -1
- package/dist/feature-finder.js +86 -8
- package/dist/feature-finder.js.map +1 -1
- package/dist/formatters/index.d.ts +44 -4
- package/dist/formatters/index.d.ts.map +1 -1
- package/dist/formatters/index.js +52 -15
- package/dist/formatters/index.js.map +1 -1
- package/dist/formatters/stylish.d.ts +3 -0
- package/dist/formatters/stylish.d.ts.map +1 -1
- package/dist/formatters/stylish.js +32 -1
- package/dist/formatters/stylish.js.map +1 -1
- package/dist/formatters/tap.d.ts +14 -0
- package/dist/formatters/tap.d.ts.map +1 -1
- package/dist/formatters/tap.js +22 -7
- package/dist/formatters/tap.js.map +1 -1
- package/dist/gherkin/parse.d.ts +42 -1
- package/dist/gherkin/parse.d.ts.map +1 -1
- package/dist/gherkin/parse.js +68 -3
- package/dist/gherkin/parse.js.map +1 -1
- package/dist/index.d.ts +27 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -5
- package/dist/index.js.map +1 -1
- package/dist/linter.d.ts +31 -3
- package/dist/linter.d.ts.map +1 -1
- package/dist/linter.js +82 -15
- package/dist/linter.js.map +1 -1
- package/dist/logger.d.ts +2 -0
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +4 -0
- package/dist/logger.js.map +1 -1
- package/dist/main.d.ts +9 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +158 -31
- package/dist/main.js.map +1 -1
- package/dist/rules/no-dupe-feature-names.d.ts.map +1 -1
- package/dist/rules/no-dupe-feature-names.js +26 -13
- package/dist/rules/no-dupe-feature-names.js.map +1 -1
- package/dist/rules/no-dupe-file-names.d.ts.map +1 -1
- package/dist/rules/no-dupe-file-names.js +32 -17
- package/dist/rules/no-dupe-file-names.js.map +1 -1
- package/dist/rules/no-dupe-scenario-names.d.ts.map +1 -1
- package/dist/rules/no-dupe-scenario-names.js +34 -22
- package/dist/rules/no-dupe-scenario-names.js.map +1 -1
- package/dist/rules.d.ts +41 -3
- package/dist/rules.d.ts.map +1 -1
- package/dist/rules.js +112 -4
- package/dist/rules.js.map +1 -1
- package/dist/stats/collect.d.ts +31 -0
- package/dist/stats/collect.d.ts.map +1 -0
- package/dist/stats/collect.js +249 -0
- package/dist/stats/collect.js.map +1 -0
- package/dist/stats/command.d.ts +4 -0
- package/dist/stats/command.d.ts.map +1 -0
- package/dist/stats/command.js +113 -0
- package/dist/stats/command.js.map +1 -0
- package/dist/stats/format/index.d.ts +25 -0
- package/dist/stats/format/index.d.ts.map +1 -0
- package/dist/stats/format/index.js +25 -0
- package/dist/stats/format/index.js.map +1 -0
- package/dist/stats/format/json.d.ts +10 -0
- package/dist/stats/format/json.d.ts.map +1 -0
- package/dist/stats/format/json.js +5 -0
- package/dist/stats/format/json.js.map +1 -0
- package/dist/stats/format/markdown.d.ts +8 -0
- package/dist/stats/format/markdown.d.ts.map +1 -0
- package/dist/stats/format/markdown.js +123 -0
- package/dist/stats/format/markdown.js.map +1 -0
- package/dist/stats/format/shared.d.ts +34 -0
- package/dist/stats/format/shared.d.ts.map +1 -0
- package/dist/stats/format/shared.js +37 -0
- package/dist/stats/format/shared.js.map +1 -0
- package/dist/stats/format/text.d.ts +5 -0
- package/dist/stats/format/text.d.ts.map +1 -0
- package/dist/stats/format/text.js +175 -0
- package/dist/stats/format/text.js.map +1 -0
- package/dist/stats/index.d.ts +21 -0
- package/dist/stats/index.d.ts.map +1 -0
- package/dist/stats/index.js +17 -0
- package/dist/stats/index.js.map +1 -0
- package/dist/stats/normalise.d.ts +38 -0
- package/dist/stats/normalise.d.ts.map +1 -0
- package/dist/stats/normalise.js +65 -0
- package/dist/stats/normalise.js.map +1 -0
- package/dist/stats/similar.d.ts +61 -0
- package/dist/stats/similar.d.ts.map +1 -0
- package/dist/stats/similar.js +173 -0
- package/dist/stats/similar.js.map +1 -0
- package/dist/stats/types.d.ts +159 -0
- package/dist/stats/types.d.ts.map +1 -0
- package/dist/stats/types.js +10 -0
- package/dist/stats/types.js.map +1 -0
- package/dist/types.d.ts +47 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/util/glob.d.ts +18 -0
- package/dist/util/glob.d.ts.map +1 -1
- package/dist/util/glob.js +126 -22
- package/dist/util/glob.js.map +1 -1
- package/dist/util/stream.d.ts +31 -0
- package/dist/util/stream.d.ts.map +1 -0
- package/dist/util/stream.js +67 -0
- package/dist/util/stream.js.map +1 -0
- package/dist/watch.d.ts +36 -0
- package/dist/watch.d.ts.map +1 -0
- package/dist/watch.js +203 -0
- package/dist/watch.js.map +1 -0
- package/package.json +1 -1
package/dist/formatters/index.js
CHANGED
|
@@ -15,8 +15,8 @@ import { pathToFileURL } from 'node:url';
|
|
|
15
15
|
import { printResults as json } from './json.js';
|
|
16
16
|
import { printResults as junit } from './junit.js';
|
|
17
17
|
import { printResults as sarif } from './sarif.js';
|
|
18
|
-
import { printResults as stylish } from './stylish.js';
|
|
19
|
-
import { printResults as tap } from './tap.js';
|
|
18
|
+
import { printResults as stylish, startRun as streamStylish } from './stylish.js';
|
|
19
|
+
import { printResults as tap, startRun as streamTap } from './tap.js';
|
|
20
20
|
/** The formats accepted by `--format` without having to be loaded. */
|
|
21
21
|
export const FORMATTERS = {
|
|
22
22
|
stylish,
|
|
@@ -28,6 +28,38 @@ export const FORMATTERS = {
|
|
|
28
28
|
xunit: junit,
|
|
29
29
|
};
|
|
30
30
|
export const DEFAULT_FORMAT = 'stylish';
|
|
31
|
+
/**
|
|
32
|
+
* The formats that can be written as the run goes on.
|
|
33
|
+
*
|
|
34
|
+
* Not every format can. json, sarif and junit are each a single document with
|
|
35
|
+
* a root element and counts over the whole run, so there is nothing to write
|
|
36
|
+
* until the run is over; they stay as they are rather than being bent into a
|
|
37
|
+
* shape that does not suit them.
|
|
38
|
+
*/
|
|
39
|
+
export const STREAMING_FORMATTERS = {
|
|
40
|
+
stylish: streamStylish,
|
|
41
|
+
tap: streamTap,
|
|
42
|
+
};
|
|
43
|
+
/** The streaming formatter for a format name, when that format has one. */
|
|
44
|
+
export function getStreamingFormatter(format) {
|
|
45
|
+
return STREAMING_FORMATTERS[format ?? DEFAULT_FORMAT];
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* The streaming formatter for a name, a path or a package, when there is one.
|
|
49
|
+
*
|
|
50
|
+
* A formatter of your own joins in by exporting `startRun`, a function
|
|
51
|
+
* returning `{start?, file, end?}`. Without one it is used as it always was,
|
|
52
|
+
* with the whole run at once.
|
|
53
|
+
*/
|
|
54
|
+
export async function loadStreamingFormatter(format, cwd = process.cwd()) {
|
|
55
|
+
const builtIn = getStreamingFormatter(format);
|
|
56
|
+
if (builtIn !== undefined || getFormatter(format) !== undefined) {
|
|
57
|
+
return builtIn;
|
|
58
|
+
}
|
|
59
|
+
const module = await loadFormatterModule(format, cwd);
|
|
60
|
+
const startRun = module['startRun'];
|
|
61
|
+
return typeof startRun === 'function' ? startRun : undefined;
|
|
62
|
+
}
|
|
31
63
|
/** The formatter for a built-in format name, or `undefined` for anything else. */
|
|
32
64
|
export function getFormatter(format) {
|
|
33
65
|
return FORMATTERS[format ?? DEFAULT_FORMAT];
|
|
@@ -36,19 +68,11 @@ function asFormatter(candidate) {
|
|
|
36
68
|
return typeof candidate === 'function' ? candidate : undefined;
|
|
37
69
|
}
|
|
38
70
|
/**
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
* Anything that is not a built-in name is loaded as a module, resolved from
|
|
71
|
+
* Loads the module behind a format that is not a built-in name, resolved from
|
|
42
72
|
* `cwd` so that a formatter installed in the project is found and a relative
|
|
43
|
-
* path means what it looks like.
|
|
44
|
-
* default export, as `printResults`, or be the function itself.
|
|
73
|
+
* path means what it looks like.
|
|
45
74
|
*/
|
|
46
|
-
|
|
47
|
-
const builtIn = getFormatter(format);
|
|
48
|
-
if (builtIn !== undefined) {
|
|
49
|
-
return builtIn;
|
|
50
|
-
}
|
|
51
|
-
const specifier = format;
|
|
75
|
+
async function loadFormatterModule(specifier, cwd) {
|
|
52
76
|
const from = path.join(path.resolve(cwd), 'noop.js');
|
|
53
77
|
let resolved;
|
|
54
78
|
if (specifier.startsWith('.') || path.isAbsolute(specifier)) {
|
|
@@ -63,13 +87,26 @@ export async function loadFormatter(format, cwd = process.cwd()) {
|
|
|
63
87
|
'or the path to a formatter of your own.');
|
|
64
88
|
}
|
|
65
89
|
}
|
|
66
|
-
let module;
|
|
67
90
|
try {
|
|
68
|
-
|
|
91
|
+
return (await import(__rewriteRelativeImportExtension(pathToFileURL(resolved).href)));
|
|
69
92
|
}
|
|
70
93
|
catch (thrown) {
|
|
71
94
|
throw new Error(`Could not load the formatter "${specifier}": ${thrown instanceof Error ? thrown.message : String(thrown)}`);
|
|
72
95
|
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* The formatter for a format name, a path, or a package.
|
|
99
|
+
*
|
|
100
|
+
* The module may export the formatter as its default export, as
|
|
101
|
+
* `printResults`, or be the function itself.
|
|
102
|
+
*/
|
|
103
|
+
export async function loadFormatter(format, cwd = process.cwd()) {
|
|
104
|
+
const builtIn = getFormatter(format);
|
|
105
|
+
if (builtIn !== undefined) {
|
|
106
|
+
return builtIn;
|
|
107
|
+
}
|
|
108
|
+
const specifier = format;
|
|
109
|
+
const module = await loadFormatterModule(specifier, cwd);
|
|
73
110
|
const formatter = asFormatter(module['default']) ?? asFormatter(module['printResults']) ?? asFormatter(module);
|
|
74
111
|
if (formatter === undefined) {
|
|
75
112
|
throw new Error(`"${specifier}" does not export a formatter. A formatter module exports a function taking the results.`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/formatters/index.ts"],"names":[],"mappings":";;;;;;;;AAAA;;GAEG;AACH,OAAO,EAAC,aAAa,EAAC,MAAM,aAAa,CAAC;AAC1C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAC,aAAa,EAAC,MAAM,UAAU,CAAC;AAEvC,OAAO,EAAC,YAAY,IAAI,IAAI,EAAC,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAC,YAAY,IAAI,KAAK,EAAC,MAAM,YAAY,CAAC;AACjD,OAAO,EAAC,YAAY,IAAI,KAAK,EAAC,MAAM,YAAY,CAAC;AACjD,OAAO,EAAC,YAAY,IAAI,OAAO,EAAC,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/formatters/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
+
import type { FormatterRun } from './index.ts';
|
|
1
2
|
import type { FileResult } from '../types.ts';
|
|
3
|
+
/** Blocks written as each file is done rather than at the end of the run. */
|
|
4
|
+
export declare function startRun(): FormatterRun;
|
|
2
5
|
/**
|
|
3
6
|
* Human readable output, one block per file with findings.
|
|
4
7
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stylish.d.ts","sourceRoot":"","sources":["../../src/formatters/stylish.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,UAAU,EAAY,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"stylish.d.ts","sourceRoot":"","sources":["../../src/formatters/stylish.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAC,UAAU,EAAY,MAAM,aAAa,CAAC;AAqFvD,6EAA6E;AAC7E,wBAAgB,QAAQ,IAAI,YAAY,CAKvC;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,GAAG,IAAI,CAiBjE"}
|
|
@@ -42,6 +42,37 @@ function messageColumnWidth(result, lineWidth, consoleWidth) {
|
|
|
42
42
|
return Math.max(widest, error.message.length);
|
|
43
43
|
}, 0);
|
|
44
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* One file's block, or nothing when the file is clean.
|
|
47
|
+
*
|
|
48
|
+
* The columns are lined up within a file rather than across the whole run, so
|
|
49
|
+
* a block only ever needed that one file's findings - which means it can be
|
|
50
|
+
* written the moment the file is done, with the output byte for byte what it
|
|
51
|
+
* always was.
|
|
52
|
+
*/
|
|
53
|
+
function block(result, consoleWidth) {
|
|
54
|
+
if (result.errors.length === 0) {
|
|
55
|
+
return '';
|
|
56
|
+
}
|
|
57
|
+
const lineWidth = widestLineNumber(result);
|
|
58
|
+
const messageWidth = messageColumnWidth(result, lineWidth, consoleWidth);
|
|
59
|
+
const lines = [
|
|
60
|
+
style.underline(result.filePath),
|
|
61
|
+
...result.errors.map((error) => formatError(error, lineWidth, messageWidth, true)),
|
|
62
|
+
];
|
|
63
|
+
// A blank line between blocks, as printing '\n' with console.log gave.
|
|
64
|
+
return `${lines.join('\n')}\n\n\n`;
|
|
65
|
+
}
|
|
66
|
+
function widthOfConsole() {
|
|
67
|
+
return process.stdout.isTTY ? process.stdout.columns : Infinity;
|
|
68
|
+
}
|
|
69
|
+
/** Blocks written as each file is done rather than at the end of the run. */
|
|
70
|
+
export function startRun() {
|
|
71
|
+
const consoleWidth = widthOfConsole();
|
|
72
|
+
return {
|
|
73
|
+
file: (result) => block(result, consoleWidth),
|
|
74
|
+
};
|
|
75
|
+
}
|
|
45
76
|
/**
|
|
46
77
|
* Human readable output, one block per file with findings.
|
|
47
78
|
*
|
|
@@ -49,7 +80,7 @@ function messageColumnWidth(result, lineWidth, consoleWidth) {
|
|
|
49
80
|
* stops the linter running is written to stderr instead.
|
|
50
81
|
*/
|
|
51
82
|
export function printResults(results) {
|
|
52
|
-
const consoleWidth =
|
|
83
|
+
const consoleWidth = widthOfConsole();
|
|
53
84
|
for (const result of results) {
|
|
54
85
|
if (result.errors.length === 0) {
|
|
55
86
|
continue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stylish.js","sourceRoot":"","sources":["../../src/formatters/stylish.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"stylish.js","sourceRoot":"","sources":["../../src/formatters/stylish.ts"],"names":[],"mappings":"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"}
|
package/dist/formatters/tap.d.ts
CHANGED
|
@@ -5,8 +5,22 @@
|
|
|
5
5
|
* at, which is what TAP consumers expect. Findings are carried in the YAML
|
|
6
6
|
* diagnostic block. A file is `not ok` only when it holds something that
|
|
7
7
|
* fails the run, so a file with warnings alone passes but still says why.
|
|
8
|
+
*
|
|
9
|
+
* Written as the results arrive. A harness seeing `ok 1` while file two is
|
|
10
|
+
* still being checked is the whole point of TAP, and holding the stream back
|
|
11
|
+
* to print it in one go gives that up for nothing. The plan comes last
|
|
12
|
+
* instead of first, because the count is only known then - TAP 13 allows it
|
|
13
|
+
* at either end for exactly this reason.
|
|
8
14
|
*/
|
|
15
|
+
import type { FormatterRun } from './index.ts';
|
|
9
16
|
import type { FileResult } from '../types.ts';
|
|
17
|
+
/**
|
|
18
|
+
* A TAP stream, written a test point at a time.
|
|
19
|
+
*
|
|
20
|
+
* A new one per run, so its counter belongs to that run and two at once
|
|
21
|
+
* cannot number each other's test points.
|
|
22
|
+
*/
|
|
23
|
+
export declare function startRun(): FormatterRun;
|
|
10
24
|
/** Renders the results as a TAP 13 stream. */
|
|
11
25
|
export declare function format(results: readonly FileResult[]): string;
|
|
12
26
|
/** Writes the TAP stream to stdout. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tap.d.ts","sourceRoot":"","sources":["../../src/formatters/tap.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"tap.d.ts","sourceRoot":"","sources":["../../src/formatters/tap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAC,UAAU,EAAY,MAAM,aAAa,CAAC;AAqCvD;;;;;GAKG;AACH,wBAAgB,QAAQ,IAAI,YAAY,CAYvC;AAED,8CAA8C;AAC9C,wBAAgB,MAAM,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,GAAG,MAAM,CAK7D;AAED,uCAAuC;AACvC,wBAAgB,YAAY,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,GAAG,IAAI,CAEjE"}
|
package/dist/formatters/tap.js
CHANGED
|
@@ -28,15 +28,30 @@ function diagnostics(result) {
|
|
|
28
28
|
lines.push(' ...');
|
|
29
29
|
return lines;
|
|
30
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* A TAP stream, written a test point at a time.
|
|
33
|
+
*
|
|
34
|
+
* A new one per run, so its counter belongs to that run and two at once
|
|
35
|
+
* cannot number each other's test points.
|
|
36
|
+
*/
|
|
37
|
+
export function startRun() {
|
|
38
|
+
let count = 0;
|
|
39
|
+
return {
|
|
40
|
+
start: () => 'TAP version 13\n',
|
|
41
|
+
file(result) {
|
|
42
|
+
count++;
|
|
43
|
+
const status = fails(result) ? 'not ok' : 'ok';
|
|
44
|
+
return [`${status} ${count} - ${result.filePath}`, ...diagnostics(result), ''].join('\n');
|
|
45
|
+
},
|
|
46
|
+
end: () => `1..${count}\n`,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
31
49
|
/** Renders the results as a TAP 13 stream. */
|
|
32
50
|
export function format(results) {
|
|
33
|
-
const
|
|
34
|
-
results.
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
lines.push(...diagnostics(result));
|
|
38
|
-
});
|
|
39
|
-
return lines.join('\n');
|
|
51
|
+
const run = startRun();
|
|
52
|
+
const text = [run.start?.() ?? '', ...results.map((result) => run.file(result)), run.end?.() ?? ''];
|
|
53
|
+
// The caller prints this with console.log, which adds the last line break.
|
|
54
|
+
return text.join('').replace(/\n$/u, '');
|
|
40
55
|
}
|
|
41
56
|
/** Writes the TAP stream to stdout. */
|
|
42
57
|
export function printResults(results) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tap.js","sourceRoot":"","sources":["../../src/formatters/tap.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tap.js","sourceRoot":"","sources":["../../src/formatters/tap.ts"],"names":[],"mappings":"AAiBA;;;GAGG;AACH,SAAS,KAAK,CAAC,KAAa;IAC1B,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AAC5C,CAAC;AAED,SAAS,UAAU,CAAC,KAAgB;IAClC,OAAO,KAAK,CAAC,QAAQ,IAAI,OAAO,CAAC;AACnC,CAAC;AAED,SAAS,KAAK,CAAC,MAAkB;IAC/B,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,WAAW,CAAC,MAAkB;IACrC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IACvC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,mBAAmB,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACnD,KAAK,CAAC,IAAI,CAAC,kBAAkB,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACrD,KAAK,CAAC,IAAI,CAAC,eAAe,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/C,KAAK,CAAC,IAAI,CAAC,eAAe,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QACxC,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,iBAAiB,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpB,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,QAAQ;IACtB,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,OAAO;QACL,KAAK,EAAE,GAAG,EAAE,CAAC,kBAAkB;QAC/B,IAAI,CAAC,MAAkB;YACrB,KAAK,EAAE,CAAC;YACR,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;YAC/C,OAAO,CAAC,GAAG,MAAM,IAAI,KAAK,MAAM,MAAM,CAAC,QAAQ,EAAE,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5F,CAAC;QACD,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,KAAK,IAAI;KAC3B,CAAC;AACJ,CAAC;AAED,8CAA8C;AAC9C,MAAM,UAAU,MAAM,CAAC,OAA8B;IACnD,MAAM,GAAG,GAAG,QAAQ,EAAE,CAAC;IACvB,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACpG,2EAA2E;IAC3E,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAC3C,CAAC;AAED,uCAAuC;AACvC,MAAM,UAAU,YAAY,CAAC,OAA8B;IACzD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AAC/B,CAAC"}
|
package/dist/gherkin/parse.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Feature } from '@cucumber/messages';
|
|
2
|
+
import type { Sequence } from '../util/stream.ts';
|
|
2
3
|
import type { FeatureFile, RuleError } from '../types.ts';
|
|
3
4
|
/**
|
|
4
5
|
* Rules the parser enforces on every file. They cannot be turned off, but
|
|
@@ -27,6 +28,46 @@ export declare function toLines(source: string): string[];
|
|
|
27
28
|
* language.
|
|
28
29
|
*/
|
|
29
30
|
export declare function parseFeature(relativePath: string, source: string, defaultLanguage?: string): ParseResult;
|
|
30
|
-
/**
|
|
31
|
+
/**
|
|
32
|
+
* Reads a feature file from disk and parses it.
|
|
33
|
+
*
|
|
34
|
+
* A file that cannot be read at all - missing, unreadable, deleted between
|
|
35
|
+
* being found and being opened - comes back as a result carrying the reason,
|
|
36
|
+
* exactly as a file the parser rejected does. Nothing here throws: one
|
|
37
|
+
* unreadable file among a thousand should cost you that file's findings, not
|
|
38
|
+
* every other file's as well.
|
|
39
|
+
*
|
|
40
|
+
* That promise is what lets `readAndParseFiles` hold started reads in a
|
|
41
|
+
* window. A promise that rejected before anything awaited it would be an
|
|
42
|
+
* unhandled rejection, and take the process with it.
|
|
43
|
+
*/
|
|
31
44
|
export declare function readAndParseFile(relativePath: string, defaultLanguage?: string): Promise<ParseResult>;
|
|
45
|
+
/**
|
|
46
|
+
* How many files are read ahead of the one being handed over.
|
|
47
|
+
*
|
|
48
|
+
* Enough to keep the disk busy while a file is checked, few enough that the
|
|
49
|
+
* memory held is a property of this number rather than of the size of the
|
|
50
|
+
* suite. Reading every file at once - which is what a `Promise.all` over the
|
|
51
|
+
* whole list does - holds the entire suite's source and syntax trees at once,
|
|
52
|
+
* and opens a file descriptor per file while it is at it.
|
|
53
|
+
*/
|
|
54
|
+
export declare const DEFAULT_READ_AHEAD = 16;
|
|
55
|
+
export interface ReadOptions {
|
|
56
|
+
/** The dialect for files carrying no `# language:` header of their own. */
|
|
57
|
+
language?: string;
|
|
58
|
+
/** How many files to keep reading ahead of the one handed over. */
|
|
59
|
+
readAhead?: number;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Reads and parses feature files, handing each one over in turn.
|
|
63
|
+
*
|
|
64
|
+
* The files may be an array or something finding them as it goes, so a walk
|
|
65
|
+
* of a directory tree can feed this without being collected first.
|
|
66
|
+
*
|
|
67
|
+
* Files are read ahead of being handed over, so the next one is on its way
|
|
68
|
+
* while this one is being used, but only so many at a time. Results come in
|
|
69
|
+
* the order the files were given whatever order they finish reading in, which
|
|
70
|
+
* is what the rules looking across files need.
|
|
71
|
+
*/
|
|
72
|
+
export declare function readAndParseFiles(files: Sequence<string>, options?: ReadOptions): AsyncGenerator<ParseResult>;
|
|
32
73
|
//# sourceMappingURL=parse.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/gherkin/parse.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/gherkin/parse.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,oBAAoB,CAAC;AAGhD,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAC,WAAW,EAAE,SAAS,EAAC,MAAM,aAAa,CAAC;AAIxD;;;;GAIG;AACH,eAAO,MAAM,eAAe,YAC1B,wBAAwB,EACxB,sBAAsB,EACtB,+BAA+B,EAC/B,6BAA6B,EAC7B,oBAAoB,CACZ,CAAC;AAEX,sDAAsD;AACtD,eAAO,MAAM,YAAY,uKAAoD,CAAC;AAE9E,2DAA2D;AAC3D,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,WAAW,CAAC;IAClB,mFAAmF;IACnF,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,gFAAgF;IAChF,MAAM,EAAE,SAAS,EAAE,CAAC;CACrB;AAmMD,8EAA8E;AAC9E,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAEhD;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,eAAe,GAAE,MAAyB,GACzC,WAAW,CA8Cb;AAiBD;;;;;;;;;;;;GAYG;AACH,wBAAsB,gBAAgB,CACpC,YAAY,EAAE,MAAM,EACpB,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,WAAW,CAAC,CAgBtB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAErC,MAAM,WAAW,WAAW;IAC1B,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mEAAmE;IACnE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,EACvB,OAAO,GAAE,WAAgB,GACxB,cAAc,CAAC,WAAW,CAAC,CAI7B"}
|
package/dist/gherkin/parse.js
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
import { AstBuilder, GherkinClassicTokenMatcher, Parser } from '@cucumber/gherkin';
|
|
12
12
|
import { IdGenerator } from '@cucumber/messages';
|
|
13
13
|
import { readFile } from 'node:fs/promises';
|
|
14
|
+
import { mapWithWindow } from '../util/stream.js';
|
|
14
15
|
import { DEFAULT_LANGUAGE, detectLanguage, getDialect } from './dialects.js';
|
|
15
16
|
/**
|
|
16
17
|
* Rules the parser enforces on every file. They cannot be turned off, but
|
|
@@ -228,9 +229,73 @@ export function parseFeature(relativePath, source, defaultLanguage = DEFAULT_LAN
|
|
|
228
229
|
}
|
|
229
230
|
return { file, feature: undefined, errors };
|
|
230
231
|
}
|
|
231
|
-
/**
|
|
232
|
+
/** A file that could not be turned into a feature, and why. */
|
|
233
|
+
function unreadable(relativePath, lines, thrown) {
|
|
234
|
+
return {
|
|
235
|
+
file: { relativePath, lines },
|
|
236
|
+
feature: undefined,
|
|
237
|
+
errors: [
|
|
238
|
+
{
|
|
239
|
+
message: thrown instanceof Error ? thrown.message : String(thrown),
|
|
240
|
+
rule: 'unexpected-error',
|
|
241
|
+
line: 0,
|
|
242
|
+
},
|
|
243
|
+
],
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Reads a feature file from disk and parses it.
|
|
248
|
+
*
|
|
249
|
+
* A file that cannot be read at all - missing, unreadable, deleted between
|
|
250
|
+
* being found and being opened - comes back as a result carrying the reason,
|
|
251
|
+
* exactly as a file the parser rejected does. Nothing here throws: one
|
|
252
|
+
* unreadable file among a thousand should cost you that file's findings, not
|
|
253
|
+
* every other file's as well.
|
|
254
|
+
*
|
|
255
|
+
* That promise is what lets `readAndParseFiles` hold started reads in a
|
|
256
|
+
* window. A promise that rejected before anything awaited it would be an
|
|
257
|
+
* unhandled rejection, and take the process with it.
|
|
258
|
+
*/
|
|
232
259
|
export async function readAndParseFile(relativePath, defaultLanguage) {
|
|
233
|
-
|
|
234
|
-
|
|
260
|
+
let source;
|
|
261
|
+
try {
|
|
262
|
+
source = await readFile(relativePath, 'utf8');
|
|
263
|
+
}
|
|
264
|
+
catch (thrown) {
|
|
265
|
+
return unreadable(relativePath, [], thrown);
|
|
266
|
+
}
|
|
267
|
+
try {
|
|
268
|
+
return parseFeature(relativePath, source, defaultLanguage);
|
|
269
|
+
}
|
|
270
|
+
catch (thrown) {
|
|
271
|
+
// parseFeature turns the parser's complaints into findings rather than
|
|
272
|
+
// throwing, so getting here means gurkencheck itself went wrong. Even
|
|
273
|
+
// then, one file is one file.
|
|
274
|
+
return unreadable(relativePath, toLines(source), thrown);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* How many files are read ahead of the one being handed over.
|
|
279
|
+
*
|
|
280
|
+
* Enough to keep the disk busy while a file is checked, few enough that the
|
|
281
|
+
* memory held is a property of this number rather than of the size of the
|
|
282
|
+
* suite. Reading every file at once - which is what a `Promise.all` over the
|
|
283
|
+
* whole list does - holds the entire suite's source and syntax trees at once,
|
|
284
|
+
* and opens a file descriptor per file while it is at it.
|
|
285
|
+
*/
|
|
286
|
+
export const DEFAULT_READ_AHEAD = 16;
|
|
287
|
+
/**
|
|
288
|
+
* Reads and parses feature files, handing each one over in turn.
|
|
289
|
+
*
|
|
290
|
+
* The files may be an array or something finding them as it goes, so a walk
|
|
291
|
+
* of a directory tree can feed this without being collected first.
|
|
292
|
+
*
|
|
293
|
+
* Files are read ahead of being handed over, so the next one is on its way
|
|
294
|
+
* while this one is being used, but only so many at a time. Results come in
|
|
295
|
+
* the order the files were given whatever order they finish reading in, which
|
|
296
|
+
* is what the rules looking across files need.
|
|
297
|
+
*/
|
|
298
|
+
export function readAndParseFiles(files, options = {}) {
|
|
299
|
+
return mapWithWindow(files, options.readAhead ?? DEFAULT_READ_AHEAD, (file) => readAndParseFile(file, options.language));
|
|
235
300
|
}
|
|
236
301
|
//# sourceMappingURL=parse.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../../src/gherkin/parse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAC,UAAU,EAAE,0BAA0B,EAAE,MAAM,EAAC,MAAM,mBAAmB,CAAC;AACjF,OAAO,EAAC,WAAW,EAAC,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EAAC,QAAQ,EAAC,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../../src/gherkin/parse.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -16,24 +16,42 @@ export { DEFAULT_CONFIG_FILE_NAME, readConfiguration } from './config-parser.ts'
|
|
|
16
16
|
export type { ConfigurationResult } from './config-parser.ts';
|
|
17
17
|
export { verifyConfiguration } from './config-verifier.ts';
|
|
18
18
|
export { PRESETS, RECOMMENDED } from './presets.ts';
|
|
19
|
-
export { DEFAULT_IGNORE_FILE_NAME, DEFAULT_IGNORED_PATTERNS, findFeatureFiles, readIgnorePatterns, } from './feature-finder.ts';
|
|
20
|
-
export type { FeatureSearch } from './feature-finder.ts';
|
|
21
|
-
export { DEFAULT_FORMAT, FORMATTERS, getFormatter, loadFormatter } from './formatters/index.ts';
|
|
22
|
-
export type { Formatter } from './formatters/index.ts';
|
|
19
|
+
export { DEFAULT_IGNORE_FILE_NAME, DEFAULT_IGNORED_PATTERNS, featureRoots, findFeatureFileStream, findFeatureFiles, readIgnorePatterns, } from './feature-finder.ts';
|
|
20
|
+
export type { FeatureFileStream, FeatureSearch } from './feature-finder.ts';
|
|
21
|
+
export { DEFAULT_FORMAT, FORMATTERS, STREAMING_FORMATTERS, getFormatter, getStreamingFormatter, loadFormatter, loadStreamingFormatter, } from './formatters/index.ts';
|
|
22
|
+
export type { Formatter, FormatterRun, StreamingFormatter } from './formatters/index.ts';
|
|
23
23
|
export { toJson } from './formatters/json.ts';
|
|
24
24
|
export { toSarif } from './formatters/sarif.ts';
|
|
25
25
|
export { version } from './version.ts';
|
|
26
26
|
export type { JsonMessage, JsonResult } from './formatters/json.ts';
|
|
27
|
-
export { ALWAYS_ON_RULES, PARSER_RULES, parseFeature, readAndParseFile } from './gherkin/parse.ts';
|
|
28
|
-
export type { ParseResult } from './gherkin/parse.ts';
|
|
27
|
+
export { ALWAYS_ON_RULES, DEFAULT_READ_AHEAD, PARSER_RULES, parseFeature, readAndParseFile, readAndParseFiles, } from './gherkin/parse.ts';
|
|
28
|
+
export type { ParseResult, ReadOptions } from './gherkin/parse.ts';
|
|
29
29
|
export { getNeutralKeyword, getNodeType } from './gherkin/keywords.ts';
|
|
30
30
|
export { DEFAULT_LANGUAGE, detectLanguage, getDialect, isKnownLanguage } from './gherkin/dialects.ts';
|
|
31
31
|
export { backgroundsOf, rulesOf, scenariosOf, stepContainersOf } from './gherkin/traverse.ts';
|
|
32
|
-
export {
|
|
32
|
+
export { EXIT_LINT_ERRORS, EXIT_OK, EXIT_USAGE } from './exit-codes.ts';
|
|
33
|
+
export { SILENT, TO_STDERR, collectDiagnostics } from './diagnostics.ts';
|
|
34
|
+
export type { CollectedDiagnostics, Diagnostic, DiagnosticLevel, Diagnostics, } from './diagnostics.ts';
|
|
35
|
+
export { DEFAULT_SETTLE_MS, isInteresting, watch } from './watch.ts';
|
|
36
|
+
export type { WatchOptions } from './watch.ts';
|
|
37
|
+
export { mapWithWindow } from './util/stream.ts';
|
|
38
|
+
export type { Sequence } from './util/stream.ts';
|
|
39
|
+
export { globRoot, globStream, globSync } from './util/glob.ts';
|
|
40
|
+
export { countBySeverity, hasErrors, lint, lintStream } from './linter.ts';
|
|
33
41
|
export type { LintOptions } from './linter.ts';
|
|
34
42
|
export { readSuppressions } from './suppressions.ts';
|
|
35
43
|
export type { Suppressions } from './suppressions.ts';
|
|
36
|
-
export { getRuleSettings, getRuleSeverity, isRuleEnabled, loadRules, resetRules, runEnabledRules, } from './rules.ts';
|
|
44
|
+
export { beginRun, finishRun, getRuleSettings, getRuleSeverity, isRuleEnabled, loadRules, newRunContext, resetRules, runEnabledRules, } from './rules.ts';
|
|
45
|
+
export type { Run } from './rules.ts';
|
|
37
46
|
export { BUILT_IN_RULES } from './rules/index.ts';
|
|
38
|
-
export
|
|
47
|
+
export { collectStatistics, collectStatisticsFrom, distribution } from './stats/collect.ts';
|
|
48
|
+
export type { CollectOptions } from './stats/collect.ts';
|
|
49
|
+
export { DEFAULT_SIMILARITY, boundedEditDistance, groupSimilar } from './stats/similar.ts';
|
|
50
|
+
export type { SimilarityOptions } from './stats/similar.ts';
|
|
51
|
+
export { NUMBER_MARKER, PLACEHOLDER_MARKER, STRING_MARKER, countWords, normaliseStepText, } from './stats/normalise.ts';
|
|
52
|
+
export { DEFAULT_STATS_FORMAT, DEFAULT_TOP, STATS_FORMATTERS, getStatsFormatter, toJson as statisticsToJson, toMarkdown, toText, } from './stats/format/index.ts';
|
|
53
|
+
export type { StatsFormatOptions, StatsFormatter } from './stats/format/index.ts';
|
|
54
|
+
export { runStats, statsUsage } from './stats/command.ts';
|
|
55
|
+
export type { Distribution, Inventory, KeywordMix, LanguageEntry, ScenarioRef, ScenarioStats, SimilarGroup, Statistics, StepEntry, StepStats, TagEntry, TagStats, UnreadableFile, } from './stats/types.ts';
|
|
56
|
+
export type { Configuration, FeatureFile, FileResult, LintRule, RuleConfig, RuleError, RuleRegistry, RuleState, RunContext, RunFinding, Severity, } from './types.ts';
|
|
39
57
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAC,wBAAwB,EAAE,iBAAiB,EAAC,MAAM,oBAAoB,CAAC;AAC/E,YAAY,EAAC,mBAAmB,EAAC,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAC,mBAAmB,EAAC,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAC,OAAO,EAAE,WAAW,EAAC,MAAM,cAAc,CAAC;AAClD,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -15,17 +15,27 @@
|
|
|
15
15
|
export { DEFAULT_CONFIG_FILE_NAME, readConfiguration } from './config-parser.js';
|
|
16
16
|
export { verifyConfiguration } from './config-verifier.js';
|
|
17
17
|
export { PRESETS, RECOMMENDED } from './presets.js';
|
|
18
|
-
export { DEFAULT_IGNORE_FILE_NAME, DEFAULT_IGNORED_PATTERNS, findFeatureFiles, readIgnorePatterns, } from './feature-finder.js';
|
|
19
|
-
export { DEFAULT_FORMAT, FORMATTERS, getFormatter, loadFormatter } from './formatters/index.js';
|
|
18
|
+
export { DEFAULT_IGNORE_FILE_NAME, DEFAULT_IGNORED_PATTERNS, featureRoots, findFeatureFileStream, findFeatureFiles, readIgnorePatterns, } from './feature-finder.js';
|
|
19
|
+
export { DEFAULT_FORMAT, FORMATTERS, STREAMING_FORMATTERS, getFormatter, getStreamingFormatter, loadFormatter, loadStreamingFormatter, } from './formatters/index.js';
|
|
20
20
|
export { toJson } from './formatters/json.js';
|
|
21
21
|
export { toSarif } from './formatters/sarif.js';
|
|
22
22
|
export { version } from './version.js';
|
|
23
|
-
export { ALWAYS_ON_RULES, PARSER_RULES, parseFeature, readAndParseFile } from './gherkin/parse.js';
|
|
23
|
+
export { ALWAYS_ON_RULES, DEFAULT_READ_AHEAD, PARSER_RULES, parseFeature, readAndParseFile, readAndParseFiles, } from './gherkin/parse.js';
|
|
24
24
|
export { getNeutralKeyword, getNodeType } from './gherkin/keywords.js';
|
|
25
25
|
export { DEFAULT_LANGUAGE, detectLanguage, getDialect, isKnownLanguage } from './gherkin/dialects.js';
|
|
26
26
|
export { backgroundsOf, rulesOf, scenariosOf, stepContainersOf } from './gherkin/traverse.js';
|
|
27
|
-
export {
|
|
27
|
+
export { EXIT_LINT_ERRORS, EXIT_OK, EXIT_USAGE } from './exit-codes.js';
|
|
28
|
+
export { SILENT, TO_STDERR, collectDiagnostics } from './diagnostics.js';
|
|
29
|
+
export { DEFAULT_SETTLE_MS, isInteresting, watch } from './watch.js';
|
|
30
|
+
export { mapWithWindow } from './util/stream.js';
|
|
31
|
+
export { globRoot, globStream, globSync } from './util/glob.js';
|
|
32
|
+
export { countBySeverity, hasErrors, lint, lintStream } from './linter.js';
|
|
28
33
|
export { readSuppressions } from './suppressions.js';
|
|
29
|
-
export { getRuleSettings, getRuleSeverity, isRuleEnabled, loadRules, resetRules, runEnabledRules, } from './rules.js';
|
|
34
|
+
export { beginRun, finishRun, getRuleSettings, getRuleSeverity, isRuleEnabled, loadRules, newRunContext, resetRules, runEnabledRules, } from './rules.js';
|
|
30
35
|
export { BUILT_IN_RULES } from './rules/index.js';
|
|
36
|
+
export { collectStatistics, collectStatisticsFrom, distribution } from './stats/collect.js';
|
|
37
|
+
export { DEFAULT_SIMILARITY, boundedEditDistance, groupSimilar } from './stats/similar.js';
|
|
38
|
+
export { NUMBER_MARKER, PLACEHOLDER_MARKER, STRING_MARKER, countWords, normaliseStepText, } from './stats/normalise.js';
|
|
39
|
+
export { DEFAULT_STATS_FORMAT, DEFAULT_TOP, STATS_FORMATTERS, getStatsFormatter, toJson as statisticsToJson, toMarkdown, toText, } from './stats/format/index.js';
|
|
40
|
+
export { runStats, statsUsage } from './stats/command.js';
|
|
31
41
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAC,wBAAwB,EAAE,iBAAiB,EAAC,MAAM,oBAAoB,CAAC;AAE/E,OAAO,EAAC,mBAAmB,EAAC,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAC,OAAO,EAAE,WAAW,EAAC,MAAM,cAAc,CAAC;AAClD,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAC,wBAAwB,EAAE,iBAAiB,EAAC,MAAM,oBAAoB,CAAC;AAE/E,OAAO,EAAC,mBAAmB,EAAC,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAC,OAAO,EAAE,WAAW,EAAC,MAAM,cAAc,CAAC;AAClD,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,YAAY,EACZ,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,cAAc,EACd,UAAU,EACV,oBAAoB,EACpB,YAAY,EACZ,qBAAqB,EACrB,aAAa,EACb,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAC,MAAM,EAAC,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAC,OAAO,EAAC,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAC,OAAO,EAAC,MAAM,cAAc,CAAC;AAErC,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAC,iBAAiB,EAAE,WAAW,EAAC,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAC,gBAAgB,EAAE,cAAc,EAAE,UAAU,EAAE,eAAe,EAAC,MAAM,uBAAuB,CAAC;AACpG,OAAO,EAAC,aAAa,EAAE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AAC5F,OAAO,EAAC,gBAAgB,EAAE,OAAO,EAAE,UAAU,EAAC,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAC,MAAM,EAAE,SAAS,EAAE,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AAOvE,OAAO,EAAC,iBAAiB,EAAE,aAAa,EAAE,KAAK,EAAC,MAAM,YAAY,CAAC;AAEnE,OAAO,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAC,eAAe,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAC,MAAM,aAAa,CAAC;AAEzE,OAAO,EAAC,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EACL,QAAQ,EACR,SAAS,EACT,eAAe,EACf,eAAe,EACf,aAAa,EACb,SAAS,EACT,aAAa,EACb,UAAU,EACV,eAAe,GAChB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAC,iBAAiB,EAAE,qBAAqB,EAAE,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAE1F,OAAO,EAAC,kBAAkB,EAAE,mBAAmB,EAAE,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAEzF,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,aAAa,EACb,UAAU,EACV,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,oBAAoB,EACpB,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,MAAM,IAAI,gBAAgB,EAC1B,UAAU,EACV,MAAM,GACP,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAC,QAAQ,EAAE,UAAU,EAAC,MAAM,oBAAoB,CAAC"}
|