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.
- package/CHANGELOG.podlite +40 -0
- package/esm/cli.js +100 -18
- package/esm/cli.js.map +1 -1
- package/esm/lint/config.d.ts +8 -0
- package/esm/lint/config.js +101 -0
- package/esm/lint/config.js.map +1 -0
- package/esm/lint/engine.js +3 -1
- package/esm/lint/engine.js.map +1 -1
- package/esm/lint/formatters/text.d.ts +1 -0
- package/esm/lint/formatters/text.js +3 -1
- package/esm/lint/formatters/text.js.map +1 -1
- package/esm/lint/grammar/lint.js +7 -4
- package/esm/lint/grammar/lint.js.map +1 -1
- package/esm/lint/grammar/scan.d.ts +1 -1
- package/esm/lint/grammar/scan.js +20 -3
- package/esm/lint/grammar/scan.js.map +1 -1
- package/esm/lint/index.d.ts +11 -0
- package/esm/lint/index.js +47 -18
- package/esm/lint/index.js.map +1 -1
- package/esm/lint/mute.d.ts +17 -0
- package/esm/lint/mute.js +75 -0
- package/esm/lint/mute.js.map +1 -0
- package/esm/lint/parallel.d.ts +4 -0
- package/esm/lint/parallel.js +57 -0
- package/esm/lint/parallel.js.map +1 -0
- package/esm/lint/rules/abbreviated-attrs.d.ts +4 -0
- package/esm/lint/rules/abbreviated-attrs.js +67 -0
- package/esm/lint/rules/abbreviated-attrs.js.map +1 -0
- package/esm/lint/rules/attr-value-dropped.js +3 -2
- package/esm/lint/rules/attr-value-dropped.js.map +1 -1
- package/esm/lint/rules/dead-definitions.d.ts +3 -0
- package/esm/lint/rules/dead-definitions.js +80 -0
- package/esm/lint/rules/dead-definitions.js.map +1 -0
- package/esm/lint/rules/index.js +4 -0
- package/esm/lint/rules/index.js.map +1 -1
- package/esm/lint/rules/markdown-in-pod.d.ts +4 -0
- package/esm/lint/rules/markdown-in-pod.js +67 -0
- package/esm/lint/rules/markdown-in-pod.js.map +1 -0
- package/esm/lint/rules/table-column-width.d.ts +4 -0
- package/esm/lint/rules/table-column-width.js +110 -0
- package/esm/lint/rules/table-column-width.js.map +1 -0
- package/esm/lint/rules/table-shape.d.ts +3 -0
- package/esm/lint/rules/table-shape.js +15 -0
- package/esm/lint/rules/table-shape.js.map +1 -0
- package/esm/lint/types.d.ts +5 -1
- package/esm/lint/worker.d.ts +5 -0
- package/esm/lint/worker.js +15 -0
- package/esm/lint/worker.js.map +1 -0
- package/esm/query.js +4 -1
- package/esm/query.js.map +1 -1
- package/esm/resolve-includes.js +56 -7
- package/esm/resolve-includes.js.map +1 -1
- package/esm/version.d.ts +1 -1
- package/esm/version.js +1 -1
- package/lib/cli.js +99 -17
- package/lib/cli.js.map +1 -1
- package/lib/lint/config.d.ts +8 -0
- package/lib/lint/config.js +143 -0
- package/lib/lint/config.js.map +1 -0
- package/lib/lint/engine.js +3 -1
- package/lib/lint/engine.js.map +1 -1
- package/lib/lint/formatters/text.d.ts +1 -0
- package/lib/lint/formatters/text.js +3 -1
- package/lib/lint/formatters/text.js.map +1 -1
- package/lib/lint/grammar/lint.js +7 -4
- package/lib/lint/grammar/lint.js.map +1 -1
- package/lib/lint/grammar/scan.d.ts +1 -1
- package/lib/lint/grammar/scan.js +19 -2
- package/lib/lint/grammar/scan.js.map +1 -1
- package/lib/lint/index.d.ts +11 -0
- package/lib/lint/index.js +89 -20
- package/lib/lint/index.js.map +1 -1
- package/lib/lint/mute.d.ts +17 -0
- package/lib/lint/mute.js +80 -0
- package/lib/lint/mute.js.map +1 -0
- package/lib/lint/parallel.d.ts +4 -0
- package/lib/lint/parallel.js +95 -0
- package/lib/lint/parallel.js.map +1 -0
- package/lib/lint/rules/abbreviated-attrs.d.ts +4 -0
- package/lib/lint/rules/abbreviated-attrs.js +71 -0
- package/lib/lint/rules/abbreviated-attrs.js.map +1 -0
- package/lib/lint/rules/attr-value-dropped.js +3 -2
- package/lib/lint/rules/attr-value-dropped.js.map +1 -1
- package/lib/lint/rules/dead-definitions.d.ts +3 -0
- package/lib/lint/rules/dead-definitions.js +83 -0
- package/lib/lint/rules/dead-definitions.js.map +1 -0
- package/lib/lint/rules/index.js +4 -0
- package/lib/lint/rules/index.js.map +1 -1
- package/lib/lint/rules/markdown-in-pod.d.ts +4 -0
- package/lib/lint/rules/markdown-in-pod.js +71 -0
- package/lib/lint/rules/markdown-in-pod.js.map +1 -0
- package/lib/lint/rules/table-column-width.d.ts +4 -0
- package/lib/lint/rules/table-column-width.js +114 -0
- package/lib/lint/rules/table-column-width.js.map +1 -0
- package/lib/lint/rules/table-shape.d.ts +3 -0
- package/lib/lint/rules/table-shape.js +18 -0
- package/lib/lint/rules/table-shape.js.map +1 -0
- package/lib/lint/types.d.ts +5 -1
- package/lib/lint/worker.d.ts +5 -0
- package/lib/lint/worker.js +17 -0
- package/lib/lint/worker.js.map +1 -0
- package/lib/query.js +4 -1
- package/lib/query.js.map +1 -1
- package/lib/resolve-includes.js +55 -6
- package/lib/resolve-includes.js.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/package.json +13 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attr-value-dropped.js","sourceRoot":"","sources":["../../../src/lint/rules/attr-value-dropped.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,0BAA0B,GAAG,oBAAoB,CAAA;AAE9D,MAAM,CAAC,MAAM,oBAAoB,GAAS;IACxC,EAAE,EAAE,0BAA0B;IAC9B,QAAQ,EAAE,SAAS;IACnB,
|
|
1
|
+
{"version":3,"file":"attr-value-dropped.js","sourceRoot":"","sources":["../../../src/lint/rules/attr-value-dropped.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,0BAA0B,GAAG,oBAAoB,CAAA;AAE9D,MAAM,CAAC,MAAM,oBAAoB,GAAS;IACxC,EAAE,EAAE,0BAA0B;IAC9B,QAAQ,EAAE,SAAS;IACnB,yEAAyE;IACzE,2DAA2D;IAC3D,KAAK,EAAE,CAAC,GAAoB,EAAE,IAAiB,EAAe,EAAE,CAC9D,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,kBAAkB,CAAC;SAC1C,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACT,IAAI,EAAE,0BAA0B;QAChC,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,QAAQ,EAAE,CAAC,CAAC,QAAQ;KACrB,CAAC,CAAC;CACR,CAAA"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { getFromTree, getTextContentFromNode } from '@podlite/schema';
|
|
2
|
+
export const DEAD_DEFINITIONS_RULE_ID = 'dead-definitions';
|
|
3
|
+
const attr = (node, name) => {
|
|
4
|
+
const item = (Array.isArray(node.config) ? node.config : []).find(c => c && c.name === name);
|
|
5
|
+
return item && item.value !== undefined && item.value !== null ? String(item.value) : undefined;
|
|
6
|
+
};
|
|
7
|
+
// An alias node carries no location, so the line is read back from the source;
|
|
8
|
+
// a warning that cannot say where is a warning the author cannot act on.
|
|
9
|
+
const aliasLine = (source, name) => {
|
|
10
|
+
const lines = source.split(/\r?\n/);
|
|
11
|
+
const at = lines.findIndex(line => new RegExp(`^\\s*=alias\\s+${name}(\\s|$)`).test(line));
|
|
12
|
+
if (at === -1)
|
|
13
|
+
return undefined;
|
|
14
|
+
return { start: { line: at + 1, column: 1, offset: 0 }, end: { line: at + 1, column: 1, offset: 0 } };
|
|
15
|
+
};
|
|
16
|
+
const definitions = (ast) => {
|
|
17
|
+
const nodes = getFromTree(ast, () => true);
|
|
18
|
+
const found = [];
|
|
19
|
+
for (const node of nodes) {
|
|
20
|
+
if (node.type === 'alias' && node.name) {
|
|
21
|
+
found.push({ kind: 'alias', name: node.name, location: node.location });
|
|
22
|
+
continue;
|
|
23
|
+
}
|
|
24
|
+
if (node.name === 'data') {
|
|
25
|
+
const key = attr(node, 'key');
|
|
26
|
+
if (key)
|
|
27
|
+
found.push({ kind: 'data', name: key, location: node.location });
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return found;
|
|
31
|
+
};
|
|
32
|
+
const aliasUses = (ast) => {
|
|
33
|
+
const nodes = getFromTree(ast, () => true);
|
|
34
|
+
const used = new Set();
|
|
35
|
+
for (const node of nodes) {
|
|
36
|
+
if (node.type !== 'fcode' || node.name !== 'A')
|
|
37
|
+
continue;
|
|
38
|
+
const name = getTextContentFromNode(node)
|
|
39
|
+
?.toString()
|
|
40
|
+
.trim();
|
|
41
|
+
if (name)
|
|
42
|
+
used.add(name);
|
|
43
|
+
}
|
|
44
|
+
return used;
|
|
45
|
+
};
|
|
46
|
+
// A data reference is read from the source rather than from the tree: the block
|
|
47
|
+
// that consumes it resolves the reference while the tree is built, so by the
|
|
48
|
+
// time a rule sees the tree the mention is already gone.
|
|
49
|
+
const dataUses = (source) => {
|
|
50
|
+
const used = new Set();
|
|
51
|
+
const reference = /data:([A-Za-z0-9_-]+)/g;
|
|
52
|
+
let match;
|
|
53
|
+
while ((match = reference.exec(source)) !== null)
|
|
54
|
+
used.add(match[1]);
|
|
55
|
+
return used;
|
|
56
|
+
};
|
|
57
|
+
export const deadDefinitionsRule = {
|
|
58
|
+
id: DEAD_DEFINITIONS_RULE_ID,
|
|
59
|
+
severity: 'warning',
|
|
60
|
+
check: (ast, ctx) => {
|
|
61
|
+
// without the source a data reference cannot be found at all, and reporting
|
|
62
|
+
// every keyed block as dead would be worse than saying nothing
|
|
63
|
+
const declared = definitions(ast).filter(item => item.kind === 'alias' || ctx.source !== undefined);
|
|
64
|
+
if (declared.length === 0)
|
|
65
|
+
return [];
|
|
66
|
+
const aliases = aliasUses(ast);
|
|
67
|
+
const keys = dataUses(ctx.source || '');
|
|
68
|
+
return declared
|
|
69
|
+
.filter(item => !(item.kind === 'alias' ? aliases.has(item.name) : keys.has(item.name)))
|
|
70
|
+
.map(item => ({
|
|
71
|
+
rule: DEAD_DEFINITIONS_RULE_ID,
|
|
72
|
+
severity: 'warning',
|
|
73
|
+
message: item.kind === 'alias'
|
|
74
|
+
? `=alias ${item.name} is never used; A<${item.name}> appears nowhere in the document`
|
|
75
|
+
: `=data :key<${item.name}> is never used; data:${item.name} appears nowhere in the document`,
|
|
76
|
+
location: item.location || (item.kind === 'alias' ? aliasLine(ctx.source || '', item.name) : undefined),
|
|
77
|
+
}));
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
//# sourceMappingURL=dead-definitions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dead-definitions.js","sourceRoot":"","sources":["../../../src/lint/rules/dead-definitions.ts"],"names":[],"mappings":"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"}
|
package/esm/lint/rules/index.js
CHANGED
|
@@ -4,6 +4,8 @@ import { idUniqueRule } from './id-unique';
|
|
|
4
4
|
import { mediaAbsoluteFileRule } from './media-absolute-file';
|
|
5
5
|
import { linkTargetResolvesRule } from './link-target-resolves';
|
|
6
6
|
import { attrValueDroppedRule } from './attr-value-dropped';
|
|
7
|
+
import { tableShapeRule } from './table-shape';
|
|
8
|
+
import { deadDefinitionsRule } from './dead-definitions';
|
|
7
9
|
export const DEFAULT_RULES = [
|
|
8
10
|
syntaxValidRule,
|
|
9
11
|
headingHierarchyRule,
|
|
@@ -11,5 +13,7 @@ export const DEFAULT_RULES = [
|
|
|
11
13
|
mediaAbsoluteFileRule,
|
|
12
14
|
linkTargetResolvesRule,
|
|
13
15
|
attrValueDroppedRule,
|
|
16
|
+
tableShapeRule,
|
|
17
|
+
deadDefinitionsRule,
|
|
14
18
|
];
|
|
15
19
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lint/rules/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lint/rules/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAExD,MAAM,CAAC,MAAM,aAAa,GAAW;IACnC,eAAe;IACf,oBAAoB;IACpB,YAAY;IACZ,qBAAqB;IACrB,sBAAsB;IACtB,oBAAoB;IACpB,cAAc;IACd,mBAAmB;CACpB,CAAA"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { isVerbatimBlock } from '@podlite/schema';
|
|
2
|
+
export const MARKDOWN_IN_POD_RULE_ID = 'markdown-in-pod';
|
|
3
|
+
export const markdownInPodRule = {
|
|
4
|
+
id: MARKDOWN_IN_POD_RULE_ID,
|
|
5
|
+
severity: 'warning',
|
|
6
|
+
};
|
|
7
|
+
const FOREIGN = [
|
|
8
|
+
{ test: /^\s*#{1,6}\s+\S/, says: 'a heading written with hashes is text here; write =head1 and its levels' },
|
|
9
|
+
{
|
|
10
|
+
test: /^\s*\|?[\s:|-]*-[\s:|-]*\|[\s:|-]*$/,
|
|
11
|
+
says: 'a row of bars and dashes is text here; a table is written as =begin table with its own separator',
|
|
12
|
+
},
|
|
13
|
+
{ test: /\*\*[^*\s](?:[^*]*[^*\s])?\*\*/, says: 'a pair of asterisks is text here; bold is written as B<>' },
|
|
14
|
+
];
|
|
15
|
+
// Talk about Markdown is legal: a line whose construct sits inside an inline
|
|
16
|
+
// code span is showing the markup, not using it.
|
|
17
|
+
const insideCode = (line) => /C<[^>]*>/.test(line) || /`[^`]+`/.test(line);
|
|
18
|
+
export function scanMarkdownInPod(content) {
|
|
19
|
+
const lines = content.split(/\r?\n/);
|
|
20
|
+
const open = [];
|
|
21
|
+
const violations = [];
|
|
22
|
+
let abbreviatedTable = false;
|
|
23
|
+
for (let i = 0; i < lines.length; i++) {
|
|
24
|
+
const line = lines[i];
|
|
25
|
+
const end = line.match(/^\s*=end\s+([\w-]+)/);
|
|
26
|
+
if (end) {
|
|
27
|
+
open.pop();
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
const begin = line.match(/^\s*=begin\s+([\w-]+)/);
|
|
31
|
+
if (begin) {
|
|
32
|
+
open.push(begin[1]);
|
|
33
|
+
abbreviatedTable = false;
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
// a dash separator belongs to a table written the short way too, and that
|
|
37
|
+
// block runs to the first blank line
|
|
38
|
+
if (/^\s*=(?:for\s+)?table\b/.test(line)) {
|
|
39
|
+
abbreviatedTable = true;
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
if (abbreviatedTable && line.trim() === '')
|
|
43
|
+
abbreviatedTable = false;
|
|
44
|
+
if (/^\s*=/.test(line))
|
|
45
|
+
abbreviatedTable = false;
|
|
46
|
+
if (open.some(isVerbatimBlock) || open.includes('data') || abbreviatedTable)
|
|
47
|
+
continue;
|
|
48
|
+
if (insideCode(line))
|
|
49
|
+
continue;
|
|
50
|
+
for (const foreign of FOREIGN) {
|
|
51
|
+
if (!foreign.test.test(line))
|
|
52
|
+
continue;
|
|
53
|
+
violations.push({
|
|
54
|
+
rule: MARKDOWN_IN_POD_RULE_ID,
|
|
55
|
+
severity: 'warning',
|
|
56
|
+
message: foreign.says,
|
|
57
|
+
location: {
|
|
58
|
+
start: { line: i + 1, column: 1, offset: 0 },
|
|
59
|
+
end: { line: i + 1, column: 1, offset: 0 },
|
|
60
|
+
},
|
|
61
|
+
});
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return violations;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=markdown-in-pod.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown-in-pod.js","sourceRoot":"","sources":["../../../src/lint/rules/markdown-in-pod.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { isVerbatimBlock } from '@podlite/schema';
|
|
2
|
+
export const TABLE_COLUMN_WIDTH_RULE_ID = 'table-column-width';
|
|
3
|
+
export const tableColumnWidthRule = {
|
|
4
|
+
id: TABLE_COLUMN_WIDTH_RULE_ID,
|
|
5
|
+
severity: 'warning',
|
|
6
|
+
};
|
|
7
|
+
const SEPARATOR_LINE = /^[\s=+|_-]*[|+][\s=+|_-]*$/;
|
|
8
|
+
const hasBar = (line) => line.includes('|') || line.includes('+');
|
|
9
|
+
// A table with visible bars is cut by the column positions its separator line
|
|
10
|
+
// sets, not by the bars in the row itself. A cell that reaches the boundary
|
|
11
|
+
// pushes the column open for the whole table, so every row loses its last
|
|
12
|
+
// column at once — and the document still parses, silently.
|
|
13
|
+
const boundaries = (separator) => {
|
|
14
|
+
const out = [];
|
|
15
|
+
for (let i = 0; i < separator.length; i++) {
|
|
16
|
+
if (separator[i] === '|' || separator[i] === '+')
|
|
17
|
+
out.push(i);
|
|
18
|
+
}
|
|
19
|
+
return out;
|
|
20
|
+
};
|
|
21
|
+
const isEdge = (char) => char === '|' || char === '+' || char === ' ';
|
|
22
|
+
const collides = (line, boundary) => {
|
|
23
|
+
if (boundary >= line.length)
|
|
24
|
+
return false;
|
|
25
|
+
// content standing on the boundary is wrong however the row is written
|
|
26
|
+
if (!isEdge(line[boundary]))
|
|
27
|
+
return true;
|
|
28
|
+
// pressed against the boundary only matters where the row draws a bar of its
|
|
29
|
+
// own: a row whose cells are held apart by spaces may fill its column to the
|
|
30
|
+
// last position, and the parser reads it correctly
|
|
31
|
+
const drawsBar = line[boundary] === '|' || line[boundary] === '+';
|
|
32
|
+
return drawsBar && boundary > 0 && !isEdge(line[boundary - 1]);
|
|
33
|
+
};
|
|
34
|
+
const checkTable = (lines) => {
|
|
35
|
+
const separator = lines.find(l => SEPARATOR_LINE.test(l.text) && hasBar(l.text));
|
|
36
|
+
if (!separator)
|
|
37
|
+
return [];
|
|
38
|
+
const columns = boundaries(separator.text);
|
|
39
|
+
if (columns.length === 0)
|
|
40
|
+
return [];
|
|
41
|
+
const violations = [];
|
|
42
|
+
for (const row of lines) {
|
|
43
|
+
if (row === separator || row.text.trim() === '')
|
|
44
|
+
continue;
|
|
45
|
+
if (SEPARATOR_LINE.test(row.text))
|
|
46
|
+
continue;
|
|
47
|
+
const hit = columns.find(b => collides(row.text, b));
|
|
48
|
+
if (hit === undefined)
|
|
49
|
+
continue;
|
|
50
|
+
violations.push({
|
|
51
|
+
rule: TABLE_COLUMN_WIDTH_RULE_ID,
|
|
52
|
+
severity: 'warning',
|
|
53
|
+
message: `cell reaches the column boundary at column ${hit + 1}; leave a space before the bar or the table loses a column`,
|
|
54
|
+
location: {
|
|
55
|
+
start: { line: row.line, column: hit + 1, offset: 0 },
|
|
56
|
+
end: { line: row.line, column: hit + 1, offset: 0 },
|
|
57
|
+
},
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
return violations;
|
|
61
|
+
};
|
|
62
|
+
export function scanTableColumns(content) {
|
|
63
|
+
const lines = content.split(/\r?\n/);
|
|
64
|
+
// a table keeps its content verbatim too, and it is the one being read here
|
|
65
|
+
const verbatim = (name) => name !== 'table' && isVerbatimBlock(name);
|
|
66
|
+
const openBlocks = [];
|
|
67
|
+
const violations = [];
|
|
68
|
+
let table = null;
|
|
69
|
+
const closeTable = () => {
|
|
70
|
+
if (table)
|
|
71
|
+
violations.push(...checkTable(table));
|
|
72
|
+
table = null;
|
|
73
|
+
};
|
|
74
|
+
for (let i = 0; i < lines.length; i++) {
|
|
75
|
+
const text = lines[i];
|
|
76
|
+
const begin = text.match(/^\s*=begin\s+([\w-]+)/);
|
|
77
|
+
const end = text.match(/^\s*=end\s+([\w-]+)/);
|
|
78
|
+
const abbreviated = text.match(/^\s*=(?:for\s+)?table\b/);
|
|
79
|
+
if (end) {
|
|
80
|
+
if (end[1] === 'table')
|
|
81
|
+
closeTable();
|
|
82
|
+
openBlocks.pop();
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
if (begin) {
|
|
86
|
+
closeTable();
|
|
87
|
+
openBlocks.push(begin[1]);
|
|
88
|
+
if (begin[1] === 'table' && !openBlocks.some(verbatim))
|
|
89
|
+
table = [];
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
if (openBlocks.some(verbatim))
|
|
93
|
+
continue;
|
|
94
|
+
if (abbreviated) {
|
|
95
|
+
closeTable();
|
|
96
|
+
table = [];
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
// an abbreviated table ends at the first blank line
|
|
100
|
+
if (table && text.trim() === '' && !openBlocks.includes('table')) {
|
|
101
|
+
closeTable();
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
if (table)
|
|
105
|
+
table.push({ text, line: i + 1 });
|
|
106
|
+
}
|
|
107
|
+
closeTable();
|
|
108
|
+
return violations;
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=table-column-width.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-column-width.js","sourceRoot":"","sources":["../../../src/lint/rules/table-column-width.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export const TABLE_SHAPE_RULE_ID = 'table-shape';
|
|
2
|
+
const TABLE_CODES = ['table-row-cells', 'table-cell-outside-row', 'table-mixed-separators', 'table-source-unreadable'];
|
|
3
|
+
export const tableShapeRule = {
|
|
4
|
+
id: TABLE_SHAPE_RULE_ID,
|
|
5
|
+
severity: 'warning',
|
|
6
|
+
check: (ast, _ctx) => (ast.diagnostics || [])
|
|
7
|
+
.filter(d => TABLE_CODES.includes(d.code))
|
|
8
|
+
.map(d => ({
|
|
9
|
+
rule: TABLE_SHAPE_RULE_ID,
|
|
10
|
+
severity: d.severity,
|
|
11
|
+
message: d.message,
|
|
12
|
+
location: d.location,
|
|
13
|
+
})),
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=table-shape.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-shape.js","sourceRoot":"","sources":["../../../src/lint/rules/table-shape.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,mBAAmB,GAAG,aAAa,CAAA;AAEhD,MAAM,WAAW,GAAG,CAAC,iBAAiB,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,yBAAyB,CAAC,CAAA;AAEtH,MAAM,CAAC,MAAM,cAAc,GAAS;IAClC,EAAE,EAAE,mBAAmB;IACvB,QAAQ,EAAE,SAAS;IACnB,KAAK,EAAE,CAAC,GAAoB,EAAE,IAAiB,EAAe,EAAE,CAC9D,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SACzC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACT,IAAI,EAAE,mBAAmB;QACzB,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,QAAQ,EAAE,CAAC,CAAC,QAAQ;KACrB,CAAC,CAAC;CACR,CAAA"}
|
package/esm/lint/types.d.ts
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
import type { Location, PodliteDocument } from '@podlite/schema';
|
|
2
2
|
export type Severity = 'error' | 'warning' | 'info';
|
|
3
3
|
export type FileType = 'md' | 'podlite';
|
|
4
|
-
export type
|
|
4
|
+
export type RuleSetting = 'off' | Severity;
|
|
5
|
+
export type LintConfig = {
|
|
6
|
+
rules?: Record<string, RuleSetting>;
|
|
7
|
+
};
|
|
5
8
|
export type LintContext = {
|
|
6
9
|
filePath: string;
|
|
7
10
|
fileType: FileType;
|
|
8
11
|
config: LintConfig;
|
|
12
|
+
source?: string;
|
|
9
13
|
};
|
|
10
14
|
export type Violation = {
|
|
11
15
|
rule: string;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { parentPort } from 'worker_threads';
|
|
2
|
+
import { lintFile } from './index';
|
|
3
|
+
if (parentPort) {
|
|
4
|
+
const port = parentPort;
|
|
5
|
+
// the first message back says the parser is loaded and the thread can be fed
|
|
6
|
+
port.postMessage('ready');
|
|
7
|
+
port.on('message', (batch) => {
|
|
8
|
+
const done = batch.jobs.map(job => ({
|
|
9
|
+
index: job.index,
|
|
10
|
+
report: lintFile(job.filePath, batch.config),
|
|
11
|
+
}));
|
|
12
|
+
port.postMessage(done);
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=worker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/lint/worker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAE3C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAOlC,IAAI,UAAU,EAAE,CAAC;IACf,MAAM,IAAI,GAAG,UAAU,CAAA;IACvB,6EAA6E;IAC7E,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;IACzB,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,KAAY,EAAE,EAAE;QAClC,MAAM,IAAI,GAAmB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClD,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC;SAC7C,CAAC,CAAC,CAAA;QACH,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;IACxB,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
package/esm/query.js
CHANGED
|
@@ -21,7 +21,10 @@ const renderViaRoot = (block, serializer) => {
|
|
|
21
21
|
};
|
|
22
22
|
const formatBlocks = (format, matches) => {
|
|
23
23
|
if (format === 'json') {
|
|
24
|
-
|
|
24
|
+
// without the source, a query over several files answers "here are the
|
|
25
|
+
// blocks" and drops "from where", which leaves the caller no way back to
|
|
26
|
+
// the document
|
|
27
|
+
return JSON.stringify(matches.map(m => ({ file: m.source.file, ...m.block })), null, 2);
|
|
25
28
|
}
|
|
26
29
|
if (format === 'podlite') {
|
|
27
30
|
return matches
|
package/esm/query.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.js","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAwB,MAAM,iBAAiB,CAAA;AAe7G,MAAM,UAAU,GAAG,CAAC,IAAY,EAAU,EAAE;IAC1C,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAC3C,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAA;AAC1C,CAAC,CAAA;AAED,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,KAAU,EAAU,EAAE;IACtD,MAAM,GAAG,GAAG,KAAK,EAAE,QAAQ,CAAA;IAC3B,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,QAAQ,EAAE,CAAC;QACzF,OAAO,EAAE,CAAA;IACX,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;AACrD,CAAC,CAAA;AAED,wEAAwE;AACxE,oEAAoE;AACpE,4DAA4D;AAC5D,MAAM,aAAa,GAAG,CAAC,KAAc,EAAE,UAAyB,EAAU,EAAE;IAC1E,MAAM,IAAI,GAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,CAAA;IAC9E,MAAM,GAAG,GAAG,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACjF,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAA;AACvB,CAAC,CAAA;AAED,MAAM,YAAY,GAAG,CAAC,MAAmB,EAAE,OAAkD,EAAU,EAAE;IACvG,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC,SAAS,CACnB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"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"}
|
package/esm/resolve-includes.js
CHANGED
|
@@ -1,7 +1,46 @@
|
|
|
1
1
|
import * as fs from 'fs';
|
|
2
2
|
import * as path from 'path';
|
|
3
|
-
import { getTextContentFromNode, parseSelector, runSelector } from '@podlite/schema';
|
|
3
|
+
import { filePathMatches, getTextContentFromNode, parseSelector, runSelector, } from '@podlite/schema';
|
|
4
4
|
const isIncludeBlock = (node) => node && typeof node === 'object' && node.type === 'block' && node.name === 'include';
|
|
5
|
+
const hasMask = (target) => /[*?]/.test(target);
|
|
6
|
+
const reachesSubdirs = (target) => target.includes('**');
|
|
7
|
+
// A mask that crosses directories could otherwise walk a whole disk from a
|
|
8
|
+
// short prefix.
|
|
9
|
+
const maxDepth = 32;
|
|
10
|
+
// Everything up to the last separator that carries no mask; the rest is matched
|
|
11
|
+
// by the selector itself, which already knows the pattern language.
|
|
12
|
+
const fixedPrefix = (target) => {
|
|
13
|
+
const parts = target.split('/');
|
|
14
|
+
const upto = parts.findIndex(hasMask);
|
|
15
|
+
return parts.slice(0, upto === -1 ? parts.length : upto).join('/');
|
|
16
|
+
};
|
|
17
|
+
const listDir = (dir, deep, depth = 0) => {
|
|
18
|
+
let entries;
|
|
19
|
+
try {
|
|
20
|
+
entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return [];
|
|
24
|
+
}
|
|
25
|
+
const named = entries.filter(e => !e.name.startsWith('.')).sort((a, b) => (a.name < b.name ? -1 : 1));
|
|
26
|
+
const files = named.filter(e => e.isFile()).map(e => e.name);
|
|
27
|
+
if (!deep || depth >= maxDepth)
|
|
28
|
+
return files;
|
|
29
|
+
const nested = named
|
|
30
|
+
.filter(e => e.isDirectory())
|
|
31
|
+
.flatMap(e => listDir(path.join(dir, e.name), deep, depth + 1).map(inner => `${e.name}/${inner}`));
|
|
32
|
+
return [...files, ...nested];
|
|
33
|
+
};
|
|
34
|
+
// Candidate paths for a masked target, written the way the target is written so
|
|
35
|
+
// the selector matches them back. Matching runs before the file is read: the
|
|
36
|
+
// directory may hold anything, and a mask that does not name it must not send
|
|
37
|
+
// it through the parser.
|
|
38
|
+
const expandMask = (target, baseDir) => {
|
|
39
|
+
const prefix = fixedPrefix(target);
|
|
40
|
+
return listDir(path.resolve(baseDir, prefix), reachesSubdirs(target))
|
|
41
|
+
.map(name => (prefix ? `${prefix}/${name}` : name))
|
|
42
|
+
.filter(file => filePathMatches(file, target));
|
|
43
|
+
};
|
|
5
44
|
const keepBlocks = (items) => items.filter(item => item && typeof item === 'object' && !('file' in item));
|
|
6
45
|
const unwrapRoot = (blocks) => blocks.flatMap((b) => b && b.type === 'block' && b.name === 'root' && Array.isArray(b.content) ? b.content : [b]);
|
|
7
46
|
export const resolveIncludes = (tree, opts) => {
|
|
@@ -14,14 +53,24 @@ export const resolveIncludes = (tree, opts) => {
|
|
|
14
53
|
const parsed = selector ? parseSelector(selector) : undefined;
|
|
15
54
|
if (!selector || !parsed || parsed.scheme !== 'file' || !parsed.document)
|
|
16
55
|
return node;
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
if (!fs.existsSync(target)) {
|
|
56
|
+
const masked = hasMask(parsed.document);
|
|
57
|
+
const written = masked ? expandMask(parsed.document, baseDir) : [parsed.document];
|
|
58
|
+
if (!masked && !fs.existsSync(path.resolve(baseDir, parsed.document))) {
|
|
21
59
|
throw new Error(`include target not found: ${parsed.document}`);
|
|
22
60
|
}
|
|
23
|
-
const
|
|
24
|
-
|
|
61
|
+
const docs = [];
|
|
62
|
+
for (const file of written) {
|
|
63
|
+
const target = path.resolve(baseDir, file);
|
|
64
|
+
if (stack.includes(target))
|
|
65
|
+
continue;
|
|
66
|
+
docs.push({
|
|
67
|
+
file,
|
|
68
|
+
node: walkNode(opts.parse(fs.readFileSync(target, 'utf-8')), path.dirname(target), [...stack, target]),
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
if (docs.length === 0)
|
|
72
|
+
return [];
|
|
73
|
+
return unwrapRoot(keepBlocks(runSelector(selector, docs)));
|
|
25
74
|
}
|
|
26
75
|
if (Array.isArray(node.content))
|
|
27
76
|
return { ...node, content: walkList(node.content, baseDir, stack) };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-includes.js","sourceRoot":"","sources":["../src/resolve-includes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,
|
|
1
|
+
{"version":3,"file":"resolve-includes.js","sourceRoot":"","sources":["../src/resolve-includes.ts"],"names":[],"mappings":"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"}
|
package/esm/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const version = "0.0.
|
|
1
|
+
export declare const version = "0.0.80";
|
package/esm/version.js
CHANGED