mancha 0.16.3 → 0.16.5
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 +5 -0
- package/dist/type_checker.js +266 -48
- package/dist/type_checker.js.map +1 -1
- package/docs/quickstart.md +7 -1
- package/package.json +1 -2
package/README.md
CHANGED
|
@@ -167,6 +167,11 @@ element tag or attributes match a specific criteria. Here's the list of attribut
|
|
|
167
167
|
<span>{{ user.name.toUpperCase() }}</span>
|
|
168
168
|
</div>
|
|
169
169
|
```
|
|
170
|
+
The value of `:types` is parsed with `jexpr` during static analysis. It must evaluate to a plain
|
|
171
|
+
object whose values are strings containing TypeScript snippets. When you need quotes inside a type,
|
|
172
|
+
either escape them in a double-quoted attribute (e.g.
|
|
173
|
+
`<div :types="{\"status\": \"'active' | 'inactive'\"}">`) or, preferably, move the definition into a
|
|
174
|
+
TypeScript module and reference it via `@import`.
|
|
170
175
|
See the [Type Checking section in the quickstart guide](./docs/quickstart.md#type-checking-experimental) for more details.
|
|
171
176
|
|
|
172
177
|
## Evaluation
|
package/dist/type_checker.js
CHANGED
|
@@ -2,6 +2,7 @@ import * as ts from "typescript";
|
|
|
2
2
|
import * as fs from "fs/promises";
|
|
3
3
|
import * as path from "path";
|
|
4
4
|
import { JSDOM } from "jsdom";
|
|
5
|
+
import * as jexpr from "jexpr";
|
|
5
6
|
import { getAttributeOrDataset } from "./dome.js";
|
|
6
7
|
async function getDiagnostics(content, options) {
|
|
7
8
|
// Create temp file in the same directory as the HTML file (or cwd if no filePath)
|
|
@@ -31,6 +32,14 @@ async function getDiagnostics(content, options) {
|
|
|
31
32
|
// Filter out irrelevant diagnostics (keep semantic errors 2000-2999 and strict mode errors 18000-18999)
|
|
32
33
|
return allDiagnostics.filter((d) => (d.code >= 2000 && d.code < 3000) || (d.code >= 18000 && d.code < 19000));
|
|
33
34
|
}
|
|
35
|
+
const AST_FACTORY = new jexpr.EvalAstFactory();
|
|
36
|
+
function parseWithJexpr(expression) {
|
|
37
|
+
const ast = jexpr.parse(expression, AST_FACTORY);
|
|
38
|
+
if (!ast) {
|
|
39
|
+
throw new Error(`Failed to parse expression "${expression}" with jexpr`);
|
|
40
|
+
}
|
|
41
|
+
return ast;
|
|
42
|
+
}
|
|
34
43
|
// Replace @import:MODULE_PATH:TYPE_NAME with import("MODULE_PATH").TYPE_NAME
|
|
35
44
|
// and resolve relative paths to absolute paths
|
|
36
45
|
function replaceImportSyntax(typeString, baseDir) {
|
|
@@ -43,12 +52,39 @@ function replaceImportSyntax(typeString, baseDir) {
|
|
|
43
52
|
return `import("${modulePath}").${typeName}`;
|
|
44
53
|
});
|
|
45
54
|
}
|
|
55
|
+
function isPlainObject(value) {
|
|
56
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
57
|
+
}
|
|
58
|
+
function ensurePlainObject(value, context) {
|
|
59
|
+
if (!isPlainObject(value)) {
|
|
60
|
+
throw new Error(`${context} must evaluate to an object`);
|
|
61
|
+
}
|
|
62
|
+
return value;
|
|
63
|
+
}
|
|
64
|
+
function descriptorToTypeScript(descriptor, baseDir, key) {
|
|
65
|
+
if (typeof descriptor !== "string") {
|
|
66
|
+
const description = typeof descriptor === "object" && descriptor !== null
|
|
67
|
+
? JSON.stringify(descriptor)
|
|
68
|
+
: String(descriptor);
|
|
69
|
+
throw new Error(`Type for "${key}" must be a string, received ${description}`);
|
|
70
|
+
}
|
|
71
|
+
return replaceImportSyntax(descriptor, baseDir);
|
|
72
|
+
}
|
|
73
|
+
function parseTypesAttribute(raw, baseDir) {
|
|
74
|
+
const ast = parseWithJexpr(raw);
|
|
75
|
+
const value = ast.evaluate({});
|
|
76
|
+
const typeObject = ensurePlainObject(value, ":types expression");
|
|
77
|
+
const result = new Map();
|
|
78
|
+
for (const [name, descriptor] of Object.entries(typeObject)) {
|
|
79
|
+
result.set(name, descriptorToTypeScript(descriptor, baseDir, name));
|
|
80
|
+
}
|
|
81
|
+
return result;
|
|
82
|
+
}
|
|
46
83
|
function buildTypeScriptSource(types, scope, baseDir) {
|
|
47
|
-
const namespace = `M
|
|
84
|
+
const namespace = `M`; // Use a constant namespace
|
|
48
85
|
// Add reference directive for DOM lib
|
|
49
86
|
const libDirectives = `/// <reference lib="dom" />\n/// <reference lib="es2021" />`;
|
|
50
87
|
// Default mancha-specific globals available in all templates
|
|
51
|
-
// (Standard browser globals like document, window, prompt come from DOM lib)
|
|
52
88
|
const defaultGlobals = [
|
|
53
89
|
"declare const $elem: Element;",
|
|
54
90
|
"declare const $event: Event;",
|
|
@@ -60,27 +96,7 @@ function buildTypeScriptSource(types, scope, baseDir) {
|
|
|
60
96
|
return `declare let ${key}: ${resolvedType};`;
|
|
61
97
|
})
|
|
62
98
|
.join("\n");
|
|
63
|
-
//
|
|
64
|
-
const buildChecks = (currentScope, indent = "") => {
|
|
65
|
-
let result = "";
|
|
66
|
-
// Add expressions in current scope
|
|
67
|
-
for (const expr of currentScope.expressions) {
|
|
68
|
-
result += `${indent}(${expr});\n`;
|
|
69
|
-
}
|
|
70
|
-
// Add for loops with their nested scopes
|
|
71
|
-
for (const forLoop of currentScope.forLoops) {
|
|
72
|
-
result += `${indent}for (const ${forLoop.itemName} of ${forLoop.itemsExpression}) {\n`;
|
|
73
|
-
result += buildChecks(forLoop.scope, indent + " ");
|
|
74
|
-
result += `${indent}}\n`;
|
|
75
|
-
}
|
|
76
|
-
return result;
|
|
77
|
-
};
|
|
78
|
-
const checks = buildChecks(scope);
|
|
79
|
-
// Global augmentations are necessary because jexpr (mancha's expression parser) doesn't support:
|
|
80
|
-
// - Type assertions (as HTMLDialogElement)
|
|
81
|
-
// - Optional chaining (?.)
|
|
82
|
-
// - Null checking (if statements)
|
|
83
|
-
// So we augment querySelector to return non-null with dialog methods
|
|
99
|
+
// Global augmentations
|
|
84
100
|
const globalAugmentations = [
|
|
85
101
|
"interface TemplateElement extends Element {",
|
|
86
102
|
" close(): void;",
|
|
@@ -97,7 +113,83 @@ function buildTypeScriptSource(types, scope, baseDir) {
|
|
|
97
113
|
" querySelector(selector: string): TemplateElement;",
|
|
98
114
|
"}",
|
|
99
115
|
].join("\n");
|
|
100
|
-
|
|
116
|
+
const prefix = `${libDirectives}\n${globalAugmentations}\nnamespace ${namespace} {\n${defaultGlobals}\n${declarations}\n`;
|
|
117
|
+
const suffix = `\n}`;
|
|
118
|
+
const expressionMap = new Map();
|
|
119
|
+
let currentOffset = prefix.length;
|
|
120
|
+
// Recursively build checks from scope
|
|
121
|
+
const buildChecks = (currentScope, indent = "") => {
|
|
122
|
+
let result = "";
|
|
123
|
+
// Add expressions in current scope
|
|
124
|
+
for (const entry of currentScope.expressions) {
|
|
125
|
+
const expressionPrefix = `${indent}(`;
|
|
126
|
+
const code = `${expressionPrefix}${entry.expression});\n`;
|
|
127
|
+
expressionMap.set(currentOffset + expressionPrefix.length, entry);
|
|
128
|
+
result += code;
|
|
129
|
+
currentOffset += code.length;
|
|
130
|
+
}
|
|
131
|
+
// Add for loops with their nested scopes
|
|
132
|
+
for (const forLoop of currentScope.forLoops) {
|
|
133
|
+
const expressionPrefix = `${indent}for (const ${forLoop.itemName} of (`;
|
|
134
|
+
const forLoopHeader = `${expressionPrefix}${forLoop.itemsExpression.expression})) {\n`;
|
|
135
|
+
expressionMap.set(currentOffset + expressionPrefix.length, forLoop.itemsExpression);
|
|
136
|
+
result += forLoopHeader;
|
|
137
|
+
currentOffset += forLoopHeader.length;
|
|
138
|
+
result += buildChecks(forLoop.scope, indent + " ");
|
|
139
|
+
const closingBrace = `${indent}}\n`;
|
|
140
|
+
result += closingBrace;
|
|
141
|
+
currentOffset += closingBrace.length;
|
|
142
|
+
}
|
|
143
|
+
return result;
|
|
144
|
+
};
|
|
145
|
+
const checks = buildChecks(scope);
|
|
146
|
+
const source = `${prefix}${checks}${suffix}`;
|
|
147
|
+
return { source, expressionMap };
|
|
148
|
+
}
|
|
149
|
+
function getAttributeValueRange(element, attributeName, attrValue, valueSubstring, dom, html, valueOffsetInAttrValue) {
|
|
150
|
+
const elementLocation = dom.nodeLocation(element);
|
|
151
|
+
if (!elementLocation)
|
|
152
|
+
return undefined;
|
|
153
|
+
const attrLocation = elementLocation?.attrs?.[attributeName];
|
|
154
|
+
if (!attrLocation)
|
|
155
|
+
return undefined;
|
|
156
|
+
const attrText = html.slice(attrLocation.startOffset, attrLocation.endOffset);
|
|
157
|
+
const equalsIndex = attrText.indexOf("=");
|
|
158
|
+
if (equalsIndex === -1) {
|
|
159
|
+
return { start: attrLocation.startOffset, length: attrLocation.endOffset - attrLocation.startOffset };
|
|
160
|
+
}
|
|
161
|
+
let cursor = equalsIndex + 1;
|
|
162
|
+
while (cursor < attrText.length && /\s/.test(attrText[cursor])) {
|
|
163
|
+
cursor++;
|
|
164
|
+
}
|
|
165
|
+
let baseOffset = cursor;
|
|
166
|
+
if (cursor < attrText.length && (attrText[cursor] === '"' || attrText[cursor] === "'")) {
|
|
167
|
+
baseOffset = cursor + 1;
|
|
168
|
+
}
|
|
169
|
+
let offsetWithinValue = valueOffsetInAttrValue;
|
|
170
|
+
if (offsetWithinValue == null || offsetWithinValue < 0) {
|
|
171
|
+
offsetWithinValue = attrValue.indexOf(valueSubstring);
|
|
172
|
+
if (offsetWithinValue < 0) {
|
|
173
|
+
offsetWithinValue = attrValue.trimStart().indexOf(valueSubstring);
|
|
174
|
+
if (offsetWithinValue < 0) {
|
|
175
|
+
offsetWithinValue = 0;
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
offsetWithinValue += attrValue.length - attrValue.trimStart().length;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
const start = attrLocation.startOffset + baseOffset + offsetWithinValue;
|
|
183
|
+
return { start, length: valueSubstring.length };
|
|
184
|
+
}
|
|
185
|
+
function getTextExpressionRange(textNode, match, trimmedExpression, dom) {
|
|
186
|
+
const location = dom.nodeLocation(textNode);
|
|
187
|
+
if (!location)
|
|
188
|
+
return undefined;
|
|
189
|
+
const rawExpression = match[1] ?? "";
|
|
190
|
+
const leadingWhitespace = rawExpression.length - rawExpression.trimStart().length;
|
|
191
|
+
const start = location.startOffset + (match.index ?? 0) + 2 + leadingWhitespace;
|
|
192
|
+
return { start, length: trimmedExpression.length };
|
|
101
193
|
}
|
|
102
194
|
// Helper to check if an element is nested within another :types element
|
|
103
195
|
function hasTypesAncestor(element) {
|
|
@@ -173,7 +265,7 @@ function getForLoopContext(element, typesMap) {
|
|
|
173
265
|
return forLoopTypes;
|
|
174
266
|
}
|
|
175
267
|
// Recursively process a :types element and its nested :types descendants
|
|
176
|
-
async function processTypesElement(element, parentTypes, options, processedElements) {
|
|
268
|
+
async function processTypesElement(element, parentTypes, options, processedElements, dom, html, htmlSourceFile) {
|
|
177
269
|
// Skip if already processed
|
|
178
270
|
if (processedElements.has(element)) {
|
|
179
271
|
return [];
|
|
@@ -183,18 +275,51 @@ async function processTypesElement(element, parentTypes, options, processedEleme
|
|
|
183
275
|
const typesAttr = getAttributeOrDataset(element, "types", ":");
|
|
184
276
|
if (!typesAttr)
|
|
185
277
|
return allDiagnostics;
|
|
278
|
+
const baseDir = options.filePath ? path.dirname(path.resolve(options.filePath)) : undefined;
|
|
279
|
+
const typesAttrName = element.hasAttribute(":types") ? ":types" : "data-types";
|
|
186
280
|
try {
|
|
187
281
|
// Parse types for this element
|
|
188
|
-
const elementTypes =
|
|
282
|
+
const elementTypes = parseTypesAttribute(typesAttr, baseDir);
|
|
189
283
|
// Merge with parent types (element types override parent types)
|
|
190
284
|
const mergedTypes = new Map([...parentTypes, ...elementTypes]);
|
|
191
285
|
// Get expressions for this element (excluding nested :types descendants)
|
|
192
|
-
const
|
|
286
|
+
const scope = getExpressionsExcludingNestedTypes(element, dom, html);
|
|
287
|
+
const jexprDiagnostics = validateExpressionsWithJexpr(scope, htmlSourceFile);
|
|
288
|
+
allDiagnostics.push(...jexprDiagnostics);
|
|
193
289
|
// Type check expressions in this scope
|
|
194
|
-
const
|
|
195
|
-
const
|
|
196
|
-
|
|
197
|
-
|
|
290
|
+
const { source, expressionMap } = buildTypeScriptSource(mergedTypes, scope, baseDir);
|
|
291
|
+
const rawDiagnostics = await getDiagnostics(source, options);
|
|
292
|
+
// Remap diagnostics to original source locations
|
|
293
|
+
for (const diag of rawDiagnostics) {
|
|
294
|
+
if (diag.start === undefined) {
|
|
295
|
+
allDiagnostics.push(diag);
|
|
296
|
+
continue;
|
|
297
|
+
}
|
|
298
|
+
let bestMatch;
|
|
299
|
+
for (const [offset, entry] of expressionMap.entries()) {
|
|
300
|
+
if (offset <= diag.start) {
|
|
301
|
+
if (!bestMatch || offset > bestMatch.offset) {
|
|
302
|
+
bestMatch = { offset, entry };
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
if (bestMatch && bestMatch.entry.range) {
|
|
307
|
+
const { range } = bestMatch.entry; // HTML range of the full expression
|
|
308
|
+
const tsOffsetInGeneratedCode = diag.start - bestMatch.offset; // Offset of the error within the generated `(expression);`
|
|
309
|
+
// Adjust the HTML start and length based on the offset within the generated code
|
|
310
|
+
const newStart = range.start + tsOffsetInGeneratedCode;
|
|
311
|
+
const newLength = diag.length; // The length from TS diagnostic is usually correct for the error part
|
|
312
|
+
allDiagnostics.push({
|
|
313
|
+
...diag,
|
|
314
|
+
file: htmlSourceFile,
|
|
315
|
+
start: newStart,
|
|
316
|
+
length: newLength,
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
else {
|
|
320
|
+
allDiagnostics.push(diag);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
198
323
|
// Find and process nested :types elements
|
|
199
324
|
const nestedTypesElements = findDirectNestedTypesElements(element);
|
|
200
325
|
for (const nestedElement of nestedTypesElements) {
|
|
@@ -202,12 +327,23 @@ async function processTypesElement(element, parentTypes, options, processedEleme
|
|
|
202
327
|
const forLoopContext = getForLoopContext(nestedElement, mergedTypes);
|
|
203
328
|
// Merge for-loop variables with parent types (for-loop variables take precedence)
|
|
204
329
|
const nestedParentTypes = new Map([...mergedTypes, ...forLoopContext]);
|
|
205
|
-
const nestedDiagnostics = await processTypesElement(nestedElement, nestedParentTypes, options, processedElements);
|
|
330
|
+
const nestedDiagnostics = await processTypesElement(nestedElement, nestedParentTypes, options, processedElements, dom, html, htmlSourceFile);
|
|
206
331
|
allDiagnostics.push(...nestedDiagnostics);
|
|
207
332
|
}
|
|
208
333
|
}
|
|
209
|
-
catch (
|
|
210
|
-
|
|
334
|
+
catch (error) {
|
|
335
|
+
const tagName = element.tagName?.toLowerCase() ?? "element";
|
|
336
|
+
const message = error instanceof Error ? error.message : typeof error === "string" ? error : String(error);
|
|
337
|
+
const attrRange = getAttributeValueRange(element, typesAttrName, typesAttr, typesAttr, dom, html, 0);
|
|
338
|
+
allDiagnostics.push({
|
|
339
|
+
file: attrRange ? htmlSourceFile : undefined,
|
|
340
|
+
start: attrRange?.start,
|
|
341
|
+
length: attrRange?.length,
|
|
342
|
+
category: ts.DiagnosticCategory.Error,
|
|
343
|
+
code: 91001,
|
|
344
|
+
source: "mancha-type-checker",
|
|
345
|
+
messageText: `Failed to evaluate :types on <${tagName}>: ${message}`,
|
|
346
|
+
});
|
|
211
347
|
}
|
|
212
348
|
return allDiagnostics;
|
|
213
349
|
}
|
|
@@ -239,7 +375,7 @@ function findDirectNestedTypesElements(element) {
|
|
|
239
375
|
return result;
|
|
240
376
|
}
|
|
241
377
|
// Get expressions excluding those in nested :types elements
|
|
242
|
-
function getExpressionsExcludingNestedTypes(root) {
|
|
378
|
+
function getExpressionsExcludingNestedTypes(root, dom, html) {
|
|
243
379
|
const scope = { expressions: [], forLoops: [] };
|
|
244
380
|
const processedForElements = new Set();
|
|
245
381
|
const processElement = (element, currentScope) => {
|
|
@@ -256,10 +392,28 @@ function getExpressionsExcludingNestedTypes(root) {
|
|
|
256
392
|
const parts = forAttr.split(" in ");
|
|
257
393
|
const itemName = parts[0].trim();
|
|
258
394
|
const itemsExpression = parts[1].trim();
|
|
259
|
-
|
|
395
|
+
const attributeName = element.hasAttribute(":for")
|
|
396
|
+
? ":for"
|
|
397
|
+
: element.hasAttribute("data-for")
|
|
398
|
+
? "data-for"
|
|
399
|
+
: ":for";
|
|
400
|
+
const attr = element.getAttributeNode(attributeName);
|
|
401
|
+
const attrValue = attr?.value ?? "";
|
|
402
|
+
const valueIndex = attrValue.lastIndexOf(itemsExpression);
|
|
403
|
+
const itemsExpressionEntry = {
|
|
404
|
+
expression: itemsExpression,
|
|
405
|
+
source: {
|
|
406
|
+
kind: "attribute",
|
|
407
|
+
element,
|
|
408
|
+
attributeName,
|
|
409
|
+
attributeKind: "for-items",
|
|
410
|
+
},
|
|
411
|
+
range: getAttributeValueRange(element, attributeName, attrValue, itemsExpression, dom, html, valueIndex),
|
|
412
|
+
};
|
|
413
|
+
currentScope.expressions.push(itemsExpressionEntry);
|
|
260
414
|
const forScope = { expressions: [], forLoops: [] };
|
|
261
415
|
processDescendants(element, forScope);
|
|
262
|
-
currentScope.forLoops.push({ itemName, itemsExpression, scope: forScope });
|
|
416
|
+
currentScope.forLoops.push({ itemName, itemsExpression: itemsExpressionEntry, scope: forScope });
|
|
263
417
|
}
|
|
264
418
|
else {
|
|
265
419
|
// Process attributes
|
|
@@ -267,7 +421,16 @@ function getExpressionsExcludingNestedTypes(root) {
|
|
|
267
421
|
if ((attr.name.startsWith(":") || attr.name.startsWith("data-")) &&
|
|
268
422
|
attr.name !== ":types" &&
|
|
269
423
|
attr.name !== "data-types") {
|
|
270
|
-
currentScope.expressions.push(
|
|
424
|
+
currentScope.expressions.push({
|
|
425
|
+
expression: attr.value,
|
|
426
|
+
source: {
|
|
427
|
+
kind: "attribute",
|
|
428
|
+
element,
|
|
429
|
+
attributeName: attr.name,
|
|
430
|
+
attributeKind: "default",
|
|
431
|
+
},
|
|
432
|
+
range: getAttributeValueRange(element, attr.name, attr.value, attr.value, dom, html, 0),
|
|
433
|
+
});
|
|
271
434
|
}
|
|
272
435
|
}
|
|
273
436
|
// Process children
|
|
@@ -296,23 +459,78 @@ function getExpressionsExcludingNestedTypes(root) {
|
|
|
296
459
|
if (text) {
|
|
297
460
|
const matches = text.matchAll(/{{(.*?)}}/g);
|
|
298
461
|
for (const match of matches) {
|
|
299
|
-
|
|
462
|
+
const trimmedExpression = match[1]?.trim() ?? "";
|
|
463
|
+
if (!trimmedExpression)
|
|
464
|
+
continue;
|
|
465
|
+
currentScope.expressions.push({
|
|
466
|
+
expression: trimmedExpression,
|
|
467
|
+
source: { kind: "text", node: textNode },
|
|
468
|
+
range: getTextExpressionRange(textNode, match, trimmedExpression, dom),
|
|
469
|
+
});
|
|
300
470
|
}
|
|
301
471
|
}
|
|
302
472
|
};
|
|
303
|
-
// Start processing from root
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
473
|
+
// Start processing from root
|
|
474
|
+
processElement(root, scope);
|
|
475
|
+
return scope;
|
|
476
|
+
}
|
|
477
|
+
function collectExpressions(scope, result = []) {
|
|
478
|
+
for (const entry of scope.expressions) {
|
|
479
|
+
result.push(entry);
|
|
480
|
+
}
|
|
481
|
+
for (const loop of scope.forLoops) {
|
|
482
|
+
result.push(loop.itemsExpression);
|
|
483
|
+
collectExpressions(loop.scope, result);
|
|
484
|
+
}
|
|
485
|
+
return result;
|
|
486
|
+
}
|
|
487
|
+
function describeExpressionSource(source) {
|
|
488
|
+
if (source.kind === "attribute") {
|
|
489
|
+
const tagName = source.element.tagName?.toLowerCase() ?? "element";
|
|
490
|
+
if (source.attributeKind === "for-items") {
|
|
491
|
+
return `:for items expression on <${tagName}>`;
|
|
492
|
+
}
|
|
493
|
+
return `attribute "${source.attributeName}" on <${tagName}>`;
|
|
494
|
+
}
|
|
495
|
+
const parentTag = source.node.parentElement?.tagName?.toLowerCase();
|
|
496
|
+
if (parentTag) {
|
|
497
|
+
return `text interpolation inside <${parentTag}>`;
|
|
498
|
+
}
|
|
499
|
+
return "text interpolation";
|
|
500
|
+
}
|
|
501
|
+
function createJexprDiagnostic(entry, error, htmlSourceFile) {
|
|
502
|
+
const expressionPreview = entry.expression.trim() || entry.expression;
|
|
503
|
+
const errorMessage = error instanceof Error ? error.message : typeof error === "string" ? error : String(error);
|
|
504
|
+
const message = `Unsupported expression for jexpr (${expressionPreview}) in ${describeExpressionSource(entry.source)}: ${errorMessage}`;
|
|
505
|
+
return {
|
|
506
|
+
file: entry.range ? htmlSourceFile : undefined,
|
|
507
|
+
start: entry.range?.start,
|
|
508
|
+
length: entry.range?.length,
|
|
509
|
+
category: ts.DiagnosticCategory.Error,
|
|
510
|
+
code: 91002,
|
|
511
|
+
source: "mancha-type-checker",
|
|
512
|
+
messageText: message,
|
|
513
|
+
};
|
|
514
|
+
}
|
|
515
|
+
function validateExpressionsWithJexpr(scope, htmlSourceFile) {
|
|
516
|
+
const diagnostics = [];
|
|
517
|
+
const expressions = collectExpressions(scope);
|
|
518
|
+
for (const entry of expressions) {
|
|
519
|
+
const candidate = entry.expression.trim();
|
|
520
|
+
if (!candidate)
|
|
521
|
+
continue;
|
|
522
|
+
try {
|
|
523
|
+
parseWithJexpr(candidate);
|
|
307
524
|
}
|
|
308
|
-
|
|
309
|
-
|
|
525
|
+
catch (error) {
|
|
526
|
+
diagnostics.push(createJexprDiagnostic(entry, error, htmlSourceFile));
|
|
310
527
|
}
|
|
311
528
|
}
|
|
312
|
-
return
|
|
529
|
+
return diagnostics;
|
|
313
530
|
}
|
|
314
531
|
export async function typeCheck(html, options) {
|
|
315
|
-
const dom = new JSDOM(html);
|
|
532
|
+
const dom = new JSDOM(html, { includeNodeLocations: true });
|
|
533
|
+
const htmlSourceFile = ts.createSourceFile(options.filePath ?? "template.html", html, ts.ScriptTarget.Latest, false, ts.ScriptKind.Unknown);
|
|
316
534
|
const allTypeNodes = dom.window.document.querySelectorAll("[\\:types], [data-types]");
|
|
317
535
|
const allDiagnostics = [];
|
|
318
536
|
const processedElements = new Set();
|
|
@@ -320,7 +538,7 @@ export async function typeCheck(html, options) {
|
|
|
320
538
|
const topLevelTypeNodes = Array.from(allTypeNodes).filter((node) => !hasTypesAncestor(node));
|
|
321
539
|
// Process each top-level :types element and its nested descendants
|
|
322
540
|
for (const node of topLevelTypeNodes) {
|
|
323
|
-
const diagnostics = await processTypesElement(node, new Map(), options, processedElements);
|
|
541
|
+
const diagnostics = await processTypesElement(node, new Map(), options, processedElements, dom, html, htmlSourceFile);
|
|
324
542
|
allDiagnostics.push(...diagnostics);
|
|
325
543
|
}
|
|
326
544
|
return allDiagnostics;
|
package/dist/type_checker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type_checker.js","sourceRoot":"","sources":["../src/type_checker.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"type_checker.js","sourceRoot":"","sources":["../src/type_checker.ts"],"names":[],"mappings":"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"}
|
package/docs/quickstart.md
CHANGED
|
@@ -301,6 +301,13 @@ The type checker will validate that:
|
|
|
301
301
|
- `age.toFixed(0)` is valid (number has toFixed method)
|
|
302
302
|
- Using `name.toFixed()` would be an error (string doesn't have toFixed)
|
|
303
303
|
|
|
304
|
+
The `:types` payload is parsed with `jexpr`, so it must evaluate to a plain object whose **values are
|
|
305
|
+
strings** containing TypeScript snippets. If the type checker encounters a non-string value it will
|
|
306
|
+
emit an error that points at the offending key. When you need literal quotes inside a type, escape
|
|
307
|
+
them in a double-quoted attribute (for example,
|
|
308
|
+
`<div :types="{\"status\": \"'active' | 'inactive'\"}">`) or pull the definition into a TypeScript
|
|
309
|
+
module and reference it via `@import`.
|
|
310
|
+
|
|
304
311
|
### Running the Type Checker
|
|
305
312
|
|
|
306
313
|
```bash
|
|
@@ -575,4 +582,3 @@ Imports are inherited by nested scopes:
|
|
|
575
582
|
</div>
|
|
576
583
|
</div>
|
|
577
584
|
```
|
|
578
|
-
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mancha",
|
|
3
|
-
"version": "0.16.
|
|
3
|
+
"version": "0.16.5",
|
|
4
4
|
"description": "Javscript HTML rendering engine",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -9,7 +9,6 @@
|
|
|
9
9
|
"scripts": {
|
|
10
10
|
"clean": "rm -rf dist/",
|
|
11
11
|
"build": "gulp build",
|
|
12
|
-
"prepare": "npm run build",
|
|
13
12
|
"pretest": "npm run build",
|
|
14
13
|
"test:node": "mocha dist/*.test.js",
|
|
15
14
|
"test:browser": "web-test-runner dist/*browser.test.js --node-resolve --compatibility all --playwright --browsers chromium --no-sandbox",
|