{ "expected_invalid_errors": [ { "kind": "missing_prop", "path": "$.children[0]", "prop": "min", "widget": "Slider" }, { "expected": "number", "got": "text", "kind": "wrong_prop_type", "path": "$.children[0]", "prop": "max", "widget": "Slider" }, { "child": "Ghost", "kind": "disallowed_child", "parent": "Slider", "path": "$.children[0].children[0]" }, { "kind": "unknown_widget", "name": "Ghost", "path": "$.children[0].children[0]" } ], "expected_valid_errors": [], "invalid_surface": { "children": [ { "children": [ { "name": "Ghost", "props": {} } ], "name": "Slider", "props": { "max": { "type": "text", "value": "ten" }, "on_change": { "type": "action", "value": { "id": "apply", "payload": null } } } } ], "name": "Form", "props": {} }, "note": "C1 — validate(tree, registry) reproduces the EXHAUSTIVE error list.", "registry": { "widgets": { "Form": { "allow_extra_props": false, "children": { "kind": "any" }, "description": "a vertical form", "name": "Form", "props": {} }, "Image": { "allow_extra_props": false, "children": { "kind": "none" }, "description": "an image output", "name": "Image", "props": {} }, "Slider": { "allow_extra_props": false, "children": { "kind": "none" }, "description": "a numeric slider", "name": "Slider", "props": { "max": { "required": true, "ty": "number" }, "min": { "required": true, "ty": "number" }, "on_change": { "required": true, "ty": "action" } } } } }, "valid_surface": { "children": [ { "name": "Slider", "props": { "max": { "type": "number", "value": 10.0 }, "min": { "type": "number", "value": 1.0 }, "on_change": { "type": "action", "value": { "id": "apply", "payload": null } } } } ], "name": "Form", "props": {} } }