@nordcraft/search 1.0.79 → 1.0.80

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 (140) hide show
  1. package/dist/rules/issues/actions/duplicateActionArgumentNameRule.test.js +3 -3
  2. package/dist/rules/issues/actions/duplicateActionArgumentNameRule.test.js.map +1 -1
  3. package/dist/rules/issues/actions/legacyActionRule.test.js +1 -1
  4. package/dist/rules/issues/actions/legacyActionRule.test.js.map +1 -1
  5. package/dist/rules/issues/actions/noReferenceProjectActionRule.test.js +1 -1
  6. package/dist/rules/issues/actions/noReferenceProjectActionRule.test.js.map +1 -1
  7. package/dist/rules/issues/actions/unknownActionArgumentRule.test.js +1 -1
  8. package/dist/rules/issues/actions/unknownActionArgumentRule.test.js.map +1 -1
  9. package/dist/rules/issues/actions/unknownActionEventRule.test.js +1 -1
  10. package/dist/rules/issues/actions/unknownActionEventRule.test.js.map +1 -1
  11. package/dist/rules/issues/actions/unknownProjectActionRule.test.js +1 -1
  12. package/dist/rules/issues/actions/unknownProjectActionRule.test.js.map +1 -1
  13. package/dist/rules/issues/apis/legacyApiRule.test.js +1 -1
  14. package/dist/rules/issues/apis/legacyApiRule.test.js.map +1 -1
  15. package/dist/rules/issues/apis/noReferenceApiRule.js +21 -1
  16. package/dist/rules/issues/apis/noReferenceApiRule.js.map +1 -1
  17. package/dist/rules/issues/apis/noReferenceApiRule.test.js +274 -0
  18. package/dist/rules/issues/apis/noReferenceApiRule.test.js.map +1 -1
  19. package/dist/rules/issues/context/noContextConsumersRule.test.js +3 -3
  20. package/dist/rules/issues/context/noContextConsumersRule.test.js.map +1 -1
  21. package/dist/rules/issues/context/unknownContextFormulaRule.test.js +1 -1
  22. package/dist/rules/issues/context/unknownContextFormulaRule.test.js.map +1 -1
  23. package/dist/rules/issues/context/unknownContextProviderFormulaRule.test.js +1 -1
  24. package/dist/rules/issues/context/unknownContextProviderFormulaRule.test.js.map +1 -1
  25. package/dist/rules/issues/context/unknownContextProviderRule.test.js +1 -1
  26. package/dist/rules/issues/context/unknownContextProviderRule.test.js.map +1 -1
  27. package/dist/rules/issues/dom/createRequiredDirectChildRule.test.js +1 -1
  28. package/dist/rules/issues/dom/createRequiredDirectChildRule.test.js.map +1 -1
  29. package/dist/rules/issues/dom/createRequiredDirectParentRule.test.js +1 -1
  30. package/dist/rules/issues/dom/createRequiredDirectParentRule.test.js.map +1 -1
  31. package/dist/rules/issues/dom/createRequiredElementAttributeRule.test.js +3 -3
  32. package/dist/rules/issues/dom/createRequiredElementAttributeRule.test.js.map +1 -1
  33. package/dist/rules/issues/dom/elementWithoutInteractiveContentRule.test.js +3 -3
  34. package/dist/rules/issues/dom/elementWithoutInteractiveContentRule.test.js.map +1 -1
  35. package/dist/rules/issues/dom/imageWithoutDimensionRule.test.js +4 -4
  36. package/dist/rules/issues/dom/imageWithoutDimensionRule.test.js.map +1 -1
  37. package/dist/rules/issues/dom/nonEmptyVoidElementRule.test.js +1 -1
  38. package/dist/rules/issues/dom/nonEmptyVoidElementRule.test.js.map +1 -1
  39. package/dist/rules/issues/events/duplicateEventTriggerRule.test.js +1 -1
  40. package/dist/rules/issues/events/duplicateEventTriggerRule.test.js.map +1 -1
  41. package/dist/rules/issues/formulas/duplicateFormulaArgumentNameRule.test.js +2 -2
  42. package/dist/rules/issues/formulas/duplicateFormulaArgumentNameRule.test.js.map +1 -1
  43. package/dist/rules/issues/formulas/noReferenceProjectFormulaRule.test.js +1 -1
  44. package/dist/rules/issues/formulas/noReferenceProjectFormulaRule.test.js.map +1 -1
  45. package/dist/rules/issues/formulas/unknownComponentFormulaInputRule.test.js +2 -2
  46. package/dist/rules/issues/formulas/unknownComponentFormulaInputRule.test.js.map +1 -1
  47. package/dist/rules/issues/formulas/unknownProjectFormulaInputRule.test.js +2 -2
  48. package/dist/rules/issues/formulas/unknownProjectFormulaInputRule.test.js.map +1 -1
  49. package/dist/rules/issues/formulas/unknownProjectFormulaRule.test.js +1 -1
  50. package/dist/rules/issues/formulas/unknownProjectFormulaRule.test.js.map +1 -1
  51. package/dist/rules/issues/formulas/unknownRepeatIndexFormulaRule.test.js +1 -1
  52. package/dist/rules/issues/formulas/unknownRepeatIndexFormulaRule.test.js.map +1 -1
  53. package/dist/rules/issues/formulas/unknownRepeatItemFormulaRule.test.js +1 -1
  54. package/dist/rules/issues/formulas/unknownRepeatItemFormulaRule.test.js.map +1 -1
  55. package/dist/rules/issues/logic/noStaticNodeCondition.test.js +1 -1
  56. package/dist/rules/issues/logic/noStaticNodeCondition.test.js.map +1 -1
  57. package/dist/rules/issues/logic/noUnnecessaryConditionFalsy.test.js +1 -1
  58. package/dist/rules/issues/logic/noUnnecessaryConditionFalsy.test.js.map +1 -1
  59. package/dist/rules/issues/logic/noUnnecessaryConditionTruthy.test.js +1 -1
  60. package/dist/rules/issues/logic/noUnnecessaryConditionTruthy.test.js.map +1 -1
  61. package/dist/rules/issues/miscellaneous/requireExtensionRule.test.js +1 -1
  62. package/dist/rules/issues/miscellaneous/requireExtensionRule.test.js.map +1 -1
  63. package/dist/rules/issues/miscellaneous/unknownCookieRule.test.js +1 -1
  64. package/dist/rules/issues/miscellaneous/unknownCookieRule.test.js.map +1 -1
  65. package/dist/rules/issues/routing/duplicateRouteRule.test.js +1 -1
  66. package/dist/rules/issues/routing/duplicateRouteRule.test.js.map +1 -1
  67. package/dist/rules/issues/routing/duplicateUrlParameterRule.test.js +1 -1
  68. package/dist/rules/issues/routing/duplicateUrlParameterRule.test.js.map +1 -1
  69. package/dist/rules/issues/style/noReferenceGlobalCSSVariable.js +32 -11
  70. package/dist/rules/issues/style/noReferenceGlobalCSSVariable.js.map +1 -1
  71. package/dist/rules/issues/style/noReferenceGlobalCSSVariable.test.js +55 -1
  72. package/dist/rules/issues/style/noReferenceGlobalCSSVariable.test.js.map +1 -1
  73. package/dist/rules/issues/style/styleRules.index.js +2 -0
  74. package/dist/rules/issues/style/styleRules.index.js.map +1 -1
  75. package/dist/rules/issues/style/unknownCSSVariable.js +78 -0
  76. package/dist/rules/issues/style/unknownCSSVariable.js.map +1 -0
  77. package/dist/rules/issues/style/unknownCSSVariable.test.js +337 -0
  78. package/dist/rules/issues/style/unknownCSSVariable.test.js.map +1 -0
  79. package/dist/rules/issues/workflows/duplicateWorkflowParameterRule.test.js +1 -1
  80. package/dist/rules/issues/workflows/duplicateWorkflowParameterRule.test.js.map +1 -1
  81. package/dist/rules/issues/workflows/noPostNavigateAction.test.js +1 -1
  82. package/dist/rules/issues/workflows/noPostNavigateAction.test.js.map +1 -1
  83. package/dist/rules/issues/workflows/unknownContextProviderWorkflowRule.test.js +1 -1
  84. package/dist/rules/issues/workflows/unknownContextProviderWorkflowRule.test.js.map +1 -1
  85. package/dist/rules/issues/workflows/unknownContextWorkflowRule.test.js +1 -1
  86. package/dist/rules/issues/workflows/unknownContextWorkflowRule.test.js.map +1 -1
  87. package/dist/rules/issues/workflows/unknownTriggerWorkflowParameterRule.test.js +3 -3
  88. package/dist/rules/issues/workflows/unknownTriggerWorkflowParameterRule.test.js.map +1 -1
  89. package/dist/rules/issues/workflows/unknownTriggerWorkflowRule.test.js +1 -1
  90. package/dist/rules/issues/workflows/unknownTriggerWorkflowRule.test.js.map +1 -1
  91. package/dist/rules/issues/workflows/unknownWorkflowParameterRule.test.js +1 -1
  92. package/dist/rules/issues/workflows/unknownWorkflowParameterRule.test.js.map +1 -1
  93. package/package.json +3 -3
  94. package/src/rules/issues/actions/duplicateActionArgumentNameRule.test.ts +3 -3
  95. package/src/rules/issues/actions/legacyActionRule.test.ts +1 -1
  96. package/src/rules/issues/actions/noReferenceProjectActionRule.test.ts +1 -1
  97. package/src/rules/issues/actions/unknownActionArgumentRule.test.ts +1 -1
  98. package/src/rules/issues/actions/unknownActionEventRule.test.ts +1 -1
  99. package/src/rules/issues/actions/unknownProjectActionRule.test.ts +1 -1
  100. package/src/rules/issues/apis/legacyApiRule.test.ts +1 -1
  101. package/src/rules/issues/apis/noReferenceApiRule.test.ts +283 -0
  102. package/src/rules/issues/apis/noReferenceApiRule.ts +29 -1
  103. package/src/rules/issues/context/noContextConsumersRule.test.ts +3 -3
  104. package/src/rules/issues/context/unknownContextFormulaRule.test.ts +1 -1
  105. package/src/rules/issues/context/unknownContextProviderFormulaRule.test.ts +1 -1
  106. package/src/rules/issues/context/unknownContextProviderRule.test.ts +1 -1
  107. package/src/rules/issues/dom/createRequiredDirectChildRule.test.ts +1 -1
  108. package/src/rules/issues/dom/createRequiredDirectParentRule.test.ts +1 -1
  109. package/src/rules/issues/dom/createRequiredElementAttributeRule.test.ts +3 -3
  110. package/src/rules/issues/dom/elementWithoutInteractiveContentRule.test.ts +3 -3
  111. package/src/rules/issues/dom/imageWithoutDimensionRule.test.ts +4 -4
  112. package/src/rules/issues/dom/nonEmptyVoidElementRule.test.ts +1 -1
  113. package/src/rules/issues/events/duplicateEventTriggerRule.test.ts +1 -1
  114. package/src/rules/issues/formulas/duplicateFormulaArgumentNameRule.test.ts +2 -2
  115. package/src/rules/issues/formulas/noReferenceProjectFormulaRule.test.ts +1 -1
  116. package/src/rules/issues/formulas/unknownComponentFormulaInputRule.test.ts +2 -2
  117. package/src/rules/issues/formulas/unknownProjectFormulaInputRule.test.ts +2 -2
  118. package/src/rules/issues/formulas/unknownProjectFormulaRule.test.ts +1 -1
  119. package/src/rules/issues/formulas/unknownRepeatIndexFormulaRule.test.ts +1 -1
  120. package/src/rules/issues/formulas/unknownRepeatItemFormulaRule.test.ts +1 -1
  121. package/src/rules/issues/logic/noStaticNodeCondition.test.ts +1 -1
  122. package/src/rules/issues/logic/noUnnecessaryConditionFalsy.test.ts +1 -1
  123. package/src/rules/issues/logic/noUnnecessaryConditionTruthy.test.ts +1 -1
  124. package/src/rules/issues/miscellaneous/requireExtensionRule.test.ts +1 -1
  125. package/src/rules/issues/miscellaneous/unknownCookieRule.test.ts +1 -1
  126. package/src/rules/issues/routing/duplicateRouteRule.test.ts +1 -1
  127. package/src/rules/issues/routing/duplicateUrlParameterRule.test.ts +1 -1
  128. package/src/rules/issues/style/noReferenceGlobalCSSVariable.test.ts +59 -1
  129. package/src/rules/issues/style/noReferenceGlobalCSSVariable.ts +38 -12
  130. package/src/rules/issues/style/styleRules.index.ts +2 -0
  131. package/src/rules/issues/style/unknownCSSVariable.test.ts +364 -0
  132. package/src/rules/issues/style/unknownCSSVariable.ts +101 -0
  133. package/src/rules/issues/workflows/duplicateWorkflowParameterRule.test.ts +1 -1
  134. package/src/rules/issues/workflows/noPostNavigateAction.test.ts +1 -1
  135. package/src/rules/issues/workflows/unknownContextProviderWorkflowRule.test.ts +1 -1
  136. package/src/rules/issues/workflows/unknownContextWorkflowRule.test.ts +1 -1
  137. package/src/rules/issues/workflows/unknownTriggerWorkflowParameterRule.test.ts +3 -3
  138. package/src/rules/issues/workflows/unknownTriggerWorkflowRule.test.ts +1 -1
  139. package/src/rules/issues/workflows/unknownWorkflowParameterRule.test.ts +1 -1
  140. package/src/types.d.ts +1 -0
@@ -0,0 +1,101 @@
1
+ import type { Rule } from '../../../types'
2
+
3
+ const REGEX = /var\(\s*(--[\w-]+)/g
4
+
5
+ export const unknownCSSVariableRule: Rule<{
6
+ name: string
7
+ }> = {
8
+ code: 'unknown css variable',
9
+ level: 'warning',
10
+ category: 'Unknown Reference',
11
+ visit: (report, { path, value, nodeType, files, memo }) => {
12
+ if (
13
+ nodeType !== 'style-declaration' ||
14
+ typeof value.styleValue !== 'string'
15
+ ) {
16
+ return
17
+ }
18
+
19
+ const theme = files.themes?.Default
20
+ // Issue rule only available for projects using v2 themes
21
+ if (theme?.propertyDefinitions === undefined) {
22
+ return
23
+ }
24
+
25
+ // Has a style property definition
26
+ const vars = [...value.styleValue.toString().matchAll(REGEX)].map(
27
+ ([_, varName]) => varName,
28
+ )
29
+ if (vars.length === 0) {
30
+ return
31
+ }
32
+
33
+ const themeCssVariables = theme.propertyDefinitions
34
+ const [_fileType, componentName, _nodes, nodeName] = path
35
+ const localCssVariables = memo(
36
+ `component-css-variables-${componentName}-${nodeName}`,
37
+ () => {
38
+ const vars = new Set<string>()
39
+ const component = files.components[componentName]
40
+ if (!component) {
41
+ return vars
42
+ }
43
+
44
+ const visitVars = (nodeName: string) => {
45
+ const node = component?.nodes?.[nodeName]
46
+ if (!node) {
47
+ return
48
+ }
49
+
50
+ if (node.type === 'component' || node.type === 'element') {
51
+ Object.keys(node.customProperties ?? {}).forEach((varName) => {
52
+ vars.add(varName)
53
+ })
54
+ Object.values(node.variants ?? {}).forEach((variant) => {
55
+ Object.keys(variant.customProperties ?? {}).forEach((varName) => {
56
+ vars.add(varName)
57
+ })
58
+ })
59
+
60
+ // Also add legacy style variables
61
+ if (node.type === 'element' && node['style-variables']) {
62
+ node['style-variables'].forEach((styleVar) => {
63
+ vars.add(`--${styleVar.name}`)
64
+ })
65
+ }
66
+
67
+ // Add if declared in any parent styles object
68
+ Object.keys(node.style ?? {}).forEach((styleKey) => {
69
+ if (styleKey.startsWith('--')) {
70
+ vars.add(styleKey)
71
+ }
72
+ })
73
+ Object.values(node.variants ?? {}).forEach((variant) => {
74
+ Object.keys(variant.style ?? {}).forEach((styleKey) => {
75
+ if (styleKey.startsWith('--')) {
76
+ vars.add(styleKey)
77
+ }
78
+ })
79
+ })
80
+ }
81
+
82
+ const parent = Object.entries(component.nodes ?? {}).find(([_, n]) =>
83
+ n.children?.includes(nodeName),
84
+ )
85
+ if (parent) {
86
+ visitVars(parent[0])
87
+ }
88
+ }
89
+
90
+ visitVars(nodeName.toString())
91
+ return vars
92
+ },
93
+ )
94
+
95
+ for (const varName of vars) {
96
+ if (!(varName in themeCssVariables) && !localCssVariables.has(varName)) {
97
+ report(path, { name: varName })
98
+ }
99
+ }
100
+ },
101
+ }
@@ -101,6 +101,6 @@ describe('duplicateWorkflowParameterRule', () => {
101
101
  }),
102
102
  )
103
103
 
104
- expect(problems).toHaveLength(0)
104
+ expect(problems).toBeEmpty()
105
105
  })
106
106
  })
@@ -457,7 +457,7 @@ describe('find noPostNavigateAction', () => {
457
457
  }),
458
458
  )
459
459
 
460
- expect(problems).toHaveLength(0)
460
+ expect(problems).toBeEmpty()
461
461
  })
462
462
  })
463
463
 
@@ -142,6 +142,6 @@ describe('unknownContextProviderWorkflowRule', () => {
142
142
  }),
143
143
  )
144
144
 
145
- expect(problems).toHaveLength(0)
145
+ expect(problems).toBeEmpty()
146
146
  })
147
147
  })
@@ -88,6 +88,6 @@ describe('unknownContextWorkflowRule', () => {
88
88
  }),
89
89
  )
90
90
 
91
- expect(problems).toHaveLength(0)
91
+ expect(problems).toBeEmpty()
92
92
  })
93
93
  })
@@ -126,7 +126,7 @@ describe('unknownTriggerWorkflowParameterRule', () => {
126
126
  }),
127
127
  )
128
128
 
129
- expect(problems).toHaveLength(0)
129
+ expect(problems).toBeEmpty()
130
130
  })
131
131
  test('should detect unknown workflow parameters in context workflows', () => {
132
132
  const problems = Array.from(
@@ -300,7 +300,7 @@ describe('unknownTriggerWorkflowParameterRule', () => {
300
300
  }),
301
301
  )
302
302
 
303
- expect(problems).toHaveLength(0)
303
+ expect(problems).toBeEmpty()
304
304
  })
305
305
  test('should detect unknown workflow parameters in context workflows from packages', () => {
306
306
  const problems = Array.from(
@@ -480,6 +480,6 @@ describe('unknownTriggerWorkflowParameterRule', () => {
480
480
  }),
481
481
  )
482
482
 
483
- expect(problems).toHaveLength(0)
483
+ expect(problems).toBeEmpty()
484
484
  })
485
485
  })
@@ -100,6 +100,6 @@ describe('unknownTriggerWorkflowRule', () => {
100
100
  }),
101
101
  )
102
102
 
103
- expect(problems).toHaveLength(0)
103
+ expect(problems).toBeEmpty()
104
104
  })
105
105
  })
@@ -111,6 +111,6 @@ describe('unknownWorkflowParameterRule', () => {
111
111
  }),
112
112
  )
113
113
 
114
- expect(problems).toHaveLength(0)
114
+ expect(problems).toBeEmpty()
115
115
  })
116
116
  })
package/src/types.d.ts CHANGED
@@ -120,6 +120,7 @@ type Code =
120
120
  | 'unknown url parameter'
121
121
  | 'unknown variable setter'
122
122
  | 'unknown variable'
123
+ | 'unknown css variable'
123
124
  | 'unknown trigger workflow parameter'
124
125
  | 'unknown workflow parameter'
125
126