@intentset/architecture 0.5.0 → 0.6.0
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/dist/extract.d.ts.map +1 -1
- package/dist/extract.js +233 -49
- package/dist/extract.js.map +1 -1
- package/package.json +2 -2
- package/src/extract.ts +209 -45
package/dist/extract.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../src/extract.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../src/extract.ts"],"names":[],"mappings":"AAkCA,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,kGAAkG;IAClG,QAAQ,EAAE,OAAO,CAAC;IAClB,uCAAuC;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,6BAA6B;IAC7B,QAAQ,EAAE,OAAO,CAAC;IAClB,wDAAwD;IACxD,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC5B;AAsSD,oDAAoD;AACpD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CA4JrE;AAED,6EAA6E;AAC7E,eAAO,MAAM,YAAY,YAAI,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,CAAU,CAAC;AAC1G,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,8GAA8G;IAC9G,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,kHAAkH;AAClH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,KAAK,CAAC;IAChD,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,4EAA4E;IAC5E,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,EAAE,iBAAiB,EAAE,CAAC;IAClC,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC5B;AAcD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAuF1E;AAED,oHAAoH;AACpH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAY5E"}
|
package/dist/extract.js
CHANGED
|
@@ -15,9 +15,16 @@
|
|
|
15
15
|
* export * from "x" export * as ns from "x"
|
|
16
16
|
* import("x") require("x")
|
|
17
17
|
*
|
|
18
|
-
* The scanner leaves
|
|
19
|
-
* regular expression,
|
|
20
|
-
*
|
|
18
|
+
* The scanner leaves three decisions to its parser: whether `/` starts a
|
|
19
|
+
* regular expression, whether `}` resumes a template literal, and, in a .tsx
|
|
20
|
+
* or .jsx file, whether `<` opens a JSX element. The first two are made here
|
|
21
|
+
* from the preceding token and a stack of template brace depths. The third is
|
|
22
|
+
* made the same way and then confirmed by reading the element through its
|
|
23
|
+
* closing tag with the scanner's JSX methods, so JSX text and attribute strings
|
|
24
|
+
* are never lexed as code (a `/` in text is not a regular expression, `//` is
|
|
25
|
+
* not a comment) while expression containers still are. What does not read as
|
|
26
|
+
* an element, such as the type parameters of `<T,>(x: T) => x`, is rescanned
|
|
27
|
+
* as code from the `<`.
|
|
21
28
|
* Anything this module cannot read is returned as a problem, never dropped:
|
|
22
29
|
* a dynamic import with a computed specifier, or a token the scanner could
|
|
23
30
|
* not terminate (invariant 6).
|
|
@@ -84,63 +91,240 @@ function tokenize(path, text) {
|
|
|
84
91
|
};
|
|
85
92
|
const tokens = [];
|
|
86
93
|
const problems = [];
|
|
87
|
-
/** Open brace depth inside each `${` of an unfinished template literal. */
|
|
88
|
-
const templates = [];
|
|
89
94
|
let previous;
|
|
90
95
|
let lastEnd = -1;
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
96
|
+
const push = (kind, line = lineOf(scanner.getTokenStart())) => {
|
|
97
|
+
const token = { kind, text: scanner.getTokenText(), value: scanner.getTokenValue(), line };
|
|
98
|
+
tokens.push(token);
|
|
99
|
+
previous = token;
|
|
100
|
+
};
|
|
101
|
+
/** The next token of code, stepping over any token that does not advance. */
|
|
102
|
+
const next = () => {
|
|
103
|
+
for (;;) {
|
|
104
|
+
const kind = scanner.scan();
|
|
105
|
+
if (kind === SyntaxKind.EndOfFile)
|
|
106
|
+
return kind;
|
|
107
|
+
// TypeScript 7's scanner can return a token without advancing: text such
|
|
108
|
+
// as `#{n}` scans as an empty private identifier at the `#`, forever. A
|
|
109
|
+
// token that ends where the last one did makes no progress, so step over
|
|
110
|
+
// one character, and report it outside JSX, because something was skipped.
|
|
111
|
+
if (scanner.getTokenEnd() <= lastEnd) {
|
|
112
|
+
if (!jsx) {
|
|
113
|
+
problems.push({
|
|
114
|
+
line: lineOf(lastEnd),
|
|
115
|
+
message: "the scanner could not advance here, so one character was skipped",
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
lastEnd++;
|
|
119
|
+
scanner.resetTokenState(lastEnd);
|
|
120
|
+
continue;
|
|
106
121
|
}
|
|
107
|
-
lastEnd
|
|
108
|
-
|
|
109
|
-
continue;
|
|
122
|
+
lastEnd = scanner.getTokenEnd();
|
|
123
|
+
return kind;
|
|
110
124
|
}
|
|
125
|
+
};
|
|
126
|
+
/**
|
|
127
|
+
* Code up to the end of the file, or, inside a JSX expression container, up
|
|
128
|
+
* to the `}` that closes it. Returns false when the file ends first.
|
|
129
|
+
*/
|
|
130
|
+
const code = (container) => {
|
|
131
|
+
/** Open brace depth inside each `${` of an unfinished template literal. */
|
|
132
|
+
const templates = [];
|
|
133
|
+
let depth = 0;
|
|
134
|
+
for (;;) {
|
|
135
|
+
let kind = next();
|
|
136
|
+
if (kind === SyntaxKind.EndOfFile) {
|
|
137
|
+
if (templates.length > 0) {
|
|
138
|
+
problems.push({
|
|
139
|
+
line: previous?.line ?? 1,
|
|
140
|
+
message: "a template literal is still open at the end of the file",
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
return false;
|
|
144
|
+
}
|
|
145
|
+
if ((kind === SyntaxKind.SlashToken || kind === SyntaxKind.SlashEqualsToken) && regexAllowed(previous)) {
|
|
146
|
+
kind = scanner.reScanSlashToken();
|
|
147
|
+
lastEnd = scanner.getTokenEnd();
|
|
148
|
+
}
|
|
149
|
+
else if (kind === SyntaxKind.OpenBraceToken) {
|
|
150
|
+
if (templates.length > 0)
|
|
151
|
+
templates[templates.length - 1]++;
|
|
152
|
+
else
|
|
153
|
+
depth++;
|
|
154
|
+
}
|
|
155
|
+
else if (kind === SyntaxKind.CloseBraceToken) {
|
|
156
|
+
if (templates.length > 0) {
|
|
157
|
+
if (templates[templates.length - 1] === 0) {
|
|
158
|
+
kind = scanner.reScanTemplateToken(false);
|
|
159
|
+
lastEnd = scanner.getTokenEnd();
|
|
160
|
+
if (kind === SyntaxKind.TemplateTail)
|
|
161
|
+
templates.pop();
|
|
162
|
+
}
|
|
163
|
+
else
|
|
164
|
+
templates[templates.length - 1]--;
|
|
165
|
+
}
|
|
166
|
+
else if (container && depth === 0) {
|
|
167
|
+
push(kind);
|
|
168
|
+
return true;
|
|
169
|
+
}
|
|
170
|
+
else
|
|
171
|
+
depth--;
|
|
172
|
+
}
|
|
173
|
+
else if (kind === SyntaxKind.LessThanToken && jsx && regexAllowed(previous) && element()) {
|
|
174
|
+
continue;
|
|
175
|
+
}
|
|
176
|
+
if (kind === SyntaxKind.TemplateHead)
|
|
177
|
+
templates.push(0);
|
|
178
|
+
const line = lineOf(scanner.getTokenStart());
|
|
179
|
+
if (scanner.isUnterminated()) {
|
|
180
|
+
// In JSX, text such as `Don't` that is not read as JSX (an element the
|
|
181
|
+
// reader gave up on) scans as a string that runs to the end of its line
|
|
182
|
+
// and no further; it costs at most that line.
|
|
183
|
+
if (!(jsx && kind === SyntaxKind.StringLiteral)) {
|
|
184
|
+
problems.push({ line, message: `the scanner could not terminate a ${describe(kind)} that starts here` });
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
push(kind, line);
|
|
188
|
+
}
|
|
189
|
+
};
|
|
190
|
+
/** A JSX tag name after its first identifier: `a-b`, `A.B.C`, `a:b`. Leaves the token after it current. */
|
|
191
|
+
const tagName = () => {
|
|
192
|
+
const from = scanner.getTokenStart();
|
|
193
|
+
scanner.scanJsxIdentifier();
|
|
111
194
|
lastEnd = scanner.getTokenEnd();
|
|
112
|
-
|
|
113
|
-
|
|
195
|
+
let to = lastEnd;
|
|
196
|
+
let kind = next();
|
|
197
|
+
while (kind === SyntaxKind.DotToken || kind === SyntaxKind.ColonToken) {
|
|
198
|
+
if (!tokenIsIdentifierOrKeyword(next()))
|
|
199
|
+
return { name: "", kind: SyntaxKind.Unknown };
|
|
200
|
+
scanner.scanJsxIdentifier();
|
|
201
|
+
lastEnd = scanner.getTokenEnd();
|
|
202
|
+
to = lastEnd;
|
|
203
|
+
kind = next();
|
|
114
204
|
}
|
|
115
|
-
|
|
116
|
-
|
|
205
|
+
return { name: text.slice(from, to), kind };
|
|
206
|
+
};
|
|
207
|
+
/** A JSX expression container, its `{` current: its contents are code. */
|
|
208
|
+
const container = () => {
|
|
209
|
+
push(SyntaxKind.OpenBraceToken);
|
|
210
|
+
return code(true);
|
|
211
|
+
};
|
|
212
|
+
/**
|
|
213
|
+
* Read a JSX element or fragment as JSX rather than as code, its `<` the
|
|
214
|
+
* current token: text and attribute strings are skipped, expression
|
|
215
|
+
* containers are read as code. Returns false, with the scanner, tokens and
|
|
216
|
+
* problems as they were before the `<`, when what follows is not an element
|
|
217
|
+
* (a type parameter list such as `<T,>(x: T) => x`), or never closes.
|
|
218
|
+
*/
|
|
219
|
+
const element = () => {
|
|
220
|
+
const at = scanner.getTokenEnd();
|
|
221
|
+
const saved = { tokens: tokens.length, problems: problems.length, previous };
|
|
222
|
+
const start = scanner.getTokenStart();
|
|
223
|
+
const line = lineOf(start);
|
|
224
|
+
if (read()) {
|
|
225
|
+
tokens.push({ kind: SyntaxKind.JsxElement, text: text.slice(start, lastEnd), value: "", line });
|
|
226
|
+
previous = tokens[tokens.length - 1];
|
|
227
|
+
return true;
|
|
117
228
|
}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
229
|
+
tokens.length = saved.tokens;
|
|
230
|
+
problems.length = saved.problems;
|
|
231
|
+
previous = saved.previous;
|
|
232
|
+
lastEnd = at;
|
|
233
|
+
scanner.resetTokenState(at);
|
|
234
|
+
return false;
|
|
235
|
+
};
|
|
236
|
+
/** The element after its `<`, through its closing tag. */
|
|
237
|
+
const read = () => {
|
|
238
|
+
let kind = next();
|
|
239
|
+
let name = "";
|
|
240
|
+
if (kind !== SyntaxKind.GreaterThanToken) {
|
|
241
|
+
if (!tokenIsIdentifierOrKeyword(kind))
|
|
242
|
+
return false;
|
|
243
|
+
// A type parameter list, as TypeScript's parser decides in a .tsx file.
|
|
244
|
+
const nameStart = scanner.getTokenStart();
|
|
245
|
+
const second = next();
|
|
246
|
+
if (second === SyntaxKind.CommaToken || second === SyntaxKind.EqualsToken)
|
|
247
|
+
return false;
|
|
248
|
+
if (second === SyntaxKind.ExtendsKeyword) {
|
|
249
|
+
const third = next();
|
|
250
|
+
if (third !== SyntaxKind.EqualsToken &&
|
|
251
|
+
third !== SyntaxKind.GreaterThanToken &&
|
|
252
|
+
third !== SyntaxKind.SlashToken) {
|
|
253
|
+
return false;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
lastEnd = nameStart;
|
|
257
|
+
scanner.resetTokenState(nameStart);
|
|
258
|
+
next();
|
|
259
|
+
({ name, kind } = tagName());
|
|
260
|
+
if (name === "")
|
|
261
|
+
return false;
|
|
262
|
+
// Attributes, up to `>` or `/>`.
|
|
263
|
+
for (;;) {
|
|
264
|
+
if (kind === SyntaxKind.GreaterThanToken)
|
|
265
|
+
break;
|
|
266
|
+
if (kind === SyntaxKind.SlashToken)
|
|
267
|
+
return next() === SyntaxKind.GreaterThanToken;
|
|
268
|
+
if (kind === SyntaxKind.OpenBraceToken) {
|
|
269
|
+
if (!container())
|
|
270
|
+
return false;
|
|
271
|
+
kind = next();
|
|
272
|
+
continue;
|
|
273
|
+
}
|
|
274
|
+
if (!tokenIsIdentifierOrKeyword(kind))
|
|
275
|
+
return false;
|
|
276
|
+
const attribute = tagName();
|
|
277
|
+
if (attribute.name === "")
|
|
278
|
+
return false;
|
|
279
|
+
kind = attribute.kind;
|
|
280
|
+
if (kind !== SyntaxKind.EqualsToken)
|
|
281
|
+
continue;
|
|
282
|
+
const value = scanner.scanJsxAttributeValue();
|
|
283
|
+
lastEnd = scanner.getTokenEnd();
|
|
284
|
+
if (value === SyntaxKind.StringLiteral) {
|
|
285
|
+
if (scanner.isUnterminated())
|
|
286
|
+
return false;
|
|
287
|
+
}
|
|
288
|
+
else if (value === SyntaxKind.OpenBraceToken) {
|
|
289
|
+
if (!container())
|
|
290
|
+
return false;
|
|
291
|
+
}
|
|
292
|
+
else if (value === SyntaxKind.LessThanToken) {
|
|
293
|
+
if (!element())
|
|
294
|
+
return false;
|
|
295
|
+
}
|
|
296
|
+
else
|
|
297
|
+
return false;
|
|
298
|
+
kind = next();
|
|
123
299
|
}
|
|
124
|
-
else
|
|
125
|
-
templates[templates.length - 1]--;
|
|
126
300
|
}
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
if (
|
|
134
|
-
|
|
301
|
+
// Children, up to the closing tag.
|
|
302
|
+
for (;;) {
|
|
303
|
+
const child = scanner.scanJsxToken();
|
|
304
|
+
if (child === SyntaxKind.EndOfFile)
|
|
305
|
+
return false;
|
|
306
|
+
lastEnd = scanner.getTokenEnd();
|
|
307
|
+
if (child === SyntaxKind.OpenBraceToken) {
|
|
308
|
+
if (!container())
|
|
309
|
+
return false;
|
|
310
|
+
}
|
|
311
|
+
else if (child === SyntaxKind.LessThanToken) {
|
|
312
|
+
if (!element())
|
|
313
|
+
return false;
|
|
314
|
+
}
|
|
315
|
+
else if (child === SyntaxKind.LessThanSlashToken) {
|
|
316
|
+
let closing = next();
|
|
317
|
+
let closingName = "";
|
|
318
|
+
if (closing !== SyntaxKind.GreaterThanToken) {
|
|
319
|
+
if (!tokenIsIdentifierOrKeyword(closing))
|
|
320
|
+
return false;
|
|
321
|
+
({ name: closingName, kind: closing } = tagName());
|
|
322
|
+
}
|
|
323
|
+
return closing === SyntaxKind.GreaterThanToken && closingName === name;
|
|
135
324
|
}
|
|
136
325
|
}
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
previous = token;
|
|
140
|
-
}
|
|
141
|
-
if (templates.length > 0) {
|
|
142
|
-
problems.push({ line: previous?.line ?? 1, message: "a template literal is still open at the end of the file" });
|
|
143
|
-
}
|
|
326
|
+
};
|
|
327
|
+
code(false);
|
|
144
328
|
return { tokens, problems };
|
|
145
329
|
}
|
|
146
330
|
function describe(kind) {
|
package/dist/extract.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../src/extract.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../src/extract.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@intentset/architecture",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "Traceable VSA checks: path claims, import graph, layer matrix, resources, exceptions, baseline.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
}
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@intentset/core": "^0.
|
|
31
|
+
"@intentset/core": "^0.6.0"
|
|
32
32
|
},
|
|
33
33
|
"peerDependencies": {
|
|
34
34
|
"typescript": "^7.0.2"
|
package/src/extract.ts
CHANGED
|
@@ -15,9 +15,16 @@
|
|
|
15
15
|
* export * from "x" export * as ns from "x"
|
|
16
16
|
* import("x") require("x")
|
|
17
17
|
*
|
|
18
|
-
* The scanner leaves
|
|
19
|
-
* regular expression,
|
|
20
|
-
*
|
|
18
|
+
* The scanner leaves three decisions to its parser: whether `/` starts a
|
|
19
|
+
* regular expression, whether `}` resumes a template literal, and, in a .tsx
|
|
20
|
+
* or .jsx file, whether `<` opens a JSX element. The first two are made here
|
|
21
|
+
* from the preceding token and a stack of template brace depths. The third is
|
|
22
|
+
* made the same way and then confirmed by reading the element through its
|
|
23
|
+
* closing tag with the scanner's JSX methods, so JSX text and attribute strings
|
|
24
|
+
* are never lexed as code (a `/` in text is not a regular expression, `//` is
|
|
25
|
+
* not a comment) while expression containers still are. What does not read as
|
|
26
|
+
* an element, such as the type parameters of `<T,>(x: T) => x`, is rescanned
|
|
27
|
+
* as code from the `<`.
|
|
21
28
|
* Anything this module cannot read is returned as a problem, never dropped:
|
|
22
29
|
* a dynamic import with a computed specifier, or a token the scanner could
|
|
23
30
|
* not terminate (invariant 6).
|
|
@@ -115,56 +122,213 @@ function tokenize(path: string, text: string): { tokens: Token[]; problems: Extr
|
|
|
115
122
|
};
|
|
116
123
|
const tokens: Token[] = [];
|
|
117
124
|
const problems: ExtractProblem[] = [];
|
|
118
|
-
/** Open brace depth inside each `${` of an unfinished template literal. */
|
|
119
|
-
const templates: number[] = [];
|
|
120
125
|
let previous: Token | undefined;
|
|
121
126
|
let lastEnd = -1;
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
127
|
+
|
|
128
|
+
const push = (kind: SyntaxKind, line = lineOf(scanner.getTokenStart())): void => {
|
|
129
|
+
const token: Token = { kind, text: scanner.getTokenText(), value: scanner.getTokenValue(), line };
|
|
130
|
+
tokens.push(token);
|
|
131
|
+
previous = token;
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
/** The next token of code, stepping over any token that does not advance. */
|
|
135
|
+
const next = (): SyntaxKind => {
|
|
136
|
+
for (;;) {
|
|
137
|
+
const kind = scanner.scan();
|
|
138
|
+
if (kind === SyntaxKind.EndOfFile) return kind;
|
|
139
|
+
// TypeScript 7's scanner can return a token without advancing: text such
|
|
140
|
+
// as `#{n}` scans as an empty private identifier at the `#`, forever. A
|
|
141
|
+
// token that ends where the last one did makes no progress, so step over
|
|
142
|
+
// one character, and report it outside JSX, because something was skipped.
|
|
143
|
+
if (scanner.getTokenEnd() <= lastEnd) {
|
|
144
|
+
if (!jsx) {
|
|
145
|
+
problems.push({
|
|
146
|
+
line: lineOf(lastEnd),
|
|
147
|
+
message: "the scanner could not advance here, so one character was skipped",
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
lastEnd++;
|
|
151
|
+
scanner.resetTokenState(lastEnd);
|
|
152
|
+
continue;
|
|
136
153
|
}
|
|
137
|
-
lastEnd
|
|
138
|
-
|
|
139
|
-
continue;
|
|
154
|
+
lastEnd = scanner.getTokenEnd();
|
|
155
|
+
return kind;
|
|
140
156
|
}
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Code up to the end of the file, or, inside a JSX expression container, up
|
|
161
|
+
* to the `}` that closes it. Returns false when the file ends first.
|
|
162
|
+
*/
|
|
163
|
+
const code = (container: boolean): boolean => {
|
|
164
|
+
/** Open brace depth inside each `${` of an unfinished template literal. */
|
|
165
|
+
const templates: number[] = [];
|
|
166
|
+
let depth = 0;
|
|
167
|
+
for (;;) {
|
|
168
|
+
let kind = next();
|
|
169
|
+
if (kind === SyntaxKind.EndOfFile) {
|
|
170
|
+
if (templates.length > 0) {
|
|
171
|
+
problems.push({
|
|
172
|
+
line: previous?.line ?? 1,
|
|
173
|
+
message: "a template literal is still open at the end of the file",
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
return false;
|
|
177
|
+
}
|
|
178
|
+
if ((kind === SyntaxKind.SlashToken || kind === SyntaxKind.SlashEqualsToken) && regexAllowed(previous)) {
|
|
179
|
+
kind = scanner.reScanSlashToken();
|
|
180
|
+
lastEnd = scanner.getTokenEnd();
|
|
181
|
+
} else if (kind === SyntaxKind.OpenBraceToken) {
|
|
182
|
+
if (templates.length > 0) templates[templates.length - 1]++;
|
|
183
|
+
else depth++;
|
|
184
|
+
} else if (kind === SyntaxKind.CloseBraceToken) {
|
|
185
|
+
if (templates.length > 0) {
|
|
186
|
+
if (templates[templates.length - 1] === 0) {
|
|
187
|
+
kind = scanner.reScanTemplateToken(false);
|
|
188
|
+
lastEnd = scanner.getTokenEnd();
|
|
189
|
+
if (kind === SyntaxKind.TemplateTail) templates.pop();
|
|
190
|
+
} else templates[templates.length - 1]--;
|
|
191
|
+
} else if (container && depth === 0) {
|
|
192
|
+
push(kind);
|
|
193
|
+
return true;
|
|
194
|
+
} else depth--;
|
|
195
|
+
} else if (kind === SyntaxKind.LessThanToken && jsx && regexAllowed(previous) && element()) {
|
|
196
|
+
continue;
|
|
197
|
+
}
|
|
198
|
+
if (kind === SyntaxKind.TemplateHead) templates.push(0);
|
|
199
|
+
const line = lineOf(scanner.getTokenStart());
|
|
200
|
+
if (scanner.isUnterminated()) {
|
|
201
|
+
// In JSX, text such as `Don't` that is not read as JSX (an element the
|
|
202
|
+
// reader gave up on) scans as a string that runs to the end of its line
|
|
203
|
+
// and no further; it costs at most that line.
|
|
204
|
+
if (!(jsx && kind === SyntaxKind.StringLiteral)) {
|
|
205
|
+
problems.push({ line, message: `the scanner could not terminate a ${describe(kind)} that starts here` });
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
push(kind, line);
|
|
209
|
+
}
|
|
210
|
+
};
|
|
211
|
+
|
|
212
|
+
/** A JSX tag name after its first identifier: `a-b`, `A.B.C`, `a:b`. Leaves the token after it current. */
|
|
213
|
+
const tagName = (): { name: string; kind: SyntaxKind } => {
|
|
214
|
+
const from = scanner.getTokenStart();
|
|
215
|
+
scanner.scanJsxIdentifier();
|
|
141
216
|
lastEnd = scanner.getTokenEnd();
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
217
|
+
let to = lastEnd;
|
|
218
|
+
let kind = next();
|
|
219
|
+
while (kind === SyntaxKind.DotToken || kind === SyntaxKind.ColonToken) {
|
|
220
|
+
if (!tokenIsIdentifierOrKeyword(next())) return { name: "", kind: SyntaxKind.Unknown };
|
|
221
|
+
scanner.scanJsxIdentifier();
|
|
222
|
+
lastEnd = scanner.getTokenEnd();
|
|
223
|
+
to = lastEnd;
|
|
224
|
+
kind = next();
|
|
225
|
+
}
|
|
226
|
+
return { name: text.slice(from, to), kind };
|
|
227
|
+
};
|
|
228
|
+
|
|
229
|
+
/** A JSX expression container, its `{` current: its contents are code. */
|
|
230
|
+
const container = (): boolean => {
|
|
231
|
+
push(SyntaxKind.OpenBraceToken);
|
|
232
|
+
return code(true);
|
|
233
|
+
};
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* Read a JSX element or fragment as JSX rather than as code, its `<` the
|
|
237
|
+
* current token: text and attribute strings are skipped, expression
|
|
238
|
+
* containers are read as code. Returns false, with the scanner, tokens and
|
|
239
|
+
* problems as they were before the `<`, when what follows is not an element
|
|
240
|
+
* (a type parameter list such as `<T,>(x: T) => x`), or never closes.
|
|
241
|
+
*/
|
|
242
|
+
const element = (): boolean => {
|
|
243
|
+
const at = scanner.getTokenEnd();
|
|
244
|
+
const saved = { tokens: tokens.length, problems: problems.length, previous };
|
|
245
|
+
const start = scanner.getTokenStart();
|
|
246
|
+
const line = lineOf(start);
|
|
247
|
+
if (read()) {
|
|
248
|
+
tokens.push({ kind: SyntaxKind.JsxElement, text: text.slice(start, lastEnd), value: "", line });
|
|
249
|
+
previous = tokens[tokens.length - 1];
|
|
250
|
+
return true;
|
|
151
251
|
}
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
252
|
+
tokens.length = saved.tokens;
|
|
253
|
+
problems.length = saved.problems;
|
|
254
|
+
previous = saved.previous;
|
|
255
|
+
lastEnd = at;
|
|
256
|
+
scanner.resetTokenState(at);
|
|
257
|
+
return false;
|
|
258
|
+
};
|
|
259
|
+
|
|
260
|
+
/** The element after its `<`, through its closing tag. */
|
|
261
|
+
const read = (): boolean => {
|
|
262
|
+
let kind = next();
|
|
263
|
+
let name = "";
|
|
264
|
+
if (kind !== SyntaxKind.GreaterThanToken) {
|
|
265
|
+
if (!tokenIsIdentifierOrKeyword(kind)) return false;
|
|
266
|
+
// A type parameter list, as TypeScript's parser decides in a .tsx file.
|
|
267
|
+
const nameStart = scanner.getTokenStart();
|
|
268
|
+
const second = next();
|
|
269
|
+
if (second === SyntaxKind.CommaToken || second === SyntaxKind.EqualsToken) return false;
|
|
270
|
+
if (second === SyntaxKind.ExtendsKeyword) {
|
|
271
|
+
const third = next();
|
|
272
|
+
if (
|
|
273
|
+
third !== SyntaxKind.EqualsToken &&
|
|
274
|
+
third !== SyntaxKind.GreaterThanToken &&
|
|
275
|
+
third !== SyntaxKind.SlashToken
|
|
276
|
+
) {
|
|
277
|
+
return false;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
lastEnd = nameStart;
|
|
281
|
+
scanner.resetTokenState(nameStart);
|
|
282
|
+
next();
|
|
283
|
+
({ name, kind } = tagName());
|
|
284
|
+
if (name === "") return false;
|
|
285
|
+
// Attributes, up to `>` or `/>`.
|
|
286
|
+
for (;;) {
|
|
287
|
+
if (kind === SyntaxKind.GreaterThanToken) break;
|
|
288
|
+
if (kind === SyntaxKind.SlashToken) return next() === SyntaxKind.GreaterThanToken;
|
|
289
|
+
if (kind === SyntaxKind.OpenBraceToken) {
|
|
290
|
+
if (!container()) return false;
|
|
291
|
+
kind = next();
|
|
292
|
+
continue;
|
|
293
|
+
}
|
|
294
|
+
if (!tokenIsIdentifierOrKeyword(kind)) return false;
|
|
295
|
+
const attribute = tagName();
|
|
296
|
+
if (attribute.name === "") return false;
|
|
297
|
+
kind = attribute.kind;
|
|
298
|
+
if (kind !== SyntaxKind.EqualsToken) continue;
|
|
299
|
+
const value = scanner.scanJsxAttributeValue();
|
|
300
|
+
lastEnd = scanner.getTokenEnd();
|
|
301
|
+
if (value === SyntaxKind.StringLiteral) {
|
|
302
|
+
if (scanner.isUnterminated()) return false;
|
|
303
|
+
} else if (value === SyntaxKind.OpenBraceToken) {
|
|
304
|
+
if (!container()) return false;
|
|
305
|
+
} else if (value === SyntaxKind.LessThanToken) {
|
|
306
|
+
if (!element()) return false;
|
|
307
|
+
} else return false;
|
|
308
|
+
kind = next();
|
|
159
309
|
}
|
|
160
310
|
}
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
311
|
+
// Children, up to the closing tag.
|
|
312
|
+
for (;;) {
|
|
313
|
+
const child = scanner.scanJsxToken();
|
|
314
|
+
if (child === SyntaxKind.EndOfFile) return false;
|
|
315
|
+
lastEnd = scanner.getTokenEnd();
|
|
316
|
+
if (child === SyntaxKind.OpenBraceToken) {
|
|
317
|
+
if (!container()) return false;
|
|
318
|
+
} else if (child === SyntaxKind.LessThanToken) {
|
|
319
|
+
if (!element()) return false;
|
|
320
|
+
} else if (child === SyntaxKind.LessThanSlashToken) {
|
|
321
|
+
let closing = next();
|
|
322
|
+
let closingName = "";
|
|
323
|
+
if (closing !== SyntaxKind.GreaterThanToken) {
|
|
324
|
+
if (!tokenIsIdentifierOrKeyword(closing)) return false;
|
|
325
|
+
({ name: closingName, kind: closing } = tagName());
|
|
326
|
+
}
|
|
327
|
+
return closing === SyntaxKind.GreaterThanToken && closingName === name;
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
};
|
|
331
|
+
code(false);
|
|
168
332
|
return { tokens, problems };
|
|
169
333
|
}
|
|
170
334
|
|