eslint-plugin-suitescript
Version:
ESLint plugin for NetSuite's SuiteScript v1/v2 API
63 lines (53 loc) • 1.35 kB
JavaScript
;
const moduleUtil = require('../util/modules');
const { moduleNames } = require('../util/modules');
module.exports = {
meta: {
type: 'suggestion',
messages: {
useCorrectName: "Identifier for {{ module }} should be '{{ id }}'",
},
schema: [
{
type: 'object',
properties: getSchemaProperties(),
additionalProperties: false,
},
],
},
create: (context) => ({
'CallExpression[callee.name=define]': (node) => {
if (!context.options[0]) return;
const config = context.options[0];
const modules = moduleUtil.getModules(node);
if (modules.varCount === 0) return;
for (const module of modules.list) {
const configVar = config[module.name];
if (configVar && configVar !== module.variable) {
context.report({
node: module.nodes.variable,
messageId: 'useCorrectName',
data: {
module: module.name,
id: configVar,
},
});
}
}
},
}),
};
/**
* Get schema properties from module names
* @returns {Object}
*/
function getSchemaProperties() {
let properties = moduleNames.map((name) => {
return {
[name]: {
type: 'string',
},
};
});
return Object.assign({}, ...properties);
}