eslint-plugin-san
Version:
Official ESLint plugin for San
58 lines (48 loc) • 1.78 kB
JavaScript
/**
* @author jinjingxuan
*/
;
/* eslint-disable */
// ------------------------------------------------------------------------------
// Requirements
// ------------------------------------------------------------------------------
const utils = require('../utils');
const {isCamelCase} = require('../utils/casing');
// ------------------------------------------------------------------------------
// Rule Definition
// ------------------------------------------------------------------------------
/** @type {GroupName[]} */
const GROUP_NAMES = new Set(['dataTypes', 'initData', 'computed']);
module.exports = {
meta: {
type: 'problem',
docs: {
description: 'require datatypes is camelcase',
categories: ['essential'],
url: 'https://ecomfe.github.io/eslint-plugin-san/rules/data-name-casing.html'
},
fixable: null,
schema: []
},
/** @param {RuleContext} context */
create(context) {
// ----------------------------------------------------------------------
// Public
// ----------------------------------------------------------------------
return utils.executeOnSan(context, obj => {
const properties = utils.iterateProperties(obj, GROUP_NAMES);
for (const o of properties) {
if (!isCamelCase(o.name)) {
context.report({
node: o.node,
message: "{{group}} '{{name}}' must be camel case",
data: {
name: o.name,
group: o.groupName,
}
});
}
}
});
}
};