@terafina/tffa-sfdx-plugin 15.0.0-rc.1 → 15.0.0-rc.10

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 (56) hide show
  1. package/README.md +43 -13
  2. package/bin/pmd/apex_ruleset.xml +108 -0
  3. package/bin/pmd/apex_test_ruleset.xml +1 -1
  4. package/bin/pmd/apex_vf_ruleset.xml +17 -0
  5. package/bin/pmd/lib/pmd-visualforce-6.47.0.jar +0 -0
  6. package/bin/update.sh +0 -1
  7. package/lib/commands/tffa/apexdoc.d.ts +1 -0
  8. package/lib/commands/tffa/apexdoc.js +12 -3
  9. package/lib/commands/tffa/apexdoc.js.map +1 -1
  10. package/lib/commands/tffa/lint.js +19 -9
  11. package/lib/commands/tffa/lint.js.map +1 -1
  12. package/lib/commands/tffa/source/apiset.d.ts +11 -0
  13. package/lib/commands/tffa/source/apiset.js +89 -0
  14. package/lib/commands/tffa/source/apiset.js.map +1 -0
  15. package/lib/services/apexdoc/common/models/apex-model.js +7 -2
  16. package/lib/services/apexdoc/common/models/apex-model.js.map +1 -1
  17. package/lib/services/apexdoc/common/models/class-model.d.ts +3 -0
  18. package/lib/services/apexdoc/common/models/class-model.js +7 -0
  19. package/lib/services/apexdoc/common/models/class-model.js.map +1 -1
  20. package/lib/services/apexdoc/common/models/engine-config.d.ts +1 -1
  21. package/lib/services/apexdoc/common/models/engine-config.js +8 -3
  22. package/lib/services/apexdoc/common/models/engine-config.js.map +1 -1
  23. package/lib/services/apexdoc/common/settings.d.ts +2 -1
  24. package/lib/services/apexdoc/common/settings.js +16 -3
  25. package/lib/services/apexdoc/common/settings.js.map +1 -1
  26. package/lib/services/lint/apex-class-scan.d.ts +1 -3
  27. package/lib/services/lint/apex-class-scan.js +16 -109
  28. package/lib/services/lint/apex-class-scan.js.map +1 -1
  29. package/lib/services/lint/apex-pmd.d.ts +1 -0
  30. package/lib/services/lint/apex-pmd.js +10 -4
  31. package/lib/services/lint/apex-pmd.js.map +1 -1
  32. package/lib/services/lint/eslint-scan.d.ts +13 -0
  33. package/lib/services/lint/eslint-scan.js +138 -0
  34. package/lib/services/lint/eslint-scan.js.map +1 -0
  35. package/lib/services/lint/metadata-scan.d.ts +10 -4
  36. package/lib/services/lint/metadata-scan.js +44 -65
  37. package/lib/services/lint/metadata-scan.js.map +1 -1
  38. package/lib/services/lint/rules.d.ts +10 -0
  39. package/lib/services/lint/rules.js +86 -0
  40. package/lib/services/lint/rules.js.map +1 -0
  41. package/lib/services/lint/stylelint-scan.d.ts +13 -0
  42. package/lib/services/lint/stylelint-scan.js +119 -0
  43. package/lib/services/lint/stylelint-scan.js.map +1 -0
  44. package/lib/utils/constants.d.ts +9 -0
  45. package/lib/utils/constants.js +14 -0
  46. package/lib/utils/constants.js.map +1 -0
  47. package/lib/utils/ignored-files.d.ts +2 -0
  48. package/lib/utils/ignored-files.js +66 -1
  49. package/lib/utils/ignored-files.js.map +1 -1
  50. package/messages/apexdoc.json +5 -0
  51. package/messages/lint.json +5 -0
  52. package/messages/ping.json +1 -1
  53. package/messages/sourceApiSet.json +8 -0
  54. package/oclif.manifest.json +1 -1
  55. package/package.json +20 -18
  56. package/yarn.lock +8170 -0
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ /**
5
+ * Copyright (c) NCR Terafina
6
+ **/
7
+ const ChildProcess = tslib_1.__importStar(require("child_process"));
8
+ const path = tslib_1.__importStar(require("path"));
9
+ const core_1 = require("@salesforce/core");
10
+ const ignored_files_1 = tslib_1.__importDefault(require("../../utils/ignored-files"));
11
+ /**
12
+ * Linter executes the eslint command
13
+ */
14
+ class EslintScan {
15
+ constructor() {
16
+ this.ignoreFiles = [];
17
+ this.paths = ['"ui/**/*.ts"', '"ui/**/*.html"', '"app/main/default/lwc"'];
18
+ }
19
+ async eject(sourceFolder) {
20
+ this.logger.warn(sourceFolder);
21
+ return;
22
+ }
23
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
24
+ async scan(sourceFolder) {
25
+ this.logger = await core_1.Logger.root();
26
+ this.ignoreFiles.push(...ignored_files_1.default.files);
27
+ this.logger.debug(this.ignoreFiles);
28
+ try {
29
+ const data = await this.executeCmd(sourceFolder);
30
+ const violations = this.parseProblems(data, sourceFolder);
31
+ return violations;
32
+ }
33
+ catch (err) {
34
+ console.error(err);
35
+ return [];
36
+ }
37
+ }
38
+ async executeCmd(sourceFolder) {
39
+ const commandBufferSize = 64;
40
+ const eslintBinPath = path.join('node_modules', '.bin', 'eslint');
41
+ const rulesetsArg = this.paths.join(' ');
42
+ const cmd = `"${eslintBinPath}" ${rulesetsArg} --no-error-on-unmatched-pattern -f json`;
43
+ this.logger.info('eslint Command: ' + cmd);
44
+ const eslintCmd = ChildProcess.exec(cmd, {
45
+ cwd: sourceFolder,
46
+ maxBuffer: Math.max(commandBufferSize, 1) * 1024 * 1024
47
+ });
48
+ let stdout = '';
49
+ let stderr = '';
50
+ const eslintPromise = new Promise((resolve, reject) => {
51
+ eslintCmd.addListener('error', e => {
52
+ this.logger.error('error:' + e);
53
+ reject(e);
54
+ });
55
+ eslintCmd.addListener('exit', e => {
56
+ if (e !== 0 && e !== 4) {
57
+ this.logger.error(`Failed Exit Code: ${e}` + stderr);
58
+ reject(stderr);
59
+ }
60
+ else {
61
+ resolve(stdout);
62
+ }
63
+ });
64
+ eslintCmd.stdout.on('data', (m) => {
65
+ this.logger.info('stdout:' + m);
66
+ stdout += m;
67
+ });
68
+ eslintCmd.stderr.on('data', (m) => {
69
+ this.logger.error('stderr:' + m);
70
+ stderr += m;
71
+ });
72
+ });
73
+ return eslintPromise;
74
+ }
75
+ parseProblems(json, sourceFolder) {
76
+ let violations = [];
77
+ this.logger.debug(json);
78
+ if (!json) {
79
+ return violations;
80
+ }
81
+ const p = JSON.parse(json);
82
+ if (!p.length) {
83
+ return violations;
84
+ }
85
+ const violationMap = new Map();
86
+ for (const f of p) {
87
+ const file = f.filePath;
88
+ const filename = path.basename(file);
89
+ const fileRelPath = path.relative(sourceFolder, file);
90
+ if (this.ignoreFiles.indexOf(filename) >= 0 || this.ignoreFiles.indexOf(file) >= 0 || this.ignoreFiles.indexOf(fileRelPath) >= 0) {
91
+ this.logger.warn('Ignore file ' + filename);
92
+ continue;
93
+ }
94
+ if (f.messages.length > 0) {
95
+ for (const v of f.messages) {
96
+ const key = v.ruleset + '-' + v.message;
97
+ let o = violationMap.get(key);
98
+ if (!o) {
99
+ o = {
100
+ label: v.ruleId,
101
+ message: v.message,
102
+ category: 'ESLINT',
103
+ level: v.severity > 1 ? 'FATAL' : 'WARN',
104
+ exceptions: [fileRelPath + '#' + v.line]
105
+ };
106
+ }
107
+ else {
108
+ o.exceptions = [fileRelPath + '#' + v.line, ...o.exceptions];
109
+ }
110
+ violationMap.set(key, o);
111
+ }
112
+ }
113
+ if (f.suppressedMessages.length > 0) {
114
+ for (const v of f.suppressedMessages) {
115
+ const key = 'suppressed' + '-' + v.ruleset + '-' + v.message;
116
+ let o = violationMap.get(key);
117
+ if (!o) {
118
+ o = {
119
+ label: '[SUPPRESSED] ' + v.ruleId,
120
+ message: 'Do Not Supress ' + v.message + ' Please fix it.',
121
+ category: 'ESLINT',
122
+ level: 'WARN',
123
+ exceptions: [fileRelPath + '#' + v.line]
124
+ };
125
+ }
126
+ else {
127
+ o.exceptions = [fileRelPath + '#' + v.line, ...o.exceptions];
128
+ }
129
+ violationMap.set(key, o);
130
+ }
131
+ }
132
+ }
133
+ violations = Array.from(violationMap.values());
134
+ return violations;
135
+ }
136
+ }
137
+ exports.default = EslintScan;
138
+ //# sourceMappingURL=eslint-scan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eslint-scan.js","sourceRoot":"","sources":["../../../src/services/lint/eslint-scan.ts"],"names":[],"mappings":"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"}
@@ -8,17 +8,23 @@ export default class MetadataScan {
8
8
  ignoreFiles: any[];
9
9
  violations: unknown[];
10
10
  logger: Logger;
11
+ apiViolations: any[];
11
12
  scan(sourceFolder: string, minapi: number): Promise<unknown[]>;
12
- /**
13
- * scan json files
14
- */
15
- private scanJSONFiles;
16
13
  /**
17
14
  * parse objects
18
15
  * @param {*} objpath
19
16
  * @param {*} clientname
20
17
  */
21
18
  private scanObjects;
19
+ /**
20
+ * scan api
21
+ * @param sourceFolder
22
+ * @param minapi
23
+ */
22
24
  private scanAPIVersion;
23
25
  private scanAPIVersionByType;
26
+ /**
27
+ * scan json files
28
+ */
29
+ private scanJSONFiles;
24
30
  }
@@ -9,11 +9,13 @@ const fs_1 = require("fs");
9
9
  const path = require("path");
10
10
  const xml2js = require("xml2js");
11
11
  const ignored_files_1 = tslib_1.__importDefault(require("../../utils/ignored-files"));
12
+ const rules_1 = require("./rules");
12
13
  class MetadataScan {
13
14
  constructor(namespace) {
14
15
  this.namespace = undefined;
15
16
  this.ignoreFiles = [];
16
17
  this.violations = [];
18
+ this.apiViolations = [];
17
19
  this.namespace = namespace;
18
20
  }
19
21
  async scan(sourceFolder, minapi) {
@@ -24,24 +26,6 @@ class MetadataScan {
24
26
  await this.scanAPIVersion(sourceFolder, minapi);
25
27
  return this.violations;
26
28
  }
27
- /**
28
- * scan json files
29
- */
30
- async scanJSONFiles(path, minapi) {
31
- const fileContent = (0, fs_1.readFileSync)(path + '/sfdx-project.json');
32
- const obj = JSON.parse(fileContent.toString());
33
- if (minapi > parseInt(obj['sourceApiVersion'])) {
34
- // this.logger.debug(obj["sourceApiVersion"]);
35
- const o = {
36
- label: 'Project source api version not equal to ' + minapi,
37
- message: 'Please update sourceApiVersion to ' + minapi + ' sfdx-project.json',
38
- category: 'API',
39
- level: 'FATAL',
40
- exceptions: ['sfdx-project.json']
41
- };
42
- this.violations.push(o);
43
- }
44
- }
45
29
  /**
46
30
  * parse objects
47
31
  * @param {*} objpath
@@ -120,10 +104,20 @@ class MetadataScan {
120
104
  }
121
105
  }
122
106
  if (found) {
123
- fieldUnderScoreViolations.push(tabname + '.' + fieldname);
107
+ if (!(ignored_files_1.default.skipObjects.includes(tabname) ||
108
+ ignored_files_1.default.skipStandardObjects.includes(tabname) ||
109
+ tabname.match(ignored_files_1.default.skipObjectPrefixes) ||
110
+ tabname.match(ignored_files_1.default.integrationPrefixes))) {
111
+ fieldUnderScoreViolations.push(tabname + '.' + fieldname);
112
+ }
124
113
  }
125
114
  if (tabname.startsWith('tffa__') && !fieldname.startsWith('CZ') && !fieldname.startsWith('cz')) {
126
- fieldCZNameViolations.push(tabname + '.' + fieldname);
115
+ if (!(ignored_files_1.default.skipObjects.includes(tabname) ||
116
+ ignored_files_1.default.skipStandardObjects.includes(tabname) ||
117
+ tabname.match(ignored_files_1.default.skipObjectPrefixes) ||
118
+ tabname.match(ignored_files_1.default.integrationPrefixes))) {
119
+ fieldCZNameViolations.push(tabname + '.' + fieldname);
120
+ }
127
121
  }
128
122
  const xml = (0, fs_1.readFileSync)(fieldFile);
129
123
  try {
@@ -146,66 +140,46 @@ class MetadataScan {
146
140
  }
147
141
  }
148
142
  if (tabViolations.length > 0) {
149
- const o = {
150
- label: 'Custom Objects should have a description',
151
- message: `It is a best practice that Custom Objects have a description.`,
152
- exceptions: tabViolations,
153
- category: 'INTERNAL',
154
- level: 'FATAL'
155
- };
143
+ const o = { ...rules_1.Rules.customrules['CUSTOM_TAB_DESCRIPTION'], exceptions: tabViolations };
156
144
  this.violations.push(o);
157
145
  }
158
146
  if (fieldViolations.length > 0) {
159
- const o = {
160
- label: 'Custom Fields should have a description',
161
- message: `It is a best practice that Custom Fields have a description.`,
162
- exceptions: fieldViolations,
163
- category: 'INTERNAL',
164
- level: 'FATAL'
165
- };
147
+ const o = { ...rules_1.Rules.customrules['CUSTOM_FIELD_DESCRIPTION'], exceptions: fieldViolations };
166
148
  this.violations.push(o);
167
149
  }
168
150
  if (fieldUnderScoreViolations.length > 0) {
169
- const o = {
170
- label: 'Custom fields should not contain underscores.',
171
- message: `It is a best practice that Custom fields should not contain underscores.`,
172
- exceptions: fieldUnderScoreViolations,
173
- category: 'INTERNAL',
174
- level: 'WARN'
175
- };
151
+ const o = { ...rules_1.Rules.customrules['CUSTOM_FIELD_UNDERSCORE'], exceptions: fieldUnderScoreViolations };
176
152
  this.violations.push(o);
177
153
  }
178
154
  if (fieldCZNameViolations.length > 0) {
179
- const o = {
180
- label: 'Custom fields in managed object should start with CZ.',
181
- message: `It is a best practice that Custom fields should start with CZ in a managed object.`,
182
- exceptions: fieldCZNameViolations,
183
- category: 'INTERNAL',
184
- level: 'WARN'
185
- };
155
+ const o = { ...rules_1.Rules.customrules['CUSTOM_FIELD_CZ'], exceptions: fieldCZNameViolations };
186
156
  this.violations.push(o);
187
157
  }
188
158
  if (tableCZNameViolations.length > 0) {
189
- const o = {
190
- label: 'Custom objects should start with CZ.',
191
- message: `It is a best practice that Custom objects should start with CZ to avoid clash with managed package`,
192
- exceptions: tableCZNameViolations,
193
- category: 'INTERNAL',
194
- level: 'WARN'
195
- };
159
+ const o = { ...rules_1.Rules.customrules['CUSTOM_TAB_CZ'], exceptions: tableCZNameViolations };
196
160
  this.violations.push(o);
197
161
  }
198
162
  }
199
- // label: 'Using old Metadata API Version',
200
- // message: `You appear to be using a version of Metadata API less than the minimum specified. Use the --minapi flag to adjust the minimum API version.`,
163
+ /**
164
+ * scan api
165
+ * @param sourceFolder
166
+ * @param minapi
167
+ */
201
168
  async scanAPIVersion(sourceFolder, minapi) {
202
169
  await this.scanAPIVersionByType('ApexClass', sourceFolder, 'app/main/default/classes', minapi);
203
170
  await this.scanAPIVersionByType('ApexClass', sourceFolder, 'app/test/default/classes', minapi);
204
171
  await this.scanAPIVersionByType('ApexTrigger', sourceFolder, 'app/main/default/triggers', minapi);
205
172
  await this.scanAPIVersionByType('ApexPage', sourceFolder, 'app/main/default/pages', minapi);
173
+ if (this.apiViolations.length > 0) {
174
+ const o = {
175
+ ...rules_1.Rules.customrules['MINAPI_VERSION'],
176
+ exceptions: this.apiViolations,
177
+ message: `You appear to be using a version of Metadata API less than the minimum specified. Use the ` + minapi
178
+ };
179
+ this.violations.push(o);
180
+ }
206
181
  }
207
182
  scanAPIVersionByType(type, sourceFolder, basePath, minapi) {
208
- const apiViolations = [];
209
183
  const srcPath = path.join(sourceFolder, basePath);
210
184
  if (!(0, fs_1.existsSync)(srcPath)) {
211
185
  return;
@@ -226,19 +200,24 @@ class MetadataScan {
226
200
  else if (result) {
227
201
  const json = result;
228
202
  if (minapi > parseInt(json[type].apiVersion)) {
229
- apiViolations.push(f);
203
+ this.apiViolations.push(f);
230
204
  }
231
205
  }
232
206
  });
233
207
  }
234
208
  }
235
- if (apiViolations.length > 0) {
209
+ }
210
+ /**
211
+ * scan json files
212
+ */
213
+ async scanJSONFiles(path, minapi) {
214
+ const fileContent = (0, fs_1.readFileSync)(path + '/sfdx-project.json');
215
+ const obj = JSON.parse(fileContent.toString());
216
+ if (minapi > parseInt(obj['sourceApiVersion'])) {
236
217
  const o = {
237
- label: 'Using old Metadata API Version',
238
- message: `You appear to be using a version of Metadata API less than the minimum specified. Use the ` + minapi,
239
- exceptions: apiViolations,
240
- category: 'API',
241
- level: 'FATAL'
218
+ ...rules_1.Rules.customrules['PROJECT_API_VERSION'],
219
+ exceptions: ['sfdx-project.json'],
220
+ message: 'Please update sourceApiVersion to ' + minapi + ' sfdx-project.json'
242
221
  };
243
222
  this.violations.push(o);
244
223
  }
@@ -1 +1 @@
1
- {"version":3,"file":"metadata-scan.js","sourceRoot":"","sources":["../../../src/services/lint/metadata-scan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"metadata-scan.js","sourceRoot":"","sources":["../../../src/services/lint/metadata-scan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ interface Rule {
2
+ category: 'INTERNAL' | 'PMD' | 'ESLINT' | 'API';
3
+ label: string;
4
+ message: string;
5
+ level: 'WARN' | 'FATAL';
6
+ }
7
+ export declare class Rules {
8
+ static customrules: Record<string, Rule>;
9
+ }
10
+ export {};
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Rules = void 0;
4
+ const tslib_1 = require("tslib");
5
+ /**
6
+ * Copyright (c) NCR Terafina
7
+ **/
8
+ const ignored_files_1 = tslib_1.__importDefault(require("../../utils/ignored-files"));
9
+ class Rules {
10
+ }
11
+ exports.Rules = Rules;
12
+ Rules.customrules = {
13
+ APEX_NAME_CONVENTION: {
14
+ label: 'Files violating naming conventions',
15
+ category: 'INTERNAL',
16
+ level: 'FATAL',
17
+ message: 'Classes should' + '\nend with [' + ignored_files_1.default.allowedClassNameListEnd.join(', ') + ']'
18
+ },
19
+ CUSTOM_TAB_DESCRIPTION: {
20
+ label: 'Custom Objects should have a description',
21
+ category: 'INTERNAL',
22
+ level: 'FATAL',
23
+ message: 'It is a best practice that Custom Objects have a description.'
24
+ },
25
+ CUSTOM_FIELD_DESCRIPTION: {
26
+ label: 'Custom Fields should have a description',
27
+ category: 'INTERNAL',
28
+ level: 'FATAL',
29
+ message: 'It is a best practice that Custom Fields have a description'
30
+ },
31
+ CUSTOM_FIELD_UNDERSCORE: {
32
+ label: 'Custom fields should not contain underscores.',
33
+ category: 'INTERNAL',
34
+ level: 'WARN',
35
+ message: 'It is a best practice that Custom fields should not contain underscores.'
36
+ },
37
+ CUSTOM_FIELD_CZ: {
38
+ label: 'Custom fields in managed object should start with CZ.',
39
+ category: 'INTERNAL',
40
+ level: 'WARN',
41
+ message: 'It is a best practice that Custom fields should start with CZ in a managed object.'
42
+ },
43
+ CUSTOM_TAB_CZ: {
44
+ label: 'Custom objects should start with CZ.',
45
+ category: 'INTERNAL',
46
+ level: 'WARN',
47
+ message: 'It is a best practice that Custom objects should start with CZ to avoid clash with managed package'
48
+ },
49
+ MINAPI_VERSION: {
50
+ label: 'Using old Metadata API Version',
51
+ category: 'API',
52
+ level: 'FATAL',
53
+ message: 'You appear to be using a version of Metadata API less than the minimum specified.'
54
+ },
55
+ PROJECT_API_VERSION: {
56
+ label: 'Project source api version using old Metadata API Version',
57
+ category: 'API',
58
+ level: 'FATAL',
59
+ message: 'Please update sourceApiVersion in sfdx-project.json'
60
+ },
61
+ DIRECT_ABSTRACT_CLASS: {
62
+ label: 'Instances of (tffa\\.AbstractRepository\\.|tffa\\.AbstractController\\.|tffa\\.AbstractRESTService\\.)',
63
+ category: 'INTERNAL',
64
+ level: 'FATAL',
65
+ message: 'Do not call methods directly of an abstract class . Extend the abstract class and use methods directly'
66
+ },
67
+ SOQL_REPOSITORY: {
68
+ label: 'Instances of (\\[select |\\[update |\\[upsert |\\[delete |\\bDatabase\\.query\\b|\\bDatabase\\.update\\b|\\bDatabase\\.insert\\b|\\bDatabase\\.upsert\\b|\\bDatabase\\.delete\\b)',
69
+ category: 'INTERNAL',
70
+ level: 'FATAL',
71
+ message: 'Any SOQL should be encapsulated into Repository classes extending tffa.AbstractRepository. Use doQuery method '
72
+ },
73
+ NO_SUPPRESSWARNINGS: {
74
+ label: 'Instances of SuppressWarnings',
75
+ category: 'PMD',
76
+ level: 'WARN',
77
+ message: 'Do not supress PMD warnings , instead fix them '
78
+ },
79
+ NO_SYSTEM_ASSERT_HARDCODING: {
80
+ label: 'Instances of (System\\.assertEquals\\(true\\, true\\)|System\\.assertNotEquals\\(true\\, false\\)|System\\.assertNotEquals\\(false\\, true\\)|System\\.assert\\(true\\))',
81
+ category: 'PMD',
82
+ level: 'FATAL',
83
+ message: 'Apex unit tests should include at least one assertion . Do not hard code values. Use proper variables'
84
+ }
85
+ };
86
+ //# sourceMappingURL=rules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rules.js","sourceRoot":"","sources":["../../../src/services/lint/rules.ts"],"names":[],"mappings":";;;;AAAA;;IAEI;AACJ,sFAAqD;AASrD,MAAa,KAAK;;AAAlB,sBA6EC;AA5Ee,iBAAW,GAAyB;IAChD,oBAAoB,EAAE;QACpB,KAAK,EAAE,oCAAoC;QAC3C,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,OAAO;QACd,OAAO,EAAE,gBAAgB,GAAG,cAAc,GAAG,uBAAY,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG;KACnG;IACD,sBAAsB,EAAE;QACtB,KAAK,EAAE,0CAA0C;QACjD,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,OAAO;QACd,OAAO,EAAE,+DAA+D;KACzE;IACD,wBAAwB,EAAE;QACxB,KAAK,EAAE,yCAAyC;QAChD,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,OAAO;QACd,OAAO,EAAE,6DAA6D;KACvE;IACD,uBAAuB,EAAE;QACvB,KAAK,EAAE,+CAA+C;QACtD,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,MAAM;QACb,OAAO,EAAE,0EAA0E;KACpF;IACD,eAAe,EAAE;QACf,KAAK,EAAE,uDAAuD;QAC9D,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,MAAM;QACb,OAAO,EAAE,oFAAoF;KAC9F;IACD,aAAa,EAAE;QACb,KAAK,EAAE,sCAAsC;QAC7C,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,MAAM;QACb,OAAO,EAAE,oGAAoG;KAC9G;IACD,cAAc,EAAE;QACd,KAAK,EAAE,gCAAgC;QACvC,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,OAAO;QACd,OAAO,EAAE,mFAAmF;KAC7F;IACD,mBAAmB,EAAE;QACnB,KAAK,EAAE,2DAA2D;QAClE,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,OAAO;QACd,OAAO,EAAE,qDAAqD;KAC/D;IACD,qBAAqB,EAAE;QACrB,KAAK,EAAE,wGAAwG;QAC/G,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,OAAO;QACd,OAAO,EAAE,wGAAwG;KAClH;IACD,eAAe,EAAE;QACf,KAAK,EACH,mLAAmL;QACrL,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,OAAO;QACd,OAAO,EAAE,gHAAgH;KAC1H;IACD,mBAAmB,EAAE;QACnB,KAAK,EAAE,+BAA+B;QACtC,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,MAAM;QACb,OAAO,EAAE,iDAAiD;KAC3D;IACD,2BAA2B,EAAE;QAC3B,KAAK,EACH,2KAA2K;QAC7K,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,OAAO;QACd,OAAO,EAAE,uGAAuG;KACjH;CACF,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { Logger } from '@salesforce/core';
2
+ /**
3
+ * Linter executes the stylelint command
4
+ */
5
+ export default class StylelintScan {
6
+ ignoreFiles: any[];
7
+ logger: Logger;
8
+ paths: string[];
9
+ eject(sourceFolder: string): Promise<unknown[]>;
10
+ scan(sourceFolder: string): Promise<any[]>;
11
+ private executeCmd;
12
+ private parseProblems;
13
+ }
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ /**
5
+ * Copyright (c) NCR Terafina
6
+ **/
7
+ const ChildProcess = tslib_1.__importStar(require("child_process"));
8
+ const path = tslib_1.__importStar(require("path"));
9
+ const core_1 = require("@salesforce/core");
10
+ const ignored_files_1 = tslib_1.__importDefault(require("../../utils/ignored-files"));
11
+ /**
12
+ * Linter executes the stylelint command
13
+ */
14
+ class StylelintScan {
15
+ constructor() {
16
+ this.ignoreFiles = [];
17
+ this.paths = ['"ui/**/*.scss"'];
18
+ }
19
+ async eject(sourceFolder) {
20
+ this.logger.warn(sourceFolder);
21
+ return;
22
+ }
23
+ async scan(sourceFolder) {
24
+ this.logger = await core_1.Logger.root();
25
+ this.ignoreFiles.push(...ignored_files_1.default.files);
26
+ this.logger.debug(this.ignoreFiles);
27
+ try {
28
+ const data = await this.executeCmd(sourceFolder);
29
+ const violations = this.parseProblems(data, sourceFolder);
30
+ return violations;
31
+ }
32
+ catch (err) {
33
+ console.error(err);
34
+ return [];
35
+ }
36
+ }
37
+ async executeCmd(sourceFolder) {
38
+ const commandBufferSize = 64;
39
+ const stylelintBinPath = path.join('node_modules', '.bin', 'stylelint');
40
+ const configPath = path.join('scripts', 'stylelint', '.stylelintrc.json');
41
+ const rulesetsArg = this.paths.join(' ');
42
+ const cmd = `"${stylelintBinPath}" ${rulesetsArg} --config ${configPath} -f json`;
43
+ this.logger.info('stylelint Command: ' + cmd);
44
+ const stylelintCmd = ChildProcess.exec(cmd, {
45
+ cwd: sourceFolder,
46
+ maxBuffer: Math.max(commandBufferSize, 1) * 1024 * 1024
47
+ });
48
+ let stdout = '';
49
+ let stderr = '';
50
+ const stylelintPromise = new Promise((resolve, reject) => {
51
+ stylelintCmd.addListener('error', e => {
52
+ this.logger.error('error:' + e);
53
+ reject(e);
54
+ });
55
+ stylelintCmd.addListener('exit', e => {
56
+ if (e !== 0 && e !== 4 && e !== 2) {
57
+ this.logger.error(`Failed Exit Code: ${e}` + stderr);
58
+ reject(stderr);
59
+ }
60
+ else {
61
+ resolve(stdout);
62
+ }
63
+ });
64
+ stylelintCmd.stdout.on('data', (m) => {
65
+ this.logger.info('stdout:' + m);
66
+ stdout += m;
67
+ });
68
+ stylelintCmd.stderr.on('data', (m) => {
69
+ this.logger.error('stderr:' + m);
70
+ stderr += m;
71
+ });
72
+ });
73
+ return stylelintPromise;
74
+ }
75
+ parseProblems(json, sourceFolder) {
76
+ let violations = [];
77
+ this.logger.debug(json);
78
+ if (!json) {
79
+ return violations;
80
+ }
81
+ const p = JSON.parse(json);
82
+ if (!p.length) {
83
+ return violations;
84
+ }
85
+ const violationMap = new Map();
86
+ for (const f of p) {
87
+ const file = f.source;
88
+ const filename = path.basename(file);
89
+ const fileRelPath = path.relative(sourceFolder, file);
90
+ if (this.ignoreFiles.indexOf(filename) >= 0 || this.ignoreFiles.indexOf(file) >= 0 || this.ignoreFiles.indexOf(fileRelPath) >= 0) {
91
+ this.logger.warn('Ignore file ' + filename);
92
+ continue;
93
+ }
94
+ if (f.warnings.length > 0) {
95
+ for (const v of f.warnings) {
96
+ const key = v.ruleset + '-' + v.text;
97
+ let o = violationMap.get(key);
98
+ if (!o) {
99
+ o = {
100
+ label: v.rule,
101
+ message: v.text,
102
+ category: 'STYLELINT',
103
+ level: v.severity === 'error' ? 'FATAL' : 'WARN',
104
+ exceptions: [fileRelPath + '#' + v.line]
105
+ };
106
+ }
107
+ else {
108
+ o.exceptions = [fileRelPath + '#' + v.line, ...o.exceptions];
109
+ }
110
+ violationMap.set(key, o);
111
+ }
112
+ }
113
+ }
114
+ violations = Array.from(violationMap.values());
115
+ return violations;
116
+ }
117
+ }
118
+ exports.default = StylelintScan;
119
+ //# sourceMappingURL=stylelint-scan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stylelint-scan.js","sourceRoot":"","sources":["../../../src/services/lint/stylelint-scan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Copyright (c) NCR Terafina
3
+ **/
4
+ export declare class Constants {
5
+ /**
6
+ * All constants
7
+ */
8
+ static API_VERSION: number;
9
+ }