@nordcraft/search 1.0.92 → 1.0.94

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 (301) hide show
  1. package/dist/findProblems.js.map +1 -1
  2. package/dist/findSearch.d.ts +6 -0
  3. package/dist/findSearch.js +102 -0
  4. package/dist/findSearch.js.map +1 -0
  5. package/dist/fixProblems.js.map +1 -1
  6. package/dist/fixProject.js.map +1 -1
  7. package/dist/problems.worker.js.map +1 -1
  8. package/dist/rules/issues/actions/actionRules.index.d.ts +1 -1
  9. package/dist/rules/issues/actions/createActionNameRule.d.ts +2 -2
  10. package/dist/rules/issues/actions/createActionNameRule.js.map +1 -1
  11. package/dist/rules/issues/actions/duplicateActionArgumentNameRule.d.ts +2 -2
  12. package/dist/rules/issues/actions/duplicateActionArgumentNameRule.js.map +1 -1
  13. package/dist/rules/issues/actions/legacyActionRule.d.ts +2 -2
  14. package/dist/rules/issues/actions/legacyActionRule.fix.js.map +1 -1
  15. package/dist/rules/issues/actions/legacyActionRule.js.map +1 -1
  16. package/dist/rules/issues/actions/noReferenceProjectActionRule.d.ts +2 -2
  17. package/dist/rules/issues/actions/noReferenceProjectActionRule.js.map +1 -1
  18. package/dist/rules/issues/actions/projectActionIsReferenced.memo.js.map +1 -1
  19. package/dist/rules/issues/actions/unknownActionArgumentRule.d.ts +2 -2
  20. package/dist/rules/issues/actions/unknownActionArgumentRule.js.map +1 -1
  21. package/dist/rules/issues/actions/unknownActionEventRule.d.ts +2 -2
  22. package/dist/rules/issues/actions/unknownActionEventRule.js.map +1 -1
  23. package/dist/rules/issues/actions/unknownProjectActionRule.d.ts +2 -2
  24. package/dist/rules/issues/actions/unknownProjectActionRule.js.map +1 -1
  25. package/dist/rules/issues/apis/apiRules.index.d.ts +4 -4
  26. package/dist/rules/issues/apis/invalidApiParserModeRule.d.ts +2 -2
  27. package/dist/rules/issues/apis/invalidApiParserModeRule.js.map +1 -1
  28. package/dist/rules/issues/apis/invalidApiProxyBodySettingRule.d.ts +2 -2
  29. package/dist/rules/issues/apis/invalidApiProxyBodySettingRule.js.map +1 -1
  30. package/dist/rules/issues/apis/invalidApiProxyCookieSettingRule.d.ts +2 -2
  31. package/dist/rules/issues/apis/invalidApiProxyCookieSettingRule.js.map +1 -1
  32. package/dist/rules/issues/apis/legacyApiRule.d.ts +2 -2
  33. package/dist/rules/issues/apis/legacyApiRule.js.map +1 -1
  34. package/dist/rules/issues/apis/noReferenceApiInputRule.d.ts +2 -2
  35. package/dist/rules/issues/apis/noReferenceApiInputRule.js.map +1 -1
  36. package/dist/rules/issues/apis/noReferenceApiRule.d.ts +2 -2
  37. package/dist/rules/issues/apis/noReferenceApiRule.js.map +1 -1
  38. package/dist/rules/issues/apis/noReferenceApiServiceRule.d.ts +2 -2
  39. package/dist/rules/issues/apis/noReferenceApiServiceRule.js.map +1 -1
  40. package/dist/rules/issues/apis/unknownApiInputRule.d.ts +2 -2
  41. package/dist/rules/issues/apis/unknownApiInputRule.js.map +1 -1
  42. package/dist/rules/issues/apis/unknownApiRule.d.ts +2 -2
  43. package/dist/rules/issues/apis/unknownApiRule.js.map +1 -1
  44. package/dist/rules/issues/apis/unknownApiServiceRule.d.ts +2 -2
  45. package/dist/rules/issues/apis/unknownApiServiceRule.js.map +1 -1
  46. package/dist/rules/issues/apis/unknownFetchInputRule.d.ts +2 -2
  47. package/dist/rules/issues/apis/unknownFetchInputRule.js.map +1 -1
  48. package/dist/rules/issues/attributes/attributeRules.index.d.ts +2 -2
  49. package/dist/rules/issues/attributes/noReferenceAttributeInInstanceRule.d.ts +2 -2
  50. package/dist/rules/issues/attributes/noReferenceAttributeInInstanceRule.js.map +1 -1
  51. package/dist/rules/issues/attributes/noReferenceAttributeRule.d.ts +2 -2
  52. package/dist/rules/issues/attributes/noReferenceAttributeRule.js.map +1 -1
  53. package/dist/rules/issues/attributes/unknownAttributeRule.d.ts +2 -2
  54. package/dist/rules/issues/attributes/unknownAttributeRule.js.map +1 -1
  55. package/dist/rules/issues/attributes/unknownComponentAttributeRule.d.ts +2 -2
  56. package/dist/rules/issues/attributes/unknownComponentAttributeRule.js.map +1 -1
  57. package/dist/rules/issues/components/componentIsReferenced.memo.js.map +1 -1
  58. package/dist/rules/issues/components/componentRules.index.d.ts +1 -1
  59. package/dist/rules/issues/components/invalidComponentStructureRule.d.ts +2 -2
  60. package/dist/rules/issues/components/invalidComponentStructureRule.js.map +1 -1
  61. package/dist/rules/issues/components/noReferenceComponentRule.d.ts +2 -2
  62. package/dist/rules/issues/components/noReferenceComponentRule.js.map +1 -1
  63. package/dist/rules/issues/components/unknownComponentRule.d.ts +2 -2
  64. package/dist/rules/issues/components/unknownComponentRule.js.map +1 -1
  65. package/dist/rules/issues/context/contextRules.index.d.ts +3 -3
  66. package/dist/rules/issues/context/noContextConsumersRule.d.ts +2 -2
  67. package/dist/rules/issues/context/noContextConsumersRule.js.map +1 -1
  68. package/dist/rules/issues/context/unknownContextFormulaRule.d.ts +2 -2
  69. package/dist/rules/issues/context/unknownContextFormulaRule.js.map +1 -1
  70. package/dist/rules/issues/context/unknownContextProviderFormulaRule.d.ts +2 -2
  71. package/dist/rules/issues/context/unknownContextProviderFormulaRule.js.map +1 -1
  72. package/dist/rules/issues/context/unknownContextProviderRule.d.ts +2 -2
  73. package/dist/rules/issues/context/unknownContextProviderRule.js.map +1 -1
  74. package/dist/rules/issues/dom/createRequiredDirectChildRule.d.ts +2 -2
  75. package/dist/rules/issues/dom/createRequiredDirectChildRule.js.map +1 -1
  76. package/dist/rules/issues/dom/createRequiredDirectParentRule.d.ts +2 -2
  77. package/dist/rules/issues/dom/createRequiredDirectParentRule.js.map +1 -1
  78. package/dist/rules/issues/dom/createRequiredElementAttributeRule.d.ts +2 -2
  79. package/dist/rules/issues/dom/createRequiredElementAttributeRule.js.map +1 -1
  80. package/dist/rules/issues/dom/createRequiredMetaTagRule.d.ts +2 -2
  81. package/dist/rules/issues/dom/createRequiredMetaTagRule.js.map +1 -1
  82. package/dist/rules/issues/dom/domRules.index.d.ts +5 -5
  83. package/dist/rules/issues/dom/elementWithoutInteractiveContentRule.d.ts +2 -2
  84. package/dist/rules/issues/dom/elementWithoutInteractiveContentRule.js.map +1 -1
  85. package/dist/rules/issues/dom/imageWithoutDimensionRule.d.ts +2 -2
  86. package/dist/rules/issues/dom/imageWithoutDimensionRule.js.map +1 -1
  87. package/dist/rules/issues/dom/nonEmptyVoidElementRule.d.ts +2 -2
  88. package/dist/rules/issues/dom/nonEmptyVoidElementRule.js.map +1 -1
  89. package/dist/rules/issues/events/duplicateEventTriggerRule.d.ts +2 -2
  90. package/dist/rules/issues/events/duplicateEventTriggerRule.js.map +1 -1
  91. package/dist/rules/issues/events/eventRules.index.d.ts +2 -2
  92. package/dist/rules/issues/events/noReferenceEventRule.d.ts +2 -2
  93. package/dist/rules/issues/events/noReferenceEventRule.js.map +1 -1
  94. package/dist/rules/issues/events/unknownEventRule.d.ts +2 -2
  95. package/dist/rules/issues/events/unknownEventRule.js.map +1 -1
  96. package/dist/rules/issues/events/unknownTriggerEventRule.d.ts +2 -2
  97. package/dist/rules/issues/events/unknownTriggerEventRule.js.map +1 -1
  98. package/dist/rules/issues/formulas/duplicateFormulaArgumentNameRule.d.ts +2 -2
  99. package/dist/rules/issues/formulas/duplicateFormulaArgumentNameRule.js.map +1 -1
  100. package/dist/rules/issues/formulas/formulaRules.index.d.ts +2 -2
  101. package/dist/rules/issues/formulas/legacyFormulaRule.d.ts +2 -2
  102. package/dist/rules/issues/formulas/legacyFormulaRule.fix.js.map +1 -1
  103. package/dist/rules/issues/formulas/legacyFormulaRule.js.map +1 -1
  104. package/dist/rules/issues/formulas/noReferenceComponentFormulaRule.d.ts +2 -2
  105. package/dist/rules/issues/formulas/noReferenceComponentFormulaRule.js.map +1 -1
  106. package/dist/rules/issues/formulas/noReferenceProjectFormulaRule.d.ts +2 -2
  107. package/dist/rules/issues/formulas/noReferenceProjectFormulaRule.js.map +1 -1
  108. package/dist/rules/issues/formulas/projectFormulaIsReferenced.memo.js.map +1 -1
  109. package/dist/rules/issues/formulas/unknownComponentFormulaInputRule.d.ts +2 -2
  110. package/dist/rules/issues/formulas/unknownComponentFormulaInputRule.js.map +1 -1
  111. package/dist/rules/issues/formulas/unknownFormulaRule.d.ts +2 -2
  112. package/dist/rules/issues/formulas/unknownFormulaRule.js.map +1 -1
  113. package/dist/rules/issues/formulas/unknownProjectFormulaInputRule.d.ts +2 -2
  114. package/dist/rules/issues/formulas/unknownProjectFormulaInputRule.js.map +1 -1
  115. package/dist/rules/issues/formulas/unknownProjectFormulaRule.d.ts +2 -2
  116. package/dist/rules/issues/formulas/unknownProjectFormulaRule.js.map +1 -1
  117. package/dist/rules/issues/formulas/unknownRepeatIndexFormulaRule.d.ts +2 -2
  118. package/dist/rules/issues/formulas/unknownRepeatIndexFormulaRule.js.map +1 -1
  119. package/dist/rules/issues/formulas/unknownRepeatItemFormulaRule.d.ts +2 -2
  120. package/dist/rules/issues/formulas/unknownRepeatItemFormulaRule.js.map +1 -1
  121. package/dist/rules/issues/logic/logicRules.index.d.ts +2 -2
  122. package/dist/rules/issues/logic/noStaticNodeCondition.d.ts +2 -2
  123. package/dist/rules/issues/logic/noStaticNodeCondition.js.map +1 -1
  124. package/dist/rules/issues/logic/noUnnecessaryConditionFalsy.d.ts +2 -2
  125. package/dist/rules/issues/logic/noUnnecessaryConditionFalsy.js.map +1 -1
  126. package/dist/rules/issues/logic/noUnnecessaryConditionTruthy.d.ts +2 -2
  127. package/dist/rules/issues/logic/noUnnecessaryConditionTruthy.js.map +1 -1
  128. package/dist/rules/issues/miscellaneous/createStaticSizeConstraintRule.d.ts +2 -2
  129. package/dist/rules/issues/miscellaneous/createStaticSizeConstraintRule.js.map +1 -1
  130. package/dist/rules/issues/miscellaneous/miscRules.index.d.ts +3 -3
  131. package/dist/rules/issues/miscellaneous/noReferenceNodeRule.d.ts +2 -2
  132. package/dist/rules/issues/miscellaneous/noReferenceNodeRule.js.map +1 -1
  133. package/dist/rules/issues/miscellaneous/noReferencePackageRule.d.ts +2 -2
  134. package/dist/rules/issues/miscellaneous/noReferencePackageRule.js.map +1 -1
  135. package/dist/rules/issues/miscellaneous/requireExtensionRule.d.ts +2 -2
  136. package/dist/rules/issues/miscellaneous/requireExtensionRule.js.map +1 -1
  137. package/dist/rules/issues/miscellaneous/unknownCookieRule.d.ts +2 -2
  138. package/dist/rules/issues/miscellaneous/unknownCookieRule.js.map +1 -1
  139. package/dist/rules/issues/routing/duplicateRouteRule.d.ts +2 -2
  140. package/dist/rules/issues/routing/duplicateRouteRule.js.map +1 -1
  141. package/dist/rules/issues/routing/duplicateUrlParameterRule.d.ts +2 -2
  142. package/dist/rules/issues/routing/duplicateUrlParameterRule.js.map +1 -1
  143. package/dist/rules/issues/routing/routingRules.index.d.ts +2 -2
  144. package/dist/rules/issues/routing/unknownSetUrlParameterRule.d.ts +2 -2
  145. package/dist/rules/issues/routing/unknownSetUrlParameterRule.js.map +1 -1
  146. package/dist/rules/issues/routing/unknownSetUrlParametersRule.d.ts +2 -2
  147. package/dist/rules/issues/routing/unknownSetUrlParametersRule.js.map +1 -1
  148. package/dist/rules/issues/routing/unknownUrlParameterRule.d.ts +2 -2
  149. package/dist/rules/issues/routing/unknownUrlParameterRule.js.map +1 -1
  150. package/dist/rules/issues/slots/slotRules.index.d.ts +1 -1
  151. package/dist/rules/issues/slots/unknownComponentSlotRule.d.ts +2 -2
  152. package/dist/rules/issues/slots/unknownComponentSlotRule.js.map +1 -1
  153. package/dist/rules/issues/style/invalidStyleSyntaxRule.d.ts +2 -2
  154. package/dist/rules/issues/style/invalidStyleSyntaxRule.js.map +1 -1
  155. package/dist/rules/issues/style/legacyStyleVariableRule.d.ts +2 -2
  156. package/dist/rules/issues/style/legacyStyleVariableRule.js.map +1 -1
  157. package/dist/rules/issues/style/legacyThemeRule.d.ts +2 -2
  158. package/dist/rules/issues/style/legacyThemeRule.js.map +1 -1
  159. package/dist/rules/issues/style/noReferenceAnimationRule.d.ts +2 -2
  160. package/dist/rules/issues/style/noReferenceAnimationRule.js +3 -1
  161. package/dist/rules/issues/style/noReferenceAnimationRule.js.map +1 -1
  162. package/dist/rules/issues/style/noReferenceGlobalCSSVariable.d.ts +2 -2
  163. package/dist/rules/issues/style/noReferenceGlobalCSSVariable.js.map +1 -1
  164. package/dist/rules/issues/style/styleRules.index.d.ts +3 -3
  165. package/dist/rules/issues/style/unknownCSSVariable.d.ts +2 -2
  166. package/dist/rules/issues/style/unknownCSSVariable.js.map +1 -1
  167. package/dist/rules/issues/style/unknownClassnameRule.d.ts +2 -2
  168. package/dist/rules/issues/style/unknownClassnameRule.js.map +1 -1
  169. package/dist/rules/issues/variables/noReferenceVariableRule.d.ts +2 -2
  170. package/dist/rules/issues/variables/noReferenceVariableRule.js.map +1 -1
  171. package/dist/rules/issues/variables/unknownVariableRule.d.ts +2 -2
  172. package/dist/rules/issues/variables/unknownVariableRule.js.map +1 -1
  173. package/dist/rules/issues/variables/unknownVariableSetterRule.d.ts +2 -2
  174. package/dist/rules/issues/variables/unknownVariableSetterRule.js.map +1 -1
  175. package/dist/rules/issues/variables/variableRules.index.d.ts +1 -1
  176. package/dist/rules/issues/workflows/duplicateWorkflowParameterRule.d.ts +2 -2
  177. package/dist/rules/issues/workflows/duplicateWorkflowParameterRule.js.map +1 -1
  178. package/dist/rules/issues/workflows/noPostNavigateAction.d.ts +2 -2
  179. package/dist/rules/issues/workflows/noPostNavigateAction.js.map +1 -1
  180. package/dist/rules/issues/workflows/noReferenceComponentWorkflowRule.d.ts +2 -2
  181. package/dist/rules/issues/workflows/noReferenceComponentWorkflowRule.js.map +1 -1
  182. package/dist/rules/issues/workflows/unknownContextProviderWorkflowRule.d.ts +2 -2
  183. package/dist/rules/issues/workflows/unknownContextProviderWorkflowRule.js.map +1 -1
  184. package/dist/rules/issues/workflows/unknownContextWorkflowRule.d.ts +2 -2
  185. package/dist/rules/issues/workflows/unknownContextWorkflowRule.js.map +1 -1
  186. package/dist/rules/issues/workflows/unknownTriggerWorkflowParameterRule.d.ts +2 -2
  187. package/dist/rules/issues/workflows/unknownTriggerWorkflowParameterRule.js.map +1 -1
  188. package/dist/rules/issues/workflows/unknownTriggerWorkflowRule.d.ts +2 -2
  189. package/dist/rules/issues/workflows/unknownTriggerWorkflowRule.js.map +1 -1
  190. package/dist/rules/issues/workflows/unknownWorkflowParameterRule.d.ts +2 -2
  191. package/dist/rules/issues/workflows/unknownWorkflowParameterRule.js.map +1 -1
  192. package/dist/rules/issues/workflows/workflowRules.index.d.ts +3 -3
  193. package/dist/rules/search/fieldSearchRule.d.ts +8 -0
  194. package/dist/rules/search/fieldSearchRule.js +293 -0
  195. package/dist/rules/search/fieldSearchRule.js.map +1 -0
  196. package/dist/search.worker.d.ts +1 -11
  197. package/dist/search.worker.js +17 -6
  198. package/dist/search.worker.js.map +1 -1
  199. package/dist/searchProject.d.ts +11 -5
  200. package/dist/searchProject.js +11 -12
  201. package/dist/searchProject.js.map +1 -1
  202. package/dist/types.d.ts +33 -3
  203. package/dist/util/contextlessEvaluateFormula.js.map +1 -1
  204. package/dist/util/helpers.js.map +1 -1
  205. package/dist/util/parseSearchQuery.d.ts +24 -0
  206. package/dist/util/parseSearchQuery.js +81 -0
  207. package/dist/util/parseSearchQuery.js.map +1 -0
  208. package/dist/util/removeUnused.fix.js.map +1 -1
  209. package/package.json +6 -5
  210. package/src/findProblems.ts +7 -3
  211. package/src/findSearch.ts +134 -0
  212. package/src/rules/issues/actions/createActionNameRule.ts +2 -2
  213. package/src/rules/issues/actions/duplicateActionArgumentNameRule.ts +2 -2
  214. package/src/rules/issues/actions/legacyActionRule.ts +2 -2
  215. package/src/rules/issues/actions/noReferenceProjectActionRule.ts +2 -2
  216. package/src/rules/issues/actions/unknownActionArgumentRule.ts +2 -2
  217. package/src/rules/issues/actions/unknownActionEventRule.ts +2 -2
  218. package/src/rules/issues/actions/unknownProjectActionRule.ts +2 -2
  219. package/src/rules/issues/apis/invalidApiParserModeRule.ts +2 -2
  220. package/src/rules/issues/apis/invalidApiProxyBodySettingRule.ts +2 -2
  221. package/src/rules/issues/apis/invalidApiProxyCookieSettingRule.ts +2 -2
  222. package/src/rules/issues/apis/legacyApiRule.ts +2 -2
  223. package/src/rules/issues/apis/noReferenceApiInputRule.ts +2 -2
  224. package/src/rules/issues/apis/noReferenceApiRule.ts +2 -2
  225. package/src/rules/issues/apis/noReferenceApiServiceRule.ts +2 -2
  226. package/src/rules/issues/apis/unknownApiInputRule.ts +2 -2
  227. package/src/rules/issues/apis/unknownApiRule.ts +2 -2
  228. package/src/rules/issues/apis/unknownApiServiceRule.ts +2 -2
  229. package/src/rules/issues/apis/unknownFetchInputRule.ts +2 -2
  230. package/src/rules/issues/attributes/noReferenceAttributeInInstanceRule.ts +2 -2
  231. package/src/rules/issues/attributes/noReferenceAttributeRule.ts +2 -2
  232. package/src/rules/issues/attributes/unknownAttributeRule.ts +2 -2
  233. package/src/rules/issues/attributes/unknownComponentAttributeRule.ts +2 -2
  234. package/src/rules/issues/components/invalidComponentStructureRule.ts +2 -2
  235. package/src/rules/issues/components/noReferenceComponentRule.ts +2 -2
  236. package/src/rules/issues/components/unknownComponentRule.ts +2 -2
  237. package/src/rules/issues/context/noContextConsumersRule.ts +2 -2
  238. package/src/rules/issues/context/unknownContextFormulaRule.ts +2 -2
  239. package/src/rules/issues/context/unknownContextProviderFormulaRule.ts +2 -2
  240. package/src/rules/issues/context/unknownContextProviderRule.ts +32 -31
  241. package/src/rules/issues/dom/createRequiredDirectChildRule.ts +2 -2
  242. package/src/rules/issues/dom/createRequiredDirectParentRule.ts +2 -2
  243. package/src/rules/issues/dom/createRequiredElementAttributeRule.ts +2 -2
  244. package/src/rules/issues/dom/createRequiredMetaTagRule.ts +2 -2
  245. package/src/rules/issues/dom/elementWithoutInteractiveContentRule.ts +2 -2
  246. package/src/rules/issues/dom/imageWithoutDimensionRule.ts +2 -2
  247. package/src/rules/issues/dom/nonEmptyVoidElementRule.ts +2 -2
  248. package/src/rules/issues/events/duplicateEventTriggerRule.ts +2 -2
  249. package/src/rules/issues/events/noReferenceEventRule.ts +2 -2
  250. package/src/rules/issues/events/unknownEventRule.ts +2 -2
  251. package/src/rules/issues/events/unknownTriggerEventRule.ts +2 -2
  252. package/src/rules/issues/formulas/duplicateFormulaArgumentNameRule.ts +2 -2
  253. package/src/rules/issues/formulas/legacyFormulaRule.ts +2 -2
  254. package/src/rules/issues/formulas/noReferenceComponentFormulaRule.ts +2 -2
  255. package/src/rules/issues/formulas/noReferenceProjectFormulaRule.ts +2 -2
  256. package/src/rules/issues/formulas/unknownComponentFormulaInputRule.ts +2 -2
  257. package/src/rules/issues/formulas/unknownFormulaRule.ts +2 -2
  258. package/src/rules/issues/formulas/unknownProjectFormulaInputRule.ts +2 -2
  259. package/src/rules/issues/formulas/unknownProjectFormulaRule.ts +2 -2
  260. package/src/rules/issues/formulas/unknownRepeatIndexFormulaRule.ts +2 -2
  261. package/src/rules/issues/formulas/unknownRepeatItemFormulaRule.ts +2 -2
  262. package/src/rules/issues/logic/noStaticNodeCondition.ts +2 -2
  263. package/src/rules/issues/logic/noUnnecessaryConditionFalsy.ts +2 -2
  264. package/src/rules/issues/logic/noUnnecessaryConditionTruthy.ts +2 -2
  265. package/src/rules/issues/miscellaneous/createStaticSizeConstraintRule.ts +2 -2
  266. package/src/rules/issues/miscellaneous/noReferenceNodeRule.ts +2 -2
  267. package/src/rules/issues/miscellaneous/noReferencePackageRule.ts +2 -2
  268. package/src/rules/issues/miscellaneous/requireExtensionRule.ts +2 -2
  269. package/src/rules/issues/miscellaneous/unknownCookieRule.ts +2 -2
  270. package/src/rules/issues/routing/duplicateRouteRule.ts +2 -2
  271. package/src/rules/issues/routing/duplicateUrlParameterRule.ts +2 -2
  272. package/src/rules/issues/routing/unknownSetUrlParameterRule.ts +2 -2
  273. package/src/rules/issues/routing/unknownSetUrlParametersRule.ts +2 -2
  274. package/src/rules/issues/routing/unknownUrlParameterRule.ts +2 -2
  275. package/src/rules/issues/slots/unknownComponentSlotRule.ts +2 -2
  276. package/src/rules/issues/style/invalidStyleSyntaxRule.ts +2 -2
  277. package/src/rules/issues/style/legacyStyleVariableRule.ts +2 -2
  278. package/src/rules/issues/style/legacyThemeRule.ts +2 -2
  279. package/src/rules/issues/style/noReferenceAnimationRule.test.ts +41 -0
  280. package/src/rules/issues/style/noReferenceAnimationRule.ts +5 -3
  281. package/src/rules/issues/style/noReferenceGlobalCSSVariable.ts +2 -2
  282. package/src/rules/issues/style/unknownCSSVariable.ts +2 -2
  283. package/src/rules/issues/style/unknownClassnameRule.ts +2 -2
  284. package/src/rules/issues/variables/noReferenceVariableRule.ts +2 -2
  285. package/src/rules/issues/variables/unknownVariableRule.ts +2 -2
  286. package/src/rules/issues/variables/unknownVariableSetterRule.ts +2 -2
  287. package/src/rules/issues/workflows/duplicateWorkflowParameterRule.ts +29 -28
  288. package/src/rules/issues/workflows/noPostNavigateAction.ts +2 -2
  289. package/src/rules/issues/workflows/noReferenceComponentWorkflowRule.ts +2 -2
  290. package/src/rules/issues/workflows/unknownContextProviderWorkflowRule.ts +2 -2
  291. package/src/rules/issues/workflows/unknownContextWorkflowRule.ts +2 -2
  292. package/src/rules/issues/workflows/unknownTriggerWorkflowParameterRule.ts +55 -54
  293. package/src/rules/issues/workflows/unknownTriggerWorkflowRule.ts +2 -2
  294. package/src/rules/issues/workflows/unknownWorkflowParameterRule.ts +2 -2
  295. package/src/rules/search/fieldSearchRule.test.ts +464 -0
  296. package/src/rules/search/fieldSearchRule.ts +391 -0
  297. package/src/search.worker.ts +19 -46
  298. package/src/searchProject.ts +45 -27
  299. package/src/types.ts +41 -3
  300. package/src/util/parseSearchQuery.test.ts +56 -0
  301. package/src/util/parseSearchQuery.ts +92 -0
@@ -0,0 +1,24 @@
1
+ import type { NodeType } from '../types';
2
+ export type SearchQueryPart = {
3
+ nodeType?: NodeType['nodeType'];
4
+ fields?: Record<string, string | RegExp> | string | RegExp;
5
+ exclude?: boolean;
6
+ };
7
+ /**
8
+ * Takes a string query and return a search query object.
9
+ *
10
+ * Query format examples:
11
+ * - `Some string` - will match exactly "some string" (case insensitive) in a field
12
+ * - `/some string/i` - same as the above
13
+ * - `/Some string/` - same as the above, but case sensitive (any regex allowed)
14
+ * - `Variable,my-var` - will match formula path nodes, as Arrays and objects are stringified when possible.
15
+ *
16
+ * Programmatic search only (WIP, may change):
17
+ * All starts with "<" and contains one ">".
18
+ *
19
+ * - `<>tag:"div"` - will return fields with key "tag" and value exactly "div"
20
+ * - `<component-node>tag:"img"` - same as above, but will only return nodes of type "component-node"
21
+ * - `<>tag:"img" attrs.alt:"/.+/"` - has field tag equals "img" and any value in field "alt" of object "attrs" on the same element.
22
+ * - `<formula>type:"path" path:Variable,my-var` - precisely match a formula with type "path" and path ["Variable", "my-var"] (note that arrays and objects are stringified when possible, so we can use the same syntax as the literal search for exact matches on them)
23
+ */
24
+ export declare function parseSearchQuery(query: string): SearchQueryPart[];
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Takes a string query and return a search query object.
3
+ *
4
+ * Query format examples:
5
+ * - `Some string` - will match exactly "some string" (case insensitive) in a field
6
+ * - `/some string/i` - same as the above
7
+ * - `/Some string/` - same as the above, but case sensitive (any regex allowed)
8
+ * - `Variable,my-var` - will match formula path nodes, as Arrays and objects are stringified when possible.
9
+ *
10
+ * Programmatic search only (WIP, may change):
11
+ * All starts with "<" and contains one ">".
12
+ *
13
+ * - `<>tag:"div"` - will return fields with key "tag" and value exactly "div"
14
+ * - `<component-node>tag:"img"` - same as above, but will only return nodes of type "component-node"
15
+ * - `<>tag:"img" attrs.alt:"/.+/"` - has field tag equals "img" and any value in field "alt" of object "attrs" on the same element.
16
+ * - `<formula>type:"path" path:Variable,my-var` - precisely match a formula with type "path" and path ["Variable", "my-var"] (note that arrays and objects are stringified when possible, so we can use the same syntax as the literal search for exact matches on them)
17
+ */
18
+ export function parseSearchQuery(query) {
19
+ const trimmed = query.trim();
20
+ if (!trimmed)
21
+ return [];
22
+ // Check for programmatic search: <nodeType>field:"value" ...
23
+ const closingBracketIndex = trimmed.startsWith('<')
24
+ ? trimmed.indexOf('>')
25
+ : -1;
26
+ if (closingBracketIndex > 0) {
27
+ const nodeTypeStr = trimmed.slice(1, closingBracketIndex).trim();
28
+ const fieldsPart = trimmed.slice(closingBracketIndex + 1).trim();
29
+ const nodeType = nodeTypeStr
30
+ ? nodeTypeStr
31
+ : undefined;
32
+ const fields = {};
33
+ // Regex to match field:"value" or field:"/regex/flags"
34
+ // Modified to swallow quotes around /regex/
35
+ const fieldRegex = /\s*([^:]+?)\s*:(?:"\/([^/]*)\/([gimuy]*)"|(?:"([^"]*)"))/gi;
36
+ let match;
37
+ while ((match = fieldRegex.exec(fieldsPart)) !== null) {
38
+ const fieldName = match[1];
39
+ const regexPattern = match[2];
40
+ const regexFlags = match[3];
41
+ const quotedValue = match[4];
42
+ if (regexPattern !== undefined) {
43
+ try {
44
+ fields[fieldName] = new RegExp(regexPattern, regexFlags || undefined);
45
+ }
46
+ catch {
47
+ fields[fieldName] = `/${regexPattern}/${regexFlags}`;
48
+ }
49
+ }
50
+ else if (quotedValue !== undefined) {
51
+ // Keep the quotes to indicate "exact match" in the rule
52
+ fields[fieldName] = `"${quotedValue}"`;
53
+ }
54
+ }
55
+ return [{ nodeType, fields }];
56
+ }
57
+ // Regular text search
58
+ // Regex match?
59
+ if (trimmed.startsWith('/') && trimmed.lastIndexOf('/') > 0) {
60
+ const lastSlashIndex = trimmed.lastIndexOf('/');
61
+ const pattern = trimmed.slice(1, lastSlashIndex);
62
+ const flags = trimmed.slice(lastSlashIndex + 1);
63
+ try {
64
+ // If no flags provided, don't default to 'i' if user specifically provided /.../
65
+ // The requirement says /Some string/ is case sensitive, /some string/i is case insensitive.
66
+ return [{ fields: new RegExp(pattern, flags || undefined) }];
67
+ }
68
+ catch {
69
+ // Fallback
70
+ }
71
+ }
72
+ // Default: literal case-insensitive match (as a regex for simple consistency with rule)
73
+ // The user says matches exactly "some string" (case insensitive)
74
+ // We use the raw string here because we want to match it exactly (not as a regex)
75
+ return [
76
+ {
77
+ fields: trimmed,
78
+ },
79
+ ];
80
+ }
81
+ //# sourceMappingURL=parseSearchQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseSearchQuery.js","sourceRoot":"","sources":["../../src/util/parseSearchQuery.ts"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;IAC5B,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAA;IAEvB,6DAA6D;IAC7D,MAAM,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;QACjD,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;QACtB,CAAC,CAAC,CAAC,CAAC,CAAA;IACN,IAAI,mBAAmB,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,IAAI,EAAE,CAAA;QAChE,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QAEhE,MAAM,QAAQ,GAAG,WAAW;YAC1B,CAAC,CAAE,WAAoC;YACvC,CAAC,CAAC,SAAS,CAAA;QACb,MAAM,MAAM,GAAoC,EAAE,CAAA;QAElD,uDAAuD;QACvD,4CAA4C;QAC5C,MAAM,UAAU,GACd,4DAA4D,CAAA;QAC9D,IAAI,KAA6B,CAAA;QACjC,OAAO,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACtD,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;YAC1B,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;YAC7B,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;YAC3B,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;YAE5B,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;gBAC/B,IAAI,CAAC;oBACH,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,MAAM,CAAC,YAAY,EAAE,UAAU,IAAI,SAAS,CAAC,CAAA;gBACvE,CAAC;gBAAC,MAAM,CAAC;oBACP,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,YAAY,IAAI,UAAU,EAAE,CAAA;gBACtD,CAAC;YACH,CAAC;iBAAM,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;gBACrC,wDAAwD;gBACxD,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,WAAW,GAAG,CAAA;YACxC,CAAC;QACH,CAAC;QAED,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAA;IAC/B,CAAC;IAED,sBAAsB;IACtB,eAAe;IACf,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5D,MAAM,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;QAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAA;QAChD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAA;QAC/C,IAAI,CAAC;YACH,iFAAiF;YACjF,4FAA4F;YAC5F,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,MAAM,CAAC,OAAO,EAAE,KAAK,IAAI,SAAS,CAAC,EAAE,CAAC,CAAA;QAC9D,CAAC;QAAC,MAAM,CAAC;YACP,WAAW;QACb,CAAC;IACH,CAAC;IAED,wFAAwF;IACxF,iEAAiE;IACjE,kFAAkF;IAClF,OAAO;QACL;YACE,MAAM,EAAE,OAAO;SAChB;KACF,CAAA;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"removeUnused.fix.js","sourceRoot":"","sources":["../../src/util/removeUnused.fix.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,wCAAwC,CAAA;AAGvE,MAAM,CAAC,MAAM,iBAAiB,GAA0B,CAAC,EACvD,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GACtB,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;AAEvB;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAA0B,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IACxE,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;IACtD,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAC7D,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAGhE,CAAA;IAED,yBAAyB;IACzB,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1C,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAA;QACvE,CAAC;IACH,CAAC;IAED,6BAA6B;IAC7B,MAAM,qBAAqB,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC;QAChD,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAA0B,CAAA;QACnD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAM;QACR,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACpC,qBAAqB,CAAC,OAAO,CAAC,CAAA;YAChC,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC,MAAM,CAAC,CAAA;IAAA,CACrB,CAAA;IAED,qBAAqB,CAAC,MAAM,CAAC,CAAA;IAE7B,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAA;AAAA,CAClD,CAAA"}
1
+ {"version":3,"file":"removeUnused.fix.js","sourceRoot":"","sources":["../../src/util/removeUnused.fix.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,wCAAwC,CAAA;AAGvE,MAAM,CAAC,MAAM,iBAAiB,GAA0B,CAAC,EACvD,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GACtB,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;AAEvB;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAA0B,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;IACvE,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;IACtD,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAC7D,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAGhE,CAAA;IAED,yBAAyB;IACzB,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1C,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAA;QACvE,CAAC;IACH,CAAC;IAED,6BAA6B;IAC7B,MAAM,qBAAqB,GAAG,CAAC,MAAc,EAAE,EAAE;QAC/C,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAA0B,CAAA;QACnD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAM;QACR,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACpC,qBAAqB,CAAC,OAAO,CAAC,CAAA;YAChC,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC,MAAM,CAAC,CAAA;IACtB,CAAC,CAAA;IAED,qBAAqB,CAAC,MAAM,CAAC,CAAA;IAE7B,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAA;AACnD,CAAC,CAAA"}
package/package.json CHANGED
@@ -10,11 +10,12 @@
10
10
  "directory": "packages/search"
11
11
  },
12
12
  "dependencies": {
13
- "@nordcraft/ssr": "1.0.92",
14
- "@nordcraft/core": "1.0.92",
13
+ "@nordcraft/ssr": "1.0.94",
14
+ "@nordcraft/core": "1.0.94",
15
15
  "jsondiffpatch": "0.7.3",
16
- "postcss": "8.5.6",
17
- "zod": "4.2.1"
16
+ "postcss": "8.5.8",
17
+ "zod": "4.2.1",
18
+ "fast-deep-equal": "3.1.3"
18
19
  },
19
20
  "scripts": {
20
21
  "build": "tsgo",
@@ -26,5 +27,5 @@
26
27
  "test:watch:only": "bun test --watch --only"
27
28
  },
28
29
  "files": ["dist", "src"],
29
- "version": "1.0.92"
30
+ "version": "1.0.94"
30
31
  }
@@ -1,13 +1,17 @@
1
1
  import { ISSUE_RULES } from './rules/issues/issueRules.index'
2
2
  import { searchProject } from './searchProject'
3
- import type { FindProblemsArgs, FindProblemsResponse, Result } from './types'
3
+ import type {
4
+ FindProblemsArgs,
5
+ FindProblemsResponse,
6
+ IssueResult,
7
+ } from './types'
4
8
 
5
9
  export const findProblems = (
6
10
  data: FindProblemsArgs,
7
11
  reportResults: (results: FindProblemsResponse) => void,
8
12
  ) => {
9
13
  const { files, options = {} } = data
10
- const idRespond = (results: Result[]) =>
14
+ const idRespond = (results: IssueResult[]) =>
11
15
  reportResults({
12
16
  id: data.id,
13
17
  results,
@@ -19,7 +23,7 @@ export const findProblems = (
19
23
  !options.rulesToExclude?.includes(rule.code),
20
24
  )
21
25
 
22
- let batch: Result[] = []
26
+ let batch: IssueResult[] = []
23
27
  let fileType: string | number | undefined
24
28
  let fileName: string | number | undefined
25
29
  for (const problem of searchProject({
@@ -0,0 +1,134 @@
1
+ import type { ProjectFiles } from '@nordcraft/ssr/dist/ssr.types'
2
+ import { createFieldSearchRule } from './rules/search/fieldSearchRule'
3
+ import { searchProject } from './searchProject'
4
+ import type {
5
+ SearchArgs,
6
+ SearchResponse,
7
+ SearchResult,
8
+ SearchRule,
9
+ } from './types'
10
+
11
+ export interface SearchTask {
12
+ id: string
13
+ cancelled: boolean
14
+ }
15
+
16
+ let currentTask: SearchTask | undefined = undefined
17
+ let files: ProjectFiles | undefined = undefined
18
+
19
+ export async function findSearch(
20
+ data: SearchArgs,
21
+ reportResults: (results: SearchResponse) => void,
22
+ ) {
23
+ const { files: _files, id, query, options = {} } = data
24
+
25
+ if (currentTask) {
26
+ currentTask.cancelled = true
27
+ }
28
+
29
+ const task: SearchTask = { id, cancelled: false }
30
+ currentTask = task
31
+
32
+ files = _files ?? files
33
+ if (!files) {
34
+ reportResults({
35
+ id,
36
+ results: [],
37
+ complete: true,
38
+ cancelled: true,
39
+ cancelReason: 'No files provided for search',
40
+ })
41
+ return
42
+ }
43
+
44
+ const rules: SearchRule[] = []
45
+ rules.push(
46
+ createFieldSearchRule({
47
+ query,
48
+ withDetails: options.withDetails ?? true,
49
+ skippedFields:
50
+ (query.startsWith('<') && query.includes('>')) ||
51
+ (query.startsWith('"') && query.endsWith('"'))
52
+ ? {}
53
+ : {
54
+ // Random generated ids are disabled for non-programmatic or exact matching
55
+ 'component-node': ['children'],
56
+ },
57
+ }),
58
+ )
59
+
60
+ let batch: SearchResult[] = []
61
+ let fileType: string | number | undefined
62
+ let fileName: string | number | undefined
63
+ let lastYield = performance.now()
64
+
65
+ for (const result of searchProject({
66
+ ...options,
67
+ files,
68
+ rules,
69
+ pathsToVisit: options.pathsToVisit ?? [],
70
+ useExactPaths: options.useExactPaths ?? false,
71
+ withDetails: options.withDetails ?? true,
72
+ })) {
73
+ if (task.cancelled) {
74
+ return
75
+ }
76
+
77
+ // Every 10ms we yield to the event loop to allow new messages to be processed
78
+ if (performance.now() - lastYield > 10) {
79
+ await new Promise((resolve) => setTimeout(resolve))
80
+ lastYield = performance.now()
81
+ if (task.cancelled) {
82
+ // eslint-disable-next-line no-console
83
+ console.warn(
84
+ `Search with id ${id} cancelled after yielding to event loop`,
85
+ )
86
+ return
87
+ }
88
+ }
89
+
90
+ switch (options.batchSize) {
91
+ case 'all': {
92
+ batch.push(result)
93
+ break
94
+ }
95
+ case 'per-file': {
96
+ if (fileType !== result.path[0] || fileName !== result.path[1]) {
97
+ if (batch.length > 0) {
98
+ reportResults({
99
+ id,
100
+ results: batch,
101
+ })
102
+ }
103
+ batch = []
104
+ fileType = result.path[0]
105
+ fileName = result.path[1]
106
+ }
107
+
108
+ batch.push(result)
109
+ break
110
+ }
111
+
112
+ default: {
113
+ batch.push(result)
114
+ if (batch.length >= (options.batchSize ?? 1)) {
115
+ reportResults({
116
+ id,
117
+ results: batch,
118
+ })
119
+ batch = []
120
+ }
121
+ break
122
+ }
123
+ }
124
+ }
125
+
126
+ // Send the remaining results and mark the search as complete
127
+ if (!task.cancelled) {
128
+ reportResults({
129
+ id,
130
+ results: batch,
131
+ complete: true,
132
+ })
133
+ }
134
+ }
@@ -1,4 +1,4 @@
1
- import type { Category, Code, Level, Rule } from '../../../types'
1
+ import type { Category, Code, IssueRule, Level } from '../../../types'
2
2
 
3
3
  /**
4
4
  * Generic rule factory for creating a rule that checks for a specific action name.
@@ -21,7 +21,7 @@ export function createActionNameRule({
21
21
  }
22
22
  category?: Category
23
23
  level?: Level
24
- }): Rule<{
24
+ }): IssueRule<{
25
25
  name: string
26
26
  }> {
27
27
  return {
@@ -1,6 +1,6 @@
1
- import type { Rule } from '../../../types'
1
+ import type { IssueRule } from '../../../types'
2
2
 
3
- export const duplicateActionArgumentNameRule: Rule<{
3
+ export const duplicateActionArgumentNameRule: IssueRule<{
4
4
  name: string
5
5
  }> = {
6
6
  code: 'duplicate action argument name',
@@ -1,9 +1,9 @@
1
1
  import type { CustomActionModel } from '@nordcraft/core/dist/component/component.types'
2
- import type { ActionModelNode, NodeType, Rule } from '../../../types'
2
+ import type { ActionModelNode, IssueRule, NodeType } from '../../../types'
3
3
  import { isLegacyAction } from '../../../util/helpers'
4
4
  import { replaceLegacyAction } from './legacyActionRule.fix'
5
5
 
6
- export const legacyActionRule: Rule<
6
+ export const legacyActionRule: IssueRule<
7
7
  {
8
8
  name: string
9
9
  },
@@ -1,9 +1,9 @@
1
1
  import { isLegacyPluginAction } from '@nordcraft/core/dist/component/actionUtils'
2
- import type { Rule } from '../../../types'
2
+ import type { IssueRule } from '../../../types'
3
3
  import { removeFromPathFix } from '../../../util/removeUnused.fix'
4
4
  import { projectActionIsReferenced } from './projectActionIsReferenced.memo'
5
5
 
6
- export const noReferenceProjectActionRule: Rule<void> = {
6
+ export const noReferenceProjectActionRule: IssueRule<void> = {
7
7
  code: 'no-reference project action',
8
8
  level: 'warning',
9
9
  category: 'No References',
@@ -1,8 +1,8 @@
1
1
  import { isLegacyPluginAction } from '@nordcraft/core/dist/component/actionUtils'
2
- import type { Rule } from '../../../types'
2
+ import type { IssueRule } from '../../../types'
3
3
  import { removeFromPathFix } from '../../../util/removeUnused.fix'
4
4
 
5
- export const unknownActionArgumentRule: Rule<{ name: string }> = {
5
+ export const unknownActionArgumentRule: IssueRule<{ name: string }> = {
6
6
  code: 'unknown action argument',
7
7
  level: 'warning',
8
8
  category: 'Unknown Reference',
@@ -1,8 +1,8 @@
1
1
  import { isDefined } from '@nordcraft/core/dist/utils/util'
2
- import type { Rule } from '../../../types'
2
+ import type { IssueRule } from '../../../types'
3
3
  import { removeFromPathFix } from '../../../util/removeUnused.fix'
4
4
 
5
- export const unknownActionEventRule: Rule<{ name: string }> = {
5
+ export const unknownActionEventRule: IssueRule<{ name: string }> = {
6
6
  code: 'unknown action event',
7
7
  level: 'warning',
8
8
  category: 'Unknown Reference',
@@ -1,6 +1,6 @@
1
- import type { Rule } from '../../../types'
1
+ import type { IssueRule } from '../../../types'
2
2
 
3
- export const unknownProjectActionRule: Rule<{ name: string }> = {
3
+ export const unknownProjectActionRule: IssueRule<{ name: string }> = {
4
4
  code: 'unknown project action',
5
5
  level: 'warning',
6
6
  category: 'Unknown Reference',
@@ -1,7 +1,7 @@
1
1
  import { isLegacyApi } from '@nordcraft/core/dist/api/api'
2
- import type { Rule } from '../../../types'
2
+ import type { IssueRule } from '../../../types'
3
3
 
4
- export const invalidApiParserModeRule: Rule<{ api: string }> = {
4
+ export const invalidApiParserModeRule: IssueRule<{ api: string }> = {
5
5
  code: 'invalid api parser mode',
6
6
  level: 'warning',
7
7
  category: 'Quality',
@@ -1,7 +1,7 @@
1
1
  import { isLegacyApi } from '@nordcraft/core/dist/api/api'
2
- import type { Rule } from '../../../types'
2
+ import type { IssueRule } from '../../../types'
3
3
 
4
- export const invalidApiProxyBodySettingRule: Rule<{ api: string }> = {
4
+ export const invalidApiProxyBodySettingRule: IssueRule<{ api: string }> = {
5
5
  code: 'invalid api proxy body setting',
6
6
  level: 'warning',
7
7
  category: 'Quality',
@@ -1,8 +1,8 @@
1
1
  import { isLegacyApi } from '@nordcraft/core/dist/api/api'
2
2
  import { get } from '@nordcraft/core/dist/utils/collections'
3
- import type { Rule } from '../../../types'
3
+ import type { IssueRule } from '../../../types'
4
4
 
5
- export const invalidApiProxyCookieSettingRule: Rule<{ api: string }> = {
5
+ export const invalidApiProxyCookieSettingRule: IssueRule<{ api: string }> = {
6
6
  code: 'invalid api proxy cookie setting',
7
7
  level: 'warning',
8
8
  category: 'Quality',
@@ -1,7 +1,7 @@
1
1
  import { isLegacyApi } from '@nordcraft/core/dist/api/api'
2
- import type { Rule } from '../../../types'
2
+ import type { IssueRule } from '../../../types'
3
3
 
4
- export const legacyApiRule: Rule<{
4
+ export const legacyApiRule: IssueRule<{
5
5
  name: string
6
6
  }> = {
7
7
  code: 'legacy api',
@@ -1,7 +1,7 @@
1
1
  import { ToddleApiV2 } from '@nordcraft/core/dist/api/ToddleApiV2'
2
- import type { Rule } from '../../../types'
2
+ import type { IssueRule } from '../../../types'
3
3
 
4
- export const noReferenceApiInputRule: Rule<{ inputName: string }> = {
4
+ export const noReferenceApiInputRule: IssueRule<{ inputName: string }> = {
5
5
  code: 'no-reference api input',
6
6
  level: 'warning',
7
7
  category: 'No References',
@@ -1,8 +1,8 @@
1
1
  import { isDefined } from '@nordcraft/core/dist/utils/util'
2
- import type { Rule } from '../../../types'
2
+ import type { IssueRule } from '../../../types'
3
3
  import { removeFromPathFix } from '../../../util/removeUnused.fix'
4
4
 
5
- export const noReferenceApiRule: Rule<void> = {
5
+ export const noReferenceApiRule: IssueRule<void> = {
6
6
  code: 'no-reference api',
7
7
  level: 'warning',
8
8
  category: 'No References',
@@ -1,8 +1,8 @@
1
1
  import { isLegacyApi } from '@nordcraft/core/dist/api/api'
2
- import type { Rule } from '../../../types'
2
+ import type { IssueRule } from '../../../types'
3
3
  import { removeFromPathFix } from '../../../util/removeUnused.fix'
4
4
 
5
- export const noReferenceApiServiceRule: Rule<{ serviceName: string }> = {
5
+ export const noReferenceApiServiceRule: IssueRule<{ serviceName: string }> = {
6
6
  code: 'no-reference api service',
7
7
  level: 'warning',
8
8
  category: 'No References',
@@ -1,7 +1,7 @@
1
1
  import type { ApiRequest } from '@nordcraft/core/dist/api/apiTypes'
2
- import type { Rule } from '../../../types'
2
+ import type { IssueRule } from '../../../types'
3
3
 
4
- export const unknownApiInputRule: Rule<{
4
+ export const unknownApiInputRule: IssueRule<{
5
5
  name: string
6
6
  }> = {
7
7
  code: 'unknown api input',
@@ -1,6 +1,6 @@
1
- import type { Rule } from '../../../types'
1
+ import type { IssueRule } from '../../../types'
2
2
 
3
- export const unknownApiRule: Rule<{
3
+ export const unknownApiRule: IssueRule<{
4
4
  name: string
5
5
  }> = {
6
6
  code: 'unknown api',
@@ -1,9 +1,9 @@
1
1
  import { isLegacyApi } from '@nordcraft/core/dist/api/api'
2
2
  import { isDefined } from '@nordcraft/core/dist/utils/util'
3
- import type { Rule } from '../../../types'
3
+ import type { IssueRule } from '../../../types'
4
4
  import { removeFromPathFix } from '../../../util/removeUnused.fix'
5
5
 
6
- export const unknownApiServiceRule: Rule<{
6
+ export const unknownApiServiceRule: IssueRule<{
7
7
  apiName: string
8
8
  serviceName: string
9
9
  }> = {
@@ -2,12 +2,12 @@ import { get } from '@nordcraft/core/dist/utils/collections'
2
2
  import type {
3
3
  ActionModelNode,
4
4
  FixFunction,
5
+ IssueRule,
5
6
  NodeType,
6
- Rule,
7
7
  } from '../../../types'
8
8
  import { removeFromPathFix } from '../../../util/removeUnused.fix'
9
9
 
10
- export const unknownFetchInputRule: Rule<
10
+ export const unknownFetchInputRule: IssueRule<
11
11
  {
12
12
  name: string
13
13
  },
@@ -1,9 +1,9 @@
1
- import type { Rule } from '../../../types'
1
+ import type { IssueRule } from '../../../types'
2
2
  import { contextlessEvaluateFormula } from '../../../util/contextlessEvaluateFormula'
3
3
  import { removeFromPathFix } from '../../../util/removeUnused.fix'
4
4
  import { componentIsReferenced } from '../components/componentIsReferenced.memo'
5
5
 
6
- export const noReferenceAttributeInInstanceRule: Rule<void> = {
6
+ export const noReferenceAttributeInInstanceRule: IssueRule<void> = {
7
7
  code: 'no-reference attribute in instance',
8
8
  level: 'info',
9
9
  category: 'No References',
@@ -1,7 +1,7 @@
1
- import type { Rule } from '../../../types'
1
+ import type { IssueRule } from '../../../types'
2
2
  import { removeFromPathFix } from '../../../util/removeUnused.fix'
3
3
 
4
- export const noReferenceAttributeRule: Rule<void> = {
4
+ export const noReferenceAttributeRule: IssueRule<void> = {
5
5
  code: 'no-reference attribute',
6
6
  level: 'warning',
7
7
  category: 'No References',
@@ -1,6 +1,6 @@
1
- import type { Rule } from '../../../types'
1
+ import type { IssueRule } from '../../../types'
2
2
 
3
- export const unknownAttributeRule: Rule<{
3
+ export const unknownAttributeRule: IssueRule<{
4
4
  name: string
5
5
  }> = {
6
6
  code: 'unknown attribute',
@@ -1,8 +1,8 @@
1
1
  import { isDefined } from '@nordcraft/core/dist/utils/util'
2
- import type { Rule } from '../../../types'
2
+ import type { IssueRule } from '../../../types'
3
3
  import { removeFromPathFix } from '../../../util/removeUnused.fix'
4
4
 
5
- export const unknownComponentAttributeRule: Rule<{
5
+ export const unknownComponentAttributeRule: IssueRule<{
6
6
  name: string
7
7
  componentName: string
8
8
  }> = {
@@ -6,8 +6,8 @@ import type {
6
6
  ComponentNode,
7
7
  FixFunction,
8
8
  FixType,
9
+ IssueRule,
9
10
  NodeType,
10
- Rule,
11
11
  } from '../../../types'
12
12
 
13
13
  export interface InvalidComponentData {
@@ -91,7 +91,7 @@ const changeDataTypeFix: FixFunction<ComponentNode, InvalidComponentData> = ({
91
91
  const convertIssuePath = (path: PropertyKey[]) =>
92
92
  path.map((p) => (typeof p === 'number' ? p : String(p)))
93
93
 
94
- export const invalidComponentStructureRule: Rule<
94
+ export const invalidComponentStructureRule: IssueRule<
95
95
  InvalidComponentData,
96
96
  NodeType,
97
97
  ComponentNode
@@ -1,11 +1,11 @@
1
1
  import type { Component } from '@nordcraft/core/dist/component/component.types'
2
2
  import { isDefined } from '@nordcraft/core/dist/utils/util'
3
- import type { Rule } from '../../../types'
3
+ import type { IssueRule } from '../../../types'
4
4
  import { contextlessEvaluateFormula } from '../../../util/contextlessEvaluateFormula'
5
5
  import { removeFromPathFix } from '../../../util/removeUnused.fix'
6
6
  import { componentIsReferenced } from './componentIsReferenced.memo'
7
7
 
8
- export const noReferenceComponentRule: Rule<void> = {
8
+ export const noReferenceComponentRule: IssueRule<void> = {
9
9
  code: 'no-reference component',
10
10
  level: 'warning',
11
11
  category: 'No References',
@@ -1,7 +1,7 @@
1
1
  import { isDefined } from '@nordcraft/core/dist/utils/util'
2
- import type { Rule } from '../../../types'
2
+ import type { IssueRule } from '../../../types'
3
3
 
4
- export const unknownComponentRule: Rule<{
4
+ export const unknownComponentRule: IssueRule<{
5
5
  name: string
6
6
  }> = {
7
7
  code: 'unknown component',
@@ -1,10 +1,10 @@
1
- import type { Rule } from '../../../types'
1
+ import type { IssueRule } from '../../../types'
2
2
 
3
3
  /**
4
4
  * Rule for checking if a component exposes formulas or workflows
5
5
  * in context but has no slots or components that could consume them
6
6
  */
7
- export const noContextConsumersRule: Rule<{
7
+ export const noContextConsumersRule: IssueRule<{
8
8
  providerName: string
9
9
  formulaName: string
10
10
  }> = {
@@ -1,6 +1,6 @@
1
- import type { Rule } from '../../../types'
1
+ import type { IssueRule } from '../../../types'
2
2
 
3
- export const unknownContextFormulaRule: Rule<{
3
+ export const unknownContextFormulaRule: IssueRule<{
4
4
  providerName: string
5
5
  formulaName: string
6
6
  }> = {