@nordcraft/search 1.0.68 → 1.0.69
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.
- package/dist/rules/issues/attributes/noReferenceAttributeRule.js +4 -1
- package/dist/rules/issues/attributes/noReferenceAttributeRule.js.map +1 -1
- package/dist/rules/issues/attributes/noReferenceAttributeRule.test.js +36 -0
- package/dist/rules/issues/attributes/noReferenceAttributeRule.test.js.map +1 -1
- package/package.json +3 -3
- package/src/rules/issues/attributes/noReferenceAttributeRule.test.ts +40 -0
- package/src/rules/issues/attributes/noReferenceAttributeRule.ts +6 -1
|
@@ -4,7 +4,10 @@ export const noReferenceAttributeRule = {
|
|
|
4
4
|
level: 'warning',
|
|
5
5
|
category: 'No References',
|
|
6
6
|
visit: (report, args) => {
|
|
7
|
-
if (args.nodeType !== 'component-attribute'
|
|
7
|
+
if (args.nodeType !== 'component-attribute' ||
|
|
8
|
+
// Don't report unused attributes if the component has onAttributeChange actions.
|
|
9
|
+
// The attribute might be used to trigger some logic there.
|
|
10
|
+
(args.component.onAttributeChange?.actions.length ?? 0) > 0) {
|
|
8
11
|
return;
|
|
9
12
|
}
|
|
10
13
|
const { path, component, memo } = args;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"noReferenceAttributeRule.js","sourceRoot":"","sources":["../../../../src/rules/issues/attributes/noReferenceAttributeRule.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAElE,MAAM,CAAC,MAAM,wBAAwB,GAAe;IAClD,IAAI,EAAE,wBAAwB;IAC9B,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,eAAe;IACzB,KAAK,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;QACtB,
|
|
1
|
+
{"version":3,"file":"noReferenceAttributeRule.js","sourceRoot":"","sources":["../../../../src/rules/issues/attributes/noReferenceAttributeRule.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAElE,MAAM,CAAC,MAAM,wBAAwB,GAAe;IAClD,IAAI,EAAE,wBAAwB;IAC9B,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,eAAe;IACzB,KAAK,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;QACtB,IACE,IAAI,CAAC,QAAQ,KAAK,qBAAqB;YACvC,iFAAiF;YACjF,2DAA2D;YAC3D,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,EAC3D,CAAC;YACD,OAAM;QACR,CAAC;QACD,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,IAAI,CAAA;QACtC,MAAM,CAAC,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,CAAC,GAAG,IAAI,CAAA;QACjE,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;YACrC,OAAM;QACR,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,QAAQ,EAAE,GAAG,EAAE;YACjD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAA;YAC/B,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,SAAS,CAAC,mBAAmB,EAAE,EAAE,CAAC;gBAC1D,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,YAAY,EAAE,CAAC;oBAChE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;gBAC5B,CAAC;YACH,CAAC;YAED,OAAO,KAAK,CAAA;QACd,CAAC,CAAC,CAAA;QACF,IAAI,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;YAC5B,OAAM;QACR,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAA;IACpD,CAAC;IACD,KAAK,EAAE;QACL,kBAAkB,EAAE,iBAAiB;KACtC;CACF,CAAA"}
|
|
@@ -125,6 +125,42 @@ describe('find noReferenceAttributeRule', () => {
|
|
|
125
125
|
}));
|
|
126
126
|
expect(problems).toEqual([]);
|
|
127
127
|
});
|
|
128
|
+
test('should ignore unused attributes when the component has onAttributeChange actions', () => {
|
|
129
|
+
const problems = Array.from(searchProject({
|
|
130
|
+
files: {
|
|
131
|
+
components: {
|
|
132
|
+
test: {
|
|
133
|
+
name: 'test',
|
|
134
|
+
nodes: {},
|
|
135
|
+
formulas: {},
|
|
136
|
+
apis: {},
|
|
137
|
+
attributes: {
|
|
138
|
+
'my-attribute': {
|
|
139
|
+
name: 'my-attribute-name',
|
|
140
|
+
testValue: { type: 'value', value: null },
|
|
141
|
+
'@nordcraft/metadata': {
|
|
142
|
+
comments: null,
|
|
143
|
+
},
|
|
144
|
+
},
|
|
145
|
+
},
|
|
146
|
+
variables: {},
|
|
147
|
+
onAttributeChange: {
|
|
148
|
+
trigger: 'onAttributeChange',
|
|
149
|
+
actions: [
|
|
150
|
+
{
|
|
151
|
+
type: 'Custom',
|
|
152
|
+
name: 'Log',
|
|
153
|
+
version: 2,
|
|
154
|
+
},
|
|
155
|
+
],
|
|
156
|
+
},
|
|
157
|
+
},
|
|
158
|
+
},
|
|
159
|
+
},
|
|
160
|
+
rules: [noReferenceAttributeRule],
|
|
161
|
+
}));
|
|
162
|
+
expect(problems).toEqual([]);
|
|
163
|
+
});
|
|
128
164
|
});
|
|
129
165
|
describe('fix noReferenceAttributeRule', () => {
|
|
130
166
|
test('should remove attributes with no references', () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"noReferenceAttributeRule.test.js","sourceRoot":"","sources":["../../../../src/rules/issues/attributes/noReferenceAttributeRule.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"noReferenceAttributeRule.test.js","sourceRoot":"","sources":["../../../../src/rules/issues/attributes/noReferenceAttributeRule.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"homepage": "https://github.com/nordcraftengine/nordcraft",
|
|
7
7
|
"dependencies": {
|
|
8
|
-
"@nordcraft/ssr": "1.0.
|
|
9
|
-
"@nordcraft/core": "1.0.
|
|
8
|
+
"@nordcraft/ssr": "1.0.69",
|
|
9
|
+
"@nordcraft/core": "1.0.69",
|
|
10
10
|
"jsondiffpatch": "0.7.3",
|
|
11
11
|
"postcss": "8.5.6"
|
|
12
12
|
},
|
|
@@ -20,5 +20,5 @@
|
|
|
20
20
|
"test:watch:only": "bun test --watch --only"
|
|
21
21
|
},
|
|
22
22
|
"files": ["dist", "src"],
|
|
23
|
-
"version": "1.0.
|
|
23
|
+
"version": "1.0.69"
|
|
24
24
|
}
|
|
@@ -138,6 +138,46 @@ describe('find noReferenceAttributeRule', () => {
|
|
|
138
138
|
|
|
139
139
|
expect(problems).toEqual([])
|
|
140
140
|
})
|
|
141
|
+
|
|
142
|
+
test('should ignore unused attributes when the component has onAttributeChange actions', () => {
|
|
143
|
+
const problems = Array.from(
|
|
144
|
+
searchProject({
|
|
145
|
+
files: {
|
|
146
|
+
components: {
|
|
147
|
+
test: {
|
|
148
|
+
name: 'test',
|
|
149
|
+
nodes: {},
|
|
150
|
+
formulas: {},
|
|
151
|
+
apis: {},
|
|
152
|
+
attributes: {
|
|
153
|
+
'my-attribute': {
|
|
154
|
+
name: 'my-attribute-name',
|
|
155
|
+
testValue: { type: 'value', value: null },
|
|
156
|
+
'@nordcraft/metadata': {
|
|
157
|
+
comments: null,
|
|
158
|
+
},
|
|
159
|
+
},
|
|
160
|
+
},
|
|
161
|
+
variables: {},
|
|
162
|
+
onAttributeChange: {
|
|
163
|
+
trigger: 'onAttributeChange',
|
|
164
|
+
actions: [
|
|
165
|
+
{
|
|
166
|
+
type: 'Custom',
|
|
167
|
+
name: 'Log',
|
|
168
|
+
version: 2,
|
|
169
|
+
},
|
|
170
|
+
],
|
|
171
|
+
},
|
|
172
|
+
},
|
|
173
|
+
},
|
|
174
|
+
},
|
|
175
|
+
rules: [noReferenceAttributeRule],
|
|
176
|
+
}),
|
|
177
|
+
)
|
|
178
|
+
|
|
179
|
+
expect(problems).toEqual([])
|
|
180
|
+
})
|
|
141
181
|
})
|
|
142
182
|
|
|
143
183
|
describe('fix noReferenceAttributeRule', () => {
|
|
@@ -6,7 +6,12 @@ export const noReferenceAttributeRule: Rule<void> = {
|
|
|
6
6
|
level: 'warning',
|
|
7
7
|
category: 'No References',
|
|
8
8
|
visit: (report, args) => {
|
|
9
|
-
if (
|
|
9
|
+
if (
|
|
10
|
+
args.nodeType !== 'component-attribute' ||
|
|
11
|
+
// Don't report unused attributes if the component has onAttributeChange actions.
|
|
12
|
+
// The attribute might be used to trigger some logic there.
|
|
13
|
+
(args.component.onAttributeChange?.actions.length ?? 0) > 0
|
|
14
|
+
) {
|
|
10
15
|
return
|
|
11
16
|
}
|
|
12
17
|
const { path, component, memo } = args
|