podlite 0.0.78 → 0.0.80

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/CHANGELOG.podlite +40 -0
  2. package/esm/cli.js +100 -18
  3. package/esm/cli.js.map +1 -1
  4. package/esm/lint/config.d.ts +8 -0
  5. package/esm/lint/config.js +101 -0
  6. package/esm/lint/config.js.map +1 -0
  7. package/esm/lint/engine.js +3 -1
  8. package/esm/lint/engine.js.map +1 -1
  9. package/esm/lint/formatters/text.d.ts +1 -0
  10. package/esm/lint/formatters/text.js +3 -1
  11. package/esm/lint/formatters/text.js.map +1 -1
  12. package/esm/lint/grammar/lint.js +7 -4
  13. package/esm/lint/grammar/lint.js.map +1 -1
  14. package/esm/lint/grammar/scan.d.ts +1 -1
  15. package/esm/lint/grammar/scan.js +20 -3
  16. package/esm/lint/grammar/scan.js.map +1 -1
  17. package/esm/lint/index.d.ts +11 -0
  18. package/esm/lint/index.js +47 -18
  19. package/esm/lint/index.js.map +1 -1
  20. package/esm/lint/mute.d.ts +17 -0
  21. package/esm/lint/mute.js +75 -0
  22. package/esm/lint/mute.js.map +1 -0
  23. package/esm/lint/parallel.d.ts +4 -0
  24. package/esm/lint/parallel.js +57 -0
  25. package/esm/lint/parallel.js.map +1 -0
  26. package/esm/lint/rules/abbreviated-attrs.d.ts +4 -0
  27. package/esm/lint/rules/abbreviated-attrs.js +67 -0
  28. package/esm/lint/rules/abbreviated-attrs.js.map +1 -0
  29. package/esm/lint/rules/attr-value-dropped.js +3 -2
  30. package/esm/lint/rules/attr-value-dropped.js.map +1 -1
  31. package/esm/lint/rules/dead-definitions.d.ts +3 -0
  32. package/esm/lint/rules/dead-definitions.js +80 -0
  33. package/esm/lint/rules/dead-definitions.js.map +1 -0
  34. package/esm/lint/rules/index.js +4 -0
  35. package/esm/lint/rules/index.js.map +1 -1
  36. package/esm/lint/rules/markdown-in-pod.d.ts +4 -0
  37. package/esm/lint/rules/markdown-in-pod.js +67 -0
  38. package/esm/lint/rules/markdown-in-pod.js.map +1 -0
  39. package/esm/lint/rules/table-column-width.d.ts +4 -0
  40. package/esm/lint/rules/table-column-width.js +110 -0
  41. package/esm/lint/rules/table-column-width.js.map +1 -0
  42. package/esm/lint/rules/table-shape.d.ts +3 -0
  43. package/esm/lint/rules/table-shape.js +15 -0
  44. package/esm/lint/rules/table-shape.js.map +1 -0
  45. package/esm/lint/types.d.ts +5 -1
  46. package/esm/lint/worker.d.ts +5 -0
  47. package/esm/lint/worker.js +15 -0
  48. package/esm/lint/worker.js.map +1 -0
  49. package/esm/query.js +4 -1
  50. package/esm/query.js.map +1 -1
  51. package/esm/resolve-includes.js +56 -7
  52. package/esm/resolve-includes.js.map +1 -1
  53. package/esm/version.d.ts +1 -1
  54. package/esm/version.js +1 -1
  55. package/lib/cli.js +99 -17
  56. package/lib/cli.js.map +1 -1
  57. package/lib/lint/config.d.ts +8 -0
  58. package/lib/lint/config.js +143 -0
  59. package/lib/lint/config.js.map +1 -0
  60. package/lib/lint/engine.js +3 -1
  61. package/lib/lint/engine.js.map +1 -1
  62. package/lib/lint/formatters/text.d.ts +1 -0
  63. package/lib/lint/formatters/text.js +3 -1
  64. package/lib/lint/formatters/text.js.map +1 -1
  65. package/lib/lint/grammar/lint.js +7 -4
  66. package/lib/lint/grammar/lint.js.map +1 -1
  67. package/lib/lint/grammar/scan.d.ts +1 -1
  68. package/lib/lint/grammar/scan.js +19 -2
  69. package/lib/lint/grammar/scan.js.map +1 -1
  70. package/lib/lint/index.d.ts +11 -0
  71. package/lib/lint/index.js +89 -20
  72. package/lib/lint/index.js.map +1 -1
  73. package/lib/lint/mute.d.ts +17 -0
  74. package/lib/lint/mute.js +80 -0
  75. package/lib/lint/mute.js.map +1 -0
  76. package/lib/lint/parallel.d.ts +4 -0
  77. package/lib/lint/parallel.js +95 -0
  78. package/lib/lint/parallel.js.map +1 -0
  79. package/lib/lint/rules/abbreviated-attrs.d.ts +4 -0
  80. package/lib/lint/rules/abbreviated-attrs.js +71 -0
  81. package/lib/lint/rules/abbreviated-attrs.js.map +1 -0
  82. package/lib/lint/rules/attr-value-dropped.js +3 -2
  83. package/lib/lint/rules/attr-value-dropped.js.map +1 -1
  84. package/lib/lint/rules/dead-definitions.d.ts +3 -0
  85. package/lib/lint/rules/dead-definitions.js +83 -0
  86. package/lib/lint/rules/dead-definitions.js.map +1 -0
  87. package/lib/lint/rules/index.js +4 -0
  88. package/lib/lint/rules/index.js.map +1 -1
  89. package/lib/lint/rules/markdown-in-pod.d.ts +4 -0
  90. package/lib/lint/rules/markdown-in-pod.js +71 -0
  91. package/lib/lint/rules/markdown-in-pod.js.map +1 -0
  92. package/lib/lint/rules/table-column-width.d.ts +4 -0
  93. package/lib/lint/rules/table-column-width.js +114 -0
  94. package/lib/lint/rules/table-column-width.js.map +1 -0
  95. package/lib/lint/rules/table-shape.d.ts +3 -0
  96. package/lib/lint/rules/table-shape.js +18 -0
  97. package/lib/lint/rules/table-shape.js.map +1 -0
  98. package/lib/lint/types.d.ts +5 -1
  99. package/lib/lint/worker.d.ts +5 -0
  100. package/lib/lint/worker.js +17 -0
  101. package/lib/lint/worker.js.map +1 -0
  102. package/lib/query.js +4 -1
  103. package/lib/query.js.map +1 -1
  104. package/lib/resolve-includes.js +55 -6
  105. package/lib/resolve-includes.js.map +1 -1
  106. package/lib/version.d.ts +1 -1
  107. package/lib/version.js +1 -1
  108. package/package.json +13 -7
package/CHANGELOG.podlite CHANGED
@@ -2,6 +2,46 @@
2
2
 
3
3
  =head1 Upcoming
4
4
 
5
+ =head1 0.0.80
6
+
7
+ =item podlite lint adds the markdown-in-pod rule: a heading written with hashes, a row of bars and dashes, and a pair of asterisks arrive as text inside a pod block, and the message names the Podlite construct to write instead. Blocks that keep their content as written, the separator of a real table, and markup shown inside a code span are left alone
8
+
9
+ =item podlite lint adds the abbreviated-attrs rule: an abbreviated block takes the rest of its line as data, so attributes written there arrive as text. Reported only where the line holds nothing but attributes and content follows below; a named block, an example inside a code block, and an attribute written with nothing inside are left alone
10
+
11
+ =item the command no longer raises the diagram renderer, and with it mermaid and React, before it has read its arguments: only a conversion renders, so the plugin registry is loaded there. A check or a query now starts on a runtime that forbids loading an ESM package through require
12
+
13
+ =item podlite lint adds the dead-definitions rule: an =alias that no A<> calls, and a =data whose key no data: reference names, are reported. A mistyped key at the reference shows up as the definition going unused, which is the shape the mistake takes
14
+
15
+ =item podlite lint delimited-block-balance takes the markers inside a block whose name carries both cases as content, not as structure: such a block keeps its body as written, and an example written in it no longer reads as an unclosed block. An all-uppercase name is still read as structure
16
+
17
+ =item podlite lint table-column-width no longer reports a row whose cells are held apart by spaces while only the separator line draws bars: such a cell may fill its column to the last place and the table still parses. A cell standing on the boundary, and a cell pressed against a bar the row itself draws, are still reported
18
+
19
+ =item the check is reachable as podlite/lint — runLint for a whole run, lintFile and lintSource for the findings as data, with the types that describe them. The path no longer spells the build layout, and the check stays out of the package entry
20
+
21
+ =item podlite query --to json names the file every block came from, so a query over several files can be traced back to its documents. Text handed in on stdin is named <stdin>; the other output formats are unchanged
22
+
23
+ =item podlite lint checks a long list of files on several threads, which cuts a 126-file run from 1.64 to 1.14 seconds. Short lists stay on one thread, and the report reads the same either way
24
+
25
+ =item podlite lint finds .podlitelintrc.json or .podlitelintrc.js by itself — the nearest one at or above the first checked file, json before js. --config still wins, and --enable and --disable name a rule for one run
26
+
27
+ =item =include takes a recursive mask: file:./dir/**/*.podlite reaches the nested directories too, skipping hidden ones. A single-level mask stays within its own directory
28
+
29
+ =item =include takes a directory mask: file:./dir/*.podlite reads every matching file of that directory in name order, applies the selector to each, and leaves nothing behind when the mask names no file. Files the mask does not name are never read
30
+
31
+ =item podlite convert takes --render-mode with production or draft, and reads the same choice from PODLITE_RENDER_MODE when the flag is absent. Production stays the default and masks covered content; the flag wins over the environment
32
+
33
+ =head1 0.0.79
34
+
35
+ =item podlite lint takes C«:lint-ignore» from the document: written on a block it silences the named rules there, written on C«=begin pod» it covers the file, and C«=config» spreads it over a scope. The attribute must name its rules; a mute that silenced nothing is reported under the lint-ignore rule, and the summary counts what was silenced
36
+
37
+ =item podlite lint applies the file given to --config: a rule set to off is not run, and any other setting replaces its severity. A config that cannot be read, or a setting outside off, error, warning and info, stops the run with exit code 2
38
+
39
+ =item podlite lint adds the table-column-width rule: a cell that reaches or crosses the column boundary set by the separator line is reported, because the table silently loses a column when it does
40
+
41
+ =item podlite lint reports a reshaped table under the table-shape rule, with file, line and a place in the summary; the padded-row message names the cause
42
+
43
+ =item podlite convert writes to stdout when the output is a dash, and reads the document from stdin after a dash or from a pipe with no files given; without a dash it still writes a file as before
44
+
5
45
  =head1 0.0.78
6
46
 
7
47
  =item declare the node floor: the command line needs 20.19 or newer, because loading it reaches an ESM-only dependency through require
package/esm/cli.js CHANGED
@@ -1,10 +1,21 @@
1
1
  import * as fs from 'fs';
2
2
  import * as path from 'path';
3
3
  import { toMarkdown, toHtml } from '@podlite/schema';
4
- import { podlite } from './index';
5
- import { runLint } from './lint';
4
+ import { reportLint, resolveConfig, runLint } from './lint';
5
+ import { ConfigError } from './lint/config';
6
+ import { lintFilesInParallel, worthThreads } from './lint/parallel';
6
7
  import { runQuery } from './query';
7
8
  import { resolveIncludes } from './resolve-includes';
9
+ // The plugin registry brings the diagram renderer, and with it mermaid and
10
+ // React. Only conversion renders anything, so the registry is raised there and
11
+ // not at startup — a check or a query used to pay for it, and on a runtime that
12
+ // forbids loading an ESM package through require the command died before it
13
+ // had read its arguments.
14
+ const parserWithPlugins = () => {
15
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
16
+ const { podlite } = require('./index');
17
+ return podlite({ importPlugins: true });
18
+ };
8
19
  const FORMATS = {
9
20
  md: '.md',
10
21
  markdown: '.md',
@@ -12,10 +23,13 @@ const FORMATS = {
12
23
  };
13
24
  const QUERY_FORMATS = ['podlite', 'md', 'html', 'json'];
14
25
  const LINT_FORMATS = ['text', 'json'];
26
+ const STDIN_MARKER = '-';
27
+ const RENDER_MODES = ['production', 'draft'];
15
28
  function usage() {
16
29
  console.log(`Usage:
17
- podlite convert <files...> --to <format> [-o <output>]
30
+ podlite convert <files...|-> --to <format> [-o <output|->] [--render-mode <production|draft>]
18
31
  podlite lint <files...|-> [--strict] [--format <text|json>] [--config <path>]
32
+ [--enable <rule>] [--disable <rule>]
19
33
  podlite query <selector> <files...> [--to <format>] [--fail-on-empty] [--quiet]
20
34
 
21
35
  Commands:
@@ -29,9 +43,15 @@ Options:
29
43
  query: podlite (default), md, html, json
30
44
  --format lint output format: text (default), json
31
45
  --strict lint: promote warnings to errors
32
- --config lint: path to .podlitelintrc.{json,js}
46
+ --config lint: path to .podlitelintrc.{json,js}; without it the nearest one
47
+ at or above the first checked file is used
48
+ --enable lint: run a rule the config turned off (repeatable)
49
+ --disable lint: turn a rule off for this run (repeatable)
33
50
  --base convert: prefix for relative file: image paths (or env PODLITE_BASE)
34
- -o Output file or directory (default: same dir, new extension)
51
+ --render-mode
52
+ convert: production (default, covered content is masked) or draft
53
+ (covered content is shown); or env PODLITE_RENDER_MODE
54
+ -o Output file or directory, or - for stdout (default: same dir, new extension)
35
55
  --fail-on-empty query: exit 1 if no blocks matched
36
56
  --quiet query: suppress match count on stderr
37
57
  --help Show this help
@@ -39,6 +59,8 @@ Options:
39
59
  Examples:
40
60
  podlite convert doc.pod6 --to md
41
61
  podlite convert *.pod6 --to md -o output/
62
+ podlite convert doc.podlite --to md -o -
63
+ cat doc.podlite | podlite convert - --to md
42
64
  podlite query 'head1' docs/api.podlite
43
65
  podlite query 'head1, head2' manual.podlite --to md
44
66
  podlite query 'code[:lang<python>]' tutorials/*.podlite --to json
@@ -60,6 +82,9 @@ function parseArgs(argv) {
60
82
  format: '',
61
83
  configPath: '',
62
84
  base: '',
85
+ renderMode: '',
86
+ enable: [],
87
+ disable: [],
63
88
  };
64
89
  if (argv.length === 0 || argv[0] === '--help' || argv[0] === '-h') {
65
90
  return null;
@@ -92,6 +117,19 @@ function parseArgs(argv) {
92
117
  else if (arg === '--base') {
93
118
  args.base = argv[++i] || '';
94
119
  }
120
+ else if (arg === '--render-mode') {
121
+ args.renderMode = argv[++i] || '';
122
+ }
123
+ else if (arg === '--enable') {
124
+ const rule = argv[++i];
125
+ if (rule)
126
+ args.enable.push(rule);
127
+ }
128
+ else if (arg === '--disable') {
129
+ const rule = argv[++i];
130
+ if (rule)
131
+ args.disable.push(rule);
132
+ }
95
133
  else if (arg === '--help' || arg === '-h') {
96
134
  return null;
97
135
  }
@@ -102,18 +140,19 @@ function parseArgs(argv) {
102
140
  }
103
141
  return args;
104
142
  }
105
- function convertFile(inputPath, format, outputPath, base) {
143
+ function convertFile(inputPath, format, outputPath, base, renderMode = 'production') {
106
144
  const ext = FORMATS[format];
107
145
  if (!ext) {
108
146
  console.error(`Unknown format: ${format}. Supported: ${Object.keys(FORMATS).join(', ')}`);
109
147
  process.exit(1);
110
148
  }
111
- const content = fs.readFileSync(inputPath, 'utf-8');
112
- const p = podlite({ importPlugins: true });
149
+ const fromStdin = inputPath === STDIN_MARKER;
150
+ const content = fromStdin ? readStdinSync() : fs.readFileSync(inputPath, 'utf-8');
151
+ const p = parserWithPlugins();
113
152
  const parseToAst = (source) => p.toAst(p.parse(source, { podMode: 1 }));
114
153
  let tree = parseToAst(content);
115
154
  try {
116
- tree = resolveIncludes(tree, { baseDir: path.dirname(inputPath), parse: parseToAst });
155
+ tree = resolveIncludes(tree, { baseDir: fromStdin ? process.cwd() : path.dirname(inputPath), parse: parseToAst });
117
156
  }
118
157
  catch (e) {
119
158
  console.error(`podlite convert: ${e.message}`);
@@ -121,15 +160,21 @@ function convertFile(inputPath, format, outputPath, base) {
121
160
  }
122
161
  let result;
123
162
  if (format === 'md' || format === 'markdown') {
124
- result = toMarkdown({ base }).run(tree).toString();
163
+ result = toMarkdown({ base, renderMode }).run(tree).toString();
125
164
  }
126
165
  else if (format === 'html') {
127
- result = toHtml({ base }).run(tree).toString();
166
+ result = toHtml({ base, renderMode }).run(tree).toString();
128
167
  }
129
168
  else {
130
169
  console.error(`Format "${format}" not implemented yet`);
131
170
  process.exit(1);
132
171
  }
172
+ if (outputPath === STDIN_MARKER || (fromStdin && !outputPath)) {
173
+ process.stdout.write(result);
174
+ if (!result.endsWith('\n'))
175
+ process.stdout.write('\n');
176
+ return;
177
+ }
133
178
  if (outputPath) {
134
179
  if (fs.existsSync(outputPath) && fs.statSync(outputPath).isDirectory()) {
135
180
  const basename = path.basename(inputPath, path.extname(inputPath));
@@ -216,6 +261,27 @@ function runQueryCommand(args) {
216
261
  process.exitCode = 1;
217
262
  }
218
263
  }
264
+ function runLintOnThreads(files, options) {
265
+ let config;
266
+ try {
267
+ config = resolveConfig(files, options);
268
+ }
269
+ catch (e) {
270
+ if (!(e instanceof ConfigError))
271
+ throw e;
272
+ console.error(`podlite lint: ${e.message}`);
273
+ process.exitCode = 2;
274
+ return;
275
+ }
276
+ lintFilesInParallel(files, config)
277
+ .then(reports => {
278
+ process.exitCode = reportLint(reports, options);
279
+ })
280
+ .catch(e => {
281
+ console.error(`podlite lint: ${e.message}`);
282
+ process.exitCode = 2;
283
+ });
284
+ }
219
285
  function main() {
220
286
  process.stdout.on('error', (err) => {
221
287
  if (err.code !== 'EPIPE') {
@@ -245,12 +311,19 @@ function main() {
245
311
  console.error(`podlite lint: unknown --format "${format}". Supported: ${LINT_FORMATS.join(', ')}`);
246
312
  process.exit(2);
247
313
  }
248
- process.exitCode = runLint(files, {
314
+ const lintOptions = {
249
315
  strict: args.strict,
250
316
  format,
251
317
  configPath: args.configPath || undefined,
252
318
  stdinContent,
253
- });
319
+ enable: args.enable,
320
+ disable: args.disable,
321
+ };
322
+ if (stdinContent === undefined && worthThreads(files)) {
323
+ runLintOnThreads(files, lintOptions);
324
+ return;
325
+ }
326
+ process.exitCode = runLint(files, lintOptions);
254
327
  return;
255
328
  }
256
329
  if (args.command !== 'convert') {
@@ -258,7 +331,10 @@ function main() {
258
331
  usage();
259
332
  process.exit(1);
260
333
  }
261
- if (args.files.length === 0) {
334
+ const namedFiles = args.files.filter(f => f !== STDIN_MARKER);
335
+ const readsStdin = args.files.includes(STDIN_MARKER) || (!process.stdin.isTTY && namedFiles.length === 0);
336
+ const sources = readsStdin ? [...namedFiles, STDIN_MARKER] : namedFiles;
337
+ if (sources.length === 0) {
262
338
  console.error('No input files specified');
263
339
  usage();
264
340
  process.exit(1);
@@ -268,15 +344,21 @@ function main() {
268
344
  usage();
269
345
  process.exit(1);
270
346
  }
271
- if (args.files.length > 1 && args.output && !fs.existsSync(args.output)) {
347
+ const renderMode = (args.renderMode || process.env.PODLITE_RENDER_MODE || 'production');
348
+ if (!RENDER_MODES.includes(renderMode)) {
349
+ console.error(`Unknown render mode: ${renderMode}. Supported: ${RENDER_MODES.join(', ')}`);
350
+ process.exit(1);
351
+ }
352
+ const toStdout = args.output === STDIN_MARKER;
353
+ if (sources.length > 1 && args.output && !toStdout && !fs.existsSync(args.output)) {
272
354
  fs.mkdirSync(args.output, { recursive: true });
273
355
  }
274
- for (const file of args.files) {
275
- if (!fs.existsSync(file)) {
356
+ for (const file of sources) {
357
+ if (file !== STDIN_MARKER && !fs.existsSync(file)) {
276
358
  console.error(`File not found: ${file}`);
277
359
  process.exit(1);
278
360
  }
279
- convertFile(file, args.to, args.output || undefined, args.base || process.env.PODLITE_BASE);
361
+ convertFile(file, args.to, args.output || undefined, args.base || process.env.PODLITE_BASE, renderMode);
280
362
  }
281
363
  }
282
364
  main();
package/esm/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { LintConfig, Violation } from './types';
2
+ export declare class ConfigError extends Error {
3
+ }
4
+ export declare function findConfig(startDir: string): string | undefined;
5
+ export declare function readConfig(configPath?: string): LintConfig;
6
+ export declare function applyRuleFlags(config: LintConfig, enable: string[], disable: string[]): LintConfig;
7
+ export declare const isRuleOff: (config: LintConfig, ruleId: string) => boolean;
8
+ export declare function applyConfig(violations: Violation[], config: LintConfig): Violation[];
@@ -0,0 +1,101 @@
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
3
+ const SETTINGS = ['off', 'error', 'warning', 'info'];
4
+ const CONFIG_NAMES = ['.podlitelintrc.json', '.podlitelintrc.js'];
5
+ export class ConfigError extends Error {
6
+ }
7
+ // Nearest config at or above the given directory. The first name of CONFIG_NAMES
8
+ // present in a directory wins; a directory closer to the file wins over one above.
9
+ export function findConfig(startDir) {
10
+ let dir = path.resolve(startDir);
11
+ for (;;) {
12
+ for (const name of CONFIG_NAMES) {
13
+ const candidate = path.join(dir, name);
14
+ if (fs.existsSync(candidate))
15
+ return candidate;
16
+ }
17
+ const up = path.dirname(dir);
18
+ if (up === dir)
19
+ return undefined;
20
+ dir = up;
21
+ }
22
+ }
23
+ export function readConfig(configPath) {
24
+ if (!configPath)
25
+ return {};
26
+ if (configPath.endsWith('.js'))
27
+ return readJsConfig(configPath);
28
+ let raw;
29
+ try {
30
+ raw = fs.readFileSync(configPath, 'utf-8');
31
+ }
32
+ catch (e) {
33
+ throw new ConfigError(`cannot read config ${configPath}: ${e.message}`);
34
+ }
35
+ let parsed;
36
+ try {
37
+ parsed = JSON.parse(raw);
38
+ }
39
+ catch (e) {
40
+ throw new ConfigError(`cannot read config ${configPath}: ${e.message}`);
41
+ }
42
+ return checkConfigShape(parsed, configPath);
43
+ }
44
+ function readJsConfig(configPath) {
45
+ let loaded;
46
+ try {
47
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
48
+ loaded = require(path.resolve(configPath));
49
+ }
50
+ catch (e) {
51
+ throw new ConfigError(`cannot read config ${configPath}: ${e.message}`);
52
+ }
53
+ const value = loaded?.default ?? loaded;
54
+ return checkConfigShape(value, configPath);
55
+ }
56
+ function checkConfigShape(parsed, configPath) {
57
+ if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {
58
+ throw new ConfigError(`config ${configPath} must hold an object`);
59
+ }
60
+ const rules = parsed.rules;
61
+ if (rules === undefined)
62
+ return {};
63
+ if (!rules || typeof rules !== 'object' || Array.isArray(rules)) {
64
+ throw new ConfigError(`config ${configPath}: "rules" must hold an object`);
65
+ }
66
+ const checked = {};
67
+ for (const [id, setting] of Object.entries(rules)) {
68
+ // a mistyped setting would turn the rule off without a word, so it is an error
69
+ if (typeof setting !== 'string' || !SETTINGS.includes(setting)) {
70
+ throw new ConfigError(`config ${configPath}: rule "${id}" is set to ${JSON.stringify(setting)}; use one of ${SETTINGS.join(', ')}`);
71
+ }
72
+ checked[id] = setting;
73
+ }
74
+ return { rules: checked };
75
+ }
76
+ // Flags stand above the file: they are typed for this run and mean it.
77
+ export function applyRuleFlags(config, enable, disable) {
78
+ if (enable.length === 0 && disable.length === 0)
79
+ return config;
80
+ const rules = { ...(config.rules || {}) };
81
+ for (const id of disable)
82
+ rules[id] = 'off';
83
+ for (const id of enable)
84
+ delete rules[id];
85
+ return { ...config, rules };
86
+ }
87
+ export const isRuleOff = (config, ruleId) => config.rules?.[ruleId] === 'off';
88
+ export function applyConfig(violations, config) {
89
+ const rules = config.rules;
90
+ if (!rules)
91
+ return violations;
92
+ const out = [];
93
+ for (const violation of violations) {
94
+ const setting = rules[violation.rule];
95
+ if (setting === 'off')
96
+ continue;
97
+ out.push(setting ? { ...violation, severity: setting } : violation);
98
+ }
99
+ return out;
100
+ }
101
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lint/config.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
+ import { applyConfig, isRuleOff } from './config';
1
2
  export function runRules(ast, rules, ctx) {
2
- return rules.flatMap(rule => rule.check(ast, ctx));
3
+ const active = rules.filter(rule => !isRuleOff(ctx.config, rule.id));
4
+ return applyConfig(active.flatMap(rule => rule.check(ast, ctx)), ctx.config);
3
5
  }
4
6
  //# sourceMappingURL=engine.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/lint/engine.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,QAAQ,CAAC,GAAoB,EAAE,KAAa,EAAE,GAAgB;IAC5E,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;AACpD,CAAC"}
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/lint/engine.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEjD,MAAM,UAAU,QAAQ,CAAC,GAAoB,EAAE,KAAa,EAAE,GAAgB;IAC5E,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;IACpE,OAAO,WAAW,CAChB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAC5C,GAAG,CAAC,MAAM,CACX,CAAA;AACH,CAAC"}
@@ -2,6 +2,7 @@ import type { Violation } from '../types';
2
2
  export type FileReport = {
3
3
  filePath: string;
4
4
  violations: Violation[];
5
+ silenced?: number;
5
6
  };
6
7
  export type TextFormatOptions = {
7
8
  color: boolean;
@@ -21,7 +21,9 @@ function summaryLine(reports) {
21
21
  const nFiles = reports.length;
22
22
  const nErrors = totals.filter(v => v.severity === 'error').length;
23
23
  const nWarnings = totals.filter(v => v.severity === 'warning').length;
24
- return `${plural(nFiles, 'file', 'files')} checked, ${plural(nErrors, 'error', 'errors')}, ${plural(nWarnings, 'warning', 'warnings')}`;
24
+ const nSilenced = reports.reduce((sum, r) => sum + (r.silenced || 0), 0);
25
+ const head = `${plural(nFiles, 'file', 'files')} checked, ${plural(nErrors, 'error', 'errors')}, ${plural(nWarnings, 'warning', 'warnings')}`;
26
+ return nSilenced === 0 ? head : `${head}, ${nSilenced} silenced`;
25
27
  }
26
28
  export function formatText(reports, opts) {
27
29
  const lines = [];
@@ -1 +1 @@
1
- {"version":3,"file":"text.js","sourceRoot":"","sources":["../../../src/lint/formatters/text.ts"],"names":[],"mappings":"AAMA,MAAM,IAAI,GAAG;IACX,GAAG,EAAE,UAAU;IACf,MAAM,EAAE,UAAU;IAClB,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,SAAS;CACjB,CAAA;AAED,SAAS,SAAS,CAAC,QAAkB,EAAE,KAAc;IACnD,IAAI,CAAC,KAAK;QAAE,OAAO,QAAQ,CAAA;IAC3B,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,GAAG,IAAI,CAAC,GAAG,GAAG,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,CAAA;IACtE,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,CAAA;IAC3E,OAAO,GAAG,IAAI,CAAC,IAAI,GAAG,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,CAAA;AAC/C,CAAC;AAED,SAAS,MAAM,CAAC,CAAS,EAAE,QAAgB,EAAE,MAAc;IACzD,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAA;AAC9C,CAAC;AAED,SAAS,WAAW,CAAC,OAAqB;IACxC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA;IACjD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;IAC7B,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,MAAM,CAAA;IACjE,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,MAAM,CAAA;IACrE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,aAAa,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,MAAM,CACjG,SAAS,EACT,SAAS,EACT,UAAU,CACX,EAAE,CAAA;AACL,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,OAAqB,EAAE,IAAuB;IACvE,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,CAAA;YACzC,MAAM,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,CAAA;YAC7C,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,IAAI,IAAI,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAA;QAC/G,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IACnC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAA;IAC1D,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,WAAW,CAAC,OAAO,CAAC,IAAI,CAAA;AAC3D,CAAC"}
1
+ {"version":3,"file":"text.js","sourceRoot":"","sources":["../../../src/lint/formatters/text.ts"],"names":[],"mappings":"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"}
@@ -119,7 +119,7 @@ function peg$parse(input, options) {
119
119
  var peg$FAILED = {}, peg$startRuleFunctions = { start: peg$parsestart }, peg$startRuleFunction = peg$parsestart, peg$c0 = peg$anyExpectation(), peg$c1 = ':', peg$c2 = peg$literalExpectation(':', false), peg$c3 = '<', peg$c4 = peg$literalExpectation('<', false), peg$c5 = /^[^>]/, peg$c6 = peg$classExpectation(['>'], true, false), peg$c7 = '>', peg$c8 = peg$literalExpectation('>', false), peg$c9 = function (name, value) {
120
120
  // only a real attribute list is checked: `<` and `>` in running text or in
121
121
  // a verbatim block are not markup
122
- const verbatim = options._blockStack.some(b => options.verbatimBlocks.indexOf(b.name) !== -1);
122
+ const verbatim = options._blockStack.some(b => options.isVerbatim(b.name));
123
123
  if (!options._inDirective || verbatim)
124
124
  return null;
125
125
  const advice = 'use a non-conflicting delimiter ("...", (...), <<...>>) or plain text';
@@ -146,7 +146,7 @@ function peg$parse(input, options) {
146
146
  return null;
147
147
  }, peg$c10 = '=begin', peg$c11 = peg$literalExpectation('=begin', false), peg$c12 = function (name) {
148
148
  const top = options._blockStack[options._blockStack.length - 1];
149
- const verbatim = top && options.verbatimBlocks.indexOf(top.name) !== -1;
149
+ const verbatim = top && options.isVerbatim(top.name);
150
150
  if (verbatim) {
151
151
  // the same name closes the enclosing block early and orphans the marker after it
152
152
  if (top.name === name) {
@@ -172,7 +172,7 @@ function peg$parse(input, options) {
172
172
  }, peg$c13 = '=end', peg$c14 = peg$literalExpectation('=end', false), peg$c15 = function (name) {
173
173
  const top = options._blockStack[options._blockStack.length - 1];
174
174
  // a verbatim block runs to its own =end, so any other marker inside it is content
175
- if (top && top.name !== name && options.verbatimBlocks.indexOf(top.name) !== -1) {
175
+ if (top && top.name !== name && options.isVerbatim(top.name)) {
176
176
  options._inDirective = false;
177
177
  return null;
178
178
  }
@@ -204,7 +204,7 @@ function peg$parse(input, options) {
204
204
  }, peg$c19 = '!', peg$c20 = peg$literalExpectation('!', false), peg$c21 = function (name) {
205
205
  // any verbatim block on the stack makes this line content: markers written
206
206
  // inside such a block are an example, not structure
207
- const verbatim = options._blockStack.some(b => options.verbatimBlocks.indexOf(b.name) !== -1);
207
+ const verbatim = options._blockStack.some(b => options.isVerbatim(b.name));
208
208
  if (options._inDirective && !verbatim) {
209
209
  options.diagnostics.push({
210
210
  rule: 'attr-continuation-dropped',
@@ -1086,6 +1086,9 @@ function peg$parse(input, options) {
1086
1086
  options.diagnostics = options.diagnostics || [];
1087
1087
  options._blockStack = options._blockStack || [];
1088
1088
  options.verbatimBlocks = options.verbatimBlocks || [];
1089
+ // a predicate, not a list: a named block is spelled by its case, so its names
1090
+ // cannot be enumerated ahead of time
1091
+ options.isVerbatim = options.isVerbatim || (name => options.verbatimBlocks.indexOf(name) !== -1);
1089
1092
  if (typeof options._inDirective !== 'boolean')
1090
1093
  options._inDirective = false;
1091
1094
  peg$result = peg$startRuleFunction();