Merge pull request #3099 from hzoo/validate-jsx
add more validation for jsx nodes
This commit is contained in:
@@ -288,7 +288,7 @@ export function valueToNode(value: any): Object {
|
||||
if (t.isValidIdentifier(key)) {
|
||||
nodeKey = t.identifier(key);
|
||||
} else {
|
||||
nodeKey = t.literal(key);
|
||||
nodeKey = t.stringLiteral(key);
|
||||
}
|
||||
props.push(t.objectProperty(nodeKey, t.valueToNode(value[key])));
|
||||
}
|
||||
|
||||
@@ -478,7 +478,7 @@ defineType("ObjectMethod", {
|
||||
},
|
||||
key: {
|
||||
validate(node, key, val) {
|
||||
let expectedTypes = node.computed ? ["Expression"] : ["Identifier", "Literal"];
|
||||
let expectedTypes = node.computed ? ["Expression"] : ["Identifier", "StringLiteral", "NumericLiteral"];
|
||||
assertNodeType(...expectedTypes)(node, key, val);
|
||||
}
|
||||
},
|
||||
@@ -510,7 +510,7 @@ defineType("ObjectProperty", {
|
||||
},
|
||||
key: {
|
||||
validate(node, key, val) {
|
||||
let expectedTypes = node.computed ? ["Expression"] : ["Identifier", "Literal"];
|
||||
let expectedTypes = node.computed ? ["Expression"] : ["Identifier", "StringLiteral", "NumericLiteral"];
|
||||
assertNodeType(...expectedTypes)(node, key, val);
|
||||
}
|
||||
},
|
||||
|
||||
@@ -254,7 +254,7 @@ defineType("ClassMethod", {
|
||||
},
|
||||
key: {
|
||||
validate(node, key, val) {
|
||||
let expectedTypes = node.computed ? ["Expression"] : ["Identifier", "Literal"];
|
||||
let expectedTypes = node.computed ? ["Expression"] : ["Identifier", "StringLiteral", "NumericLiteral"];
|
||||
assertNodeType(...expectedTypes)(node, key, val);
|
||||
}
|
||||
},
|
||||
|
||||
@@ -7,7 +7,7 @@ defineType("JSXAttribute", {
|
||||
aliases: ["JSX", "Immutable"],
|
||||
fields: {
|
||||
name: {
|
||||
validate: assertNodeType("JSXIdentifier", "JSXMemberExpression")
|
||||
validate: assertNodeType("JSXIdentifier", "JSXNamespacedName")
|
||||
},
|
||||
value: {
|
||||
optional: true,
|
||||
@@ -39,7 +39,10 @@ defineType("JSXElement", {
|
||||
validate: assertNodeType("JSXClosingElement")
|
||||
},
|
||||
children: {
|
||||
// todo
|
||||
validate: chain(
|
||||
assertValueType("array"),
|
||||
assertEach(assertNodeType("StringLiteral", "JSXExpressionContainer", "JSXElement"))
|
||||
)
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -73,7 +76,7 @@ defineType("JSXMemberExpression", {
|
||||
aliases: ["JSX", "Expression"],
|
||||
fields: {
|
||||
object: {
|
||||
validate: assertNodeType("JSXIdentifier")
|
||||
validate: assertNodeType("JSXMemberExpression", "JSXIdentifier")
|
||||
},
|
||||
property: {
|
||||
validate: assertNodeType("JSXIdentifier")
|
||||
|
||||
Reference in New Issue
Block a user