@nordcraft/search 1.0.85 → 1.0.87
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/createStaticSizeConstraintRule.d.ts +5 -0
- package/dist/rules/issues/miscellaneous/createStaticSizeConstraintRule.js +74 -0
- package/dist/rules/issues/miscellaneous/createStaticSizeConstraintRule.js.map +1 -0
- package/dist/rules/issues/miscellaneous/miscRules.index.d.ts +3 -0
- package/dist/rules/issues/miscellaneous/miscRules.index.js +10 -1
- package/dist/rules/issues/miscellaneous/miscRules.index.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 +9 -2
- 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 +13 -2
- 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/createStaticSizeConstraintRule.test.ts +153 -0
- package/src/rules/issues/miscellaneous/createStaticSizeConstraintRule.ts +90 -0
- package/src/rules/issues/miscellaneous/miscRules.index.ts +10 -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 +9 -2
- 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 +22 -10
|
@@ -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
|
}
|
|
@@ -12,7 +12,7 @@ export const unknownComponentSlotRule: Rule<{ slotName: string }> = {
|
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
// We only want to check the immediate children of a "sub component"
|
|
15
|
-
if (value.type !== 'component' || value
|
|
15
|
+
if (value.type !== 'component' || (value?.children ?? []).length === 0) {
|
|
16
16
|
return
|
|
17
17
|
}
|
|
18
18
|
|
|
@@ -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
|
}
|
|
@@ -15,7 +15,14 @@ export const duplicateWorkflowParameterRule: Rule<{ parameter: string }> = {
|
|
|
15
15
|
const parameterNames = new Set<string>()
|
|
16
16
|
value.parameters.forEach((p, i) => {
|
|
17
17
|
if (parameterNames.has(p.name)) {
|
|
18
|
-
report(
|
|
18
|
+
report({
|
|
19
|
+
path: [...path, 'parameters', i],
|
|
20
|
+
info: {
|
|
21
|
+
title: 'Duplicate workflow parameter',
|
|
22
|
+
description: `Multiple parameters with the name **${p.name}** exist. Ensure parameter names are unique.`,
|
|
23
|
+
},
|
|
24
|
+
details: { parameter: p.name },
|
|
25
|
+
})
|
|
19
26
|
}
|
|
20
27
|
parameterNames.add(p.name)
|
|
21
28
|
})
|
|
@@ -34,7 +34,14 @@ export const noPostNavigateAction: Rule<
|
|
|
34
34
|
const actionIndex = Number(_actionIndex)
|
|
35
35
|
if (actionIndex < actions.length - 1) {
|
|
36
36
|
// If the action is not the last one in the array, report it
|
|
37
|
-
report(
|
|
37
|
+
report({
|
|
38
|
+
path,
|
|
39
|
+
info: {
|
|
40
|
+
title: 'Avoid actions after "Go to URL" action',
|
|
41
|
+
description: `The "Go to URL" action should be the last action in a workflow, as subsequent actions might not be evaluated before the browser navigates to the new URL.`,
|
|
42
|
+
},
|
|
43
|
+
fixes: ['delete-following-actions'],
|
|
44
|
+
})
|
|
38
45
|
}
|
|
39
46
|
},
|
|
40
47
|
fixes: {
|
|
@@ -77,6 +77,13 @@ export const noReferenceComponentWorkflowRule: Rule<{
|
|
|
77
77
|
}
|
|
78
78
|
}
|
|
79
79
|
|
|
80
|
-
report(
|
|
80
|
+
report({
|
|
81
|
+
path,
|
|
82
|
+
info: {
|
|
83
|
+
title: 'Unused component workflow',
|
|
84
|
+
description: `**${value.name}** is never used by any workflow. Consider removing it.`,
|
|
85
|
+
},
|
|
86
|
+
details: { contextSubscribers, name: value.name },
|
|
87
|
+
})
|
|
81
88
|
},
|
|
82
89
|
}
|
|
@@ -25,9 +25,16 @@ export const unknownContextProviderWorkflowRule: Rule<{
|
|
|
25
25
|
}
|
|
26
26
|
for (const workflowName of value.workflows) {
|
|
27
27
|
if (component.workflows?.[workflowName]?.exposeInContext !== true) {
|
|
28
|
-
report(
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
report({
|
|
29
|
+
path,
|
|
30
|
+
info: {
|
|
31
|
+
title: 'Unknown context provider workflow',
|
|
32
|
+
description: `**${workflowName}** does not exist on the context provider **${value.componentName}**. Calling an unknown workflow will have no effect. Make sure to define it before using it.`,
|
|
33
|
+
},
|
|
34
|
+
details: {
|
|
35
|
+
providerName: value.componentName,
|
|
36
|
+
workflowName,
|
|
37
|
+
},
|
|
31
38
|
})
|
|
32
39
|
}
|
|
33
40
|
}
|
|
@@ -22,9 +22,16 @@ export const unknownContextWorkflowRule: Rule<{
|
|
|
22
22
|
return
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
report(
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
report({
|
|
26
|
+
path,
|
|
27
|
+
info: {
|
|
28
|
+
title: 'Unknown context workflow',
|
|
29
|
+
description: `**${value.workflow}** is not subscribed. Make sure to subscribe to it in the component context section before using it.`,
|
|
30
|
+
},
|
|
31
|
+
details: {
|
|
32
|
+
providerName: value.contextProvider,
|
|
33
|
+
workflowName: value.workflow,
|
|
34
|
+
},
|
|
28
35
|
})
|
|
29
36
|
},
|
|
30
37
|
}
|
|
@@ -45,8 +45,15 @@ export const unknownTriggerWorkflowParameterRule: Rule<{ parameter: string }> =
|
|
|
45
45
|
)
|
|
46
46
|
Object.keys(value.parameters ?? {}).forEach((parameterKey) => {
|
|
47
47
|
if (!workflowParameters.has(parameterKey)) {
|
|
48
|
-
report(
|
|
49
|
-
|
|
48
|
+
report({
|
|
49
|
+
path: [...path, 'parameters', parameterKey],
|
|
50
|
+
info: {
|
|
51
|
+
title: `Unknown parameter in workflow`,
|
|
52
|
+
description: `The workflow parameter "${parameterKey}" is not a valid. It may have been removed from the workflow after it was set. This parameter can safely be removed.`,
|
|
53
|
+
},
|
|
54
|
+
details: {
|
|
55
|
+
parameter: parameterKey,
|
|
56
|
+
},
|
|
50
57
|
})
|
|
51
58
|
}
|
|
52
59
|
})
|
|
@@ -16,7 +16,13 @@ export const unknownTriggerWorkflowRule: Rule<void> = {
|
|
|
16
16
|
|
|
17
17
|
const workflow = args.component.workflows?.[value.workflow]
|
|
18
18
|
if (!workflow) {
|
|
19
|
-
report(
|
|
19
|
+
report({
|
|
20
|
+
path,
|
|
21
|
+
info: {
|
|
22
|
+
title: 'Unknown workflow trigger',
|
|
23
|
+
description: `This workflow does not exist and cannot be triggered.`,
|
|
24
|
+
},
|
|
25
|
+
})
|
|
20
26
|
}
|
|
21
27
|
},
|
|
22
28
|
}
|
|
@@ -30,8 +30,15 @@ export const unknownWorkflowParameterRule: Rule<{ parameter: string }> = {
|
|
|
30
30
|
),
|
|
31
31
|
)
|
|
32
32
|
if (!workflowParameters.has(parameterName)) {
|
|
33
|
-
report(
|
|
34
|
-
|
|
33
|
+
report({
|
|
34
|
+
path,
|
|
35
|
+
info: {
|
|
36
|
+
title: 'Unknown workflow parameter',
|
|
37
|
+
description: `**${parameterName}** does not exist in this workflow.`,
|
|
38
|
+
},
|
|
39
|
+
details: {
|
|
40
|
+
parameter: parameterName,
|
|
41
|
+
},
|
|
35
42
|
})
|
|
36
43
|
}
|
|
37
44
|
},
|
package/src/searchProject.ts
CHANGED
|
@@ -272,7 +272,7 @@ function* visitNode({
|
|
|
272
272
|
console.timeStamp(`Visiting rule ${rule.code}`)
|
|
273
273
|
rule.visit(
|
|
274
274
|
// Report callback used to report issues
|
|
275
|
-
(path, details, fixes) => {
|
|
275
|
+
({ path, details, fixes, info }) => {
|
|
276
276
|
if (fixOptions) {
|
|
277
277
|
// We're in "fix mode"
|
|
278
278
|
if (
|
|
@@ -301,6 +301,7 @@ function* visitNode({
|
|
|
301
301
|
path,
|
|
302
302
|
details,
|
|
303
303
|
fixes,
|
|
304
|
+
info,
|
|
304
305
|
})
|
|
305
306
|
}
|
|
306
307
|
},
|