podlite 0.0.79 → 0.0.81

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 (112) hide show
  1. package/CHANGELOG.podlite +34 -0
  2. package/esm/cli.js +79 -11
  3. package/esm/cli.js.map +1 -1
  4. package/esm/lint/config.d.ts +2 -0
  5. package/esm/lint/config.js +46 -0
  6. package/esm/lint/config.js.map +1 -1
  7. package/esm/lint/grammar/lint.js +7 -4
  8. package/esm/lint/grammar/lint.js.map +1 -1
  9. package/esm/lint/grammar/scan.d.ts +1 -1
  10. package/esm/lint/grammar/scan.js +15 -2
  11. package/esm/lint/grammar/scan.js.map +1 -1
  12. package/esm/lint/index.d.ts +11 -1
  13. package/esm/lint/index.js +30 -18
  14. package/esm/lint/index.js.map +1 -1
  15. package/esm/lint/parallel.d.ts +4 -0
  16. package/esm/lint/parallel.js +57 -0
  17. package/esm/lint/parallel.js.map +1 -0
  18. package/esm/lint/rules/abbreviated-attrs.d.ts +4 -0
  19. package/esm/lint/rules/abbreviated-attrs.js +67 -0
  20. package/esm/lint/rules/abbreviated-attrs.js.map +1 -0
  21. package/esm/lint/rules/dead-definitions.d.ts +3 -0
  22. package/esm/lint/rules/dead-definitions.js +80 -0
  23. package/esm/lint/rules/dead-definitions.js.map +1 -0
  24. package/esm/lint/rules/index.js +6 -0
  25. package/esm/lint/rules/index.js.map +1 -1
  26. package/esm/lint/rules/link-file-resolves.d.ts +3 -0
  27. package/esm/lint/rules/link-file-resolves.js +58 -0
  28. package/esm/lint/rules/link-file-resolves.js.map +1 -0
  29. package/esm/lint/rules/link-not-empty.d.ts +3 -0
  30. package/esm/lint/rules/link-not-empty.js +15 -0
  31. package/esm/lint/rules/link-not-empty.js.map +1 -0
  32. package/esm/lint/rules/link-target-resolves.js +10 -28
  33. package/esm/lint/rules/link-target-resolves.js.map +1 -1
  34. package/esm/lint/rules/link-targets.d.ts +11 -0
  35. package/esm/lint/rules/link-targets.js +42 -0
  36. package/esm/lint/rules/link-targets.js.map +1 -0
  37. package/esm/lint/rules/markdown-in-pod.d.ts +4 -0
  38. package/esm/lint/rules/markdown-in-pod.js +67 -0
  39. package/esm/lint/rules/markdown-in-pod.js.map +1 -0
  40. package/esm/lint/rules/table-column-width.js +10 -6
  41. package/esm/lint/rules/table-column-width.js.map +1 -1
  42. package/esm/lint/rules/unclosed-markup-code.d.ts +4 -0
  43. package/esm/lint/rules/unclosed-markup-code.js +105 -0
  44. package/esm/lint/rules/unclosed-markup-code.js.map +1 -0
  45. package/esm/lint/types.d.ts +2 -0
  46. package/esm/lint/types.js +3 -1
  47. package/esm/lint/types.js.map +1 -1
  48. package/esm/lint/worker.d.ts +5 -0
  49. package/esm/lint/worker.js +15 -0
  50. package/esm/lint/worker.js.map +1 -0
  51. package/esm/query.js +4 -1
  52. package/esm/query.js.map +1 -1
  53. package/esm/resolve-includes.js +56 -7
  54. package/esm/resolve-includes.js.map +1 -1
  55. package/esm/version.d.ts +1 -1
  56. package/esm/version.js +1 -1
  57. package/lib/cli.js +78 -10
  58. package/lib/cli.js.map +1 -1
  59. package/lib/lint/config.d.ts +2 -0
  60. package/lib/lint/config.js +48 -0
  61. package/lib/lint/config.js.map +1 -1
  62. package/lib/lint/grammar/lint.js +7 -4
  63. package/lib/lint/grammar/lint.js.map +1 -1
  64. package/lib/lint/grammar/scan.d.ts +1 -1
  65. package/lib/lint/grammar/scan.js +14 -1
  66. package/lib/lint/grammar/scan.js.map +1 -1
  67. package/lib/lint/index.d.ts +11 -1
  68. package/lib/lint/index.js +69 -17
  69. package/lib/lint/index.js.map +1 -1
  70. package/lib/lint/parallel.d.ts +4 -0
  71. package/lib/lint/parallel.js +95 -0
  72. package/lib/lint/parallel.js.map +1 -0
  73. package/lib/lint/rules/abbreviated-attrs.d.ts +4 -0
  74. package/lib/lint/rules/abbreviated-attrs.js +71 -0
  75. package/lib/lint/rules/abbreviated-attrs.js.map +1 -0
  76. package/lib/lint/rules/dead-definitions.d.ts +3 -0
  77. package/lib/lint/rules/dead-definitions.js +83 -0
  78. package/lib/lint/rules/dead-definitions.js.map +1 -0
  79. package/lib/lint/rules/index.js +6 -0
  80. package/lib/lint/rules/index.js.map +1 -1
  81. package/lib/lint/rules/link-file-resolves.d.ts +3 -0
  82. package/lib/lint/rules/link-file-resolves.js +61 -0
  83. package/lib/lint/rules/link-file-resolves.js.map +1 -0
  84. package/lib/lint/rules/link-not-empty.d.ts +3 -0
  85. package/lib/lint/rules/link-not-empty.js +18 -0
  86. package/lib/lint/rules/link-not-empty.js.map +1 -0
  87. package/lib/lint/rules/link-target-resolves.js +9 -27
  88. package/lib/lint/rules/link-target-resolves.js.map +1 -1
  89. package/lib/lint/rules/link-targets.d.ts +11 -0
  90. package/lib/lint/rules/link-targets.js +47 -0
  91. package/lib/lint/rules/link-targets.js.map +1 -0
  92. package/lib/lint/rules/markdown-in-pod.d.ts +4 -0
  93. package/lib/lint/rules/markdown-in-pod.js +71 -0
  94. package/lib/lint/rules/markdown-in-pod.js.map +1 -0
  95. package/lib/lint/rules/table-column-width.js +9 -5
  96. package/lib/lint/rules/table-column-width.js.map +1 -1
  97. package/lib/lint/rules/unclosed-markup-code.d.ts +4 -0
  98. package/lib/lint/rules/unclosed-markup-code.js +109 -0
  99. package/lib/lint/rules/unclosed-markup-code.js.map +1 -0
  100. package/lib/lint/types.d.ts +2 -0
  101. package/lib/lint/types.js +4 -0
  102. package/lib/lint/types.js.map +1 -1
  103. package/lib/lint/worker.d.ts +5 -0
  104. package/lib/lint/worker.js +17 -0
  105. package/lib/lint/worker.js.map +1 -0
  106. package/lib/query.js +4 -1
  107. package/lib/query.js.map +1 -1
  108. package/lib/resolve-includes.js +55 -6
  109. package/lib/resolve-includes.js.map +1 -1
  110. package/lib/version.d.ts +1 -1
  111. package/lib/version.js +1 -1
  112. package/package.json +13 -7
@@ -0,0 +1,11 @@
1
+ import type { Violation } from '../types';
2
+ export type LinkSite = {
3
+ target: string;
4
+ at?: Violation['location'];
5
+ };
6
+ export declare const collectLinks: (node: unknown, at?: Violation["location"]) => LinkSite[];
7
+ export type LinkAddress = {
8
+ scheme: string | null;
9
+ path: string;
10
+ };
11
+ export declare const readAddress: (target: string) => LinkAddress;
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.readAddress = exports.collectLinks = void 0;
4
+ // Content is a bare string before the tree is processed and a node after it.
5
+ const textOf = (value) => {
6
+ if (typeof value === 'string')
7
+ return value;
8
+ if (value && typeof value === 'object' && 'value' in value && typeof value.value === 'string')
9
+ return value.value;
10
+ return '';
11
+ };
12
+ // A link without display text carries the target in its content instead of meta.
13
+ const linkTarget = (node) => {
14
+ if (typeof node.meta === 'string')
15
+ return node.meta.trim();
16
+ const content = Array.isArray(node.content) ? node.content : [];
17
+ return textOf(content[0]).trim();
18
+ };
19
+ const isLink = (node) => node.type === 'fcode' && (node.name === 'L' || node.name === 'W');
20
+ // Inline nodes carry no location, so the nearest enclosing block supplies one.
21
+ const collectLinks = (node, at) => {
22
+ if (Array.isArray(node))
23
+ return node.flatMap(child => (0, exports.collectLinks)(child, at));
24
+ if (!node || typeof node !== 'object')
25
+ return [];
26
+ const n = node;
27
+ const here = n.location || at;
28
+ const found = isLink(n) ? [{ target: linkTarget(n), at: here }] : [];
29
+ return [...found, ...(0, exports.collectLinks)(n.content, here)];
30
+ };
31
+ exports.collectLinks = collectLinks;
32
+ const SCHEME = /^([a-zA-Z][a-zA-Z0-9+.-]*):(.*)$/;
33
+ // A single letter before the colon is a Windows drive, but only where something
34
+ // else says Windows: a separator, or a backslash further along. Without one,
35
+ // `a:b` is a scheme and reading it as a path would warn about a target that is
36
+ // not on this disk at all.
37
+ const DRIVE = /^[a-zA-Z]:([\\/]|[^\\]*\\)/;
38
+ // The specification separates the internal address from the external one with a
39
+ // `#`, so what is left of it is the part a filesystem can answer for.
40
+ const readAddress = (target) => {
41
+ const matched = DRIVE.test(target) ? null : SCHEME.exec(target);
42
+ const scheme = matched ? matched[1].toLowerCase() : null;
43
+ const rest = matched ? matched[2] : target;
44
+ return { scheme, path: rest.split('#')[0].split('?')[0] };
45
+ };
46
+ exports.readAddress = readAddress;
47
+ //# sourceMappingURL=link-targets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link-targets.js","sourceRoot":"","sources":["../../../src/lint/rules/link-targets.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { Violation, SourceRule } from '../types';
2
+ export declare const MARKDOWN_IN_POD_RULE_ID = "markdown-in-pod";
3
+ export declare const markdownInPodRule: SourceRule;
4
+ export declare function scanMarkdownInPod(content: string): Violation[];
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.markdownInPodRule = exports.MARKDOWN_IN_POD_RULE_ID = void 0;
4
+ exports.scanMarkdownInPod = scanMarkdownInPod;
5
+ const schema_1 = require("@podlite/schema");
6
+ exports.MARKDOWN_IN_POD_RULE_ID = 'markdown-in-pod';
7
+ exports.markdownInPodRule = {
8
+ id: exports.MARKDOWN_IN_POD_RULE_ID,
9
+ severity: 'warning',
10
+ };
11
+ const FOREIGN = [
12
+ { test: /^\s*#{1,6}\s+\S/, says: 'a heading written with hashes is text here; write =head1 and its levels' },
13
+ {
14
+ test: /^\s*\|?[\s:|-]*-[\s:|-]*\|[\s:|-]*$/,
15
+ says: 'a row of bars and dashes is text here; a table is written as =begin table with its own separator',
16
+ },
17
+ { test: /\*\*[^*\s](?:[^*]*[^*\s])?\*\*/, says: 'a pair of asterisks is text here; bold is written as B<>' },
18
+ ];
19
+ // Talk about Markdown is legal: a line whose construct sits inside an inline
20
+ // code span is showing the markup, not using it.
21
+ const insideCode = (line) => /C<[^>]*>/.test(line) || /`[^`]+`/.test(line);
22
+ function scanMarkdownInPod(content) {
23
+ const lines = content.split(/\r?\n/);
24
+ const open = [];
25
+ const violations = [];
26
+ let abbreviatedTable = false;
27
+ for (let i = 0; i < lines.length; i++) {
28
+ const line = lines[i];
29
+ const end = line.match(/^\s*=end\s+([\w-]+)/);
30
+ if (end) {
31
+ open.pop();
32
+ continue;
33
+ }
34
+ const begin = line.match(/^\s*=begin\s+([\w-]+)/);
35
+ if (begin) {
36
+ open.push(begin[1]);
37
+ abbreviatedTable = false;
38
+ continue;
39
+ }
40
+ // a dash separator belongs to a table written the short way too, and that
41
+ // block runs to the first blank line
42
+ if (/^\s*=(?:for\s+)?table\b/.test(line)) {
43
+ abbreviatedTable = true;
44
+ continue;
45
+ }
46
+ if (abbreviatedTable && line.trim() === '')
47
+ abbreviatedTable = false;
48
+ if (/^\s*=/.test(line))
49
+ abbreviatedTable = false;
50
+ if (open.some(schema_1.isVerbatimBlock) || open.includes('data') || abbreviatedTable)
51
+ continue;
52
+ if (insideCode(line))
53
+ continue;
54
+ for (const foreign of FOREIGN) {
55
+ if (!foreign.test.test(line))
56
+ continue;
57
+ violations.push({
58
+ rule: exports.MARKDOWN_IN_POD_RULE_ID,
59
+ severity: 'warning',
60
+ message: foreign.says,
61
+ location: {
62
+ start: { line: i + 1, column: 1, offset: 0 },
63
+ end: { line: i + 1, column: 1, offset: 0 },
64
+ },
65
+ });
66
+ break;
67
+ }
68
+ }
69
+ return violations;
70
+ }
71
+ //# 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":";;;AA6BA,8CAgDC;AA7ED,4CAAiD;AAGpC,QAAA,uBAAuB,GAAG,iBAAiB,CAAA;AAE3C,QAAA,iBAAiB,GAAe;IAC3C,EAAE,EAAE,+BAAuB;IAC3B,QAAQ,EAAE,SAAS;CACpB,CAAA;AAQD,MAAM,OAAO,GAAc;IACzB,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,yEAAyE,EAAE;IAC5G;QACE,IAAI,EAAE,qCAAqC;QAC3C,IAAI,EAAE,kGAAkG;KACzG;IACD,EAAE,IAAI,EAAE,gCAAgC,EAAE,IAAI,EAAE,0DAA0D,EAAE;CAC7G,CAAA;AAED,6EAA6E;AAC7E,iDAAiD;AACjD,MAAM,UAAU,GAAG,CAAC,IAAY,EAAW,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAE3F,SAAgB,iBAAiB,CAAC,OAAe;IAC/C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACpC,MAAM,IAAI,GAAa,EAAE,CAAA;IACzB,MAAM,UAAU,GAAgB,EAAE,CAAA;IAClC,IAAI,gBAAgB,GAAG,KAAK,CAAA;IAE5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QAErB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAA;QAC7C,IAAI,GAAG,EAAE,CAAC;YACR,IAAI,CAAC,GAAG,EAAE,CAAA;YACV,SAAQ;QACV,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAA;QACjD,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;YACnB,gBAAgB,GAAG,KAAK,CAAA;YACxB,SAAQ;QACV,CAAC;QACD,0EAA0E;QAC1E,qCAAqC;QACrC,IAAI,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACzC,gBAAgB,GAAG,IAAI,CAAA;YACvB,SAAQ;QACV,CAAC;QACD,IAAI,gBAAgB,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;YAAE,gBAAgB,GAAG,KAAK,CAAA;QACpE,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,gBAAgB,GAAG,KAAK,CAAA;QAEhD,IAAI,IAAI,CAAC,IAAI,CAAC,wBAAe,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,gBAAgB;YAAE,SAAQ;QACrF,IAAI,UAAU,CAAC,IAAI,CAAC;YAAE,SAAQ;QAE9B,KAAK,MAAM,OAAO,IAAI,OAAO,EAAE,CAAC;YAC9B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,SAAQ;YACtC,UAAU,CAAC,IAAI,CAAC;gBACd,IAAI,EAAE,+BAAuB;gBAC7B,QAAQ,EAAE,SAAS;gBACnB,OAAO,EAAE,OAAO,CAAC,IAAI;gBACrB,QAAQ,EAAE;oBACR,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;oBAC5C,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;iBAC3C;aACF,CAAC,CAAA;YACF,MAAK;QACP,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAA;AACnB,CAAC"}
@@ -26,10 +26,14 @@ const isEdge = (char) => char === '|' || char === '+' || char === ' ';
26
26
  const collides = (line, boundary) => {
27
27
  if (boundary >= line.length)
28
28
  return false;
29
- // content standing on the boundary, or pressed against it with no space left
29
+ // content standing on the boundary is wrong however the row is written
30
30
  if (!isEdge(line[boundary]))
31
31
  return true;
32
- return boundary > 0 && !isEdge(line[boundary - 1]);
32
+ // pressed against the boundary only matters where the row draws a bar of its
33
+ // own: a row whose cells are held apart by spaces may fill its column to the
34
+ // last position, and the parser reads it correctly
35
+ const drawsBar = line[boundary] === '|' || line[boundary] === '+';
36
+ return drawsBar && boundary > 0 && !isEdge(line[boundary - 1]);
33
37
  };
34
38
  const checkTable = (lines) => {
35
39
  const separator = lines.find(l => SEPARATOR_LINE.test(l.text) && hasBar(l.text));
@@ -62,7 +66,7 @@ const checkTable = (lines) => {
62
66
  function scanTableColumns(content) {
63
67
  const lines = content.split(/\r?\n/);
64
68
  // a table keeps its content verbatim too, and it is the one being read here
65
- const verbatim = new Set(schema_1.VERBATIM_BLOCKS.filter(name => name !== 'table'));
69
+ const verbatim = (name) => name !== 'table' && (0, schema_1.isVerbatimBlock)(name);
66
70
  const openBlocks = [];
67
71
  const violations = [];
68
72
  let table = null;
@@ -85,11 +89,11 @@ function scanTableColumns(content) {
85
89
  if (begin) {
86
90
  closeTable();
87
91
  openBlocks.push(begin[1]);
88
- if (begin[1] === 'table' && !openBlocks.some(b => verbatim.has(b)))
92
+ if (begin[1] === 'table' && !openBlocks.some(verbatim))
89
93
  table = [];
90
94
  continue;
91
95
  }
92
- if (openBlocks.some(b => verbatim.has(b)))
96
+ if (openBlocks.some(verbatim))
93
97
  continue;
94
98
  if (abbreviated) {
95
99
  closeTable();
@@ -1 +1 @@
1
- {"version":3,"file":"table-column-width.js","sourceRoot":"","sources":["../../../src/lint/rules/table-column-width.ts"],"names":[],"mappings":"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"}
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,4 @@
1
+ import type { Violation, SourceRule } from '../types';
2
+ export declare const UNCLOSED_MARKUP_CODE_RULE_ID = "unclosed-markup-code";
3
+ export declare const unclosedMarkupCodeRule: SourceRule;
4
+ export declare function scanUnclosedMarkupCodes(content: string): Violation[];
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.unclosedMarkupCodeRule = exports.UNCLOSED_MARKUP_CODE_RULE_ID = void 0;
4
+ exports.scanUnclosedMarkupCodes = scanUnclosedMarkupCodes;
5
+ const schema_1 = require("@podlite/schema");
6
+ exports.UNCLOSED_MARKUP_CODE_RULE_ID = 'unclosed-markup-code';
7
+ exports.unclosedMarkupCodeRule = {
8
+ id: exports.UNCLOSED_MARKUP_CODE_RULE_ID,
9
+ severity: 'warning',
10
+ };
11
+ // The specification leaves the parser no choice: a markup code that ends at the
12
+ // end of its block rather than at its own delimiter is to be reported. The
13
+ // parser instead drops such a code and the text goes out carrying the opening
14
+ // letter, so the whole line reads as written rather than as marked up.
15
+ //
16
+ // Closure is counted the way the specification defines it: a code opened with N
17
+ // angle brackets is closed by N of them together, and one opened with a
18
+ // guillemet by the closing guillemet. Counting rather than asking the parser
19
+ // keeps the doubled forms out of the report — C<< text >> is closed, and the
20
+ // parser drops it for reasons of its own when it sits inside another code.
21
+ //
22
+ // One case stays out of reach: an outer code opened with a single bracket whose
23
+ // inner code closes with its own. The count sees that bracket and calls the
24
+ // outer one closed. Asking the parser instead catches it, but then every single
25
+ // code written inside a doubled one reads as unclosed, and correct markup gets
26
+ // reported — the worse of the two.
27
+ const OPENER = /(^|[^A-Za-z])([A-Z])(<+|«)/g;
28
+ const unclosed = (text) => {
29
+ const missing = [];
30
+ let match;
31
+ OPENER.lastIndex = 0;
32
+ while ((match = OPENER.exec(text)) !== null) {
33
+ const [whole, before, name, open] = match;
34
+ const rest = text.slice(match.index + whole.length);
35
+ const closed = open === '«' ? rest.includes('»') : rest.includes('>'.repeat(open.length));
36
+ if (!closed) {
37
+ missing.push({ name, at: match.index + before.length });
38
+ }
39
+ }
40
+ return missing;
41
+ };
42
+ function scanUnclosedMarkupCodes(content) {
43
+ const lines = content.split(/\r?\n/);
44
+ const open = [];
45
+ const violations = [];
46
+ let chunk = null;
47
+ let inAbbreviatedVerbatim = false;
48
+ const close = () => {
49
+ if (!chunk)
50
+ return;
51
+ const at = chunk;
52
+ for (const found of unclosed(at.text)) {
53
+ const name = found.name;
54
+ const line = at.line + at.text.slice(0, found.at).split('\n').length - 1;
55
+ violations.push({
56
+ rule: exports.UNCLOSED_MARKUP_CODE_RULE_ID,
57
+ severity: 'warning',
58
+ message: `${name}<> is closed by the end of the block, not by its own bracket; the text goes out as written`,
59
+ location: {
60
+ start: { line, column: 1, offset: 0 },
61
+ end: { line, column: 1, offset: 0 },
62
+ },
63
+ });
64
+ }
65
+ chunk = null;
66
+ };
67
+ for (let i = 0; i < lines.length; i++) {
68
+ const line = lines[i];
69
+ if (/^\s*=end\s+[\w-]+/.test(line)) {
70
+ close();
71
+ inAbbreviatedVerbatim = false;
72
+ open.pop();
73
+ continue;
74
+ }
75
+ const begin = line.match(/^\s*=begin\s+([\w-]+)/);
76
+ if (begin) {
77
+ close();
78
+ inAbbreviatedVerbatim = false;
79
+ open.push(begin[1]);
80
+ continue;
81
+ }
82
+ if (open.some(schema_1.isVerbatimBlock))
83
+ continue;
84
+ // a directive starts a chunk of its own; a blank line ends the one running
85
+ if (/^\s*=/.test(line)) {
86
+ close();
87
+ const named = line.match(/^\s*=(?:for\s+)?([\w-]+)/);
88
+ // the short forms carry verbatim text just as the paired ones do
89
+ inAbbreviatedVerbatim = Boolean(named && (0, schema_1.isVerbatimBlock)(named[1]));
90
+ if (!inAbbreviatedVerbatim)
91
+ chunk = { text: line, line: i + 1 };
92
+ continue;
93
+ }
94
+ if (line.trim() === '') {
95
+ close();
96
+ inAbbreviatedVerbatim = false;
97
+ continue;
98
+ }
99
+ if (inAbbreviatedVerbatim)
100
+ continue;
101
+ if (chunk)
102
+ chunk.text += '\n' + line;
103
+ else
104
+ chunk = { text: line, line: i + 1 };
105
+ }
106
+ close();
107
+ return violations;
108
+ }
109
+ //# sourceMappingURL=unclosed-markup-code.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unclosed-markup-code.js","sourceRoot":"","sources":["../../../src/lint/rules/unclosed-markup-code.ts"],"names":[],"mappings":"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"}
@@ -5,10 +5,12 @@ export type RuleSetting = 'off' | Severity;
5
5
  export type LintConfig = {
6
6
  rules?: Record<string, RuleSetting>;
7
7
  };
8
+ export declare const STDIN_NAME = "<stdin>";
8
9
  export type LintContext = {
9
10
  filePath: string;
10
11
  fileType: FileType;
11
12
  config: LintConfig;
13
+ source?: string;
12
14
  };
13
15
  export type Violation = {
14
16
  rule: string;
package/lib/lint/types.js CHANGED
@@ -1,3 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.STDIN_NAME = void 0;
4
+ // The name a report carries when the document came from a pipe: there is no
5
+ // directory to resolve a relative path against.
6
+ exports.STDIN_NAME = '<stdin>';
3
7
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/lint/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/lint/types.ts"],"names":[],"mappings":";;;AAYA,4EAA4E;AAC5E,gDAAgD;AACnC,QAAA,UAAU,GAAG,SAAS,CAAA"}
@@ -0,0 +1,5 @@
1
+ import type { FileReport } from './formatters/text';
2
+ export type WorkerResult = {
3
+ index: number;
4
+ report: FileReport;
5
+ };
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const worker_threads_1 = require("worker_threads");
4
+ const index_1 = require("./index");
5
+ if (worker_threads_1.parentPort) {
6
+ const port = worker_threads_1.parentPort;
7
+ // the first message back says the parser is loaded and the thread can be fed
8
+ port.postMessage('ready');
9
+ port.on('message', (batch) => {
10
+ const done = batch.jobs.map(job => ({
11
+ index: job.index,
12
+ report: (0, index_1.lintFile)(job.filePath, batch.config),
13
+ }));
14
+ port.postMessage(done);
15
+ });
16
+ }
17
+ //# sourceMappingURL=worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/lint/worker.ts"],"names":[],"mappings":";;AAAA,mDAA2C;AAE3C,mCAAkC;AAOlC,IAAI,2BAAU,EAAE,CAAC;IACf,MAAM,IAAI,GAAG,2BAAU,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,IAAA,gBAAQ,EAAC,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/lib/query.js CHANGED
@@ -57,7 +57,10 @@ const renderViaRoot = (block, serializer) => {
57
57
  };
58
58
  const formatBlocks = (format, matches) => {
59
59
  if (format === 'json') {
60
- return JSON.stringify(matches.map(m => m.block), null, 2);
60
+ // without the source, a query over several files answers "here are the
61
+ // blocks" and drops "from where", which leaves the caller no way back to
62
+ // the document
63
+ return JSON.stringify(matches.map(m => ({ file: m.source.file, ...m.block })), null, 2);
61
64
  }
62
65
  if (format === 'podlite') {
63
66
  return matches
package/lib/query.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"query.js","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAwB;AACxB,4CAA6G;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,IAAA,cAAK,EAAC,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,IAAA,mBAAU,EAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAA,eAAM,EAAC,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,KAAK,CAAC,EACzB,IAAI,EACJ,CAAC,CACF,CAAA;IACH,CAAC;IACD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,OAAO;aACX,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;aACtD,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,MAAM,CAAC,CAAA;IACjB,CAAC;IACD,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACzC,OAAO,OAAO;aACX,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC;aAClD,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,MAAM,CAAC,CAAA;IACjB,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,0BAA0B,MAAM,EAAE,CAAC,CAAA;AACrD,CAAC,CAAA;AAQM,MAAM,QAAQ,GAAG,CAAC,IAAkB,EAAe,EAAE;IAC1D,MAAM,MAAM,GAAG,IAAA,sBAAa,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC3C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;IACvD,CAAC;IAED,MAAM,OAAO,GAAa,EAAE,CAAA;IAC5B,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,IAAA,cAAK,EAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;IAC5F,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;IAC7B,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;IAClD,CAAC;IAED,oFAAoF;IACpF,MAAM,OAAO,GAA8C,EAAE,CAAA;IAC7D,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAkB,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;QAChE,MAAM,MAAM,GAAG,IAAA,oBAAW,EAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;QAC/C,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;YAC1B,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,IAAK,IAAe,CAAC,EAAE,CAAC;gBACtE,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAe,EAAE,CAAC,CAAA;YACvD,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACjE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAA;AACzD,CAAC,CAAA;AAjCY,QAAA,QAAQ,YAiCpB"}
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"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"}
@@ -38,6 +38,45 @@ const fs = __importStar(require("fs"));
38
38
  const path = __importStar(require("path"));
39
39
  const schema_1 = require("@podlite/schema");
40
40
  const isIncludeBlock = (node) => node && typeof node === 'object' && node.type === 'block' && node.name === 'include';
41
+ const hasMask = (target) => /[*?]/.test(target);
42
+ const reachesSubdirs = (target) => target.includes('**');
43
+ // A mask that crosses directories could otherwise walk a whole disk from a
44
+ // short prefix.
45
+ const maxDepth = 32;
46
+ // Everything up to the last separator that carries no mask; the rest is matched
47
+ // by the selector itself, which already knows the pattern language.
48
+ const fixedPrefix = (target) => {
49
+ const parts = target.split('/');
50
+ const upto = parts.findIndex(hasMask);
51
+ return parts.slice(0, upto === -1 ? parts.length : upto).join('/');
52
+ };
53
+ const listDir = (dir, deep, depth = 0) => {
54
+ let entries;
55
+ try {
56
+ entries = fs.readdirSync(dir, { withFileTypes: true });
57
+ }
58
+ catch {
59
+ return [];
60
+ }
61
+ const named = entries.filter(e => !e.name.startsWith('.')).sort((a, b) => (a.name < b.name ? -1 : 1));
62
+ const files = named.filter(e => e.isFile()).map(e => e.name);
63
+ if (!deep || depth >= maxDepth)
64
+ return files;
65
+ const nested = named
66
+ .filter(e => e.isDirectory())
67
+ .flatMap(e => listDir(path.join(dir, e.name), deep, depth + 1).map(inner => `${e.name}/${inner}`));
68
+ return [...files, ...nested];
69
+ };
70
+ // Candidate paths for a masked target, written the way the target is written so
71
+ // the selector matches them back. Matching runs before the file is read: the
72
+ // directory may hold anything, and a mask that does not name it must not send
73
+ // it through the parser.
74
+ const expandMask = (target, baseDir) => {
75
+ const prefix = fixedPrefix(target);
76
+ return listDir(path.resolve(baseDir, prefix), reachesSubdirs(target))
77
+ .map(name => (prefix ? `${prefix}/${name}` : name))
78
+ .filter(file => (0, schema_1.filePathMatches)(file, target));
79
+ };
41
80
  const keepBlocks = (items) => items.filter(item => item && typeof item === 'object' && !('file' in item));
42
81
  const unwrapRoot = (blocks) => blocks.flatMap((b) => b && b.type === 'block' && b.name === 'root' && Array.isArray(b.content) ? b.content : [b]);
43
82
  const resolveIncludes = (tree, opts) => {
@@ -50,14 +89,24 @@ const resolveIncludes = (tree, opts) => {
50
89
  const parsed = selector ? (0, schema_1.parseSelector)(selector) : undefined;
51
90
  if (!selector || !parsed || parsed.scheme !== 'file' || !parsed.document)
52
91
  return node;
53
- const target = path.resolve(baseDir, parsed.document);
54
- if (stack.includes(target))
55
- return [];
56
- if (!fs.existsSync(target)) {
92
+ const masked = hasMask(parsed.document);
93
+ const written = masked ? expandMask(parsed.document, baseDir) : [parsed.document];
94
+ if (!masked && !fs.existsSync(path.resolve(baseDir, parsed.document))) {
57
95
  throw new Error(`include target not found: ${parsed.document}`);
58
96
  }
59
- const subTree = walkNode(opts.parse(fs.readFileSync(target, 'utf-8')), path.dirname(target), [...stack, target]);
60
- return unwrapRoot(keepBlocks((0, schema_1.runSelector)(selector, [{ file: parsed.document, node: subTree }])));
97
+ const docs = [];
98
+ for (const file of written) {
99
+ const target = path.resolve(baseDir, file);
100
+ if (stack.includes(target))
101
+ continue;
102
+ docs.push({
103
+ file,
104
+ node: walkNode(opts.parse(fs.readFileSync(target, 'utf-8')), path.dirname(target), [...stack, target]),
105
+ });
106
+ }
107
+ if (docs.length === 0)
108
+ return [];
109
+ return unwrapRoot(keepBlocks((0, schema_1.runSelector)(selector, docs)));
61
110
  }
62
111
  if (Array.isArray(node.content))
63
112
  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":"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"}
1
+ {"version":3,"file":"resolve-includes.js","sourceRoot":"","sources":["../src/resolve-includes.ts"],"names":[],"mappings":"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"}
package/lib/version.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const version = "0.0.79";
1
+ export declare const version = "0.0.81";
package/lib/version.js CHANGED
@@ -2,5 +2,5 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.version = void 0;
4
4
  // generated by scripts/inject-version.mjs — do not edit by hand
5
- exports.version = '0.0.79';
5
+ exports.version = '0.0.81';
6
6
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "podlite",
3
- "version": "0.0.79",
3
+ "version": "0.0.81",
4
4
  "description": "Podlite markup language parser — Markdown-compatible, with native support for diagrams, formulas, and custom blocks",
5
5
  "homepage": "https://podlite.org",
6
6
  "repository": {
@@ -17,6 +17,12 @@
17
17
  "require": "./lib/index.js",
18
18
  "default": "./lib/index.js"
19
19
  },
20
+ "./lint": {
21
+ "types": "./lib/lint/index.d.ts",
22
+ "import": "./esm/lint/index.js",
23
+ "require": "./lib/lint/index.js",
24
+ "default": "./lib/lint/index.js"
25
+ },
20
26
  "./package.json": "./package.json",
21
27
  "./lib/lint/*": {
22
28
  "types": "./lib/lint/*.d.ts",
@@ -74,12 +80,12 @@
74
80
  "url": "https://github.com/podlite/podlite/issues"
75
81
  },
76
82
  "dependencies": {
77
- "@podlite/diagram": "^0.0.70",
78
- "@podlite/formula": "0.0.48",
79
- "@podlite/image": "^0.0.65",
80
- "@podlite/markdown": "0.0.59",
81
- "@podlite/schema": "^0.0.66",
82
- "@podlite/toc": "0.0.59",
83
+ "@podlite/diagram": "^0.0.72",
84
+ "@podlite/formula": "0.0.50",
85
+ "@podlite/image": "^0.0.67",
86
+ "@podlite/markdown": "0.0.61",
87
+ "@podlite/schema": "^0.0.68",
88
+ "@podlite/toc": "0.0.61",
83
89
  "nanoid": "3.1.30"
84
90
  },
85
91
  "devDependencies": {