eslint-plugin-suitescript
Version:
ESLint plugin for NetSuite's SuiteScript v1/v2 API
48 lines (41 loc) • 1.21 kB
JavaScript
;
const moduleUtil = require('../util/modules');
module.exports = {
meta: {
type: 'problem',
messages: {
excessName: "Excess module name '{{ name }}'",
excessVar: "Excess module identifier '{{ var }}'",
},
},
create: (context) => ({
'CallExpression[callee.name=define]': (node) => {
const modules = moduleUtil.getModules(node);
const nameCount = modules.nameCount;
const varCount = modules.varCount;
if (nameCount === varCount) return;
const excessCount =
nameCount > varCount ? nameCount - varCount : varCount - nameCount;
const excessModules = modules.list.slice(-excessCount);
for (const excessModule of excessModules) {
if (nameCount > varCount) {
context.report({
node: excessModule.nodes.name,
messageId: 'excessName',
data: {
name: excessModule.name,
},
});
} else {
context.report({
node: excessModule.nodes.variable,
messageId: 'excessVar',
data: {
var: excessModule.variable,
},
});
}
}
},
}),
};