| "use strict"; |
| |
| var _utils = require("./utils"); |
| |
| const defineType = (0, _utils.defineAliasedType)("JSX"); |
| defineType("JSXAttribute", { |
| visitor: ["name", "value"], |
| aliases: ["Immutable"], |
| fields: { |
| name: { |
| validate: (0, _utils.assertNodeType)("JSXIdentifier", "JSXNamespacedName") |
| }, |
| value: { |
| optional: true, |
| validate: (0, _utils.assertNodeType)("JSXElement", "JSXFragment", "StringLiteral", "JSXExpressionContainer") |
| } |
| } |
| }); |
| defineType("JSXClosingElement", { |
| visitor: ["name"], |
| aliases: ["Immutable"], |
| fields: { |
| name: { |
| validate: (0, _utils.assertNodeType)("JSXIdentifier", "JSXMemberExpression", "JSXNamespacedName") |
| } |
| } |
| }); |
| defineType("JSXElement", { |
| builder: ["openingElement", "closingElement", "children", "selfClosing"], |
| visitor: ["openingElement", "children", "closingElement"], |
| aliases: ["Immutable", "Expression"], |
| fields: { |
| openingElement: { |
| validate: (0, _utils.assertNodeType)("JSXOpeningElement") |
| }, |
| closingElement: { |
| optional: true, |
| validate: (0, _utils.assertNodeType)("JSXClosingElement") |
| }, |
| children: { |
| validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("JSXText", "JSXExpressionContainer", "JSXSpreadChild", "JSXElement", "JSXFragment"))) |
| }, |
| selfClosing: { |
| validate: (0, _utils.assertValueType)("boolean"), |
| optional: true |
| } |
| } |
| }); |
| defineType("JSXEmptyExpression", {}); |
| defineType("JSXExpressionContainer", { |
| visitor: ["expression"], |
| aliases: ["Immutable"], |
| fields: { |
| expression: { |
| validate: (0, _utils.assertNodeType)("Expression", "JSXEmptyExpression") |
| } |
| } |
| }); |
| defineType("JSXSpreadChild", { |
| visitor: ["expression"], |
| aliases: ["Immutable"], |
| fields: { |
| expression: { |
| validate: (0, _utils.assertNodeType)("Expression") |
| } |
| } |
| }); |
| defineType("JSXIdentifier", { |
| builder: ["name"], |
| fields: { |
| name: { |
| validate: (0, _utils.assertValueType)("string") |
| } |
| } |
| }); |
| defineType("JSXMemberExpression", { |
| visitor: ["object", "property"], |
| fields: { |
| object: { |
| validate: (0, _utils.assertNodeType)("JSXMemberExpression", "JSXIdentifier") |
| }, |
| property: { |
| validate: (0, _utils.assertNodeType)("JSXIdentifier") |
| } |
| } |
| }); |
| defineType("JSXNamespacedName", { |
| visitor: ["namespace", "name"], |
| fields: { |
| namespace: { |
| validate: (0, _utils.assertNodeType)("JSXIdentifier") |
| }, |
| name: { |
| validate: (0, _utils.assertNodeType)("JSXIdentifier") |
| } |
| } |
| }); |
| defineType("JSXOpeningElement", { |
| builder: ["name", "attributes", "selfClosing"], |
| visitor: ["name", "attributes"], |
| aliases: ["Immutable"], |
| fields: { |
| name: { |
| validate: (0, _utils.assertNodeType)("JSXIdentifier", "JSXMemberExpression", "JSXNamespacedName") |
| }, |
| selfClosing: { |
| default: false |
| }, |
| attributes: { |
| validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("JSXAttribute", "JSXSpreadAttribute"))) |
| }, |
| typeParameters: { |
| validate: (0, _utils.assertNodeType)("TypeParameterInstantiation", "TSTypeParameterInstantiation"), |
| optional: true |
| } |
| } |
| }); |
| defineType("JSXSpreadAttribute", { |
| visitor: ["argument"], |
| fields: { |
| argument: { |
| validate: (0, _utils.assertNodeType)("Expression") |
| } |
| } |
| }); |
| defineType("JSXText", { |
| aliases: ["Immutable"], |
| builder: ["value"], |
| fields: { |
| value: { |
| validate: (0, _utils.assertValueType)("string") |
| } |
| } |
| }); |
| defineType("JSXFragment", { |
| builder: ["openingFragment", "closingFragment", "children"], |
| visitor: ["openingFragment", "children", "closingFragment"], |
| aliases: ["Immutable", "Expression"], |
| fields: { |
| openingFragment: { |
| validate: (0, _utils.assertNodeType)("JSXOpeningFragment") |
| }, |
| closingFragment: { |
| validate: (0, _utils.assertNodeType)("JSXClosingFragment") |
| }, |
| children: { |
| validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("JSXText", "JSXExpressionContainer", "JSXSpreadChild", "JSXElement", "JSXFragment"))) |
| } |
| } |
| }); |
| defineType("JSXOpeningFragment", { |
| aliases: ["Immutable"] |
| }); |
| defineType("JSXClosingFragment", { |
| aliases: ["Immutable"] |
| }); |