UNPKG

isml-linter

Version:

ISML Linter is a tool for examining if your project's templates follow a specified set of rules defined by your dev team. The available rules can be roughly grouped into:

142 lines (124 loc) 5.42 kB
const path = require('path'); const appRoot = require('app-root-path'); const fs = require('fs'); const OS_EOL = require('os').EOL; const EOL = '\n'; // Internal processing line break; // Environments; const ENV_DEV = 'dev'; const ENV_TEST = 'test'; const ENV_PROD = 'prod'; // File names; const configFileNameList = ['ismllinter.config.js', '.ismllinter.json', '.ismllintrc.js']; const eslintConfigFileNameList = ['.eslintrc.json', '.eslintrc.js', '.eslintrc']; const clientAppDir = appRoot.toString(); const productionDir = path.join(clientAppDir, 'node_modules', 'isml-linter'); const linterModuleDir = fs.existsSync(productionDir) ? productionDir : clientAppDir; // Directories; const specDir = path.join(appRoot.toString(), 'spec'); const specTempDir = path.join(specDir, 'temp'); const specTemplateDir = path.join(specDir, 'templates', 'default'); const specFileParserTemplate = path.join(specTemplateDir, 'file_parser'); const specLinterTemplate = path.join(specTemplateDir, 'isml_linter'); const specSpecificDirLinterTemplate = path.join('spec', 'templates', 'default', 'isml_linter', 'specific_directory_to_be_linted'); const specUnparseableDirLinterTemplate = path.join('spec', 'templates', 'default', 'isml_linter', 'unparseable'); const specFilenameTemplate = path.join('spec', 'templates', 'default', 'isml_linter', 'filenames'); const specConfigTemplate = path.join('spec', 'templates', 'default', 'config'); const specIgnoreDirLinterTemplateDir = path.join(specLinterTemplate, 'ignore_config'); const specRuleTemplateDir = path.join(specTemplateDir, 'rules'); const specIsmlTreeTemplateDir = path.join(specTemplateDir, 'isml_tree'); const specIsmlNodeTemplateDir = path.join(specTemplateDir, 'isml_node'); const specPublicApiTemplatesDir = path.join(specTemplateDir, 'public_api'); const specLineNumberTemplateDir = path.join(specIsmlTreeTemplateDir, 'line_numbers'); const specColumnNumberTemplateDir = path.join(specIsmlTreeTemplateDir, 'column_number'); const specInvalidTemplateDir = path.join(specIsmlTreeTemplateDir, 'invalid_templates'); const specGlobalPosTemplateDir = path.join(specIsmlTreeTemplateDir, 'global_position'); const specComplexTemplatesDir = path.join(specIsmlTreeTemplateDir, 'complex_templates'); const specElementBalanceTemplatesDir = path.join(specIsmlTreeTemplateDir, 'element_balance'); const specTailLineNumberTemplatesDir = path.join(specIsmlTreeTemplateDir, 'tail_line_number'); const specAutofixTemplatesDir = path.join(specTemplateDir, 'autofix'); const specTreeRuleTemplatesDir = path.join(specTemplateDir, 'rules', 'tree'); const rulesDir = path.join(linterModuleDir, 'src', 'rules'); const lineByLineRulesDir = path.join(rulesDir, 'line_by_line'); const treeRulesDir = path.join(rulesDir, 'tree'); // Regex; const srcJsRegex = path.join('src', '**', '*.js'); const appJsRegex = path.join('src', '**', '*.js'); const specJsRegex = path.join('spec', '**', '*.js'); // File paths; const configFilePathList = configFileNameList.map( fileName => path.join(clientAppDir, fileName)); const eslintConfigFilePathList = eslintConfigFileNameList.map( fileName => path.join(clientAppDir, fileName)); // Links; const repositoryUrl = 'https://github.com/FabiowQuixada/isml-linter'; // Other; const voidElementsArray = [ 'area', 'base', 'br', 'col', 'command', 'embed', 'hr', 'img', 'input', 'keygen', 'link', 'meta', 'param', 'source', 'track', 'wbr' ]; const lineBreak = { windows : '\r\n', unix : '\n' }; const occurrenceLevels = { ERROR : 'error', WARNINGS : 'warning', INFO : 'info', toArray : () => ['info', 'warning', 'error'] }; const leadingElementsChecking = 4; module.exports = { // Client directories; clientAppDir, // Directories; ismlLinterSpecDir: specLinterTemplate, specSpecificDirLinterTemplate, specUnparseableDirLinterTemplate, specFilenameTemplate, specConfigTemplate, specIgnoreDirLinterTemplateDir, templateParserSpecDir: specFileParserTemplate, specTempDir, rulesDir, specTemplateDir, lineByLineRulesDir, treeRulesDir, specRuleTemplateDir, specPublicApiTemplatesDir, specIsmlTreeTemplateDir, specIsmlNodeTemplateDir, specGlobalPosTemplateDir, specLineNumberTemplateDir, specColumnNumberTemplateDir, specInvalidTemplateDir, specComplexTemplatesDir, specTreeRuleTemplatesDir, specAutofixTemplatesDir, specElementBalanceTemplatesDir, specTailLineNumberTemplatesDir, specDir, linterModuleDir, // File names; configFileNameList, eslintConfigFileNameList, // File paths; configFilePathList, eslintConfigFilePathList, // Regex; srcJsRegex, appJsRegex, specJsRegex, // Environments; ENV_DEV, ENV_TEST, ENV_PROD, // Links repositoryUrl, // Other; voidElementsArray, leadingElementsChecking, occurrenceLevels, EOL, OS_EOL, lineBreak };