isml-linter 5.39.3 → 5.40.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/CHANGELOG.md +1184 -1159
  2. package/LICENSE +21 -21
  3. package/README.md +245 -245
  4. package/bin/isml-linter.js +32 -32
  5. package/ismllinter.config.js +33 -33
  6. package/package.json +53 -53
  7. package/scaffold_files/ismllinter.config.js +47 -47
  8. package/src/Builder.js +15 -15
  9. package/src/Constants.js +139 -139
  10. package/src/IsmlLinter.js +255 -255
  11. package/src/enums/ParseStatus.js +5 -5
  12. package/src/enums/SfccTagContainer.js +287 -287
  13. package/src/isml_tree/ContainerNode.js +38 -38
  14. package/src/isml_tree/IsmlNode.js +692 -684
  15. package/src/isml_tree/MaskUtils.js +421 -421
  16. package/src/isml_tree/ParseUtils.js +532 -506
  17. package/src/isml_tree/TreeBuilder.js +273 -273
  18. package/src/publicApi.js +24 -24
  19. package/src/rules/line_by_line/enforce-isprint.js +53 -53
  20. package/src/rules/line_by_line/enforce-require.js +35 -35
  21. package/src/rules/line_by_line/lowercase-filename.js +29 -29
  22. package/src/rules/line_by_line/max-lines.js +37 -37
  23. package/src/rules/line_by_line/no-br.js +36 -36
  24. package/src/rules/line_by_line/no-git-conflict.js +43 -43
  25. package/src/rules/line_by_line/no-import-package.js +34 -34
  26. package/src/rules/line_by_line/no-inline-style.js +34 -34
  27. package/src/rules/line_by_line/no-isscript.js +34 -34
  28. package/src/rules/line_by_line/no-space-only-lines.js +47 -47
  29. package/src/rules/line_by_line/no-tabs.js +38 -38
  30. package/src/rules/line_by_line/no-trailing-spaces.js +52 -52
  31. package/src/rules/prototypes/RulePrototype.js +79 -79
  32. package/src/rules/prototypes/SingleLineRulePrototype.js +47 -47
  33. package/src/rules/prototypes/TreeRulePrototype.js +84 -84
  34. package/src/rules/tree/align-isset.js +87 -87
  35. package/src/rules/tree/contextual-attrs.js +105 -105
  36. package/src/rules/tree/custom-tags.js +54 -54
  37. package/src/rules/tree/disallow-tags.js +39 -39
  38. package/src/rules/tree/empty-eof.js +66 -66
  39. package/src/rules/tree/enforce-security.js +85 -85
  40. package/src/rules/tree/eslint-to-isscript.js +179 -179
  41. package/src/rules/tree/indent.js +856 -853
  42. package/src/rules/tree/leading-iscache.js +39 -39
  43. package/src/rules/tree/leading-iscontent.js +35 -35
  44. package/src/rules/tree/max-depth.js +54 -54
  45. package/src/rules/tree/no-deprecated-attrs.js +67 -67
  46. package/src/rules/tree/no-embedded-isml.js +17 -17
  47. package/src/rules/tree/no-hardcode.js +51 -51
  48. package/src/rules/tree/no-iselse-slash.js +35 -35
  49. package/src/rules/tree/no-redundant-context.js +134 -134
  50. package/src/rules/tree/no-require-in-loop.js +63 -63
  51. package/src/rules/tree/one-element-per-line.js +82 -76
  52. package/src/util/CommandLineUtils.js +19 -19
  53. package/src/util/ConfigUtils.js +219 -219
  54. package/src/util/ConsoleUtils.js +327 -327
  55. package/src/util/CustomTagContainer.js +45 -45
  56. package/src/util/ExceptionUtils.js +173 -149
  57. package/src/util/FileUtils.js +79 -79
  58. package/src/util/GeneralUtils.js +60 -60
  59. package/src/util/NativeExtensionUtils.js +6 -6
  60. package/src/util/RuleUtils.js +295 -295
  61. package/src/util/TempRuleUtils.js +232 -232
@@ -1,33 +1,33 @@
1
- // Please check all available configurations and rules
2
- // at https://www.npmjs.com/package/isml-linter.
3
-
4
- const config = {
5
- 'rules': {
6
-
7
- // Line by line rules;
8
- 'no-br' : {},
9
- 'no-git-conflict' : {},
10
- 'no-import-package' : {},
11
- 'no-inline-style' : {
12
- level : 'warning'
13
- },
14
- 'no-isscript' : {},
15
- 'no-space-only-lines' : {},
16
- 'no-tabs' : {},
17
- 'no-trailing-spaces' : {},
18
-
19
- // Tree rules;
20
- 'indent' : {},
21
- 'no-redundant-context' : {},
22
- 'max-depth' : {
23
- level : 'warning'
24
- },
25
- 'no-hardcode' : {},
26
- 'no-require-in-loop' : {},
27
- 'one-element-per-line' : {
28
- except: ['iscomment']
29
- }
30
- }
31
- };
32
-
33
- module.exports = config;
1
+ // Please check all available configurations and rules
2
+ // at https://www.npmjs.com/package/isml-linter.
3
+
4
+ const config = {
5
+ 'rules': {
6
+
7
+ // Line by line rules;
8
+ 'no-br' : {},
9
+ 'no-git-conflict' : {},
10
+ 'no-import-package' : {},
11
+ 'no-inline-style' : {
12
+ level : 'warning'
13
+ },
14
+ 'no-isscript' : {},
15
+ 'no-space-only-lines' : {},
16
+ 'no-tabs' : {},
17
+ 'no-trailing-spaces' : {},
18
+
19
+ // Tree rules;
20
+ 'indent' : {},
21
+ 'no-redundant-context' : {},
22
+ 'max-depth' : {
23
+ level : 'warning'
24
+ },
25
+ 'no-hardcode' : {},
26
+ 'no-require-in-loop' : {},
27
+ 'one-element-per-line' : {
28
+ except: ['iscomment']
29
+ }
30
+ }
31
+ };
32
+
33
+ module.exports = config;
package/package.json CHANGED
@@ -1,53 +1,53 @@
1
- {
2
- "name": "isml-linter",
3
- "version": "5.39.3",
4
- "author": "Fabiow Quixadá <ftquixada@gmail.com>",
5
- "license": "MIT",
6
- "main": "src/publicApi.js",
7
- "engines": {
8
- "node": ">=10.0.0"
9
- },
10
- "scripts": {
11
- "lint": "./node_modules/.bin/eslint . --fix",
12
- "test": "jasmine-node spec/",
13
- "lint:isml": "node scripts/lint.js",
14
- "build:isml": "node scripts/lint.js --build",
15
- "fix:isml": "node scripts/lint.js --autofix",
16
- "prepush": "npm run lint && npm test --silent",
17
- "release": "node scripts/release"
18
- },
19
- "bin": {
20
- "isml-linter": "./bin/isml-linter.js"
21
- },
22
- "repository": {
23
- "type": "git",
24
- "url": "https://github.com/FabiowQuixada/isml-linter"
25
- },
26
- "keywords": [
27
- "isml",
28
- "template",
29
- "lint",
30
- "linter",
31
- "demandware",
32
- "salesforce",
33
- "digital-script",
34
- "sfra",
35
- "site-genesis"
36
- ],
37
- "dependencies": {
38
- "app-root-path": "^3.0.0",
39
- "chalk": "^4.1.0",
40
- "eslint": "^7.32.0",
41
- "readdir": "^1.0.2"
42
- },
43
- "devDependencies": {
44
- "eslint-plugin-jasmine": "^4.1.2",
45
- "eslint-plugin-varspacing": "^1.2.2",
46
- "ghooks": "^2.0.4",
47
- "jasmine": "^3.6.4",
48
- "jasmine-node": "^3.0.0",
49
- "rmdir": "^1.2.0",
50
- "sinon": "^9.2.4",
51
- "to-snake-case": "^1.0.0"
52
- }
53
- }
1
+ {
2
+ "name": "isml-linter",
3
+ "version": "5.40.1",
4
+ "author": "Fabiow Quixadá <ftquixada@gmail.com>",
5
+ "license": "MIT",
6
+ "main": "src/publicApi.js",
7
+ "engines": {
8
+ "node": ">=10.0.0"
9
+ },
10
+ "scripts": {
11
+ "lint": "./node_modules/.bin/eslint . --fix",
12
+ "test": "jasmine-node spec/",
13
+ "lint:isml": "node scripts/lint.js",
14
+ "build:isml": "node scripts/lint.js --build",
15
+ "fix:isml": "node scripts/lint.js --autofix",
16
+ "prepush": "npm run lint && npm test --silent",
17
+ "release": "node scripts/release"
18
+ },
19
+ "bin": {
20
+ "isml-linter": "./bin/isml-linter.js"
21
+ },
22
+ "repository": {
23
+ "type": "git",
24
+ "url": "https://github.com/FabiowQuixada/isml-linter"
25
+ },
26
+ "keywords": [
27
+ "isml",
28
+ "template",
29
+ "lint",
30
+ "linter",
31
+ "demandware",
32
+ "salesforce",
33
+ "digital-script",
34
+ "sfra",
35
+ "site-genesis"
36
+ ],
37
+ "dependencies": {
38
+ "app-root-path": "^3.0.0",
39
+ "chalk": "^4.1.0",
40
+ "eslint": "^7.32.0",
41
+ "readdir": "^1.0.2"
42
+ },
43
+ "devDependencies": {
44
+ "eslint-plugin-jasmine": "^4.1.2",
45
+ "eslint-plugin-varspacing": "^1.2.2",
46
+ "ghooks": "^2.0.4",
47
+ "jasmine": "^3.6.4",
48
+ "jasmine-node": "^3.0.0",
49
+ "rmdir": "^1.2.0",
50
+ "sinon": "^9.2.4",
51
+ "to-snake-case": "^1.0.0"
52
+ }
53
+ }
@@ -1,47 +1,47 @@
1
- // Please check all available configurations and rules
2
- // at https://www.npmjs.com/package/isml-linter.
3
-
4
- const config = {
5
- 'rules': {
6
-
7
- // Line by line rules;
8
- // 'enforce-isprint' : {}, // Known issue, will be fixed on v6.0.0;
9
- 'enforce-require' : {},
10
- 'no-br' : {},
11
- 'no-git-conflict' : {},
12
- 'no-import-package' : {},
13
- 'no-inline-style' : {},
14
- 'no-isscript' : {},
15
- 'no-space-only-lines' : {},
16
- 'no-tabs' : {},
17
- 'no-trailing-spaces' : {},
18
- 'max-lines' : {},
19
-
20
- // Tree rules;
21
- 'indent' : {},
22
- 'no-redundant-context' : {},
23
- 'leading-iscontent' : {},
24
- 'max-depth' : {},
25
- 'no-embedded-isml' : {},
26
- 'no-hardcode' : {},
27
- 'no-require-in-loop' : {},
28
- 'one-element-per-line' : {},
29
- 'leading-iscache' : {},
30
- 'no-deprecated-attrs' : {},
31
- 'contextual-attrs' : {},
32
- 'custom-tags' : {},
33
- 'eslint-to-isscript' : {},
34
- 'no-iselse-slash' : {},
35
- 'empty-eof' : {},
36
- 'align-isset' : {},
37
- 'disallow-tags' : {
38
- values : ['isscript', 'br', 'style', 'iframe']
39
- },
40
- 'enforce-security' : {},
41
-
42
- // Other
43
- 'lowercase-filename' : {}
44
- }
45
- };
46
-
47
- module.exports = config;
1
+ // Please check all available configurations and rules
2
+ // at https://www.npmjs.com/package/isml-linter.
3
+
4
+ const config = {
5
+ 'rules': {
6
+
7
+ // Line by line rules;
8
+ // 'enforce-isprint' : {}, // Known issue, will be fixed on v6.0.0;
9
+ 'enforce-require' : {},
10
+ 'no-br' : {},
11
+ 'no-git-conflict' : {},
12
+ 'no-import-package' : {},
13
+ 'no-inline-style' : {},
14
+ 'no-isscript' : {},
15
+ 'no-space-only-lines' : {},
16
+ 'no-tabs' : {},
17
+ 'no-trailing-spaces' : {},
18
+ 'max-lines' : {},
19
+
20
+ // Tree rules;
21
+ 'indent' : {},
22
+ 'no-redundant-context' : {},
23
+ 'leading-iscontent' : {},
24
+ 'max-depth' : {},
25
+ 'no-embedded-isml' : {},
26
+ 'no-hardcode' : {},
27
+ 'no-require-in-loop' : {},
28
+ 'one-element-per-line' : {},
29
+ 'leading-iscache' : {},
30
+ 'no-deprecated-attrs' : {},
31
+ 'contextual-attrs' : {},
32
+ 'custom-tags' : {},
33
+ 'eslint-to-isscript' : {},
34
+ 'no-iselse-slash' : {},
35
+ 'empty-eof' : {},
36
+ 'align-isset' : {},
37
+ 'disallow-tags' : {
38
+ values : ['isscript', 'br', 'style', 'iframe']
39
+ },
40
+ 'enforce-security' : {},
41
+
42
+ // Other
43
+ 'lowercase-filename' : {}
44
+ }
45
+ };
46
+
47
+ module.exports = config;
package/src/Builder.js CHANGED
@@ -1,15 +1,15 @@
1
-
2
- const run = path => {
3
- const IsmlLinter = require('./IsmlLinter');
4
- const ConsoleUtils = require('./util/ConsoleUtils');
5
-
6
- const lintResults = IsmlLinter.run(path);
7
-
8
- ConsoleUtils.displayOccurrenceList(lintResults);
9
-
10
- return lintResults.issueQty > 0 ? 1 : 0;
11
- };
12
-
13
- module.exports = {
14
- run
15
- };
1
+
2
+ const run = path => {
3
+ const IsmlLinter = require('./IsmlLinter');
4
+ const ConsoleUtils = require('./util/ConsoleUtils');
5
+
6
+ const lintResults = IsmlLinter.run(path);
7
+
8
+ ConsoleUtils.displayOccurrenceList(lintResults);
9
+
10
+ return lintResults.issueQty > 0 ? 1 : 0;
11
+ };
12
+
13
+ module.exports = {
14
+ run
15
+ };
package/src/Constants.js CHANGED
@@ -1,139 +1,139 @@
1
- const path = require('path');
2
- const appRoot = require('app-root-path');
3
- const fs = require('fs');
4
- const OS_EOL = require('os').EOL;
5
- const EOL = '\n'; // Internal processing line break;
6
-
7
- // Environments;
8
- const ENV_DEV = 'dev';
9
- const ENV_TEST = 'test';
10
- const ENV_PROD = 'prod';
11
-
12
- // File names;
13
- const configFileNameList = ['ismllinter.config.js', '.ismllinter.json', '.ismllintrc.js'];
14
- const eslintConfigFileNameList = ['.eslintrc.json', '.eslintrc.js', '.eslintrc'];
15
-
16
- const clientAppDir = appRoot.toString();
17
- const productionDir = path.join(clientAppDir, 'node_modules', 'isml-linter');
18
- const linterModuleDir = fs.existsSync(productionDir) ? productionDir : clientAppDir;
19
-
20
- // Directories;
21
- const specDir = path.join(appRoot.toString(), 'spec');
22
- const specTempDir = path.join(specDir, 'temp');
23
- const specTemplateDir = path.join(specDir, 'templates', 'default');
24
- const specFileParserTemplate = path.join(specTemplateDir, 'file_parser');
25
- const specLinterTemplate = path.join(specTemplateDir, 'isml_linter');
26
- const specSpecificDirLinterTemplate = path.join('spec', 'templates', 'default', 'isml_linter', 'specific_directory_to_be_linted');
27
- const specUnparseableDirLinterTemplate = path.join('spec', 'templates', 'default', 'isml_linter', 'unparseable');
28
- const specFilenameTemplate = path.join('spec', 'templates', 'default', 'isml_linter', 'filenames');
29
- const specConfigTemplate = path.join('spec', 'templates', 'default', 'config');
30
- const specIgnoreDirLinterTemplateDir = path.join(specLinterTemplate, 'ignore_config');
31
- const specRuleTemplateDir = path.join(specTemplateDir, 'rules');
32
- const specIsmlTreeTemplateDir = path.join(specTemplateDir, 'isml_tree');
33
- const specIsmlNodeTemplateDir = path.join(specTemplateDir, 'isml_node');
34
- const specPublicApiTemplatesDir = path.join(specTemplateDir, 'public_api');
35
- const specLineNumberTemplateDir = path.join(specIsmlTreeTemplateDir, 'line_numbers');
36
- const specColumnNumberTemplateDir = path.join(specIsmlTreeTemplateDir, 'column_number');
37
- const specInvalidTemplateDir = path.join(specIsmlTreeTemplateDir, 'invalid_templates');
38
- const specGlobalPosTemplateDir = path.join(specIsmlTreeTemplateDir, 'global_position');
39
- const specComplexTemplatesDir = path.join(specIsmlTreeTemplateDir, 'complex_templates');
40
- const specElementBalanceTemplatesDir = path.join(specIsmlTreeTemplateDir, 'element_balance');
41
- const specTailLineNumberTemplatesDir = path.join(specIsmlTreeTemplateDir, 'tail_line_number');
42
- const specAutofixTemplatesDir = path.join(specTemplateDir, 'autofix');
43
- const rulesDir = path.join(linterModuleDir, 'src', 'rules');
44
- const lineByLineRulesDir = path.join(rulesDir, 'line_by_line');
45
- const treeRulesDir = path.join(rulesDir, 'tree');
46
-
47
- // Regex;
48
- const srcJsRegex = path.join('src', '**', '*.js');
49
- const appJsRegex = path.join('src', '**', '*.js');
50
- const specJsRegex = path.join('spec', '**', '*.js');
51
-
52
- // File paths;
53
- const configFilePathList = configFileNameList.map( fileName => path.join(clientAppDir, fileName));
54
- const eslintConfigFilePathList = eslintConfigFileNameList.map( fileName => path.join(clientAppDir, fileName));
55
-
56
- // Links;
57
- const repositoryUrl = 'https://github.com/FabiowQuixada/isml-linter';
58
-
59
- // Other;
60
- const voidElementsArray = [
61
- 'area', 'base', 'br', 'col',
62
- 'command', 'embed', 'hr', 'img',
63
- 'input', 'keygen', 'link', 'meta',
64
- 'param', 'source', 'track', 'wbr'
65
- ];
66
- const lineBreak = {
67
- windows : '\r\n',
68
- unix : '\n'
69
- };
70
- const occurrenceLevels = {
71
- ERROR : 'error',
72
- WARNINGS : 'warning',
73
- INFO : 'info',
74
- toArray : () => ['info', 'warning', 'error']
75
- };
76
-
77
- const leadingElementsChecking = 4;
78
-
79
- module.exports = {
80
- // Client directories;
81
- clientAppDir,
82
-
83
- // Directories;
84
- ismlLinterSpecDir: specLinterTemplate,
85
- specSpecificDirLinterTemplate,
86
- specUnparseableDirLinterTemplate,
87
- specFilenameTemplate,
88
- specConfigTemplate,
89
- specIgnoreDirLinterTemplateDir,
90
- templateParserSpecDir: specFileParserTemplate,
91
- specTempDir,
92
- rulesDir,
93
- specTemplateDir,
94
- lineByLineRulesDir,
95
- treeRulesDir,
96
- specRuleTemplateDir,
97
- specPublicApiTemplatesDir,
98
- specIsmlTreeTemplateDir,
99
- specIsmlNodeTemplateDir,
100
- specGlobalPosTemplateDir,
101
- specLineNumberTemplateDir,
102
- specColumnNumberTemplateDir,
103
- specInvalidTemplateDir,
104
- specComplexTemplatesDir,
105
- specAutofixTemplatesDir,
106
- specElementBalanceTemplatesDir,
107
- specTailLineNumberTemplatesDir,
108
- specDir,
109
- linterModuleDir,
110
-
111
- // File names;
112
- configFileNameList,
113
- eslintConfigFileNameList,
114
-
115
- // File paths;
116
- configFilePathList,
117
- eslintConfigFilePathList,
118
-
119
- // Regex;
120
- srcJsRegex,
121
- appJsRegex,
122
- specJsRegex,
123
-
124
- // Environments;
125
- ENV_DEV,
126
- ENV_TEST,
127
- ENV_PROD,
128
-
129
- // Links
130
- repositoryUrl,
131
-
132
- // Other;
133
- voidElementsArray,
134
- leadingElementsChecking,
135
- occurrenceLevels,
136
- EOL,
137
- OS_EOL,
138
- lineBreak
139
- };
1
+ const path = require('path');
2
+ const appRoot = require('app-root-path');
3
+ const fs = require('fs');
4
+ const OS_EOL = require('os').EOL;
5
+ const EOL = '\n'; // Internal processing line break;
6
+
7
+ // Environments;
8
+ const ENV_DEV = 'dev';
9
+ const ENV_TEST = 'test';
10
+ const ENV_PROD = 'prod';
11
+
12
+ // File names;
13
+ const configFileNameList = ['ismllinter.config.js', '.ismllinter.json', '.ismllintrc.js'];
14
+ const eslintConfigFileNameList = ['.eslintrc.json', '.eslintrc.js', '.eslintrc'];
15
+
16
+ const clientAppDir = appRoot.toString();
17
+ const productionDir = path.join(clientAppDir, 'node_modules', 'isml-linter');
18
+ const linterModuleDir = fs.existsSync(productionDir) ? productionDir : clientAppDir;
19
+
20
+ // Directories;
21
+ const specDir = path.join(appRoot.toString(), 'spec');
22
+ const specTempDir = path.join(specDir, 'temp');
23
+ const specTemplateDir = path.join(specDir, 'templates', 'default');
24
+ const specFileParserTemplate = path.join(specTemplateDir, 'file_parser');
25
+ const specLinterTemplate = path.join(specTemplateDir, 'isml_linter');
26
+ const specSpecificDirLinterTemplate = path.join('spec', 'templates', 'default', 'isml_linter', 'specific_directory_to_be_linted');
27
+ const specUnparseableDirLinterTemplate = path.join('spec', 'templates', 'default', 'isml_linter', 'unparseable');
28
+ const specFilenameTemplate = path.join('spec', 'templates', 'default', 'isml_linter', 'filenames');
29
+ const specConfigTemplate = path.join('spec', 'templates', 'default', 'config');
30
+ const specIgnoreDirLinterTemplateDir = path.join(specLinterTemplate, 'ignore_config');
31
+ const specRuleTemplateDir = path.join(specTemplateDir, 'rules');
32
+ const specIsmlTreeTemplateDir = path.join(specTemplateDir, 'isml_tree');
33
+ const specIsmlNodeTemplateDir = path.join(specTemplateDir, 'isml_node');
34
+ const specPublicApiTemplatesDir = path.join(specTemplateDir, 'public_api');
35
+ const specLineNumberTemplateDir = path.join(specIsmlTreeTemplateDir, 'line_numbers');
36
+ const specColumnNumberTemplateDir = path.join(specIsmlTreeTemplateDir, 'column_number');
37
+ const specInvalidTemplateDir = path.join(specIsmlTreeTemplateDir, 'invalid_templates');
38
+ const specGlobalPosTemplateDir = path.join(specIsmlTreeTemplateDir, 'global_position');
39
+ const specComplexTemplatesDir = path.join(specIsmlTreeTemplateDir, 'complex_templates');
40
+ const specElementBalanceTemplatesDir = path.join(specIsmlTreeTemplateDir, 'element_balance');
41
+ const specTailLineNumberTemplatesDir = path.join(specIsmlTreeTemplateDir, 'tail_line_number');
42
+ const specAutofixTemplatesDir = path.join(specTemplateDir, 'autofix');
43
+ const rulesDir = path.join(linterModuleDir, 'src', 'rules');
44
+ const lineByLineRulesDir = path.join(rulesDir, 'line_by_line');
45
+ const treeRulesDir = path.join(rulesDir, 'tree');
46
+
47
+ // Regex;
48
+ const srcJsRegex = path.join('src', '**', '*.js');
49
+ const appJsRegex = path.join('src', '**', '*.js');
50
+ const specJsRegex = path.join('spec', '**', '*.js');
51
+
52
+ // File paths;
53
+ const configFilePathList = configFileNameList.map( fileName => path.join(clientAppDir, fileName));
54
+ const eslintConfigFilePathList = eslintConfigFileNameList.map( fileName => path.join(clientAppDir, fileName));
55
+
56
+ // Links;
57
+ const repositoryUrl = 'https://github.com/FabiowQuixada/isml-linter';
58
+
59
+ // Other;
60
+ const voidElementsArray = [
61
+ 'area', 'base', 'br', 'col',
62
+ 'command', 'embed', 'hr', 'img',
63
+ 'input', 'keygen', 'link', 'meta',
64
+ 'param', 'source', 'track', 'wbr'
65
+ ];
66
+ const lineBreak = {
67
+ windows : '\r\n',
68
+ unix : '\n'
69
+ };
70
+ const occurrenceLevels = {
71
+ ERROR : 'error',
72
+ WARNINGS : 'warning',
73
+ INFO : 'info',
74
+ toArray : () => ['info', 'warning', 'error']
75
+ };
76
+
77
+ const leadingElementsChecking = 4;
78
+
79
+ module.exports = {
80
+ // Client directories;
81
+ clientAppDir,
82
+
83
+ // Directories;
84
+ ismlLinterSpecDir: specLinterTemplate,
85
+ specSpecificDirLinterTemplate,
86
+ specUnparseableDirLinterTemplate,
87
+ specFilenameTemplate,
88
+ specConfigTemplate,
89
+ specIgnoreDirLinterTemplateDir,
90
+ templateParserSpecDir: specFileParserTemplate,
91
+ specTempDir,
92
+ rulesDir,
93
+ specTemplateDir,
94
+ lineByLineRulesDir,
95
+ treeRulesDir,
96
+ specRuleTemplateDir,
97
+ specPublicApiTemplatesDir,
98
+ specIsmlTreeTemplateDir,
99
+ specIsmlNodeTemplateDir,
100
+ specGlobalPosTemplateDir,
101
+ specLineNumberTemplateDir,
102
+ specColumnNumberTemplateDir,
103
+ specInvalidTemplateDir,
104
+ specComplexTemplatesDir,
105
+ specAutofixTemplatesDir,
106
+ specElementBalanceTemplatesDir,
107
+ specTailLineNumberTemplatesDir,
108
+ specDir,
109
+ linterModuleDir,
110
+
111
+ // File names;
112
+ configFileNameList,
113
+ eslintConfigFileNameList,
114
+
115
+ // File paths;
116
+ configFilePathList,
117
+ eslintConfigFilePathList,
118
+
119
+ // Regex;
120
+ srcJsRegex,
121
+ appJsRegex,
122
+ specJsRegex,
123
+
124
+ // Environments;
125
+ ENV_DEV,
126
+ ENV_TEST,
127
+ ENV_PROD,
128
+
129
+ // Links
130
+ repositoryUrl,
131
+
132
+ // Other;
133
+ voidElementsArray,
134
+ leadingElementsChecking,
135
+ occurrenceLevels,
136
+ EOL,
137
+ OS_EOL,
138
+ lineBreak
139
+ };