isml-linter 5.39.1 → 5.40.0

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 +1177 -1142
  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 -658
  15. package/src/isml_tree/MaskUtils.js +421 -419
  16. package/src/isml_tree/ParseUtils.js +515 -434
  17. package/src/isml_tree/TreeBuilder.js +273 -271
  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 -43
  43. package/src/rules/tree/leading-iscontent.js +35 -39
  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 +149 -136
  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,219 +1,219 @@
1
- const fs = require('fs');
2
- const path = require('path');
3
- const Constants = require('../Constants');
4
- const FileUtils = require('./FileUtils');
5
-
6
- let configData = null;
7
- let eslintConfigData = null;
8
-
9
- const init = (
10
- targetDir = Constants.clientAppDir,
11
- configFileName = Constants.configFileNameList[0]
12
- ) => {
13
- return createConfigFile(targetDir, configFileName);
14
- };
15
-
16
- const isConfigSet = () => configData !== null;
17
- const isEslintConfigSet = () => eslintConfigData !== null;
18
-
19
- const load = configParam => {
20
-
21
- addParamsToConfig(configData);
22
-
23
- if (configParam) {
24
- configData = configParam;
25
- return configParam;
26
- }
27
-
28
- if (configData) {
29
- return configData;
30
- }
31
-
32
- if (isTestEnv()) {
33
- configData = require(`../../spec/${Constants.configFileNameList[0]}`);
34
- return configData;
35
- }
36
-
37
- if (!existConfigFile()) {
38
- const ConsoleUtils = require('./ConsoleUtils');
39
- const ExceptionUtils = require('./ExceptionUtils');
40
-
41
- ConsoleUtils.displayConfigError();
42
- throw ExceptionUtils.noConfigError();
43
- }
44
-
45
- setLocalConfig();
46
-
47
- return configData;
48
- };
49
-
50
- const setRuleConfig = (attr, value) => {
51
- const config = load();
52
- config.rules[attr] = value;
53
- load(config);
54
- };
55
-
56
- const setConfig = (attr, value) => {
57
- const config = load();
58
- config[attr] = value;
59
- load(config);
60
- };
61
-
62
- const loadEslintConfig = eslintConfigParam => {
63
-
64
- if (eslintConfigParam) {
65
- eslintConfigData = eslintConfigParam;
66
- return eslintConfigParam;
67
- }
68
-
69
- if (eslintConfigData) {
70
- return eslintConfigData;
71
- }
72
-
73
- if (isTestEnv()) {
74
- return require(path.join('..', '..', '..', 'spec', Constants.eslintConfigFileName));
75
- }
76
-
77
- if (!existEslintConfigFile()) {
78
- const ConsoleUtils = require('./ConsoleUtils');
79
- const ExceptionUtils = require('./ExceptionUtils');
80
-
81
- ConsoleUtils.displayEslintConfigError();
82
- throw ExceptionUtils.noEslintConfigError();
83
- }
84
-
85
- setLocalEslintConfig();
86
-
87
- return eslintConfigData;
88
- };
89
-
90
- const clearConfig = () => {
91
- configData = null;
92
- };
93
-
94
- const clearEslintConfig = () => {
95
- eslintConfigData = null;
96
- };
97
-
98
- const createConfigFile = (
99
- targetDir = Constants.configFilePathList[0],
100
- configFileName) => {
101
-
102
- if (!existConfigFile()) {
103
- const sourceDir = 'scaffold_files';
104
-
105
- fs.copyFileSync(
106
- path.join('node_modules', 'isml-linter', sourceDir, configFileName),
107
- path.join(targetDir, configFileName));
108
-
109
- return true;
110
- }
111
-
112
- return false;
113
- };
114
-
115
- const addParamsToConfig = config => {
116
- for (let i = 0; i < process.argv.length; i++) {
117
- if (process.argv[i] === '--autofix') {
118
- config.autoFix = true;
119
- }
120
- }
121
- };
122
-
123
- const existConfigFile = () => {
124
- return configData ||
125
- FileUtils.fileExists(Constants.configFilePathList[0]) ||
126
- FileUtils.fileExists(Constants.configFilePathList[1]);
127
- };
128
-
129
- const getConfigFilePath = () => {
130
- for (let index = 0; index < Constants.configFilePathList.length; index++) {
131
- const configPath = Constants.configFilePathList[index];
132
-
133
- if (FileUtils.fileExists(configPath)) {
134
- return configPath;
135
- }
136
- }
137
-
138
- return null;
139
- };
140
-
141
- const getEslintConfigFilePath = () => {
142
- for (let index = 0; index < Constants.eslintConfigFilePathList.length; index++) {
143
- const eslintConfigPath = Constants.configFilePathList[index];
144
-
145
- if (FileUtils.fileExists(eslintConfigPath)) {
146
- return eslintConfigPath;
147
- }
148
- }
149
-
150
- return null;
151
- };
152
-
153
- const existEslintConfigFile = () => {
154
- return eslintConfigData ||
155
- configData && configData.eslintConfig && FileUtils.fileExists(configData.eslintConfig) ||
156
- FileUtils.fileExists(Constants.eslintConfigFilePathList[0]) ||
157
- FileUtils.fileExists(Constants.eslintConfigFilePathList[1]) ||
158
- FileUtils.fileExists(Constants.eslintConfigFilePathList[2]);
159
- };
160
-
161
- const isTestEnv = () => process.env.NODE_ENV === Constants.ENV_TEST;
162
-
163
- const setLocalConfig = configParam => {
164
- if (isTestEnv()) {
165
- return;
166
- }
167
-
168
- if (configParam) {
169
- configData = configParam;
170
- return;
171
- }
172
-
173
- for (let i = 0; i < Constants.configFilePathList.length; i++) {
174
- const configFilePath = Constants.configFilePathList[i];
175
- if (FileUtils.fileExists(configFilePath)) {
176
- configData = require(configFilePath);
177
- break;
178
- }
179
- }
180
- };
181
-
182
- const setLocalEslintConfig = () => {
183
- try {
184
- if (configData && configData.eslintConfig) {
185
- if (FileUtils.fileExists(configData.eslintConfig)) {
186
- eslintConfigData = path.isAbsolute(configData.eslintConfig) ?
187
- require(configData.eslintConfig) :
188
- require(path.join(Constants.clientAppDir, configData.eslintConfig));
189
- }
190
- } else {
191
- for (let i = 0; i < Constants.eslintConfigFilePathList.length; i++) {
192
- const configFilePath = Constants.eslintConfigFilePathList[i];
193
- if (FileUtils.fileExists(configFilePath)) {
194
- eslintConfigData = configFilePath.endsWith('.eslintrc') ?
195
- JSON.parse(fs.readFileSync(configFilePath).toString()) :
196
- require(configFilePath);
197
-
198
- break;
199
- }
200
- }
201
- }
202
- } catch (err) {
203
- // Configuration will be loaded through setConfig() method;
204
- }
205
- };
206
-
207
- module.exports.init = init;
208
- module.exports.setLocalConfig = setLocalConfig;
209
- module.exports.setLocalEslintConfig = setLocalEslintConfig;
210
- module.exports.load = load;
211
- module.exports.setRuleConfig = setRuleConfig;
212
- module.exports.setConfig = setConfig;
213
- module.exports.loadEslintConfig = loadEslintConfig;
214
- module.exports.clearConfig = clearConfig;
215
- module.exports.clearEslintConfig = clearEslintConfig;
216
- module.exports.isConfigSet = isConfigSet;
217
- module.exports.isEslintConfigSet = isEslintConfigSet;
218
- module.exports.getConfigFilePath = getConfigFilePath;
219
- module.exports.getEslintConfigFilePath = getEslintConfigFilePath;
1
+ const fs = require('fs');
2
+ const path = require('path');
3
+ const Constants = require('../Constants');
4
+ const FileUtils = require('./FileUtils');
5
+
6
+ let configData = null;
7
+ let eslintConfigData = null;
8
+
9
+ const init = (
10
+ targetDir = Constants.clientAppDir,
11
+ configFileName = Constants.configFileNameList[0]
12
+ ) => {
13
+ return createConfigFile(targetDir, configFileName);
14
+ };
15
+
16
+ const isConfigSet = () => configData !== null;
17
+ const isEslintConfigSet = () => eslintConfigData !== null;
18
+
19
+ const load = configParam => {
20
+
21
+ addParamsToConfig(configData);
22
+
23
+ if (configParam) {
24
+ configData = configParam;
25
+ return configParam;
26
+ }
27
+
28
+ if (configData) {
29
+ return configData;
30
+ }
31
+
32
+ if (isTestEnv()) {
33
+ configData = require(`../../spec/${Constants.configFileNameList[0]}`);
34
+ return configData;
35
+ }
36
+
37
+ if (!existConfigFile()) {
38
+ const ConsoleUtils = require('./ConsoleUtils');
39
+ const ExceptionUtils = require('./ExceptionUtils');
40
+
41
+ ConsoleUtils.displayConfigError();
42
+ throw ExceptionUtils.noConfigError();
43
+ }
44
+
45
+ setLocalConfig();
46
+
47
+ return configData;
48
+ };
49
+
50
+ const setRuleConfig = (attr, value) => {
51
+ const config = load();
52
+ config.rules[attr] = value;
53
+ load(config);
54
+ };
55
+
56
+ const setConfig = (attr, value) => {
57
+ const config = load();
58
+ config[attr] = value;
59
+ load(config);
60
+ };
61
+
62
+ const loadEslintConfig = eslintConfigParam => {
63
+
64
+ if (eslintConfigParam) {
65
+ eslintConfigData = eslintConfigParam;
66
+ return eslintConfigParam;
67
+ }
68
+
69
+ if (eslintConfigData) {
70
+ return eslintConfigData;
71
+ }
72
+
73
+ if (isTestEnv()) {
74
+ return require(path.join('..', '..', '..', 'spec', Constants.eslintConfigFileName));
75
+ }
76
+
77
+ if (!existEslintConfigFile()) {
78
+ const ConsoleUtils = require('./ConsoleUtils');
79
+ const ExceptionUtils = require('./ExceptionUtils');
80
+
81
+ ConsoleUtils.displayEslintConfigError();
82
+ throw ExceptionUtils.noEslintConfigError();
83
+ }
84
+
85
+ setLocalEslintConfig();
86
+
87
+ return eslintConfigData;
88
+ };
89
+
90
+ const clearConfig = () => {
91
+ configData = null;
92
+ };
93
+
94
+ const clearEslintConfig = () => {
95
+ eslintConfigData = null;
96
+ };
97
+
98
+ const createConfigFile = (
99
+ targetDir = Constants.configFilePathList[0],
100
+ configFileName) => {
101
+
102
+ if (!existConfigFile()) {
103
+ const sourceDir = 'scaffold_files';
104
+
105
+ fs.copyFileSync(
106
+ path.join('node_modules', 'isml-linter', sourceDir, configFileName),
107
+ path.join(targetDir, configFileName));
108
+
109
+ return true;
110
+ }
111
+
112
+ return false;
113
+ };
114
+
115
+ const addParamsToConfig = config => {
116
+ for (let i = 0; i < process.argv.length; i++) {
117
+ if (process.argv[i] === '--autofix') {
118
+ config.autoFix = true;
119
+ }
120
+ }
121
+ };
122
+
123
+ const existConfigFile = () => {
124
+ return configData ||
125
+ FileUtils.fileExists(Constants.configFilePathList[0]) ||
126
+ FileUtils.fileExists(Constants.configFilePathList[1]);
127
+ };
128
+
129
+ const getConfigFilePath = () => {
130
+ for (let index = 0; index < Constants.configFilePathList.length; index++) {
131
+ const configPath = Constants.configFilePathList[index];
132
+
133
+ if (FileUtils.fileExists(configPath)) {
134
+ return configPath;
135
+ }
136
+ }
137
+
138
+ return null;
139
+ };
140
+
141
+ const getEslintConfigFilePath = () => {
142
+ for (let index = 0; index < Constants.eslintConfigFilePathList.length; index++) {
143
+ const eslintConfigPath = Constants.configFilePathList[index];
144
+
145
+ if (FileUtils.fileExists(eslintConfigPath)) {
146
+ return eslintConfigPath;
147
+ }
148
+ }
149
+
150
+ return null;
151
+ };
152
+
153
+ const existEslintConfigFile = () => {
154
+ return eslintConfigData ||
155
+ configData && configData.eslintConfig && FileUtils.fileExists(configData.eslintConfig) ||
156
+ FileUtils.fileExists(Constants.eslintConfigFilePathList[0]) ||
157
+ FileUtils.fileExists(Constants.eslintConfigFilePathList[1]) ||
158
+ FileUtils.fileExists(Constants.eslintConfigFilePathList[2]);
159
+ };
160
+
161
+ const isTestEnv = () => process.env.NODE_ENV === Constants.ENV_TEST;
162
+
163
+ const setLocalConfig = configParam => {
164
+ if (isTestEnv()) {
165
+ return;
166
+ }
167
+
168
+ if (configParam) {
169
+ configData = configParam;
170
+ return;
171
+ }
172
+
173
+ for (let i = 0; i < Constants.configFilePathList.length; i++) {
174
+ const configFilePath = Constants.configFilePathList[i];
175
+ if (FileUtils.fileExists(configFilePath)) {
176
+ configData = require(configFilePath);
177
+ break;
178
+ }
179
+ }
180
+ };
181
+
182
+ const setLocalEslintConfig = () => {
183
+ try {
184
+ if (configData && configData.eslintConfig) {
185
+ if (FileUtils.fileExists(configData.eslintConfig)) {
186
+ eslintConfigData = path.isAbsolute(configData.eslintConfig) ?
187
+ require(configData.eslintConfig) :
188
+ require(path.join(Constants.clientAppDir, configData.eslintConfig));
189
+ }
190
+ } else {
191
+ for (let i = 0; i < Constants.eslintConfigFilePathList.length; i++) {
192
+ const configFilePath = Constants.eslintConfigFilePathList[i];
193
+ if (FileUtils.fileExists(configFilePath)) {
194
+ eslintConfigData = configFilePath.endsWith('.eslintrc') ?
195
+ JSON.parse(fs.readFileSync(configFilePath).toString()) :
196
+ require(configFilePath);
197
+
198
+ break;
199
+ }
200
+ }
201
+ }
202
+ } catch (err) {
203
+ // Configuration will be loaded through setConfig() method;
204
+ }
205
+ };
206
+
207
+ module.exports.init = init;
208
+ module.exports.setLocalConfig = setLocalConfig;
209
+ module.exports.setLocalEslintConfig = setLocalEslintConfig;
210
+ module.exports.load = load;
211
+ module.exports.setRuleConfig = setRuleConfig;
212
+ module.exports.setConfig = setConfig;
213
+ module.exports.loadEslintConfig = loadEslintConfig;
214
+ module.exports.clearConfig = clearConfig;
215
+ module.exports.clearEslintConfig = clearEslintConfig;
216
+ module.exports.isConfigSet = isConfigSet;
217
+ module.exports.isEslintConfigSet = isEslintConfigSet;
218
+ module.exports.getConfigFilePath = getConfigFilePath;
219
+ module.exports.getEslintConfigFilePath = getEslintConfigFilePath;