mirror of
https://github.com/Sevichecc/Urara-Blog.git
synced 2025-05-07 00:59:14 +08:00
157 lines
No EOL
4.2 KiB
Text
157 lines
No EOL
4.2 KiB
Text
"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: Object.assign({
|
|
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"]
|
|
}); |