@nordcraft/search 1.0.45 → 1.0.46

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 (38) hide show
  1. package/dist/problems.worker.js +9 -3
  2. package/dist/problems.worker.js.map +1 -1
  3. package/dist/rules/logic/noStaticNodeCondition.js +29 -0
  4. package/dist/rules/logic/noStaticNodeCondition.js.map +1 -0
  5. package/dist/rules/logic/noStaticNodeCondition.test.js +274 -0
  6. package/dist/rules/logic/noStaticNodeCondition.test.js.map +1 -0
  7. package/dist/rules/logic/noUnnecessaryConditionFalsy.js +5 -1
  8. package/dist/rules/logic/noUnnecessaryConditionFalsy.js.map +1 -1
  9. package/dist/rules/logic/noUnnecessaryConditionTruthy.js +8 -4
  10. package/dist/rules/logic/noUnnecessaryConditionTruthy.js.map +1 -1
  11. package/dist/rules/logic/noUnnecessaryConditionTruthy.test.js +33 -4
  12. package/dist/rules/logic/noUnnecessaryConditionTruthy.test.js.map +1 -1
  13. package/dist/rules/noReferenceNodeRule.js +10 -8
  14. package/dist/rules/noReferenceNodeRule.js.map +1 -1
  15. package/dist/rules/noReferenceNodeRule.test.js +1 -1
  16. package/dist/rules/style/invalidStyleSyntaxRule.js +2 -2
  17. package/dist/rules/style/invalidStyleSyntaxRule.test.js +1 -1
  18. package/dist/util/contextlessEvaluateFormula.js +77 -0
  19. package/dist/util/contextlessEvaluateFormula.js.map +1 -0
  20. package/dist/util/contextlessEvaluateFormula.test.js +152 -0
  21. package/dist/util/contextlessEvaluateFormula.test.js.map +1 -0
  22. package/dist/util/removeUnused.fix.js +18 -1
  23. package/dist/util/removeUnused.fix.js.map +1 -1
  24. package/package.json +2 -2
  25. package/src/problems.worker.ts +16 -5
  26. package/src/rules/logic/noStaticNodeCondition.test.ts +290 -0
  27. package/src/rules/logic/noStaticNodeCondition.ts +43 -0
  28. package/src/rules/logic/noUnnecessaryConditionFalsy.ts +5 -4
  29. package/src/rules/logic/noUnnecessaryConditionTruthy.test.ts +37 -4
  30. package/src/rules/logic/noUnnecessaryConditionTruthy.ts +10 -8
  31. package/src/rules/noReferenceNodeRule.test.ts +1 -1
  32. package/src/rules/noReferenceNodeRule.ts +17 -10
  33. package/src/rules/style/invalidStyleSyntaxRule.test.ts +1 -1
  34. package/src/rules/style/invalidStyleSyntaxRule.ts +3 -3
  35. package/src/types.d.ts +3 -0
  36. package/src/util/contextlessEvaluateFormula.test.ts +190 -0
  37. package/src/util/contextlessEvaluateFormula.ts +110 -0
  38. package/src/util/removeUnused.fix.ts +29 -1
@@ -35,6 +35,7 @@ import { unknownFormulaRule } from './rules/formulas/unknownFormulaRule';
35
35
  import { unknownProjectFormulaRule } from './rules/formulas/unknownProjectFormulaRule';
36
36
  import { unknownRepeatIndexFormulaRule } from './rules/formulas/unknownRepeatIndexFormulaRule';
37
37
  import { unknownRepeatItemFormulaRule } from './rules/formulas/unknownRepeatItemFormulaRule';
38
+ import { noStaticNodeCondition } from './rules/logic/noStaticNodeCondition';
38
39
  import { noUnnecessaryConditionFalsy } from './rules/logic/noUnnecessaryConditionFalsy';
39
40
  import { noUnnecessaryConditionTruthy } from './rules/logic/noUnnecessaryConditionTruthy';
40
41
  import { noReferenceNodeRule } from './rules/noReferenceNodeRule';
@@ -113,6 +114,7 @@ const RULES = [
113
114
  noReferenceProjectActionRule,
114
115
  noReferenceProjectFormulaRule,
115
116
  noReferenceVariableRule,
117
+ noStaticNodeCondition,
116
118
  noUnnecessaryConditionFalsy,
117
119
  noUnnecessaryConditionTruthy,
118
120
  requireExtensionRule,
@@ -148,6 +150,10 @@ const RULES = [
148
150
  const respond = (data) => postMessage(data);
149
151
  const findProblems = (data) => {
150
152
  const { files, options = {} } = data;
153
+ const idRespond = (results) => respond({
154
+ id: data.id,
155
+ results,
156
+ });
151
157
  const rules = RULES.filter((rule) => (!options.categories || options.categories.includes(rule.category)) &&
152
158
  (!options.levels || options.levels.includes(rule.level)) &&
153
159
  !options.rulesToExclude?.includes(rule.code));
@@ -169,7 +175,7 @@ const findProblems = (data) => {
169
175
  case 'per-file': {
170
176
  if (fileType !== problem.path[0] || fileName !== problem.path[1]) {
171
177
  if (batch.length > 0) {
172
- respond(batch);
178
+ idRespond(batch);
173
179
  }
174
180
  batch = [];
175
181
  fileType = problem.path[0];
@@ -181,7 +187,7 @@ const findProblems = (data) => {
181
187
  default: {
182
188
  batch.push(problem);
183
189
  if (batch.length >= (options.batchSize ?? 1)) {
184
- respond(batch);
190
+ idRespond(batch);
185
191
  batch = [];
186
192
  }
187
193
  break;
@@ -189,7 +195,7 @@ const findProblems = (data) => {
189
195
  }
190
196
  }
191
197
  // Send the remaining results
192
- respond(batch);
198
+ idRespond(batch);
193
199
  };
194
200
  const fixProblems = (data) => {
195
201
  const { files, options = {}, fixRule } = data;
@@ -1 +1 @@
1
- {"version":3,"file":"problems.worker.js","sourceRoot":"","sources":["../src/problems.worker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"problems.worker.js","sourceRoot":"","sources":["../src/problems.worker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { contextlessEvaluateFormula } from '../../util/contextlessEvaluateFormula';
2
+ import { removeFromPathFix, removeNodeFromPathFix, } from '../../util/removeUnused.fix';
3
+ export const noStaticNodeCondition = {
4
+ code: 'no-static-node-condition',
5
+ level: 'warning',
6
+ category: 'Quality',
7
+ visit: (report, { path: nodePath, value, nodeType }) => {
8
+ if (nodeType !== 'component-node' || !value.condition) {
9
+ return;
10
+ }
11
+ const { isStatic, result } = contextlessEvaluateFormula(value.condition);
12
+ if (isStatic) {
13
+ const conditionPath = [...nodePath, 'condition'];
14
+ // - if truthy: "Condition is always true, you can safely remove the condition as it will always be rendered."
15
+ // - if falsy: "Condition is always false, you can safely remove the entire node as it will never be rendered."
16
+ report(conditionPath, {
17
+ result,
18
+ }, Boolean(result) === true ? ['remove-condition'] : ['remove-node']);
19
+ }
20
+ },
21
+ fixes: {
22
+ 'remove-condition': removeFromPathFix,
23
+ 'remove-node': (({ path, ...data }) => removeNodeFromPathFix({
24
+ path: path.slice(0, -1),
25
+ ...data,
26
+ })),
27
+ },
28
+ };
29
+ //# sourceMappingURL=noStaticNodeCondition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noStaticNodeCondition.js","sourceRoot":"","sources":["../../../src/rules/logic/noStaticNodeCondition.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAA;AAClF,OAAO,EACL,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,6BAA6B,CAAA;AAEpC,MAAM,CAAC,MAAM,qBAAqB,GAE7B;IACH,IAAI,EAAE,0BAA0B;IAChC,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,SAAS;IACnB,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;QACrD,IAAI,QAAQ,KAAK,gBAAgB,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YACtD,OAAM;QACR,CAAC;QAED,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,0BAA0B,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QACxE,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,aAAa,GAAG,CAAC,GAAG,QAAQ,EAAE,WAAW,CAAC,CAAA;YAChD,8GAA8G;YAC9G,+GAA+G;YAC/G,MAAM,CACJ,aAAa,EACb;gBACE,MAAM;aACP,EACD,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAClE,CAAA;QACH,CAAC;IACH,CAAC;IACD,KAAK,EAAE;QACL,kBAAkB,EAAE,iBAAiB;QACrC,aAAa,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CACpC,qBAAqB,CAAC;YACpB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACvB,GAAG,IAAI;SACR,CAAC,CAA0B;KAC/B;CACF,CAAA"}
@@ -0,0 +1,274 @@
1
+ import { describe, expect, test } from 'bun:test';
2
+ import { fixProject } from '../../fixProject';
3
+ import { searchProject } from '../../searchProject';
4
+ import { noStaticNodeCondition } from './noStaticNodeCondition';
5
+ describe('noStaticNodeCondition', () => {
6
+ test('should report node condition that is always truthy', () => {
7
+ const problems = Array.from(searchProject({
8
+ files: {
9
+ components: {
10
+ test: {
11
+ name: 'test',
12
+ nodes: {
13
+ root: {
14
+ type: 'element',
15
+ attrs: {},
16
+ classes: {},
17
+ events: {},
18
+ tag: 'div',
19
+ children: [],
20
+ style: {},
21
+ condition: {
22
+ type: 'value',
23
+ value: true,
24
+ },
25
+ },
26
+ },
27
+ formulas: {},
28
+ apis: {},
29
+ attributes: {},
30
+ variables: {},
31
+ },
32
+ },
33
+ },
34
+ rules: [noStaticNodeCondition],
35
+ }));
36
+ expect(problems).toHaveLength(1);
37
+ expect(problems[0].code).toBe('no-static-node-condition');
38
+ expect(problems[0].details).toEqual({
39
+ result: true,
40
+ });
41
+ expect(problems[0].fixes).toEqual(['remove-condition']);
42
+ expect(problems[0].path).toEqual([
43
+ 'components',
44
+ 'test',
45
+ 'nodes',
46
+ 'root',
47
+ 'condition',
48
+ ]);
49
+ });
50
+ test('should report node condition that is always falsy', () => {
51
+ const problems = Array.from(searchProject({
52
+ files: {
53
+ components: {
54
+ test: {
55
+ name: 'test',
56
+ nodes: {
57
+ root: {
58
+ type: 'element',
59
+ attrs: {},
60
+ classes: {},
61
+ events: {},
62
+ tag: 'div',
63
+ children: [],
64
+ style: {},
65
+ condition: {
66
+ type: 'value',
67
+ value: false,
68
+ },
69
+ },
70
+ },
71
+ formulas: {},
72
+ apis: {},
73
+ attributes: {},
74
+ variables: {},
75
+ },
76
+ },
77
+ },
78
+ rules: [noStaticNodeCondition],
79
+ }));
80
+ expect(problems).toHaveLength(1);
81
+ expect(problems[0].code).toBe('no-static-node-condition');
82
+ expect(problems[0].details).toEqual({
83
+ result: false,
84
+ });
85
+ });
86
+ test('should not report node condition that is dynamic', () => {
87
+ const problems = Array.from(searchProject({
88
+ files: {
89
+ components: {
90
+ test: {
91
+ name: 'test',
92
+ nodes: {
93
+ root: {
94
+ type: 'element',
95
+ attrs: {},
96
+ classes: {},
97
+ events: {},
98
+ tag: 'div',
99
+ children: [],
100
+ style: {},
101
+ condition: {
102
+ type: 'apply',
103
+ name: 'randomNumber',
104
+ arguments: [],
105
+ },
106
+ },
107
+ },
108
+ formulas: {},
109
+ apis: {},
110
+ attributes: {},
111
+ variables: {},
112
+ },
113
+ },
114
+ },
115
+ rules: [noStaticNodeCondition],
116
+ }));
117
+ expect(problems).toHaveLength(0);
118
+ });
119
+ test('should fix static truthy condition by removing the condition', () => {
120
+ const files = {
121
+ components: {
122
+ test: {
123
+ name: 'test',
124
+ nodes: {
125
+ root: {
126
+ type: 'element',
127
+ attrs: {},
128
+ classes: {},
129
+ events: {},
130
+ tag: 'div',
131
+ children: [],
132
+ style: {},
133
+ condition: {
134
+ type: 'value',
135
+ value: true,
136
+ },
137
+ },
138
+ },
139
+ formulas: {},
140
+ apis: {},
141
+ attributes: {},
142
+ variables: {},
143
+ },
144
+ },
145
+ };
146
+ const fixedFiles = fixProject({
147
+ files,
148
+ rule: noStaticNodeCondition,
149
+ fixType: 'remove-condition',
150
+ });
151
+ expect(fixedFiles).toMatchInlineSnapshot(`
152
+ {
153
+ "components": {
154
+ "test": {
155
+ "apis": {},
156
+ "attributes": {},
157
+ "formulas": {},
158
+ "name": "test",
159
+ "nodes": {
160
+ "root": {
161
+ "attrs": {},
162
+ "children": [],
163
+ "classes": {},
164
+ "events": {},
165
+ "style": {},
166
+ "tag": "div",
167
+ "type": "element",
168
+ },
169
+ },
170
+ "variables": {},
171
+ },
172
+ },
173
+ }
174
+ `);
175
+ });
176
+ test("should fix static falsy condition by removing the node and any parents' references to it", () => {
177
+ const files = {
178
+ components: {
179
+ test: {
180
+ name: 'test',
181
+ nodes: {
182
+ root: {
183
+ type: 'element',
184
+ attrs: {},
185
+ classes: {},
186
+ events: {},
187
+ tag: 'div',
188
+ children: ['alwaysHiddenElement', 'sometimesVisibleElement'],
189
+ style: {},
190
+ },
191
+ alwaysHiddenElement: {
192
+ type: 'element',
193
+ attrs: {},
194
+ classes: {},
195
+ events: {},
196
+ tag: 'div',
197
+ children: [],
198
+ style: {},
199
+ condition: {
200
+ type: 'value',
201
+ value: false,
202
+ },
203
+ },
204
+ sometimesVisibleElement: {
205
+ type: 'element',
206
+ attrs: {},
207
+ classes: {},
208
+ events: {},
209
+ tag: 'div',
210
+ children: [],
211
+ style: {},
212
+ condition: {
213
+ type: 'path',
214
+ path: ['Variables', 'maybe'],
215
+ },
216
+ },
217
+ },
218
+ formulas: {},
219
+ apis: {},
220
+ attributes: {},
221
+ variables: {},
222
+ },
223
+ },
224
+ };
225
+ const fixedFiles = fixProject({
226
+ files,
227
+ rule: noStaticNodeCondition,
228
+ fixType: 'remove-node',
229
+ });
230
+ expect(fixedFiles).toMatchInlineSnapshot(`
231
+ {
232
+ "components": {
233
+ "test": {
234
+ "apis": {},
235
+ "attributes": {},
236
+ "formulas": {},
237
+ "name": "test",
238
+ "nodes": {
239
+ "root": {
240
+ "attrs": {},
241
+ "children": [
242
+ "sometimesVisibleElement",
243
+ ],
244
+ "classes": {},
245
+ "events": {},
246
+ "style": {},
247
+ "tag": "div",
248
+ "type": "element",
249
+ },
250
+ "sometimesVisibleElement": {
251
+ "attrs": {},
252
+ "children": [],
253
+ "classes": {},
254
+ "condition": {
255
+ "path": [
256
+ "Variables",
257
+ "maybe",
258
+ ],
259
+ "type": "path",
260
+ },
261
+ "events": {},
262
+ "style": {},
263
+ "tag": "div",
264
+ "type": "element",
265
+ },
266
+ },
267
+ "variables": {},
268
+ },
269
+ },
270
+ }
271
+ `);
272
+ });
273
+ });
274
+ //# sourceMappingURL=noStaticNodeCondition.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noStaticNodeCondition.test.js","sourceRoot":"","sources":["../../../src/rules/logic/noStaticNodeCondition.test.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { contextlessEvaluateFormula } from '../../util/contextlessEvaluateFormula';
1
2
  export const noUnnecessaryConditionFalsy = {
2
3
  code: 'no-unnecessary-condition-falsy',
3
4
  level: 'info',
@@ -6,7 +7,10 @@ export const noUnnecessaryConditionFalsy = {
6
7
  if (nodeType !== 'formula' || value.type !== 'and') {
7
8
  return;
8
9
  }
9
- if (value.arguments.some((arg) => arg.formula.type === 'value' && Boolean(arg.formula.value) === false)) {
10
+ if (value.arguments.some((arg) => {
11
+ const { result, isStatic } = contextlessEvaluateFormula(arg.formula);
12
+ return isStatic && Boolean(result) === false;
13
+ })) {
10
14
  report(path);
11
15
  }
12
16
  },
@@ -1 +1 @@
1
- {"version":3,"file":"noUnnecessaryConditionFalsy.js","sourceRoot":"","sources":["../../../src/rules/logic/noUnnecessaryConditionFalsy.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,2BAA2B,GAAS;IAC/C,IAAI,EAAE,gCAAgC;IACtC,KAAK,EAAE,MAAM;IACb,QAAQ,EAAE,SAAS;IACnB,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC3C,IAAI,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YACnD,OAAM;QACR,CAAC;QAED,IACE,KAAK,CAAC,SAAS,CAAC,IAAI,CAClB,CAAC,GAAG,EAAE,EAAE,CACN,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,CACvE,EACD,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,CAAA;QACd,CAAC;IACH,CAAC;CACF,CAAA"}
1
+ {"version":3,"file":"noUnnecessaryConditionFalsy.js","sourceRoot":"","sources":["../../../src/rules/logic/noUnnecessaryConditionFalsy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAA;AAElF,MAAM,CAAC,MAAM,2BAA2B,GAAS;IAC/C,IAAI,EAAE,gCAAgC;IACtC,KAAK,EAAE,MAAM;IACb,QAAQ,EAAE,SAAS;IACnB,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC3C,IAAI,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YACnD,OAAM;QACR,CAAC;QAED,IACE,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YAC3B,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,0BAA0B,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YACpE,OAAO,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,CAAA;QAC9C,CAAC,CAAC,EACF,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,CAAA;QACd,CAAC;IACH,CAAC;CACF,CAAA"}
@@ -1,3 +1,4 @@
1
+ import { contextlessEvaluateFormula } from '../../util/contextlessEvaluateFormula';
1
2
  export const noUnnecessaryConditionTruthy = {
2
3
  code: 'no-unnecessary-condition-truthy',
3
4
  level: 'info',
@@ -6,11 +7,14 @@ export const noUnnecessaryConditionTruthy = {
6
7
  if (nodeType !== 'formula' || value.type !== 'or') {
7
8
  return;
8
9
  }
9
- if (value.arguments.some((arg) => (arg.formula.type === 'value' &&
10
- Boolean(arg.formula.value) === true) ||
10
+ if (value.arguments.some((arg) => {
11
11
  // Objects and arrays, even empty ones, are always truthy
12
- arg.formula.type === 'object' ||
13
- arg.formula.type === 'array')) {
12
+ if (arg.formula.type === 'object' || arg.formula.type === 'array') {
13
+ return true;
14
+ }
15
+ const { result, isStatic } = contextlessEvaluateFormula(arg.formula);
16
+ return isStatic && Boolean(result) === true;
17
+ })) {
14
18
  report(path);
15
19
  }
16
20
  },
@@ -1 +1 @@
1
- {"version":3,"file":"noUnnecessaryConditionTruthy.js","sourceRoot":"","sources":["../../../src/rules/logic/noUnnecessaryConditionTruthy.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,4BAA4B,GAAS;IAChD,IAAI,EAAE,iCAAiC;IACvC,KAAK,EAAE,MAAM;IACb,QAAQ,EAAE,SAAS;IACnB,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC3C,IAAI,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YAClD,OAAM;QACR,CAAC;QAED,IACE,KAAK,CAAC,SAAS,CAAC,IAAI,CAClB,CAAC,GAAG,EAAE,EAAE,CACN,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO;YAC3B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;YACtC,yDAAyD;YACzD,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ;YAC7B,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,CAC/B,EACD,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,CAAA;QACd,CAAC;IACH,CAAC;CACF,CAAA"}
1
+ {"version":3,"file":"noUnnecessaryConditionTruthy.js","sourceRoot":"","sources":["../../../src/rules/logic/noUnnecessaryConditionTruthy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAA;AAElF,MAAM,CAAC,MAAM,4BAA4B,GAAS;IAChD,IAAI,EAAE,iCAAiC;IACvC,KAAK,EAAE,MAAM;IACb,QAAQ,EAAE,SAAS;IACnB,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC3C,IAAI,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YAClD,OAAM;QACR,CAAC;QAED,IACE,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YAC3B,yDAAyD;YACzD,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAClE,OAAO,IAAI,CAAA;YACb,CAAC;YAED,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,0BAA0B,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YACpE,OAAO,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,CAAA;QAC7C,CAAC,CAAC,EACF,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,CAAA;QACd,CAAC;IACH,CAAC;CACF,CAAA"}
@@ -30,7 +30,37 @@ describe('noUnnecessaryConditionTruthy', () => {
30
30
  },
31
31
  ],
32
32
  },
33
- test2: {
33
+ },
34
+ classes: {},
35
+ events: {},
36
+ tag: 'div',
37
+ children: [],
38
+ style: {},
39
+ },
40
+ },
41
+ formulas: {},
42
+ apis: {},
43
+ attributes: {},
44
+ variables: {},
45
+ },
46
+ },
47
+ },
48
+ rules: [noUnnecessaryConditionTruthy],
49
+ }));
50
+ expect(problems).toHaveLength(1);
51
+ expect(problems[0].code).toBe('no-unnecessary-condition-truthy');
52
+ });
53
+ test('should report unnecessary truthy conditions when a value is of type object or array as they are always consider truthy', () => {
54
+ const problems = Array.from(searchProject({
55
+ files: {
56
+ components: {
57
+ test: {
58
+ name: 'test',
59
+ nodes: {
60
+ root: {
61
+ type: 'element',
62
+ attrs: {
63
+ test1: {
34
64
  type: 'or',
35
65
  arguments: [
36
66
  {
@@ -41,7 +71,7 @@ describe('noUnnecessaryConditionTruthy', () => {
41
71
  },
42
72
  ],
43
73
  },
44
- test3: {
74
+ test2: {
45
75
  type: 'or',
46
76
  arguments: [
47
77
  {
@@ -69,10 +99,9 @@ describe('noUnnecessaryConditionTruthy', () => {
69
99
  },
70
100
  rules: [noUnnecessaryConditionTruthy],
71
101
  }));
72
- expect(problems).toHaveLength(3);
102
+ expect(problems).toHaveLength(2);
73
103
  expect(problems[0].code).toBe('no-unnecessary-condition-truthy');
74
104
  expect(problems[1].code).toBe('no-unnecessary-condition-truthy');
75
- expect(problems[2].code).toBe('no-unnecessary-condition-truthy');
76
105
  });
77
106
  test('should not report necessary truthy conditions', () => {
78
107
  const problems = Array.from(searchProject({
@@ -1 +1 @@
1
- {"version":3,"file":"noUnnecessaryConditionTruthy.test.js","sourceRoot":"","sources":["../../../src/rules/logic/noUnnecessaryConditionTruthy.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"noUnnecessaryConditionTruthy.test.js","sourceRoot":"","sources":["../../../src/rules/logic/noUnnecessaryConditionTruthy.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAA;AAE7E,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,IAAI,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACvD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CACzB,aAAa,CAAC;YACZ,KAAK,EAAE;gBACL,UAAU,EAAE;oBACV,IAAI,EAAE;wBACJ,IAAI,EAAE,MAAM;wBACZ,KAAK,EAAE;4BACL,IAAI,EAAE;gCACJ,IAAI,EAAE,SAAS;gCACf,KAAK,EAAE;oCACL,IAAI,EAAE;wCACJ,IAAI,EAAE,IAAI;wCACV,SAAS,EAAE;4CACT;gDACE,OAAO,EAAE;oDACP,IAAI,EAAE,OAAO;oDACb,IAAI,EAAE,OAAO;oDACb,SAAS,EAAE,EAAE;iDACd;6CACF;4CACD;gDACE,OAAO,EAAE;oDACP,IAAI,EAAE,OAAO;oDACb,KAAK,EAAE,IAAI;iDACZ;6CACF;yCACF;qCACF;iCACF;gCACD,OAAO,EAAE,EAAE;gCACX,MAAM,EAAE,EAAE;gCACV,GAAG,EAAE,KAAK;gCACV,QAAQ,EAAE,EAAE;gCACZ,KAAK,EAAE,EAAE;6BACV;yBACF;wBACD,QAAQ,EAAE,EAAE;wBACZ,IAAI,EAAE,EAAE;wBACR,UAAU,EAAE,EAAE;wBACd,SAAS,EAAE,EAAE;qBACd;iBACF;aACF;YACD,KAAK,EAAE,CAAC,4BAA4B,CAAC;SACtC,CAAC,CACH,CAAA;QAED,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QAChC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAA;IAClE,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,wHAAwH,EAAE,GAAG,EAAE;QAClI,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CACzB,aAAa,CAAC;YACZ,KAAK,EAAE;gBACL,UAAU,EAAE;oBACV,IAAI,EAAE;wBACJ,IAAI,EAAE,MAAM;wBACZ,KAAK,EAAE;4BACL,IAAI,EAAE;gCACJ,IAAI,EAAE,SAAS;gCACf,KAAK,EAAE;oCACL,KAAK,EAAE;wCACL,IAAI,EAAE,IAAI;wCACV,SAAS,EAAE;4CACT;gDACE,OAAO,EAAE;oDACP,IAAI,EAAE,QAAQ;oDACd,SAAS,EAAE,EAAE;iDACd;6CACF;yCACF;qCACF;oCACD,KAAK,EAAE;wCACL,IAAI,EAAE,IAAI;wCACV,SAAS,EAAE;4CACT;gDACE,OAAO,EAAE;oDACP,IAAI,EAAE,OAAO;oDACb,SAAS,EAAE,EAAE;iDACd;6CACF;yCACF;qCACF;iCACF;gCACD,OAAO,EAAE,EAAE;gCACX,MAAM,EAAE,EAAE;gCACV,GAAG,EAAE,KAAK;gCACV,QAAQ,EAAE,EAAE;gCACZ,KAAK,EAAE,EAAE;6BACV;yBACF;wBACD,QAAQ,EAAE,EAAE;wBACZ,IAAI,EAAE,EAAE;wBACR,UAAU,EAAE,EAAE;wBACd,SAAS,EAAE,EAAE;qBACd;iBACF;aACF;YACD,KAAK,EAAE,CAAC,4BAA4B,CAAC;SACtC,CAAC,CACH,CAAA;QAED,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QAChC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAA;QAChE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAA;IAClE,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACzD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CACzB,aAAa,CAAC;YACZ,KAAK,EAAE;gBACL,UAAU,EAAE;oBACV,IAAI,EAAE;wBACJ,IAAI,EAAE,MAAM;wBACZ,KAAK,EAAE;4BACL,IAAI,EAAE;gCACJ,IAAI,EAAE,SAAS;gCACf,KAAK,EAAE;oCACL,IAAI,EAAE;wCACJ,IAAI,EAAE,IAAI;wCACV,SAAS,EAAE;4CACT;gDACE,OAAO,EAAE;oDACP,IAAI,EAAE,OAAO;oDACb,IAAI,EAAE,OAAO;oDACb,SAAS,EAAE,EAAE;iDACd;6CACF;yCACF;qCACF;iCACF;gCACD,OAAO,EAAE,EAAE;gCACX,MAAM,EAAE,EAAE;gCACV,GAAG,EAAE,KAAK;gCACV,QAAQ,EAAE,EAAE;gCACZ,KAAK,EAAE,EAAE;6BACV;yBACF;wBACD,QAAQ,EAAE,EAAE;wBACZ,IAAI,EAAE,EAAE;wBACR,UAAU,EAAE,EAAE;wBACd,SAAS,EAAE,EAAE;qBACd;iBACF;aACF;YACD,KAAK,EAAE,CAAC,4BAA4B,CAAC;SACtC,CAAC,CACH,CAAA;QAED,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;IAClC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -4,19 +4,21 @@ export const noReferenceNodeRule = {
4
4
  level: 'warning',
5
5
  category: 'No References',
6
6
  visit: (report, args) => {
7
- if (args.nodeType !== 'component') {
7
+ if (args.nodeType !== 'component-node') {
8
8
  return;
9
9
  }
10
- const { path, value: component } = args;
11
- const referencedNodes = new Set(Object.values(component.nodes).flatMap((node) => node.children ?? []));
12
- for (const key of Object.keys(component.nodes)) {
13
- if (key !== 'root' && !referencedNodes.has(key)) {
14
- report([...path, 'nodes', key], { node: key }, ['delete orphan node']);
15
- }
10
+ const { path, component } = args;
11
+ const nodeId = path.at(-1);
12
+ if (typeof nodeId !== 'string') {
13
+ return;
14
+ }
15
+ const referencedNodesInComponent = args.memo(`node-references-${component.name}`, () => new Set(Object.values(component.nodes).flatMap((node) => node.children ?? [])));
16
+ if (nodeId !== 'root' && !referencedNodesInComponent.has(nodeId)) {
17
+ report(path, { node: nodeId }, ['delete-orphan-node']);
16
18
  }
17
19
  },
18
20
  fixes: {
19
- 'delete orphan node': removeFromPathFix,
21
+ 'delete-orphan-node': removeFromPathFix,
20
22
  },
21
23
  };
22
24
  //# sourceMappingURL=noReferenceNodeRule.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"noReferenceNodeRule.js","sourceRoot":"","sources":["../../src/rules/noReferenceNodeRule.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAE5D,MAAM,CAAC,MAAM,mBAAmB,GAA2B;IACzD,IAAI,EAAE,mBAAmB;IACzB,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,eAAe;IACzB,KAAK,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;QACtB,IAAI,IAAI,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;YAClC,OAAM;QACR,CAAC;QACD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI,CAAA;QACvC,MAAM,eAAe,GAAG,IAAI,GAAG,CAC7B,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CACtE,CAAA;QACD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/C,IAAI,GAAG,KAAK,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChD,MAAM,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAA;YACxE,CAAC;QACH,CAAC;IACH,CAAC;IACD,KAAK,EAAE;QACL,oBAAoB,EAAE,iBAAiB;KACxC;CACF,CAAA"}
1
+ {"version":3,"file":"noReferenceNodeRule.js","sourceRoot":"","sources":["../../src/rules/noReferenceNodeRule.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAE5D,MAAM,CAAC,MAAM,mBAAmB,GAA2B;IACzD,IAAI,EAAE,mBAAmB;IACzB,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,eAAe;IACzB,KAAK,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;QACtB,IAAI,IAAI,CAAC,QAAQ,KAAK,gBAAgB,EAAE,CAAC;YACvC,OAAM;QACR,CAAC;QACD,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,IAAI,CAAA;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QAC1B,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,OAAM;QACR,CAAC;QACD,MAAM,0BAA0B,GAAG,IAAI,CAAC,IAAI,CAC1C,mBAAmB,SAAS,CAAC,IAAI,EAAE,EACnC,GAAG,EAAE,CACH,IAAI,GAAG,CACL,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CACtE,CACJ,CAAA;QAED,IAAI,MAAM,KAAK,MAAM,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACjE,MAAM,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAA;QACxD,CAAC;IACH,CAAC;IACD,KAAK,EAAE;QACL,oBAAoB,EAAE,iBAAiB;KACxC;CACF,CAAA"}
@@ -120,7 +120,7 @@ describe('fix noReferenceNodeRule', () => {
120
120
  const fixedFiles = fixProject({
121
121
  files,
122
122
  rule: noReferenceNodeRule,
123
- fixType: 'delete orphan node',
123
+ fixType: 'delete-orphan-node',
124
124
  });
125
125
  expect(Object.keys(fixedFiles.components.test.nodes)).toEqual([
126
126
  'root',
@@ -18,11 +18,11 @@ export const invalidStyleSyntaxRule = {
18
18
  }
19
19
  });
20
20
  if (!valid) {
21
- report(path, { property: value.styleProperty }, ['delete style property']);
21
+ report(path, { property: value.styleProperty }, ['delete-style-property']);
22
22
  }
23
23
  },
24
24
  fixes: {
25
- 'delete style property': removeFromPathFix,
25
+ 'delete-style-property': removeFromPathFix,
26
26
  },
27
27
  };
28
28
  //# sourceMappingURL=invalidStyleSyntaxRule.js.map
@@ -85,7 +85,7 @@ describe('fix invalidStyleSyntaxRule', () => {
85
85
  const fixedFiles = fixProject({
86
86
  files,
87
87
  rule: invalidStyleSyntaxRule,
88
- fixType: 'delete style property',
88
+ fixType: 'delete-style-property',
89
89
  });
90
90
  expect(fixedFiles.components.test.nodes.root.style)
91
91
  .toMatchInlineSnapshot(`