eslint-plugin-zod
Version:
Zod linting rules for ESLint.
44 lines (43 loc) • 1.3 kB
JavaScript
;
const create = (context) => {
return {
CallExpression(node) {
var _a;
if (((_a = node.callee.object) === null || _a === void 0 ? void 0 : _a.name) !== 'z') {
return;
}
if (node.callee.property.name !== 'union') {
return;
}
const members = node.arguments[0].elements;
const allMembersAreLiterals = members.every((member) => {
return member.type === 'CallExpression' && member.callee.object.name === 'z' && member.callee.property.name === 'literal';
});
if (!allMembersAreLiterals) {
return;
}
context.report({
message: 'Use z.enum().',
node,
});
},
};
};
module.exports = {
create,
meta: {
docs: {
description: 'Prefers `z.enum` over a union of literals.',
url: 'https://github.com/gajus/eslint-plugin-zod#eslint-plugin-zod-rules-prefer-enum',
},
fixable: 'code',
schema: [
{
additionalProperties: false,
properties: {},
type: 'object',
},
],
type: 'problem',
},
};