eslint-plugin-react-form-fields
Version:
React Form Fields specific linting rules for ESLint
31 lines (30 loc) • 1.69 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.propertyToJSXAttribute = void 0;
const experimental_utils_1 = require("@typescript-eslint/experimental-utils");
const getBaseNode = ({ type, loc, range, }) => {
return {
type,
loc,
range,
};
};
const propertyToJSXAttribute = (node) => {
const { key, value } = node;
return Object.assign(Object.assign({}, getBaseNode(node)), { type: experimental_utils_1.AST_NODE_TYPES.JSXAttribute, name: Object.assign(Object.assign({}, getBaseNode(key)), { type: experimental_utils_1.AST_NODE_TYPES.JSXIdentifier, name: key.type === experimental_utils_1.AST_NODE_TYPES.Identifier
? key.name
: key.type === experimental_utils_1.AST_NODE_TYPES.Literal
? typeof key.value === 'string'
? key.value
: ''
: '' }), value: value.type === experimental_utils_1.AST_NODE_TYPES.AssignmentPattern ||
value.type === experimental_utils_1.AST_NODE_TYPES.ArrayPattern ||
value.type === experimental_utils_1.AST_NODE_TYPES.ObjectPattern ||
value.type === experimental_utils_1.AST_NODE_TYPES.Identifier ||
value.type === experimental_utils_1.AST_NODE_TYPES.TSEmptyBodyFunctionExpression
? null
: value.type === experimental_utils_1.AST_NODE_TYPES.Literal
? value
: Object.assign(Object.assign({}, getBaseNode(value)), { type: experimental_utils_1.AST_NODE_TYPES.JSXExpressionContainer, expression: value }) });
};
exports.propertyToJSXAttribute = propertyToJSXAttribute;