@nordcraft/search 1.0.85 → 1.0.86
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/actions/actionRules.index.js +4 -0
- package/dist/rules/issues/actions/actionRules.index.js.map +1 -1
- package/dist/rules/issues/actions/createActionNameRule.d.ts +5 -1
- package/dist/rules/issues/actions/createActionNameRule.js +6 -2
- package/dist/rules/issues/actions/createActionNameRule.js.map +1 -1
- package/dist/rules/issues/actions/duplicateActionArgumentNameRule.js +8 -1
- package/dist/rules/issues/actions/duplicateActionArgumentNameRule.js.map +1 -1
- package/dist/rules/issues/actions/legacyActionRule.js +18 -8
- package/dist/rules/issues/actions/legacyActionRule.js.map +1 -1
- package/dist/rules/issues/actions/noReferenceProjectActionRule.js +8 -1
- package/dist/rules/issues/actions/noReferenceProjectActionRule.js.map +1 -1
- package/dist/rules/issues/actions/unknownActionArgumentRule.js +23 -6
- package/dist/rules/issues/actions/unknownActionArgumentRule.js.map +1 -1
- package/dist/rules/issues/actions/unknownActionEventRule.js +11 -3
- package/dist/rules/issues/actions/unknownActionEventRule.js.map +1 -1
- package/dist/rules/issues/actions/unknownProjectActionRule.js +8 -1
- package/dist/rules/issues/actions/unknownProjectActionRule.js.map +1 -1
- package/dist/rules/issues/apis/invalidApiParserModeRule.js +8 -1
- package/dist/rules/issues/apis/invalidApiParserModeRule.js.map +1 -1
- package/dist/rules/issues/apis/invalidApiProxyBodySettingRule.js +8 -1
- package/dist/rules/issues/apis/invalidApiProxyBodySettingRule.js.map +1 -1
- package/dist/rules/issues/apis/invalidApiProxyCookieSettingRule.js +8 -1
- package/dist/rules/issues/apis/invalidApiProxyCookieSettingRule.js.map +1 -1
- package/dist/rules/issues/apis/legacyApiRule.js +8 -1
- package/dist/rules/issues/apis/legacyApiRule.js.map +1 -1
- package/dist/rules/issues/apis/noReferenceApiInputRule.js +8 -1
- package/dist/rules/issues/apis/noReferenceApiInputRule.js.map +1 -1
- package/dist/rules/issues/apis/noReferenceApiRule.js +8 -1
- package/dist/rules/issues/apis/noReferenceApiRule.js.map +1 -1
- package/dist/rules/issues/apis/noReferenceApiServiceRule.js +9 -1
- package/dist/rules/issues/apis/noReferenceApiServiceRule.js.map +1 -1
- package/dist/rules/issues/apis/unknownApiInputRule.js +8 -1
- package/dist/rules/issues/apis/unknownApiInputRule.js.map +1 -1
- package/dist/rules/issues/apis/unknownApiRule.js +16 -2
- package/dist/rules/issues/apis/unknownApiRule.js.map +1 -1
- package/dist/rules/issues/apis/unknownApiServiceRule.js +9 -1
- package/dist/rules/issues/apis/unknownApiServiceRule.js.map +1 -1
- package/dist/rules/issues/apis/unknownFetchInputRule.js +9 -1
- package/dist/rules/issues/apis/unknownFetchInputRule.js.map +1 -1
- package/dist/rules/issues/attributes/noReferenceAttributeInInstanceRule.js +9 -2
- package/dist/rules/issues/attributes/noReferenceAttributeInInstanceRule.js.map +1 -1
- package/dist/rules/issues/attributes/noReferenceAttributeRule.js +8 -1
- package/dist/rules/issues/attributes/noReferenceAttributeRule.js.map +1 -1
- package/dist/rules/issues/attributes/unknownAttributeRule.js +8 -1
- package/dist/rules/issues/attributes/unknownAttributeRule.js.map +1 -1
- package/dist/rules/issues/attributes/unknownComponentAttributeRule.js +9 -3
- package/dist/rules/issues/attributes/unknownComponentAttributeRule.js.map +1 -1
- package/dist/rules/issues/components/invalidComponentStructureRule.js +12 -4
- package/dist/rules/issues/components/invalidComponentStructureRule.js.map +1 -1
- package/dist/rules/issues/components/noReferenceComponentRule.js +8 -1
- package/dist/rules/issues/components/noReferenceComponentRule.js.map +1 -1
- package/dist/rules/issues/components/unknownComponentRule.js +8 -1
- package/dist/rules/issues/components/unknownComponentRule.js.map +1 -1
- package/dist/rules/issues/context/noContextConsumersRule.js +7 -1
- package/dist/rules/issues/context/noContextConsumersRule.js.map +1 -1
- package/dist/rules/issues/context/unknownContextFormulaRule.js +10 -3
- package/dist/rules/issues/context/unknownContextFormulaRule.js.map +1 -1
- package/dist/rules/issues/context/unknownContextProviderFormulaRule.js +10 -3
- package/dist/rules/issues/context/unknownContextProviderFormulaRule.js.map +1 -1
- package/dist/rules/issues/context/unknownContextProviderRule.js +8 -1
- package/dist/rules/issues/context/unknownContextProviderRule.js.map +1 -1
- package/dist/rules/issues/dom/createRequiredDirectChildRule.js +11 -4
- package/dist/rules/issues/dom/createRequiredDirectChildRule.js.map +1 -1
- package/dist/rules/issues/dom/createRequiredDirectParentRule.js +11 -4
- package/dist/rules/issues/dom/createRequiredDirectParentRule.js.map +1 -1
- package/dist/rules/issues/dom/createRequiredElementAttributeRule.js +8 -1
- package/dist/rules/issues/dom/createRequiredElementAttributeRule.js.map +1 -1
- package/dist/rules/issues/dom/createRequiredMetaTagRule.js +10 -1
- package/dist/rules/issues/dom/createRequiredMetaTagRule.js.map +1 -1
- package/dist/rules/issues/dom/elementWithoutInteractiveContentRule.js +16 -3
- package/dist/rules/issues/dom/elementWithoutInteractiveContentRule.js.map +1 -1
- package/dist/rules/issues/dom/imageWithoutDimensionRule.js +7 -1
- package/dist/rules/issues/dom/imageWithoutDimensionRule.js.map +1 -1
- package/dist/rules/issues/dom/nonEmptyVoidElementRule.js +8 -1
- package/dist/rules/issues/dom/nonEmptyVoidElementRule.js.map +1 -1
- package/dist/rules/issues/events/duplicateEventTriggerRule.js +8 -1
- package/dist/rules/issues/events/duplicateEventTriggerRule.js.map +1 -1
- package/dist/rules/issues/events/noReferenceEventRule.js +9 -1
- package/dist/rules/issues/events/noReferenceEventRule.js.map +1 -1
- package/dist/rules/issues/events/unknownEventRule.js +8 -1
- package/dist/rules/issues/events/unknownEventRule.js.map +1 -1
- package/dist/rules/issues/events/unknownTriggerEventRule.js +8 -1
- package/dist/rules/issues/events/unknownTriggerEventRule.js.map +1 -1
- package/dist/rules/issues/formulas/duplicateFormulaArgumentNameRule.js +8 -1
- package/dist/rules/issues/formulas/duplicateFormulaArgumentNameRule.js.map +1 -1
- package/dist/rules/issues/formulas/legacyFormulaRule.js +12 -5
- package/dist/rules/issues/formulas/legacyFormulaRule.js.map +1 -1
- package/dist/rules/issues/formulas/noReferenceComponentFormulaRule.js +14 -4
- package/dist/rules/issues/formulas/noReferenceComponentFormulaRule.js.map +1 -1
- package/dist/rules/issues/formulas/noReferenceProjectFormulaRule.js +8 -1
- package/dist/rules/issues/formulas/noReferenceProjectFormulaRule.js.map +1 -1
- package/dist/rules/issues/formulas/unknownComponentFormulaInputRule.js +8 -1
- package/dist/rules/issues/formulas/unknownComponentFormulaInputRule.js.map +1 -1
- package/dist/rules/issues/formulas/unknownFormulaRule.js +8 -1
- package/dist/rules/issues/formulas/unknownFormulaRule.js.map +1 -1
- package/dist/rules/issues/formulas/unknownProjectFormulaInputRule.js +8 -1
- package/dist/rules/issues/formulas/unknownProjectFormulaInputRule.js.map +1 -1
- package/dist/rules/issues/formulas/unknownProjectFormulaRule.js +8 -1
- package/dist/rules/issues/formulas/unknownProjectFormulaRule.js.map +1 -1
- package/dist/rules/issues/formulas/unknownRepeatIndexFormulaRule.js +14 -2
- package/dist/rules/issues/formulas/unknownRepeatIndexFormulaRule.js.map +1 -1
- package/dist/rules/issues/formulas/unknownRepeatItemFormulaRule.js +14 -2
- package/dist/rules/issues/formulas/unknownRepeatItemFormulaRule.js.map +1 -1
- package/dist/rules/issues/logic/noStaticNodeCondition.js +15 -3
- package/dist/rules/issues/logic/noStaticNodeCondition.js.map +1 -1
- package/dist/rules/issues/logic/noUnnecessaryConditionFalsy.js +7 -1
- package/dist/rules/issues/logic/noUnnecessaryConditionFalsy.js.map +1 -1
- package/dist/rules/issues/logic/noUnnecessaryConditionTruthy.js +7 -1
- package/dist/rules/issues/logic/noUnnecessaryConditionTruthy.js.map +1 -1
- package/dist/rules/issues/miscellaneous/noReferenceNodeRule.js +9 -1
- package/dist/rules/issues/miscellaneous/noReferenceNodeRule.js.map +1 -1
- package/dist/rules/issues/miscellaneous/requireExtensionRule.js +7 -1
- package/dist/rules/issues/miscellaneous/requireExtensionRule.js.map +1 -1
- package/dist/rules/issues/miscellaneous/unknownCookieRule.js +8 -1
- package/dist/rules/issues/miscellaneous/unknownCookieRule.js.map +1 -1
- package/dist/rules/issues/routing/duplicateRouteRule.js +16 -6
- package/dist/rules/issues/routing/duplicateRouteRule.js.map +1 -1
- package/dist/rules/issues/routing/duplicateUrlParameterRule.js +16 -2
- package/dist/rules/issues/routing/duplicateUrlParameterRule.js.map +1 -1
- package/dist/rules/issues/routing/unknownSetUrlParameterRule.js +8 -1
- package/dist/rules/issues/routing/unknownSetUrlParameterRule.js.map +1 -1
- package/dist/rules/issues/routing/unknownSetUrlParametersRule.js +8 -1
- package/dist/rules/issues/routing/unknownSetUrlParametersRule.js.map +1 -1
- package/dist/rules/issues/routing/unknownUrlParameterRule.js +8 -1
- package/dist/rules/issues/routing/unknownUrlParameterRule.js.map +1 -1
- package/dist/rules/issues/slots/unknownComponentSlotRule.js +8 -1
- package/dist/rules/issues/slots/unknownComponentSlotRule.js.map +1 -1
- package/dist/rules/issues/style/invalidStyleSyntaxRule.js +9 -1
- package/dist/rules/issues/style/invalidStyleSyntaxRule.js.map +1 -1
- package/dist/rules/issues/style/legacyStyleVariableRule.js +9 -3
- package/dist/rules/issues/style/legacyStyleVariableRule.js.map +1 -1
- package/dist/rules/issues/style/legacyThemeRule.js +7 -1
- package/dist/rules/issues/style/legacyThemeRule.js.map +1 -1
- package/dist/rules/issues/style/noReferenceGlobalCSSVariable.js +8 -1
- package/dist/rules/issues/style/noReferenceGlobalCSSVariable.js.map +1 -1
- package/dist/rules/issues/style/unknownCSSVariable.js +43 -45
- package/dist/rules/issues/style/unknownCSSVariable.js.map +1 -1
- package/dist/rules/issues/style/unknownClassnameRule.js +8 -1
- package/dist/rules/issues/style/unknownClassnameRule.js.map +1 -1
- package/dist/rules/issues/variables/noReferenceVariableRule.js +8 -1
- package/dist/rules/issues/variables/noReferenceVariableRule.js.map +1 -1
- package/dist/rules/issues/variables/unknownVariableRule.js +8 -1
- package/dist/rules/issues/variables/unknownVariableRule.js.map +1 -1
- package/dist/rules/issues/variables/unknownVariableSetterRule.js +8 -1
- package/dist/rules/issues/variables/unknownVariableSetterRule.js.map +1 -1
- package/dist/rules/issues/workflows/duplicateWorkflowParameterRule.js +8 -1
- package/dist/rules/issues/workflows/duplicateWorkflowParameterRule.js.map +1 -1
- package/dist/rules/issues/workflows/noPostNavigateAction.js +8 -1
- package/dist/rules/issues/workflows/noPostNavigateAction.js.map +1 -1
- package/dist/rules/issues/workflows/noReferenceComponentWorkflowRule.js +8 -1
- package/dist/rules/issues/workflows/noReferenceComponentWorkflowRule.js.map +1 -1
- package/dist/rules/issues/workflows/unknownContextProviderWorkflowRule.js +10 -3
- package/dist/rules/issues/workflows/unknownContextProviderWorkflowRule.js.map +1 -1
- package/dist/rules/issues/workflows/unknownContextWorkflowRule.js +10 -3
- package/dist/rules/issues/workflows/unknownContextWorkflowRule.js.map +1 -1
- package/dist/rules/issues/workflows/unknownTriggerWorkflowParameterRule.js +9 -2
- package/dist/rules/issues/workflows/unknownTriggerWorkflowParameterRule.js.map +1 -1
- package/dist/rules/issues/workflows/unknownTriggerWorkflowRule.js +7 -1
- package/dist/rules/issues/workflows/unknownTriggerWorkflowRule.js.map +1 -1
- package/dist/rules/issues/workflows/unknownWorkflowParameterRule.js +9 -2
- package/dist/rules/issues/workflows/unknownWorkflowParameterRule.js.map +1 -1
- package/dist/searchProject.js +2 -1
- package/dist/searchProject.js.map +1 -1
- package/dist/types.d.ts +12 -1
- package/package.json +3 -3
- package/src/rules/issues/actions/actionRules.index.ts +5 -0
- package/src/rules/issues/actions/createActionNameRule.ts +10 -1
- package/src/rules/issues/actions/duplicateActionArgumentNameRule.ts +8 -1
- package/src/rules/issues/actions/legacyActionRule.ts +10 -3
- package/src/rules/issues/actions/noReferenceProjectActionRule.ts +8 -1
- package/src/rules/issues/actions/unknownActionArgumentRule.ts +18 -9
- package/src/rules/issues/actions/unknownActionEventRule.ts +8 -4
- package/src/rules/issues/actions/unknownProjectActionRule.ts +8 -1
- package/src/rules/issues/apis/invalidApiParserModeRule.ts +8 -1
- package/src/rules/issues/apis/invalidApiProxyBodySettingRule.ts +8 -1
- package/src/rules/issues/apis/invalidApiProxyCookieSettingRule.ts +8 -1
- package/src/rules/issues/apis/legacyApiRule.ts +8 -1
- package/src/rules/issues/apis/noReferenceApiInputRule.ts +8 -1
- package/src/rules/issues/apis/noReferenceApiRule.ts +8 -1
- package/src/rules/issues/apis/noReferenceApiServiceRule.ts +9 -1
- package/src/rules/issues/apis/unknownApiInputRule.ts +8 -1
- package/src/rules/issues/apis/unknownApiRule.ts +16 -2
- package/src/rules/issues/apis/unknownApiServiceRule.ts +9 -5
- package/src/rules/issues/apis/unknownFetchInputRule.ts +9 -1
- package/src/rules/issues/attributes/noReferenceAttributeInInstanceRule.ts +9 -2
- package/src/rules/issues/attributes/noReferenceAttributeRule.ts +8 -1
- package/src/rules/issues/attributes/unknownAttributeRule.ts +8 -1
- package/src/rules/issues/attributes/unknownComponentAttributeRule.ts +9 -3
- package/src/rules/issues/components/invalidComponentStructureRule.ts +9 -5
- package/src/rules/issues/components/noReferenceComponentRule.ts +9 -1
- package/src/rules/issues/components/unknownComponentRule.ts +8 -1
- package/src/rules/issues/context/noContextConsumersRule.ts +8 -1
- package/src/rules/issues/context/unknownContextFormulaRule.ts +10 -3
- package/src/rules/issues/context/unknownContextProviderFormulaRule.ts +10 -3
- package/src/rules/issues/context/unknownContextProviderRule.ts +8 -1
- package/src/rules/issues/dom/createRequiredDirectChildRule.ts +11 -4
- package/src/rules/issues/dom/createRequiredDirectParentRule.ts +11 -4
- package/src/rules/issues/dom/createRequiredElementAttributeRule.ts +8 -1
- package/src/rules/issues/dom/createRequiredMetaTagRule.ts +14 -1
- package/src/rules/issues/dom/elementWithoutInteractiveContentRule.ts +26 -3
- package/src/rules/issues/dom/imageWithoutDimensionRule.ts +8 -1
- package/src/rules/issues/dom/nonEmptyVoidElementRule.ts +8 -1
- package/src/rules/issues/events/duplicateEventTriggerRule.ts +8 -1
- package/src/rules/issues/events/noReferenceEventRule.ts +9 -1
- package/src/rules/issues/events/unknownEventRule.ts +8 -1
- package/src/rules/issues/events/unknownTriggerEventRule.ts +8 -1
- package/src/rules/issues/formulas/duplicateFormulaArgumentNameRule.ts +8 -1
- package/src/rules/issues/formulas/legacyFormulaRule.ts +12 -7
- package/src/rules/issues/formulas/noReferenceComponentFormulaRule.ts +12 -5
- package/src/rules/issues/formulas/noReferenceProjectFormulaRule.ts +8 -1
- package/src/rules/issues/formulas/unknownComponentFormulaInputRule.ts +8 -1
- package/src/rules/issues/formulas/unknownFormulaRule.ts +8 -1
- package/src/rules/issues/formulas/unknownProjectFormulaInputRule.ts +8 -1
- package/src/rules/issues/formulas/unknownProjectFormulaRule.ts +8 -1
- package/src/rules/issues/formulas/unknownRepeatIndexFormulaRule.ts +14 -2
- package/src/rules/issues/formulas/unknownRepeatItemFormulaRule.ts +14 -2
- package/src/rules/issues/logic/noStaticNodeCondition.ts +15 -4
- package/src/rules/issues/logic/noUnnecessaryConditionFalsy.ts +8 -1
- package/src/rules/issues/logic/noUnnecessaryConditionTruthy.ts +8 -1
- package/src/rules/issues/miscellaneous/noReferenceNodeRule.ts +9 -1
- package/src/rules/issues/miscellaneous/requireExtensionRule.ts +8 -1
- package/src/rules/issues/miscellaneous/unknownCookieRule.ts +8 -1
- package/src/rules/issues/routing/duplicateRouteRule.ts +18 -6
- package/src/rules/issues/routing/duplicateUrlParameterRule.ts +16 -2
- package/src/rules/issues/routing/unknownSetUrlParameterRule.ts +8 -1
- package/src/rules/issues/routing/unknownSetUrlParametersRule.ts +8 -1
- package/src/rules/issues/routing/unknownUrlParameterRule.ts +8 -1
- package/src/rules/issues/slots/unknownComponentSlotRule.ts +8 -1
- package/src/rules/issues/style/invalidStyleSyntaxRule.ts +9 -1
- package/src/rules/issues/style/legacyStyleVariableRule.ts +9 -3
- package/src/rules/issues/style/legacyThemeRule.ts +7 -1
- package/src/rules/issues/style/noReferenceGlobalCSSVariable.ts +8 -1
- package/src/rules/issues/style/unknownCSSVariable.test.ts +45 -37
- package/src/rules/issues/style/unknownCSSVariable.ts +49 -52
- package/src/rules/issues/style/unknownClassnameRule.ts +8 -1
- package/src/rules/issues/variables/noReferenceVariableRule.ts +8 -1
- package/src/rules/issues/variables/unknownVariableRule.ts +8 -1
- package/src/rules/issues/variables/unknownVariableSetterRule.ts +8 -1
- package/src/rules/issues/workflows/duplicateWorkflowParameterRule.ts +8 -1
- package/src/rules/issues/workflows/noPostNavigateAction.ts +8 -1
- package/src/rules/issues/workflows/noReferenceComponentWorkflowRule.ts +8 -1
- package/src/rules/issues/workflows/unknownContextProviderWorkflowRule.ts +10 -3
- package/src/rules/issues/workflows/unknownContextWorkflowRule.ts +10 -3
- package/src/rules/issues/workflows/unknownTriggerWorkflowParameterRule.ts +9 -2
- package/src/rules/issues/workflows/unknownTriggerWorkflowRule.ts +7 -1
- package/src/rules/issues/workflows/unknownWorkflowParameterRule.ts +9 -2
- package/src/searchProject.ts +2 -1
- package/src/types.ts +12 -1
|
@@ -28,13 +28,24 @@ export const noStaticNodeCondition: Rule<{
|
|
|
28
28
|
if (isStatic) {
|
|
29
29
|
// - if truthy: "Condition is always true, you can safely remove the condition as it will always be rendered."
|
|
30
30
|
// - if falsy: "Condition is always false, you can safely remove the entire node as it will never be rendered."
|
|
31
|
-
report(
|
|
31
|
+
report({
|
|
32
32
|
path,
|
|
33
|
-
{
|
|
33
|
+
info: {
|
|
34
|
+
title:
|
|
35
|
+
Boolean(result) === true
|
|
36
|
+
? `Unnecessary show/hide, value is always truthy`
|
|
37
|
+
: `Unnecessary show/hide, value is always falsy`,
|
|
38
|
+
description:
|
|
39
|
+
Boolean(result) === true
|
|
40
|
+
? `Condition always evaluates to **show** the element. Consider removing the show/hide formula.`
|
|
41
|
+
: `Condition always evaluates to **hide** the element. Consider removing the element node.`,
|
|
42
|
+
},
|
|
43
|
+
details: {
|
|
34
44
|
result,
|
|
35
45
|
},
|
|
36
|
-
|
|
37
|
-
|
|
46
|
+
fixes:
|
|
47
|
+
Boolean(result) === true ? ['remove-condition'] : ['remove-node'],
|
|
48
|
+
})
|
|
38
49
|
}
|
|
39
50
|
},
|
|
40
51
|
fixes: {
|
|
@@ -16,7 +16,14 @@ export const noUnnecessaryConditionFalsy: Rule = {
|
|
|
16
16
|
return isStatic && Boolean(result) === false
|
|
17
17
|
})
|
|
18
18
|
) {
|
|
19
|
-
report(
|
|
19
|
+
report({
|
|
20
|
+
path,
|
|
21
|
+
info: {
|
|
22
|
+
title: 'Unnecessary condition',
|
|
23
|
+
description:
|
|
24
|
+
'**And condition** is always falsy. Consider replacing it with a single *false* node.',
|
|
25
|
+
},
|
|
26
|
+
})
|
|
20
27
|
}
|
|
21
28
|
},
|
|
22
29
|
}
|
|
@@ -21,7 +21,14 @@ export const noUnnecessaryConditionTruthy: Rule = {
|
|
|
21
21
|
return isStatic && Boolean(result) === true
|
|
22
22
|
})
|
|
23
23
|
) {
|
|
24
|
-
report(
|
|
24
|
+
report({
|
|
25
|
+
path,
|
|
26
|
+
info: {
|
|
27
|
+
title: 'Unnecessary condition',
|
|
28
|
+
description:
|
|
29
|
+
'**Or condition** is always truthy. Consider replacing it with a single *true* node.',
|
|
30
|
+
},
|
|
31
|
+
})
|
|
25
32
|
}
|
|
26
33
|
},
|
|
27
34
|
}
|
|
@@ -25,7 +25,15 @@ export const noReferenceNodeRule: Rule<{ node: string }> = {
|
|
|
25
25
|
)
|
|
26
26
|
|
|
27
27
|
if (nodeId !== 'root' && !referencedNodesInComponent.has(nodeId)) {
|
|
28
|
-
report(
|
|
28
|
+
report({
|
|
29
|
+
path,
|
|
30
|
+
info: {
|
|
31
|
+
title: `Orphan node/element was found`,
|
|
32
|
+
description: `A node is declared, but it is not included in any other element, including the root element. This node can safely be removed.`,
|
|
33
|
+
},
|
|
34
|
+
details: { node: nodeId },
|
|
35
|
+
fixes: ['delete-orphan-node'],
|
|
36
|
+
})
|
|
29
37
|
}
|
|
30
38
|
},
|
|
31
39
|
fixes: {
|
|
@@ -16,6 +16,13 @@ export const requireExtensionRule: Rule<{
|
|
|
16
16
|
) {
|
|
17
17
|
return
|
|
18
18
|
}
|
|
19
|
-
report(
|
|
19
|
+
report({
|
|
20
|
+
path,
|
|
21
|
+
info: {
|
|
22
|
+
title: 'Browser plugin recommended',
|
|
23
|
+
description:
|
|
24
|
+
'**Toddle browser plugin** is recommended for working with cookies. [Install extension](https://chromewebstore.google.com/detail/toddle/hfhgjncckomifajhndceigiaiojhlllp?hl=en)',
|
|
25
|
+
},
|
|
26
|
+
})
|
|
20
27
|
},
|
|
21
28
|
}
|
|
@@ -27,7 +27,14 @@ export const unknownCookieRule: Rule<{
|
|
|
27
27
|
}
|
|
28
28
|
const cookie = state.cookiesAvailable?.find((c) => c.name === formula.value)
|
|
29
29
|
if (!cookie) {
|
|
30
|
-
report(
|
|
30
|
+
report({
|
|
31
|
+
path,
|
|
32
|
+
info: {
|
|
33
|
+
title: 'Unknown cookie',
|
|
34
|
+
description: `**${formula.value}** is not found in the browser extension cookies.`,
|
|
35
|
+
},
|
|
36
|
+
details: { name: formula.value },
|
|
37
|
+
})
|
|
31
38
|
}
|
|
32
39
|
},
|
|
33
40
|
}
|
|
@@ -40,12 +40,24 @@ export const duplicateRouteRule: Rule<{
|
|
|
40
40
|
})
|
|
41
41
|
const match = allRoutes.get(getRouteKey(value.route?.path))
|
|
42
42
|
if (match && match.length > 1) {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
type: 'page'
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
43
|
+
const duplicates = match
|
|
44
|
+
.filter((m) => m !== value.name)
|
|
45
|
+
.map((name) => ({ name, type: 'page' as const }))
|
|
46
|
+
report({
|
|
47
|
+
path: [...path, 'route', 'path'],
|
|
48
|
+
info: {
|
|
49
|
+
title: 'Duplicate route declaration',
|
|
50
|
+
description: `The page **${
|
|
51
|
+
value.name
|
|
52
|
+
}** has the same route/path declared as the pages/routes below. Route declarations must be unique.${duplicates
|
|
53
|
+
.map((d) => `\n- ${d.name} (${d.type})`)
|
|
54
|
+
.join('')}`,
|
|
55
|
+
},
|
|
56
|
+
details: {
|
|
57
|
+
name: value.name,
|
|
58
|
+
type: 'page',
|
|
59
|
+
duplicates,
|
|
60
|
+
},
|
|
49
61
|
})
|
|
50
62
|
}
|
|
51
63
|
},
|
|
@@ -17,13 +17,27 @@ export const duplicateUrlParameterRule: Rule<{ name: string }> = {
|
|
|
17
17
|
const pathNames = new Set<string>()
|
|
18
18
|
value.route.path.forEach((p, i) => {
|
|
19
19
|
if (pathNames.has(p.name)) {
|
|
20
|
-
report(
|
|
20
|
+
report({
|
|
21
|
+
path: [...path, 'route', 'path', i],
|
|
22
|
+
info: {
|
|
23
|
+
title: 'Duplicate URL parameter',
|
|
24
|
+
description: `**${p.name}** appears multiple times in the path/query parameters. This may lead to unexpected behavior. Consider consolidating them into a single parameter or renaming them.`,
|
|
25
|
+
},
|
|
26
|
+
details: { name: p.name },
|
|
27
|
+
})
|
|
21
28
|
}
|
|
22
29
|
pathNames.add(p.name)
|
|
23
30
|
})
|
|
24
31
|
Object.keys(value.route.query).forEach((key) => {
|
|
25
32
|
if (pathNames.has(key)) {
|
|
26
|
-
report(
|
|
33
|
+
report({
|
|
34
|
+
path: [...path, 'route', 'query', key],
|
|
35
|
+
info: {
|
|
36
|
+
title: 'Duplicate URL parameter',
|
|
37
|
+
description: `**${key}** appears multiple times in the path/query parameters. This may lead to unexpected behavior. Consider consolidating them into a single parameter or renaming them.`,
|
|
38
|
+
},
|
|
39
|
+
details: { name: key },
|
|
40
|
+
})
|
|
27
41
|
}
|
|
28
42
|
})
|
|
29
43
|
},
|
|
@@ -27,7 +27,14 @@ export const unknownSetUrlParameterRule: Rule<{
|
|
|
27
27
|
)
|
|
28
28
|
const parameterName = args.value.parameter
|
|
29
29
|
if (!isValidParameter(parameterName)) {
|
|
30
|
-
report(
|
|
30
|
+
report({
|
|
31
|
+
path: args.path,
|
|
32
|
+
info: {
|
|
33
|
+
title: 'Unknown URL parameter update',
|
|
34
|
+
description: `**${parameterName}** does not exist as a path- or query-parameter and cannot be set/updated.`,
|
|
35
|
+
},
|
|
36
|
+
details: { name: parameterName },
|
|
37
|
+
})
|
|
31
38
|
}
|
|
32
39
|
},
|
|
33
40
|
}
|
|
@@ -27,7 +27,14 @@ export const unknownSetUrlParametersRule: Rule<{
|
|
|
27
27
|
)
|
|
28
28
|
for (const key of Object.keys(args.value.parameters ?? {})) {
|
|
29
29
|
if (!isValidParameter(key)) {
|
|
30
|
-
report(
|
|
30
|
+
report({
|
|
31
|
+
path: [...args.path, 'parameters', key],
|
|
32
|
+
info: {
|
|
33
|
+
title: 'Unknown URL parameter update',
|
|
34
|
+
description: `**${key}** does not exist as a path- or query-parameter and cannot be set/updated.`,
|
|
35
|
+
},
|
|
36
|
+
details: { name: key },
|
|
37
|
+
})
|
|
31
38
|
}
|
|
32
39
|
}
|
|
33
40
|
},
|
|
@@ -22,7 +22,14 @@ export const unknownUrlParameterRule: Rule<{
|
|
|
22
22
|
!component?.route?.query?.[parameterKey] &&
|
|
23
23
|
!component?.route?.path?.some((p) => p.name === parameterKey)
|
|
24
24
|
) {
|
|
25
|
-
report(
|
|
25
|
+
report({
|
|
26
|
+
path,
|
|
27
|
+
info: {
|
|
28
|
+
title: 'Unknown URL parameter',
|
|
29
|
+
description: `**${parameterKey}** does not exist as a path- or query-parameter. Using an unknown URL parameter will always return *Null*.`,
|
|
30
|
+
},
|
|
31
|
+
details: { name: parameterKey },
|
|
32
|
+
})
|
|
26
33
|
}
|
|
27
34
|
},
|
|
28
35
|
}
|
|
@@ -43,7 +43,14 @@ export const unknownComponentSlotRule: Rule<{ slotName: string }> = {
|
|
|
43
43
|
const usedSlot = childNode?.slot ?? 'default'
|
|
44
44
|
|
|
45
45
|
if (!usableSlots.includes(usedSlot)) {
|
|
46
|
-
report(
|
|
46
|
+
report({
|
|
47
|
+
path: [path[0], path[1], path[2], child],
|
|
48
|
+
info: {
|
|
49
|
+
title: 'Unknown component slot',
|
|
50
|
+
description: `**${usedSlot}** slot name does not exist as a slot on the parent component.`,
|
|
51
|
+
},
|
|
52
|
+
details: { slotName: usedSlot },
|
|
53
|
+
})
|
|
47
54
|
}
|
|
48
55
|
})
|
|
49
56
|
},
|
|
@@ -24,7 +24,15 @@ export const invalidStyleSyntaxRule: Rule<{
|
|
|
24
24
|
},
|
|
25
25
|
)
|
|
26
26
|
if (!valid) {
|
|
27
|
-
report(
|
|
27
|
+
report({
|
|
28
|
+
path,
|
|
29
|
+
info: {
|
|
30
|
+
title: `Invalid style declaration`,
|
|
31
|
+
description: `The style declaration for the property "${value.styleProperty}" is invalid. This can lead to unforeseen styling behavior across other elements. Please fix the style declaration or remove it.`,
|
|
32
|
+
},
|
|
33
|
+
details: { property: value.styleProperty },
|
|
34
|
+
fixes: ['delete-style-property'],
|
|
35
|
+
})
|
|
28
36
|
}
|
|
29
37
|
},
|
|
30
38
|
fixes: {
|
|
@@ -29,9 +29,15 @@ export const legacyStyleVariableRule: Rule<
|
|
|
29
29
|
return
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
report(
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
report({
|
|
33
|
+
path: data.path,
|
|
34
|
+
info: {
|
|
35
|
+
title: `Legacy style variable`,
|
|
36
|
+
description: `Style variable **--${data.value.styleVariable.name}** can be replaced with the newer CSS variable system. Consider removing the style variable and create a new CSS variable with the same name.`,
|
|
37
|
+
},
|
|
38
|
+
details: { name: data.value.styleVariable.name },
|
|
39
|
+
fixes: ['replace-legacy-style-variable'],
|
|
40
|
+
})
|
|
35
41
|
},
|
|
36
42
|
fixes: {
|
|
37
43
|
'replace-legacy-style-variable': replaceLegacyStyleVariable,
|
|
@@ -14,6 +14,12 @@ export const legacyThemeRule: Rule = {
|
|
|
14
14
|
return
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
report(
|
|
17
|
+
report({
|
|
18
|
+
path: data.path,
|
|
19
|
+
info: {
|
|
20
|
+
title: `Legacy theme`,
|
|
21
|
+
description: `You are using an older Nordcraft theme system. Migrate your theme to the newest version to enable multi-theme support and more.`,
|
|
22
|
+
},
|
|
23
|
+
})
|
|
18
24
|
},
|
|
19
25
|
}
|
|
@@ -99,6 +99,13 @@ export const noReferenceGlobalCSSVariableRule: Rule<{
|
|
|
99
99
|
) {
|
|
100
100
|
return
|
|
101
101
|
}
|
|
102
|
-
report(
|
|
102
|
+
report({
|
|
103
|
+
path,
|
|
104
|
+
info: {
|
|
105
|
+
title: `Unused CSS variable`,
|
|
106
|
+
description: `**${value.key}** is never used in any style or other CSS variable. Consider removing it.`,
|
|
107
|
+
},
|
|
108
|
+
details: { name: value.key },
|
|
109
|
+
})
|
|
103
110
|
},
|
|
104
111
|
}
|
|
@@ -171,7 +171,7 @@ describe('unknownCSSVariableRule', () => {
|
|
|
171
171
|
expect(problems[1].details).toEqual({ name: '--undefined-local' })
|
|
172
172
|
})
|
|
173
173
|
|
|
174
|
-
test('should report
|
|
174
|
+
test('should not report when legacy style variables are used', () => {
|
|
175
175
|
const problems = Array.from(
|
|
176
176
|
searchProject({
|
|
177
177
|
files: {
|
|
@@ -190,26 +190,19 @@ describe('unknownCSSVariableRule', () => {
|
|
|
190
190
|
tag: 'div',
|
|
191
191
|
type: 'element',
|
|
192
192
|
attrs: {},
|
|
193
|
-
style:
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
events: {},
|
|
197
|
-
classes: {},
|
|
198
|
-
children: ['child'],
|
|
199
|
-
},
|
|
200
|
-
child: {
|
|
201
|
-
tag: 'div',
|
|
202
|
-
type: 'element',
|
|
203
|
-
attrs: {},
|
|
204
|
-
customProperties: {
|
|
205
|
-
'--child-only-variable': {
|
|
193
|
+
'style-variables': [
|
|
194
|
+
{
|
|
195
|
+
name: 'legacy-variable',
|
|
206
196
|
formula: {
|
|
207
197
|
type: 'value',
|
|
208
|
-
value: '
|
|
198
|
+
value: '10px',
|
|
209
199
|
},
|
|
200
|
+
category: 'spacing',
|
|
210
201
|
},
|
|
202
|
+
],
|
|
203
|
+
style: {
|
|
204
|
+
margin: 'var(--legacy-variable)',
|
|
211
205
|
},
|
|
212
|
-
style: {},
|
|
213
206
|
events: {},
|
|
214
207
|
classes: {},
|
|
215
208
|
children: [],
|
|
@@ -226,10 +219,10 @@ describe('unknownCSSVariableRule', () => {
|
|
|
226
219
|
}),
|
|
227
220
|
)
|
|
228
221
|
|
|
229
|
-
expect(problems).
|
|
222
|
+
expect(problems).toBeEmpty()
|
|
230
223
|
})
|
|
231
224
|
|
|
232
|
-
test('should not report when
|
|
225
|
+
test('should not report when declared in a style', () => {
|
|
233
226
|
const problems = Array.from(
|
|
234
227
|
searchProject({
|
|
235
228
|
files: {
|
|
@@ -248,18 +241,9 @@ describe('unknownCSSVariableRule', () => {
|
|
|
248
241
|
tag: 'div',
|
|
249
242
|
type: 'element',
|
|
250
243
|
attrs: {},
|
|
251
|
-
'style-variables': [
|
|
252
|
-
{
|
|
253
|
-
name: 'legacy-variable',
|
|
254
|
-
formula: {
|
|
255
|
-
type: 'value',
|
|
256
|
-
value: '10px',
|
|
257
|
-
},
|
|
258
|
-
category: 'spacing',
|
|
259
|
-
},
|
|
260
|
-
],
|
|
261
244
|
style: {
|
|
262
|
-
|
|
245
|
+
'--declared-in-style': '10px',
|
|
246
|
+
margin: 'var(--declared-in-style)',
|
|
263
247
|
},
|
|
264
248
|
events: {},
|
|
265
249
|
classes: {},
|
|
@@ -280,14 +264,13 @@ describe('unknownCSSVariableRule', () => {
|
|
|
280
264
|
expect(problems).toBeEmpty()
|
|
281
265
|
})
|
|
282
266
|
|
|
283
|
-
test('should not report when
|
|
267
|
+
test('should not report when a legacy theme exists (no propertyDefinitions)', () => {
|
|
284
268
|
const problems = Array.from(
|
|
285
269
|
searchProject({
|
|
286
270
|
files: {
|
|
287
271
|
themes: {
|
|
288
272
|
Default: {
|
|
289
273
|
fonts: [],
|
|
290
|
-
propertyDefinitions: {},
|
|
291
274
|
},
|
|
292
275
|
},
|
|
293
276
|
formulas: {},
|
|
@@ -300,8 +283,7 @@ describe('unknownCSSVariableRule', () => {
|
|
|
300
283
|
type: 'element',
|
|
301
284
|
attrs: {},
|
|
302
285
|
style: {
|
|
303
|
-
'--
|
|
304
|
-
margin: 'var(--declared-in-style)',
|
|
286
|
+
color: 'var(--legacy-theme-variable)',
|
|
305
287
|
},
|
|
306
288
|
events: {},
|
|
307
289
|
classes: {},
|
|
@@ -322,26 +304,52 @@ describe('unknownCSSVariableRule', () => {
|
|
|
322
304
|
expect(problems).toBeEmpty()
|
|
323
305
|
})
|
|
324
306
|
|
|
325
|
-
test('should not report
|
|
307
|
+
test('should not report if CSS variable is defined in any other component or self', () => {
|
|
326
308
|
const problems = Array.from(
|
|
327
309
|
searchProject({
|
|
328
310
|
files: {
|
|
329
311
|
themes: {
|
|
330
312
|
Default: {
|
|
331
313
|
fonts: [],
|
|
314
|
+
propertyDefinitions: {},
|
|
332
315
|
},
|
|
333
316
|
},
|
|
334
317
|
formulas: {},
|
|
335
318
|
components: {
|
|
336
|
-
|
|
337
|
-
name: '
|
|
319
|
+
componentA: {
|
|
320
|
+
name: 'componentA',
|
|
338
321
|
nodes: {
|
|
339
322
|
root: {
|
|
340
323
|
tag: 'div',
|
|
341
324
|
type: 'element',
|
|
325
|
+
customProperties: {
|
|
326
|
+
'--variable-in-a': {
|
|
327
|
+
formula: { type: 'value', value: 'red' },
|
|
328
|
+
},
|
|
329
|
+
},
|
|
342
330
|
attrs: {},
|
|
343
331
|
style: {
|
|
344
|
-
color: 'var(--
|
|
332
|
+
color: 'var(--variable-in-a)',
|
|
333
|
+
},
|
|
334
|
+
events: {},
|
|
335
|
+
classes: {},
|
|
336
|
+
children: [],
|
|
337
|
+
},
|
|
338
|
+
},
|
|
339
|
+
formulas: {},
|
|
340
|
+
apis: {},
|
|
341
|
+
attributes: {},
|
|
342
|
+
variables: {},
|
|
343
|
+
},
|
|
344
|
+
componentB: {
|
|
345
|
+
name: 'componentB',
|
|
346
|
+
nodes: {
|
|
347
|
+
root: {
|
|
348
|
+
tag: 'div',
|
|
349
|
+
type: 'element',
|
|
350
|
+
attrs: {},
|
|
351
|
+
style: {
|
|
352
|
+
color: 'var(--variable-in-a)',
|
|
345
353
|
},
|
|
346
354
|
events: {},
|
|
347
355
|
classes: {},
|
|
@@ -30,71 +30,68 @@ export const unknownCSSVariableRule: Rule<{
|
|
|
30
30
|
return
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
const localCssVariables = memo(
|
|
36
|
-
`component-css-variables-${componentName}-${nodeName}`,
|
|
33
|
+
const allCssVariableDeclarations = memo(
|
|
34
|
+
`all-css-variables-declarations`,
|
|
37
35
|
() => {
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
return
|
|
48
|
-
}
|
|
36
|
+
const cssVariableKeys = new Set(
|
|
37
|
+
Object.keys(theme.propertyDefinitions ?? {}),
|
|
38
|
+
)
|
|
39
|
+
Object.values(files.components ?? {}).forEach((component) => {
|
|
40
|
+
Object.keys(component?.nodes ?? {}).forEach((nodeKey) => {
|
|
41
|
+
const node = component?.nodes?.[nodeKey]
|
|
42
|
+
if (!node) {
|
|
43
|
+
return
|
|
44
|
+
}
|
|
49
45
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
})
|
|
54
|
-
Object.values(node.variants ?? {}).forEach((variant) => {
|
|
55
|
-
Object.keys(variant.customProperties ?? {}).forEach((varName) => {
|
|
56
|
-
vars.add(varName)
|
|
46
|
+
if (node.type === 'component' || node.type === 'element') {
|
|
47
|
+
Object.keys(node.customProperties ?? {}).forEach((varName) => {
|
|
48
|
+
cssVariableKeys.add(varName)
|
|
57
49
|
})
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
50
|
+
Object.values(node.variants ?? {}).forEach((variant) => {
|
|
51
|
+
Object.keys(variant.customProperties ?? {}).forEach(
|
|
52
|
+
(varName) => {
|
|
53
|
+
cssVariableKeys.add(varName)
|
|
54
|
+
},
|
|
55
|
+
)
|
|
64
56
|
})
|
|
65
|
-
}
|
|
66
57
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
58
|
+
// Also add legacy style variables
|
|
59
|
+
if (node.type === 'element' && node['style-variables']) {
|
|
60
|
+
node['style-variables'].forEach((styleVar) => {
|
|
61
|
+
cssVariableKeys.add(`--${styleVar.name}`)
|
|
62
|
+
})
|
|
71
63
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
Object.keys(
|
|
64
|
+
|
|
65
|
+
// Add if declared in any parent styles object
|
|
66
|
+
Object.keys(node.style ?? {}).forEach((styleKey) => {
|
|
75
67
|
if (styleKey.startsWith('--')) {
|
|
76
|
-
|
|
68
|
+
cssVariableKeys.add(styleKey)
|
|
77
69
|
}
|
|
78
70
|
})
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
visitVars(nodeName.toString())
|
|
91
|
-
return vars
|
|
71
|
+
Object.values(node.variants ?? {}).forEach((variant) => {
|
|
72
|
+
Object.keys(variant.style ?? {}).forEach((styleKey) => {
|
|
73
|
+
if (styleKey.startsWith('--')) {
|
|
74
|
+
cssVariableKeys.add(styleKey)
|
|
75
|
+
}
|
|
76
|
+
})
|
|
77
|
+
})
|
|
78
|
+
}
|
|
79
|
+
})
|
|
80
|
+
})
|
|
81
|
+
return cssVariableKeys
|
|
92
82
|
},
|
|
93
83
|
)
|
|
94
84
|
|
|
95
85
|
for (const varName of vars) {
|
|
96
|
-
if (
|
|
97
|
-
report(
|
|
86
|
+
if (allCssVariableDeclarations.has(varName) === false) {
|
|
87
|
+
report({
|
|
88
|
+
path,
|
|
89
|
+
info: {
|
|
90
|
+
title: `Unknown CSS variable`,
|
|
91
|
+
description: `The CSS variable **${varName}** is not declared in any parent element or in your theme. The CSS variable must be declared in an ancestor element in its component or in your global theme.`,
|
|
92
|
+
},
|
|
93
|
+
details: { name: varName },
|
|
94
|
+
})
|
|
98
95
|
}
|
|
99
96
|
}
|
|
100
97
|
},
|
|
@@ -16,6 +16,13 @@ export const unknownClassnameRule: Rule<{
|
|
|
16
16
|
) {
|
|
17
17
|
return
|
|
18
18
|
}
|
|
19
|
-
report(
|
|
19
|
+
report({
|
|
20
|
+
path,
|
|
21
|
+
info: {
|
|
22
|
+
title: 'Unknown classname',
|
|
23
|
+
description: `**${value.variant.className}** is not defined. Using an unknown classname will have no effect.`,
|
|
24
|
+
},
|
|
25
|
+
details: { name: value.variant.className },
|
|
26
|
+
})
|
|
20
27
|
},
|
|
21
28
|
}
|
|
@@ -32,7 +32,14 @@ export const noReferenceVariableRule: Rule<void> = {
|
|
|
32
32
|
return
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
report(
|
|
35
|
+
report({
|
|
36
|
+
path,
|
|
37
|
+
info: {
|
|
38
|
+
title: 'Unused variable',
|
|
39
|
+
description: `**${variableKey}** is set but never used by any formula. Consider removing it.`,
|
|
40
|
+
},
|
|
41
|
+
fixes: ['delete-variable'],
|
|
42
|
+
})
|
|
36
43
|
},
|
|
37
44
|
fixes: {
|
|
38
45
|
'delete-variable': removeFromPathFix,
|
|
@@ -19,7 +19,14 @@ export const unknownVariableRule: Rule<{
|
|
|
19
19
|
const [, variableKey] = value.path
|
|
20
20
|
const component = files.components[componentName]
|
|
21
21
|
if (!component?.variables?.[variableKey]) {
|
|
22
|
-
report(
|
|
22
|
+
report({
|
|
23
|
+
path,
|
|
24
|
+
info: {
|
|
25
|
+
title: 'Unknown variable',
|
|
26
|
+
description: `**${variableKey}** does not exist. Make sure to define it before usage.`,
|
|
27
|
+
},
|
|
28
|
+
details: { name: variableKey },
|
|
29
|
+
})
|
|
23
30
|
}
|
|
24
31
|
},
|
|
25
32
|
}
|
|
@@ -14,7 +14,14 @@ export const unknownVariableSetterRule: Rule<{
|
|
|
14
14
|
const [, componentName] = path
|
|
15
15
|
const component = files.components[componentName]
|
|
16
16
|
if (!component?.variables?.[value.variable]) {
|
|
17
|
-
report(
|
|
17
|
+
report({
|
|
18
|
+
path,
|
|
19
|
+
info: {
|
|
20
|
+
title: 'Unknown variable setter',
|
|
21
|
+
description: `**${value.variable}** does not exist. Make sure to define it before setting.`,
|
|
22
|
+
},
|
|
23
|
+
details: { name: value.variable },
|
|
24
|
+
})
|
|
18
25
|
}
|
|
19
26
|
},
|
|
20
27
|
}
|