@mark1russell7/ste-lint 0.0.0-stage → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +225 -2
- package/dist/.tsbuildinfo +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +9 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +103 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +251 -0
- package/dist/config.js.map +1 -0
- package/dist/dictionary.d.ts +74 -0
- package/dist/dictionary.d.ts.map +1 -0
- package/dist/dictionary.js +169 -0
- package/dist/dictionary.js.map +1 -0
- package/dist/files.d.ts +35 -0
- package/dist/files.d.ts.map +1 -0
- package/dist/files.js +181 -0
- package/dist/files.js.map +1 -0
- package/dist/format.d.ts +21 -0
- package/dist/format.d.ts.map +1 -0
- package/dist/format.js +61 -0
- package/dist/format.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/lexicon.d.ts +33 -0
- package/dist/lexicon.d.ts.map +1 -0
- package/dist/lexicon.js +71 -0
- package/dist/lexicon.js.map +1 -0
- package/dist/lint.d.ts +28 -0
- package/dist/lint.d.ts.map +1 -0
- package/dist/lint.js +132 -0
- package/dist/lint.js.map +1 -0
- package/dist/rules/about-quantity.d.ts +3 -0
- package/dist/rules/about-quantity.d.ts.map +1 -0
- package/dist/rules/about-quantity.js +34 -0
- package/dist/rules/about-quantity.js.map +1 -0
- package/dist/rules/index.d.ts +8 -0
- package/dist/rules/index.d.ts.map +1 -0
- package/dist/rules/index.js +35 -0
- package/dist/rules/index.js.map +1 -0
- package/dist/rules/ing-verb.d.ts +9 -0
- package/dist/rules/ing-verb.d.ts.map +1 -0
- package/dist/rules/ing-verb.js +60 -0
- package/dist/rules/ing-verb.js.map +1 -0
- package/dist/rules/latin-abbreviation.d.ts +3 -0
- package/dist/rules/latin-abbreviation.d.ts.map +1 -0
- package/dist/rules/latin-abbreviation.js +48 -0
- package/dist/rules/latin-abbreviation.js.map +1 -0
- package/dist/rules/missing-subject.d.ts +16 -0
- package/dist/rules/missing-subject.d.ts.map +1 -0
- package/dist/rules/missing-subject.js +138 -0
- package/dist/rules/missing-subject.js.map +1 -0
- package/dist/rules/modal-verb.d.ts +3 -0
- package/dist/rules/modal-verb.d.ts.map +1 -0
- package/dist/rules/modal-verb.js +72 -0
- package/dist/rules/modal-verb.js.map +1 -0
- package/dist/rules/noun-cluster.d.ts +17 -0
- package/dist/rules/noun-cluster.d.ts.map +1 -0
- package/dist/rules/noun-cluster.js +83 -0
- package/dist/rules/noun-cluster.js.map +1 -0
- package/dist/rules/paragraph-length.d.ts +3 -0
- package/dist/rules/paragraph-length.d.ts.map +1 -0
- package/dist/rules/paragraph-length.js +19 -0
- package/dist/rules/paragraph-length.js.map +1 -0
- package/dist/rules/passive-instruction.d.ts +15 -0
- package/dist/rules/passive-instruction.d.ts.map +1 -0
- package/dist/rules/passive-instruction.js +38 -0
- package/dist/rules/passive-instruction.js.map +1 -0
- package/dist/rules/pronouns.d.ts +4 -0
- package/dist/rules/pronouns.d.ts.map +1 -0
- package/dist/rules/pronouns.js +57 -0
- package/dist/rules/pronouns.js.map +1 -0
- package/dist/rules/rule.d.ts +46 -0
- package/dist/rules/rule.d.ts.map +1 -0
- package/dist/rules/rule.js +31 -0
- package/dist/rules/rule.js.map +1 -0
- package/dist/rules/semicolon.d.ts +3 -0
- package/dist/rules/semicolon.d.ts.map +1 -0
- package/dist/rules/semicolon.js +20 -0
- package/dist/rules/semicolon.js.map +1 -0
- package/dist/rules/sentence-length.d.ts +3 -0
- package/dist/rules/sentence-length.d.ts.map +1 -0
- package/dist/rules/sentence-length.js +31 -0
- package/dist/rules/sentence-length.js.map +1 -0
- package/dist/rules/unknown-word.d.ts +9 -0
- package/dist/rules/unknown-word.d.ts.map +1 -0
- package/dist/rules/unknown-word.js +49 -0
- package/dist/rules/unknown-word.js.map +1 -0
- package/dist/rules/word-list-matcher.d.ts +25 -0
- package/dist/rules/word-list-matcher.d.ts.map +1 -0
- package/dist/rules/word-list-matcher.js +60 -0
- package/dist/rules/word-list-matcher.js.map +1 -0
- package/dist/rules/word-list.d.ts +3 -0
- package/dist/rules/word-list.d.ts.map +1 -0
- package/dist/rules/word-list.js +26 -0
- package/dist/rules/word-list.js.map +1 -0
- package/dist/run-cli.d.ts +27 -0
- package/dist/run-cli.d.ts.map +1 -0
- package/dist/run-cli.js +176 -0
- package/dist/run-cli.js.map +1 -0
- package/dist/source/blocks.d.ts +55 -0
- package/dist/source/blocks.d.ts.map +1 -0
- package/dist/source/blocks.js +464 -0
- package/dist/source/blocks.js.map +1 -0
- package/dist/source/inline.d.ts +42 -0
- package/dist/source/inline.d.ts.map +1 -0
- package/dist/source/inline.js +396 -0
- package/dist/source/inline.js.map +1 -0
- package/dist/source/jsx.d.ts +18 -0
- package/dist/source/jsx.d.ts.map +1 -0
- package/dist/source/jsx.js +137 -0
- package/dist/source/jsx.js.map +1 -0
- package/dist/source/lines.d.ts +34 -0
- package/dist/source/lines.d.ts.map +1 -0
- package/dist/source/lines.js +83 -0
- package/dist/source/lines.js.map +1 -0
- package/dist/source/markdown.d.ts +23 -0
- package/dist/source/markdown.d.ts.map +1 -0
- package/dist/source/markdown.js +42 -0
- package/dist/source/markdown.js.map +1 -0
- package/dist/source/suppressions.d.ts +38 -0
- package/dist/source/suppressions.d.ts.map +1 -0
- package/dist/source/suppressions.js +69 -0
- package/dist/source/suppressions.js.map +1 -0
- package/dist/source/tsdoc.d.ts +40 -0
- package/dist/source/tsdoc.d.ts.map +1 -0
- package/dist/source/tsdoc.js +176 -0
- package/dist/source/tsdoc.js.map +1 -0
- package/dist/text/grammar.d.ts +91 -0
- package/dist/text/grammar.d.ts.map +1 -0
- package/dist/text/grammar.js +289 -0
- package/dist/text/grammar.js.map +1 -0
- package/dist/text/phrases.d.ts +30 -0
- package/dist/text/phrases.d.ts.map +1 -0
- package/dist/text/phrases.js +65 -0
- package/dist/text/phrases.js.map +1 -0
- package/dist/text/sentences.d.ts +45 -0
- package/dist/text/sentences.d.ts.map +1 -0
- package/dist/text/sentences.js +141 -0
- package/dist/text/sentences.js.map +1 -0
- package/dist/text/tokens.d.ts +35 -0
- package/dist/text/tokens.d.ts.map +1 -0
- package/dist/text/tokens.js +113 -0
- package/dist/text/tokens.js.map +1 -0
- package/dist/text/words.d.ts +58 -0
- package/dist/text/words.d.ts.map +1 -0
- package/dist/text/words.js +159 -0
- package/dist/text/words.js.map +1 -0
- package/dist/types.d.ts +18 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +20 -0
- package/dist/types.js.map +1 -0
- package/dist/units.d.ts +47 -0
- package/dist/units.d.ts.map +1 -0
- package/dist/units.js +42 -0
- package/dist/units.js.map +1 -0
- package/dist/word-list.d.ts +34 -0
- package/dist/word-list.d.ts.map +1 -0
- package/dist/word-list.js +90 -0
- package/dist/word-list.js.map +1 -0
- package/package.json +46 -3
- package/src/cli.ts +9 -0
- package/src/config.test.ts +188 -0
- package/src/config.ts +318 -0
- package/src/dictionary.test.ts +82 -0
- package/src/dictionary.ts +177 -0
- package/src/files.test.ts +107 -0
- package/src/files.ts +191 -0
- package/src/format.ts +78 -0
- package/src/index.test.ts +28 -0
- package/src/index.ts +34 -0
- package/src/lexicon.ts +92 -0
- package/src/lint.test.ts +182 -0
- package/src/lint.ts +135 -0
- package/src/rules/about-quantity.ts +33 -0
- package/src/rules/index.ts +40 -0
- package/src/rules/ing-verb.test.ts +48 -0
- package/src/rules/ing-verb.ts +54 -0
- package/src/rules/latin-abbreviation.ts +46 -0
- package/src/rules/missing-subject.test.ts +53 -0
- package/src/rules/missing-subject.ts +129 -0
- package/src/rules/modal-verb.test.ts +45 -0
- package/src/rules/modal-verb.ts +72 -0
- package/src/rules/noun-cluster.test.ts +49 -0
- package/src/rules/noun-cluster.ts +82 -0
- package/src/rules/paragraph-length.test.ts +30 -0
- package/src/rules/paragraph-length.ts +19 -0
- package/src/rules/passive-instruction.test.ts +38 -0
- package/src/rules/passive-instruction.ts +37 -0
- package/src/rules/pronouns.test.ts +38 -0
- package/src/rules/pronouns.ts +54 -0
- package/src/rules/punctuation.test.ts +59 -0
- package/src/rules/rule.ts +73 -0
- package/src/rules/semicolon.ts +19 -0
- package/src/rules/sentence-length.test.ts +52 -0
- package/src/rules/sentence-length.ts +32 -0
- package/src/rules/unknown-word.test.ts +81 -0
- package/src/rules/unknown-word.ts +43 -0
- package/src/rules/word-list-matcher.ts +68 -0
- package/src/rules/word-list.test.ts +110 -0
- package/src/rules/word-list.ts +25 -0
- package/src/run-cli.test.ts +189 -0
- package/src/run-cli.ts +193 -0
- package/src/source/blocks.ts +534 -0
- package/src/source/inline.test.ts +92 -0
- package/src/source/inline.ts +416 -0
- package/src/source/jsx.test.ts +46 -0
- package/src/source/jsx.ts +147 -0
- package/src/source/lines.test.ts +51 -0
- package/src/source/lines.ts +91 -0
- package/src/source/markdown.test.ts +210 -0
- package/src/source/markdown.ts +49 -0
- package/src/source/suppressions.ts +79 -0
- package/src/source/tsdoc.test.ts +137 -0
- package/src/source/tsdoc.ts +189 -0
- package/src/text/grammar.ts +304 -0
- package/src/text/phrases.ts +72 -0
- package/src/text/sentences.ts +148 -0
- package/src/text/text.test.ts +262 -0
- package/src/text/tokens.ts +135 -0
- package/src/text/words.ts +183 -0
- package/src/types.ts +39 -0
- package/src/units.ts +86 -0
- package/src/word-list.ts +128 -0
- package/ste.config.schema.json +87 -0
|
@@ -0,0 +1,396 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Inline normalization. This step changes the text of a block into "clean"
|
|
3
|
+
* text that the tokenizer can read:
|
|
4
|
+
*
|
|
5
|
+
* - Each code span, `{@link ...}` tag, URL, MDX expression and quoted text
|
|
6
|
+
* becomes one placeholder character. STE Rule 8.6 counts quoted text and
|
|
7
|
+
* text in a different font as one word. The word rules do not examine the
|
|
8
|
+
* text in a placeholder.
|
|
9
|
+
* - Link text stays. Link destinations, images, footnote references, HTML
|
|
10
|
+
* tags, JSX tags and emphasis markers go away.
|
|
11
|
+
* - HTML entities become the characters that they show.
|
|
12
|
+
*
|
|
13
|
+
* Each character of the clean text keeps the file offset of its source
|
|
14
|
+
* character, so findings point to the correct line and column.
|
|
15
|
+
*/
|
|
16
|
+
import { findBacktickRun } from "./blocks.js";
|
|
17
|
+
/** The character that holds the place of a code span, link tag, URL or quoted text. */
|
|
18
|
+
export const PLACEHOLDER = "";
|
|
19
|
+
// A map, not an object literal, so that "&constructor;" does not find an Object property.
|
|
20
|
+
const ENTITIES = new Map([
|
|
21
|
+
["amp", "&"], ["lt", "<"], ["gt", ">"], ["quot", "\""], ["apos", "'"], ["nbsp", " "], ["mdash", "—"],
|
|
22
|
+
["ndash", "–"], ["hellip", "…"], ["copy", "©"], ["reg", "®"], ["trade", "™"],
|
|
23
|
+
["times", "×"], ["rarr", "→"], ["larr", "←"], ["harr", "↔"], ["rsquo", "’"],
|
|
24
|
+
["lsquo", "‘"], ["rdquo", "”"], ["ldquo", "“"], ["middot", "·"], ["bull", "•"],
|
|
25
|
+
["deg", "°"], ["micro", "µ"], ["plusmn", "±"], ["le", "≤"], ["ge", "≥"],
|
|
26
|
+
]);
|
|
27
|
+
/** HTML elements whose content is code, so the content becomes one placeholder. */
|
|
28
|
+
const CODE_ELEMENTS = new Set(["code", "kbd", "samp", "var", "tt"]);
|
|
29
|
+
const ASCII_PUNCTUATION = /[!-/:-@[-`{-~]/;
|
|
30
|
+
const ALPHANUMERIC = /[\p{L}\p{N}]/u;
|
|
31
|
+
class Builder {
|
|
32
|
+
raw;
|
|
33
|
+
rawOffsets;
|
|
34
|
+
clean = "";
|
|
35
|
+
offsets = [];
|
|
36
|
+
placeholders = new Map();
|
|
37
|
+
constructor(raw, rawOffsets) {
|
|
38
|
+
this.raw = raw;
|
|
39
|
+
this.rawOffsets = rawOffsets;
|
|
40
|
+
}
|
|
41
|
+
char(rawIndex) {
|
|
42
|
+
this.emit(this.raw[rawIndex], rawIndex);
|
|
43
|
+
}
|
|
44
|
+
/** This method adds `text` to the clean text, with one offset for each UTF-16 unit, also for a character outside the BMP. */
|
|
45
|
+
emit(text, rawIndex) {
|
|
46
|
+
this.clean += text;
|
|
47
|
+
for (let k = 0; k < text.length; k++)
|
|
48
|
+
this.offsets.push(this.rawOffsets[rawIndex]);
|
|
49
|
+
}
|
|
50
|
+
placeholder(kind, text, rawStart, rawEnd) {
|
|
51
|
+
this.placeholders.set(this.clean.length, {
|
|
52
|
+
kind,
|
|
53
|
+
text,
|
|
54
|
+
start: this.rawOffsets[rawStart],
|
|
55
|
+
end: this.rawOffsets[Math.max(rawStart, rawEnd - 1)] + 1,
|
|
56
|
+
});
|
|
57
|
+
this.emit(PLACEHOLDER, rawStart);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/** This function normalizes the inline content of a block. Refer to the module comment. */
|
|
61
|
+
export function normalizeInline(lines, options) {
|
|
62
|
+
let raw = "";
|
|
63
|
+
const rawOffsets = [];
|
|
64
|
+
lines.forEach((line, n) => {
|
|
65
|
+
if (n > 0) {
|
|
66
|
+
const previous = lines[n - 1];
|
|
67
|
+
raw += "\n";
|
|
68
|
+
rawOffsets.push(previous.offset + previous.text.length);
|
|
69
|
+
}
|
|
70
|
+
raw += line.text;
|
|
71
|
+
for (let k = 0; k < line.text.length; k++)
|
|
72
|
+
rawOffsets.push(line.offset + k);
|
|
73
|
+
});
|
|
74
|
+
const last = lines[lines.length - 1];
|
|
75
|
+
rawOffsets.push(last === undefined ? 0 : last.offset + last.text.length);
|
|
76
|
+
const builder = new Builder(raw, rawOffsets);
|
|
77
|
+
scan(raw, 0, raw.length, builder, options);
|
|
78
|
+
return { clean: builder.clean, offsets: builder.offsets, placeholders: builder.placeholders };
|
|
79
|
+
}
|
|
80
|
+
function isAlphanumeric(char) {
|
|
81
|
+
return char !== undefined && ALPHANUMERIC.test(char);
|
|
82
|
+
}
|
|
83
|
+
function scan(raw, from, to, out, options) {
|
|
84
|
+
let i = from;
|
|
85
|
+
while (i < to) {
|
|
86
|
+
const char = raw[i];
|
|
87
|
+
const next = raw[i + 1];
|
|
88
|
+
if (char === "\\" && next !== undefined && i + 1 < to && ASCII_PUNCTUATION.test(next)) {
|
|
89
|
+
out.char(i + 1);
|
|
90
|
+
i += 2;
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
if (char === "`") {
|
|
94
|
+
let run = 1;
|
|
95
|
+
while (raw[i + run] === "`")
|
|
96
|
+
run++;
|
|
97
|
+
const close = findBacktickRun(raw, i + run, run);
|
|
98
|
+
if (close !== -1 && close + run <= to) {
|
|
99
|
+
out.placeholder("code", raw.slice(i + run, close).trim(), i, close + run);
|
|
100
|
+
i = close + run;
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
for (let k = 0; k < run; k++)
|
|
104
|
+
out.char(i + k);
|
|
105
|
+
i += run;
|
|
106
|
+
}
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
if (char === "<") {
|
|
110
|
+
const end = scanAngle(raw, i, to, out);
|
|
111
|
+
if (end !== -1) {
|
|
112
|
+
i = end;
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
if (char === "{") {
|
|
117
|
+
const end = scanBrace(raw, i, to, out, options);
|
|
118
|
+
if (end !== -1) {
|
|
119
|
+
i = end;
|
|
120
|
+
continue;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
if (char === "!" && next === "[") {
|
|
124
|
+
const end = linkEnd(raw, i + 1, to);
|
|
125
|
+
if (end !== null) {
|
|
126
|
+
i = end.end;
|
|
127
|
+
continue;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
if (char === "[") {
|
|
131
|
+
if (/^\[\^[^\]\s]+\]/.test(raw.slice(i, to))) {
|
|
132
|
+
i = raw.indexOf("]", i) + 1;
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
135
|
+
const end = linkEnd(raw, i, to);
|
|
136
|
+
if (end !== null) {
|
|
137
|
+
scan(raw, i + 1, end.textEnd, out, options);
|
|
138
|
+
i = end.end;
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
if ((char === "h" || char === "w") && !isAlphanumeric(raw[i - 1])) {
|
|
143
|
+
const url = /^(?:https?:\/\/|www\.)[^\s<>"`]*[^\s<>"`.,;:!?')\]]/.exec(raw.slice(i, to));
|
|
144
|
+
if (url) {
|
|
145
|
+
let text = url[0];
|
|
146
|
+
// A ")" after the URL is part of it only when the URL has a "(" without a partner.
|
|
147
|
+
const count = (pattern) => (text.match(pattern) ?? []).length;
|
|
148
|
+
while (raw[i + text.length] === ")" && i + text.length < to && count(/\(/g) > count(/\)/g))
|
|
149
|
+
text += ")";
|
|
150
|
+
out.placeholder("url", text, i, i + text.length);
|
|
151
|
+
i += text.length;
|
|
152
|
+
continue;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
if (char === "*") {
|
|
156
|
+
const before = raw[i - 1];
|
|
157
|
+
const after = raw[i + 1];
|
|
158
|
+
const spaced = (before === undefined || /\s/.test(before)) && (after === undefined || /\s/.test(after));
|
|
159
|
+
if (spaced)
|
|
160
|
+
out.char(i);
|
|
161
|
+
i++;
|
|
162
|
+
continue;
|
|
163
|
+
}
|
|
164
|
+
if (char === "_") {
|
|
165
|
+
if (isAlphanumeric(raw[i - 1]) && isAlphanumeric(raw[i + 1]))
|
|
166
|
+
out.char(i);
|
|
167
|
+
i++;
|
|
168
|
+
continue;
|
|
169
|
+
}
|
|
170
|
+
if (char === "~" && next === "~") {
|
|
171
|
+
i += 2;
|
|
172
|
+
continue;
|
|
173
|
+
}
|
|
174
|
+
if (char === "&") {
|
|
175
|
+
const entity = /^&(#\d{1,7}|#[xX][0-9a-fA-F]{1,6}|[A-Za-z][A-Za-z0-9]{1,31});/.exec(raw.slice(i, to));
|
|
176
|
+
const decoded = entity ? decodeEntity(entity[1]) : null;
|
|
177
|
+
if (entity && decoded !== null) {
|
|
178
|
+
out.emit(decoded, i);
|
|
179
|
+
i += entity[0].length;
|
|
180
|
+
continue;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
if (char === "\"" || char === "“" || char === "'" || char === "‘") {
|
|
184
|
+
const end = scanQuote(raw, i, to, out);
|
|
185
|
+
if (end !== -1) {
|
|
186
|
+
i = end;
|
|
187
|
+
continue;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
out.char(i);
|
|
191
|
+
i++;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
function decodeEntity(name) {
|
|
195
|
+
if (name.startsWith("#x") || name.startsWith("#X"))
|
|
196
|
+
return safeCodePoint(Number.parseInt(name.slice(2), 16));
|
|
197
|
+
if (name.startsWith("#"))
|
|
198
|
+
return safeCodePoint(Number.parseInt(name.slice(1), 10));
|
|
199
|
+
return ENTITIES.get(name.toLowerCase()) ?? null;
|
|
200
|
+
}
|
|
201
|
+
function safeCodePoint(value) {
|
|
202
|
+
return Number.isInteger(value) && value > 0 && value <= 0x10FFFF ? String.fromCodePoint(value) : null;
|
|
203
|
+
}
|
|
204
|
+
/** This function handles `<...>`: autolinks, comments, HTML tags and JSX tags. The result is the index after it, or -1. */
|
|
205
|
+
function scanAngle(raw, i, to, out) {
|
|
206
|
+
const rest = raw.slice(i, to);
|
|
207
|
+
const autolink = /^<((?:https?|mailto|ftp):[^\s<>]*|[^\s<>@]+@[^\s<>]+\.[^\s<>]+)>/.exec(rest);
|
|
208
|
+
if (autolink) {
|
|
209
|
+
out.placeholder("url", autolink[1], i, i + autolink[0].length);
|
|
210
|
+
return i + autolink[0].length;
|
|
211
|
+
}
|
|
212
|
+
if (rest.startsWith("<!--")) {
|
|
213
|
+
const close = raw.indexOf("-->", i + 4);
|
|
214
|
+
return close === -1 || close + 3 > to ? to : close + 3;
|
|
215
|
+
}
|
|
216
|
+
const tag = /^<(\/?)([A-Za-z][A-Za-z0-9.:_-]*)?/.exec(rest);
|
|
217
|
+
if (!tag || (tag[2] === undefined && !/^<\/?>/.test(rest)))
|
|
218
|
+
return -1;
|
|
219
|
+
const tagEnd = findAngleClose(raw, i + 1, to);
|
|
220
|
+
if (tagEnd === -1)
|
|
221
|
+
return -1;
|
|
222
|
+
const name = (tag[2] ?? "").toLowerCase();
|
|
223
|
+
if (tag[1] === "" && CODE_ELEMENTS.has(name)) {
|
|
224
|
+
const closeTag = raw.toLowerCase().indexOf(`</${name}>`, tagEnd);
|
|
225
|
+
if (closeTag !== -1 && closeTag + name.length + 3 <= to) {
|
|
226
|
+
out.placeholder("code", raw.slice(tagEnd, closeTag).trim(), i, closeTag + name.length + 3);
|
|
227
|
+
return closeTag + name.length + 3;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
if (name === "br")
|
|
231
|
+
out.emit(" ", i);
|
|
232
|
+
return tagEnd;
|
|
233
|
+
}
|
|
234
|
+
/** The index after the `>` that closes a tag. Quotes and `{...}` can contain `>`. */
|
|
235
|
+
function findAngleClose(raw, from, to) {
|
|
236
|
+
let quote = null;
|
|
237
|
+
let depth = 0;
|
|
238
|
+
for (let i = from; i < to; i++) {
|
|
239
|
+
const char = raw[i];
|
|
240
|
+
if (quote !== null) {
|
|
241
|
+
if (char === quote)
|
|
242
|
+
quote = null;
|
|
243
|
+
}
|
|
244
|
+
else if (char === "\"" || char === "'") {
|
|
245
|
+
quote = char;
|
|
246
|
+
}
|
|
247
|
+
else if (char === "{") {
|
|
248
|
+
depth++;
|
|
249
|
+
}
|
|
250
|
+
else if (char === "}") {
|
|
251
|
+
depth = Math.max(0, depth - 1);
|
|
252
|
+
}
|
|
253
|
+
else if (char === "<" && depth === 0) {
|
|
254
|
+
return -1;
|
|
255
|
+
}
|
|
256
|
+
else if (char === ">" && depth === 0) {
|
|
257
|
+
return i + 1;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
return -1;
|
|
261
|
+
}
|
|
262
|
+
/** This function handles `{@link ...}` in TSDoc and `{...}` in MDX. The result is the index after it, or -1. */
|
|
263
|
+
function scanBrace(raw, i, to, out, options) {
|
|
264
|
+
const isTag = options.tsdoc && raw[i + 1] === "@";
|
|
265
|
+
if (!isTag && !options.mdx)
|
|
266
|
+
return -1;
|
|
267
|
+
let depth = 0;
|
|
268
|
+
let quote = null;
|
|
269
|
+
for (let k = i; k < to; k++) {
|
|
270
|
+
const char = raw[k];
|
|
271
|
+
if (quote !== null) {
|
|
272
|
+
if (char === quote)
|
|
273
|
+
quote = null;
|
|
274
|
+
continue;
|
|
275
|
+
}
|
|
276
|
+
if (!isTag && (char === "\"" || char === "'" || char === "`")) {
|
|
277
|
+
quote = char;
|
|
278
|
+
}
|
|
279
|
+
else if (char === "{") {
|
|
280
|
+
depth++;
|
|
281
|
+
}
|
|
282
|
+
else if (char === "}") {
|
|
283
|
+
depth--;
|
|
284
|
+
if (depth === 0) {
|
|
285
|
+
const inner = raw.slice(i + 1, k).trim();
|
|
286
|
+
if (!isTag && inner.startsWith("/*") && inner.endsWith("*/"))
|
|
287
|
+
return k + 1;
|
|
288
|
+
out.placeholder(isTag ? "link" : "expr", inner, i, k + 1);
|
|
289
|
+
return k + 1;
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
return -1;
|
|
294
|
+
}
|
|
295
|
+
/** The end of an inline link `[text](url)` or a reference link `[text][ref]` that starts at `start`, or null. */
|
|
296
|
+
function linkEnd(raw, start, to) {
|
|
297
|
+
let depth = 0;
|
|
298
|
+
let i = start;
|
|
299
|
+
let textEnd = -1;
|
|
300
|
+
while (i < to) {
|
|
301
|
+
const char = raw[i];
|
|
302
|
+
if (char === "\\") {
|
|
303
|
+
i += 2;
|
|
304
|
+
continue;
|
|
305
|
+
}
|
|
306
|
+
if (char === "`") {
|
|
307
|
+
let run = 1;
|
|
308
|
+
while (raw[i + run] === "`")
|
|
309
|
+
run++;
|
|
310
|
+
const close = findBacktickRun(raw, i + run, run);
|
|
311
|
+
i = close === -1 ? i + run : close + run;
|
|
312
|
+
continue;
|
|
313
|
+
}
|
|
314
|
+
if (char === "[")
|
|
315
|
+
depth++;
|
|
316
|
+
if (char === "]") {
|
|
317
|
+
depth--;
|
|
318
|
+
if (depth === 0) {
|
|
319
|
+
textEnd = i;
|
|
320
|
+
break;
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
i++;
|
|
324
|
+
}
|
|
325
|
+
if (textEnd === -1)
|
|
326
|
+
return null;
|
|
327
|
+
const after = raw[textEnd + 1];
|
|
328
|
+
if (after === "(") {
|
|
329
|
+
let parens = 0;
|
|
330
|
+
let quote = null;
|
|
331
|
+
for (let k = textEnd + 1; k < to; k++) {
|
|
332
|
+
const char = raw[k];
|
|
333
|
+
if (quote !== null) {
|
|
334
|
+
if (char === quote)
|
|
335
|
+
quote = null;
|
|
336
|
+
}
|
|
337
|
+
else if (char === "\"" && parens > 0) {
|
|
338
|
+
quote = char;
|
|
339
|
+
}
|
|
340
|
+
else if (char === "(") {
|
|
341
|
+
parens++;
|
|
342
|
+
}
|
|
343
|
+
else if (char === ")") {
|
|
344
|
+
parens--;
|
|
345
|
+
if (parens === 0)
|
|
346
|
+
return { textEnd, end: k + 1 };
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
return null;
|
|
350
|
+
}
|
|
351
|
+
if (after === "[") {
|
|
352
|
+
const close = raw.indexOf("]", textEnd + 2);
|
|
353
|
+
if (close !== -1 && close < to)
|
|
354
|
+
return { textEnd, end: close + 1 };
|
|
355
|
+
}
|
|
356
|
+
return null;
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* This function handles quoted text. Double quotes always pair. A single
|
|
360
|
+
* quote pairs only when it cannot be an apostrophe. Then white space or an
|
|
361
|
+
* opening bracket comes before it, and white space or punctuation comes
|
|
362
|
+
* after its partner. The result is the index after the quote, or -1.
|
|
363
|
+
*/
|
|
364
|
+
function scanQuote(raw, i, to, out) {
|
|
365
|
+
const open = raw[i];
|
|
366
|
+
const close = open === "“" ? "”" : open === "‘" ? "’" : open;
|
|
367
|
+
const before = raw[i - 1];
|
|
368
|
+
if (isAlphanumeric(before))
|
|
369
|
+
return -1;
|
|
370
|
+
const single = open === "'" || open === "‘";
|
|
371
|
+
if (single && before !== undefined && !/[\s([{]/.test(before))
|
|
372
|
+
return -1;
|
|
373
|
+
if (raw[i + 1] === undefined || /\s/.test(raw[i + 1]))
|
|
374
|
+
return -1;
|
|
375
|
+
const limit = Math.min(to, i + (single ? 60 : 300));
|
|
376
|
+
for (let k = i + 1; k < limit; k++) {
|
|
377
|
+
if (raw[k] !== close)
|
|
378
|
+
continue;
|
|
379
|
+
const after = raw[k + 1];
|
|
380
|
+
if (single && after !== undefined && !/[\s.,;:!?)\]}]/.test(after))
|
|
381
|
+
continue;
|
|
382
|
+
if (!single && isAlphanumeric(after))
|
|
383
|
+
continue;
|
|
384
|
+
if (/\s/.test(raw[k - 1]))
|
|
385
|
+
continue;
|
|
386
|
+
const text = raw.slice(i + 1, k);
|
|
387
|
+
out.placeholder("quote", text, i, k + 1);
|
|
388
|
+
const final = text[text.length - 1];
|
|
389
|
+
// A quoted sentence can end the sentence around it.
|
|
390
|
+
if (final === "." || final === "!" || final === "?")
|
|
391
|
+
out.emit(final, k - 1);
|
|
392
|
+
return k + 1;
|
|
393
|
+
}
|
|
394
|
+
return -1;
|
|
395
|
+
}
|
|
396
|
+
//# sourceMappingURL=inline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inline.js","sourceRoot":"","sources":["../../src/source/inline.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prose extraction from the JSX of TSX and JSX files: the text that a user
|
|
3
|
+
* interface shows.
|
|
4
|
+
*
|
|
5
|
+
* An element with text children is one block. Inline elements (`strong`,
|
|
6
|
+
* `a`, `code` and the other elements in `INLINE_ELEMENTS`) and `{...}`
|
|
7
|
+
* expressions stay in the text of their parent. A code element and an
|
|
8
|
+
* expression become one placeholder, which counts as one word. An element
|
|
9
|
+
* with other children gives one block for each run of its text between
|
|
10
|
+
* those children. The JSX inside an expression gives its own blocks.
|
|
11
|
+
*
|
|
12
|
+
* The values of the attributes in `TEXT_ATTRIBUTES` (for example `title`
|
|
13
|
+
* and `aria-label`) are blocks too, when they are string literals.
|
|
14
|
+
*/
|
|
15
|
+
import type { Extraction } from "./markdown.js";
|
|
16
|
+
/** This function extracts the text blocks of the JSX of a file. */
|
|
17
|
+
export declare function extractJsxText(text: string, fileName: string): Extraction;
|
|
18
|
+
//# sourceMappingURL=jsx.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsx.d.ts","sourceRoot":"","sources":["../../src/source/jsx.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAuChD,mEAAmE;AACnE,wBAAgB,cAAc,CAAC,IAAI,EAAG,MAAM,EAAE,QAAQ,EAAG,MAAM,GAAI,UAAU,CAuF5E"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prose extraction from the JSX of TSX and JSX files: the text that a user
|
|
3
|
+
* interface shows.
|
|
4
|
+
*
|
|
5
|
+
* An element with text children is one block. Inline elements (`strong`,
|
|
6
|
+
* `a`, `code` and the other elements in `INLINE_ELEMENTS`) and `{...}`
|
|
7
|
+
* expressions stay in the text of their parent. A code element and an
|
|
8
|
+
* expression become one placeholder, which counts as one word. An element
|
|
9
|
+
* with other children gives one block for each run of its text between
|
|
10
|
+
* those children. The JSX inside an expression gives its own blocks.
|
|
11
|
+
*
|
|
12
|
+
* The values of the attributes in `TEXT_ATTRIBUTES` (for example `title`
|
|
13
|
+
* and `aria-label`) are blocks too, when they are string literals.
|
|
14
|
+
*/
|
|
15
|
+
import ts from "typescript";
|
|
16
|
+
import { splitLines } from "./lines.js";
|
|
17
|
+
/** Elements whose text stays in the text of the parent element. */
|
|
18
|
+
const INLINE_ELEMENTS = new Set([
|
|
19
|
+
"a", "abbr", "b", "bdi", "bdo", "br", "cite", "code", "data", "dfn", "em", "i", "kbd", "mark", "q", "s",
|
|
20
|
+
"samp", "small", "span", "strong", "sub", "sup", "time", "u", "var", "wbr", "Link", "NavLink",
|
|
21
|
+
]);
|
|
22
|
+
/** Inline elements whose content is code: each one is one placeholder. */
|
|
23
|
+
const CODE_ELEMENTS = new Set(["code", "kbd", "samp", "var"]);
|
|
24
|
+
/** Elements whose text is a heading. */
|
|
25
|
+
const HEADING_ELEMENTS = new Set(["h1", "h2", "h3", "h4", "h5", "h6"]);
|
|
26
|
+
/** Elements whose text is a label or a short fragment, not a sentence. The word rules apply, the sentence rules do not. */
|
|
27
|
+
const FRAGMENT_ELEMENTS = new Set(["button", "label", "legend", "option", "th", "td", "dt", "summary", "caption", "title"]);
|
|
28
|
+
/** Attributes whose string value is text that a reader sees or hears. */
|
|
29
|
+
const TEXT_ATTRIBUTES = new Set(["title", "aria-label", "aria-description", "alt", "placeholder", "label", "caption", "description", "summary"]);
|
|
30
|
+
const ORIGIN = { source: "jsx", tsdocSection: null, tsdocTag: null };
|
|
31
|
+
function tagName(node) {
|
|
32
|
+
const name = ts.isJsxElement(node) ? node.openingElement.tagName : node.tagName;
|
|
33
|
+
return name.getText();
|
|
34
|
+
}
|
|
35
|
+
function isInline(child) {
|
|
36
|
+
if (ts.isJsxText(child) || ts.isJsxExpression(child))
|
|
37
|
+
return true;
|
|
38
|
+
if (ts.isJsxElement(child) || ts.isJsxSelfClosingElement(child))
|
|
39
|
+
return INLINE_ELEMENTS.has(tagName(child));
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
function kindOf(name) {
|
|
43
|
+
if (HEADING_ELEMENTS.has(name))
|
|
44
|
+
return { kind: "heading", depth: Number(name.slice(1)) };
|
|
45
|
+
if (FRAGMENT_ELEMENTS.has(name))
|
|
46
|
+
return { kind: "table-cell", depth: 0 };
|
|
47
|
+
return { kind: "paragraph", depth: 0 };
|
|
48
|
+
}
|
|
49
|
+
/** This function extracts the text blocks of the JSX of a file. */
|
|
50
|
+
export function extractJsxText(text, fileName) {
|
|
51
|
+
const sourceFile = ts.createSourceFile(fileName, text, ts.ScriptTarget.Latest, true, ts.ScriptKind.TSX);
|
|
52
|
+
const blocks = [];
|
|
53
|
+
const push = (kind, lines, depth) => {
|
|
54
|
+
blocks.push({ block: { kind, lines, list: null, quote: false, headingDepth: depth, tableHeader: false }, origin: ORIGIN });
|
|
55
|
+
};
|
|
56
|
+
/** The lines of one inline child. The JSX inside an expression goes to `visit`. */
|
|
57
|
+
const linesOf = (child) => {
|
|
58
|
+
if (ts.isJsxText(child)) {
|
|
59
|
+
const start = child.getFullStart();
|
|
60
|
+
const raw = text.slice(start, child.getEnd());
|
|
61
|
+
return { lines: splitLines(raw, start), words: /\p{L}/u.test(raw) };
|
|
62
|
+
}
|
|
63
|
+
if (ts.isJsxExpression(child)) {
|
|
64
|
+
if (!child.expression)
|
|
65
|
+
return { lines: [], words: false };
|
|
66
|
+
ts.forEachChild(child.expression, visit);
|
|
67
|
+
return { lines: [{ text: "{x}", offset: child.getStart() }], words: false };
|
|
68
|
+
}
|
|
69
|
+
if (ts.isJsxElement(child) || ts.isJsxSelfClosingElement(child)) {
|
|
70
|
+
const name = tagName(child);
|
|
71
|
+
if (ts.isJsxSelfClosingElement(child) || CODE_ELEMENTS.has(name)) {
|
|
72
|
+
if (ts.isJsxSelfClosingElement(child) || name === "br")
|
|
73
|
+
return { lines: [], words: false };
|
|
74
|
+
return { lines: [{ text: "`x`", offset: child.getStart() }], words: false };
|
|
75
|
+
}
|
|
76
|
+
visitAttributes(child.openingElement.attributes);
|
|
77
|
+
const parts = child.children.map(linesOf);
|
|
78
|
+
return { lines: parts.flatMap(part => part.lines), words: parts.some(part => part.words) };
|
|
79
|
+
}
|
|
80
|
+
return { lines: [], words: false };
|
|
81
|
+
};
|
|
82
|
+
const addRun = (children, kind, depth) => {
|
|
83
|
+
const parts = children.map(linesOf);
|
|
84
|
+
if (parts.some(part => part.words))
|
|
85
|
+
push(kind, parts.flatMap(part => part.lines), depth);
|
|
86
|
+
};
|
|
87
|
+
const visitChildren = (children, name) => {
|
|
88
|
+
const { kind, depth } = kindOf(name);
|
|
89
|
+
let run = [];
|
|
90
|
+
for (const child of children) {
|
|
91
|
+
if (isInline(child)) {
|
|
92
|
+
run.push(child);
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
addRun(run, kind, depth);
|
|
96
|
+
run = [];
|
|
97
|
+
visit(child);
|
|
98
|
+
}
|
|
99
|
+
addRun(run, kind, depth);
|
|
100
|
+
};
|
|
101
|
+
function visitAttributes(attributes) {
|
|
102
|
+
for (const property of attributes.properties) {
|
|
103
|
+
if (!ts.isJsxAttribute(property) || !property.initializer)
|
|
104
|
+
continue;
|
|
105
|
+
const value = property.initializer;
|
|
106
|
+
if (ts.isJsxExpression(value)) {
|
|
107
|
+
if (value.expression)
|
|
108
|
+
ts.forEachChild(value.expression, visit);
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
if (!TEXT_ATTRIBUTES.has(property.name.getText()))
|
|
112
|
+
continue;
|
|
113
|
+
if (ts.isStringLiteral(value) && /\p{L}/u.test(value.text)) {
|
|
114
|
+
push("table-cell", [{ text: value.text, offset: value.getStart() + 1 }], 0);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
function visit(node) {
|
|
119
|
+
if (ts.isJsxElement(node)) {
|
|
120
|
+
visitAttributes(node.openingElement.attributes);
|
|
121
|
+
visitChildren(node.children, tagName(node));
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
if (ts.isJsxSelfClosingElement(node)) {
|
|
125
|
+
visitAttributes(node.attributes);
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
if (ts.isJsxFragment(node)) {
|
|
129
|
+
visitChildren(node.children, "fragment");
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
ts.forEachChild(node, visit);
|
|
133
|
+
}
|
|
134
|
+
visit(sourceFile);
|
|
135
|
+
return { blocks, suppressions: [] };
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=jsx.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsx.js","sourceRoot":"","sources":["../../src/source/jsx.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/** A line of source text, and the file offset of its first character. */
|
|
2
|
+
export type Line = {
|
|
3
|
+
readonly text: string;
|
|
4
|
+
readonly offset: number;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* This function divides `text` into lines. The offset of each line starts at
|
|
8
|
+
* `base`. A `\r` before a `\n` is not part of the line text.
|
|
9
|
+
*/
|
|
10
|
+
export declare function splitLines(text: string, base?: number): Line[];
|
|
11
|
+
/** A 1-based line and column. */
|
|
12
|
+
export type Position = {
|
|
13
|
+
readonly line: number;
|
|
14
|
+
readonly column: number;
|
|
15
|
+
};
|
|
16
|
+
/** This index changes file offsets into 1-based line and column numbers. */
|
|
17
|
+
export declare class LineIndex {
|
|
18
|
+
private readonly starts;
|
|
19
|
+
constructor(text: string);
|
|
20
|
+
/** The line and column of `offset`. */
|
|
21
|
+
position(offset: number): Position;
|
|
22
|
+
}
|
|
23
|
+
/** The number of columns of indentation at the start of `text`. A tab moves to the next multiple of 4. */
|
|
24
|
+
export declare function indentWidth(text: string): number;
|
|
25
|
+
/** The part of `line` after the first `count` characters. The offset moves with the text. */
|
|
26
|
+
export declare function sliceLine(line: Line, count: number): Line;
|
|
27
|
+
/**
|
|
28
|
+
* The part of `line` after `columns` columns of indentation. The function
|
|
29
|
+
* removes fewer characters when the line has less indentation.
|
|
30
|
+
*/
|
|
31
|
+
export declare function stripIndent(line: Line, columns: number): Line;
|
|
32
|
+
/** True when the line has only white space. */
|
|
33
|
+
export declare function isBlank(text: string): boolean;
|
|
34
|
+
//# sourceMappingURL=lines.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lines.d.ts","sourceRoot":"","sources":["../../src/source/lines.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,MAAM,MAAM,IAAI,GAAG;IACf,QAAQ,CAAC,IAAI,EAAG,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAG,MAAM,CAAC;CAC5B,CAAC;AAEF;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAG,MAAM,EAAE,IAAI,GAAG,MAAU,GAAI,IAAI,EAAE,CAYpE;AAED,iCAAiC;AACjC,MAAM,MAAM,QAAQ,GAAG;IACnB,QAAQ,CAAC,IAAI,EAAG,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAG,MAAM,CAAC;CAC5B,CAAC;AAEF,4EAA4E;AAC5E,qBAAa,SAAS;IAClB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;gBAE7B,IAAI,EAAG,MAAM;IAMzB,uCAAuC;IACvC,QAAQ,CAAC,MAAM,EAAG,MAAM,GAAI,QAAQ;CAUvC;AAED,0GAA0G;AAC1G,wBAAgB,WAAW,CAAC,IAAI,EAAG,MAAM,GAAI,MAAM,CAQlD;AAED,6FAA6F;AAC7F,wBAAgB,SAAS,CAAC,IAAI,EAAG,IAAI,EAAE,KAAK,EAAG,MAAM,GAAI,IAAI,CAG5D;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAG,IAAI,EAAE,OAAO,EAAG,MAAM,GAAI,IAAI,CAWhE;AAED,+CAA+C;AAC/C,wBAAgB,OAAO,CAAC,IAAI,EAAG,MAAM,GAAI,OAAO,CAE/C"}
|