“use strict”;

var _utils = _interopRequireWildcard(require(“./utils”));

function _getRequireWildcardCache() { if (typeof WeakMap !== “function”) return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }

function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; if (obj != null) { var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj = obj; } } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

(0, _utils.default)(“JSXAttribute”, {

visitor: ["name", "value"],
aliases: ["JSX", "Immutable"],
fields: {
  name: {
    validate: (0, _utils.assertNodeType)("JSXIdentifier", "JSXNamespacedName")
  },
  value: {
    optional: true,
    validate: (0, _utils.assertNodeType)("JSXElement", "JSXFragment", "StringLiteral", "JSXExpressionContainer")
  }
}

}); (0, _utils.default)(“JSXClosingElement”, {

visitor: ["name"],
aliases: ["JSX", "Immutable"],
fields: {
  name: {
    validate: (0, _utils.assertNodeType)("JSXIdentifier", "JSXMemberExpression", "JSXNamespacedName")
  }
}

}); (0, _utils.default)(“JSXElement”, {

builder: ["openingElement", "closingElement", "children", "selfClosing"],
visitor: ["openingElement", "children", "closingElement"],
aliases: ["JSX", "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")))
  }
}

}); (0, _utils.default)(“JSXEmptyExpression”, {

aliases: ["JSX"]

}); (0, _utils.default)(“JSXExpressionContainer”, {

visitor: ["expression"],
aliases: ["JSX", "Immutable"],
fields: {
  expression: {
    validate: (0, _utils.assertNodeType)("Expression", "JSXEmptyExpression")
  }
}

}); (0, _utils.default)(“JSXSpreadChild”, {

visitor: ["expression"],
aliases: ["JSX", "Immutable"],
fields: {
  expression: {
    validate: (0, _utils.assertNodeType)("Expression")
  }
}

}); (0, _utils.default)(“JSXIdentifier”, {

builder: ["name"],
aliases: ["JSX"],
fields: {
  name: {
    validate: (0, _utils.assertValueType)("string")
  }
}

}); (0, _utils.default)(“JSXMemberExpression”, {

visitor: ["object", "property"],
aliases: ["JSX"],
fields: {
  object: {
    validate: (0, _utils.assertNodeType)("JSXMemberExpression", "JSXIdentifier")
  },
  property: {
    validate: (0, _utils.assertNodeType)("JSXIdentifier")
  }
}

}); (0, _utils.default)(“JSXNamespacedName”, {

visitor: ["namespace", "name"],
aliases: ["JSX"],
fields: {
  namespace: {
    validate: (0, _utils.assertNodeType)("JSXIdentifier")
  },
  name: {
    validate: (0, _utils.assertNodeType)("JSXIdentifier")
  }
}

}); (0, _utils.default)(“JSXOpeningElement”, {

builder: ["name", "attributes", "selfClosing"],
visitor: ["name", "attributes"],
aliases: ["JSX", "Immutable"],
fields: {
  name: {
    validate: (0, _utils.assertNodeType)("JSXIdentifier", "JSXMemberExpression", "JSXNamespacedName")
  },
  selfClosing: {
    default: false,
    validate: (0, _utils.assertValueType)("boolean")
  },
  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
  }
}

}); (0, _utils.default)(“JSXSpreadAttribute”, {

visitor: ["argument"],
aliases: ["JSX"],
fields: {
  argument: {
    validate: (0, _utils.assertNodeType)("Expression")
  }
}

}); (0, _utils.default)(“JSXText”, {

aliases: ["JSX", "Immutable"],
builder: ["value"],
fields: {
  value: {
    validate: (0, _utils.assertValueType)("string")
  }
}

}); (0, _utils.default)(“JSXFragment”, {

builder: ["openingFragment", "closingFragment", "children"],
visitor: ["openingFragment", "children", "closingFragment"],
aliases: ["JSX", "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")))
  }
}

}); (0, _utils.default)(“JSXOpeningFragment”, {

aliases: ["JSX", "Immutable"]

}); (0, _utils.default)(“JSXClosingFragment”, {

aliases: ["JSX", "Immutable"]

});