feat: add typed WRN declarations

This commit is contained in:
2026-07-19 18:44:27 +05:30
parent 0d3ec79ee4
commit 94ae40d8bd
81 changed files with 942 additions and 241 deletions
@@ -80,3 +80,31 @@ test("recognizes literal attribute value types", () => {
assert.equal(attributeValueType("{[1, 2]}"), "array");
assert.equal(attributeValueType("plain"), "string");
});
test("extracts explicit prop types and resolves typed prop/state expressions", () => {
const input = `component DatePicker {
props {
required: boolean = false
value: string
}
state count: number = 0
view { <DateInput required="{required}" value="{value}" count="{count}" /> }
}`;
const target = parseComponentMetadata(`component DateInput {
props {
required: boolean = false
value: string
count: number = 0
}
view { <input/> }
}`);
const own = parseComponentMetadata(input);
assert.deepEqual(
own.props.map(({ name, type, required }) => ({ name, type, required })),
[
{ name: "required", type: "boolean", required: false },
{ name: "value", type: "string", required: true },
],
);
assert.deepEqual(validateComponentTags(input, new Map([["DateInput", target]])), []);
});