@nordcraft/search 1.0.93 → 1.0.95

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 (306) 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 +2 -2
  103. package/dist/rules/issues/formulas/legacyFormulaRule.fix.js.map +1 -1
  104. package/dist/rules/issues/formulas/legacyFormulaRule.js.map +1 -1
  105. package/dist/rules/issues/formulas/noReferenceComponentFormulaRule.d.ts +2 -2
  106. package/dist/rules/issues/formulas/noReferenceComponentFormulaRule.js.map +1 -1
  107. package/dist/rules/issues/formulas/noReferenceProjectFormulaRule.d.ts +2 -2
  108. package/dist/rules/issues/formulas/noReferenceProjectFormulaRule.js.map +1 -1
  109. package/dist/rules/issues/formulas/projectFormulaIsReferenced.memo.js.map +1 -1
  110. package/dist/rules/issues/formulas/unknownComponentFormulaInputRule.d.ts +2 -2
  111. package/dist/rules/issues/formulas/unknownComponentFormulaInputRule.js.map +1 -1
  112. package/dist/rules/issues/formulas/unknownFormulaRule.d.ts +2 -2
  113. package/dist/rules/issues/formulas/unknownFormulaRule.js.map +1 -1
  114. package/dist/rules/issues/formulas/unknownProjectFormulaInputRule.d.ts +2 -2
  115. package/dist/rules/issues/formulas/unknownProjectFormulaInputRule.js.map +1 -1
  116. package/dist/rules/issues/formulas/unknownProjectFormulaRule.d.ts +2 -2
  117. package/dist/rules/issues/formulas/unknownProjectFormulaRule.js.map +1 -1
  118. package/dist/rules/issues/formulas/unknownRepeatIndexFormulaRule.d.ts +2 -2
  119. package/dist/rules/issues/formulas/unknownRepeatIndexFormulaRule.js.map +1 -1
  120. package/dist/rules/issues/formulas/unknownRepeatItemFormulaRule.d.ts +2 -2
  121. package/dist/rules/issues/formulas/unknownRepeatItemFormulaRule.js.map +1 -1
  122. package/dist/rules/issues/logic/logicRules.index.d.ts +2 -2
  123. package/dist/rules/issues/logic/noStaticNodeCondition.d.ts +2 -2
  124. package/dist/rules/issues/logic/noStaticNodeCondition.js.map +1 -1
  125. package/dist/rules/issues/logic/noUnnecessaryConditionFalsy.d.ts +2 -2
  126. package/dist/rules/issues/logic/noUnnecessaryConditionFalsy.js +1 -1
  127. package/dist/rules/issues/logic/noUnnecessaryConditionFalsy.js.map +1 -1
  128. package/dist/rules/issues/logic/noUnnecessaryConditionTruthy.d.ts +2 -2
  129. package/dist/rules/issues/logic/noUnnecessaryConditionTruthy.js +1 -1
  130. package/dist/rules/issues/logic/noUnnecessaryConditionTruthy.js.map +1 -1
  131. package/dist/rules/issues/miscellaneous/createStaticSizeConstraintRule.d.ts +2 -2
  132. package/dist/rules/issues/miscellaneous/createStaticSizeConstraintRule.js.map +1 -1
  133. package/dist/rules/issues/miscellaneous/miscRules.index.d.ts +3 -3
  134. package/dist/rules/issues/miscellaneous/noReferenceNodeRule.d.ts +2 -2
  135. package/dist/rules/issues/miscellaneous/noReferenceNodeRule.js.map +1 -1
  136. package/dist/rules/issues/miscellaneous/noReferencePackageRule.d.ts +2 -2
  137. package/dist/rules/issues/miscellaneous/noReferencePackageRule.js.map +1 -1
  138. package/dist/rules/issues/miscellaneous/requireExtensionRule.d.ts +2 -2
  139. package/dist/rules/issues/miscellaneous/requireExtensionRule.js.map +1 -1
  140. package/dist/rules/issues/miscellaneous/unknownCookieRule.d.ts +2 -2
  141. package/dist/rules/issues/miscellaneous/unknownCookieRule.js +5 -2
  142. package/dist/rules/issues/miscellaneous/unknownCookieRule.js.map +1 -1
  143. package/dist/rules/issues/routing/duplicateRouteRule.d.ts +2 -2
  144. package/dist/rules/issues/routing/duplicateRouteRule.js.map +1 -1
  145. package/dist/rules/issues/routing/duplicateUrlParameterRule.d.ts +2 -2
  146. package/dist/rules/issues/routing/duplicateUrlParameterRule.js.map +1 -1
  147. package/dist/rules/issues/routing/routingRules.index.d.ts +2 -2
  148. package/dist/rules/issues/routing/unknownSetUrlParameterRule.d.ts +2 -2
  149. package/dist/rules/issues/routing/unknownSetUrlParameterRule.js.map +1 -1
  150. package/dist/rules/issues/routing/unknownSetUrlParametersRule.d.ts +2 -2
  151. package/dist/rules/issues/routing/unknownSetUrlParametersRule.js.map +1 -1
  152. package/dist/rules/issues/routing/unknownUrlParameterRule.d.ts +2 -2
  153. package/dist/rules/issues/routing/unknownUrlParameterRule.js.map +1 -1
  154. package/dist/rules/issues/slots/slotRules.index.d.ts +1 -1
  155. package/dist/rules/issues/slots/unknownComponentSlotRule.d.ts +2 -2
  156. package/dist/rules/issues/slots/unknownComponentSlotRule.js.map +1 -1
  157. package/dist/rules/issues/style/invalidStyleSyntaxRule.d.ts +2 -2
  158. package/dist/rules/issues/style/invalidStyleSyntaxRule.js.map +1 -1
  159. package/dist/rules/issues/style/legacyStyleVariableRule.d.ts +2 -2
  160. package/dist/rules/issues/style/legacyStyleVariableRule.js.map +1 -1
  161. package/dist/rules/issues/style/legacyThemeRule.d.ts +2 -2
  162. package/dist/rules/issues/style/legacyThemeRule.js.map +1 -1
  163. package/dist/rules/issues/style/noReferenceAnimationRule.d.ts +2 -2
  164. package/dist/rules/issues/style/noReferenceAnimationRule.js.map +1 -1
  165. package/dist/rules/issues/style/noReferenceGlobalCSSVariable.d.ts +2 -2
  166. package/dist/rules/issues/style/noReferenceGlobalCSSVariable.js.map +1 -1
  167. package/dist/rules/issues/style/styleRules.index.d.ts +3 -3
  168. package/dist/rules/issues/style/unknownCSSVariable.d.ts +2 -2
  169. package/dist/rules/issues/style/unknownCSSVariable.js.map +1 -1
  170. package/dist/rules/issues/style/unknownClassnameRule.d.ts +2 -2
  171. package/dist/rules/issues/style/unknownClassnameRule.js.map +1 -1
  172. package/dist/rules/issues/variables/noReferenceVariableRule.d.ts +2 -2
  173. package/dist/rules/issues/variables/noReferenceVariableRule.js.map +1 -1
  174. package/dist/rules/issues/variables/unknownVariableRule.d.ts +2 -2
  175. package/dist/rules/issues/variables/unknownVariableRule.js.map +1 -1
  176. package/dist/rules/issues/variables/unknownVariableSetterRule.d.ts +2 -2
  177. package/dist/rules/issues/variables/unknownVariableSetterRule.js.map +1 -1
  178. package/dist/rules/issues/variables/variableRules.index.d.ts +1 -1
  179. package/dist/rules/issues/workflows/duplicateWorkflowParameterRule.d.ts +2 -2
  180. package/dist/rules/issues/workflows/duplicateWorkflowParameterRule.js.map +1 -1
  181. package/dist/rules/issues/workflows/noPostNavigateAction.d.ts +2 -2
  182. package/dist/rules/issues/workflows/noPostNavigateAction.js.map +1 -1
  183. package/dist/rules/issues/workflows/noReferenceComponentWorkflowRule.d.ts +2 -2
  184. package/dist/rules/issues/workflows/noReferenceComponentWorkflowRule.js.map +1 -1
  185. package/dist/rules/issues/workflows/unknownContextProviderWorkflowRule.d.ts +2 -2
  186. package/dist/rules/issues/workflows/unknownContextProviderWorkflowRule.js.map +1 -1
  187. package/dist/rules/issues/workflows/unknownContextWorkflowRule.d.ts +2 -2
  188. package/dist/rules/issues/workflows/unknownContextWorkflowRule.js.map +1 -1
  189. package/dist/rules/issues/workflows/unknownTriggerWorkflowParameterRule.d.ts +2 -2
  190. package/dist/rules/issues/workflows/unknownTriggerWorkflowParameterRule.js.map +1 -1
  191. package/dist/rules/issues/workflows/unknownTriggerWorkflowRule.d.ts +2 -2
  192. package/dist/rules/issues/workflows/unknownTriggerWorkflowRule.js.map +1 -1
  193. package/dist/rules/issues/workflows/unknownWorkflowParameterRule.d.ts +2 -2
  194. package/dist/rules/issues/workflows/unknownWorkflowParameterRule.js.map +1 -1
  195. package/dist/rules/issues/workflows/workflowRules.index.d.ts +3 -3
  196. package/dist/rules/search/fieldSearchRule.d.ts +8 -0
  197. package/dist/rules/search/fieldSearchRule.js +293 -0
  198. package/dist/rules/search/fieldSearchRule.js.map +1 -0
  199. package/dist/search.worker.d.ts +1 -11
  200. package/dist/search.worker.js +17 -6
  201. package/dist/search.worker.js.map +1 -1
  202. package/dist/searchProject.d.ts +11 -5
  203. package/dist/searchProject.js +11 -12
  204. package/dist/searchProject.js.map +1 -1
  205. package/dist/types.d.ts +33 -3
  206. package/dist/util/contextlessEvaluateFormula.js +4 -4
  207. package/dist/util/contextlessEvaluateFormula.js.map +1 -1
  208. package/dist/util/helpers.js.map +1 -1
  209. package/dist/util/parseSearchQuery.d.ts +24 -0
  210. package/dist/util/parseSearchQuery.js +81 -0
  211. package/dist/util/parseSearchQuery.js.map +1 -0
  212. package/dist/util/removeUnused.fix.js.map +1 -1
  213. package/package.json +6 -5
  214. package/src/findProblems.ts +7 -3
  215. package/src/findSearch.ts +134 -0
  216. package/src/rules/issues/actions/createActionNameRule.ts +2 -2
  217. package/src/rules/issues/actions/duplicateActionArgumentNameRule.ts +2 -2
  218. package/src/rules/issues/actions/legacyActionRule.ts +2 -2
  219. package/src/rules/issues/actions/noReferenceProjectActionRule.ts +2 -2
  220. package/src/rules/issues/actions/unknownActionArgumentRule.ts +2 -2
  221. package/src/rules/issues/actions/unknownActionEventRule.ts +2 -2
  222. package/src/rules/issues/actions/unknownProjectActionRule.ts +2 -2
  223. package/src/rules/issues/apis/invalidApiParserModeRule.ts +2 -2
  224. package/src/rules/issues/apis/invalidApiProxyBodySettingRule.ts +2 -2
  225. package/src/rules/issues/apis/invalidApiProxyCookieSettingRule.ts +2 -2
  226. package/src/rules/issues/apis/legacyApiRule.ts +2 -2
  227. package/src/rules/issues/apis/noReferenceApiInputRule.ts +2 -2
  228. package/src/rules/issues/apis/noReferenceApiRule.ts +2 -2
  229. package/src/rules/issues/apis/noReferenceApiServiceRule.ts +2 -2
  230. package/src/rules/issues/apis/unknownApiInputRule.ts +2 -2
  231. package/src/rules/issues/apis/unknownApiRule.ts +2 -2
  232. package/src/rules/issues/apis/unknownApiServiceRule.ts +2 -2
  233. package/src/rules/issues/apis/unknownFetchInputRule.ts +2 -2
  234. package/src/rules/issues/attributes/noReferenceAttributeInInstanceRule.ts +2 -2
  235. package/src/rules/issues/attributes/noReferenceAttributeRule.ts +2 -2
  236. package/src/rules/issues/attributes/unknownAttributeRule.ts +2 -2
  237. package/src/rules/issues/attributes/unknownComponentAttributeRule.ts +2 -2
  238. package/src/rules/issues/components/invalidComponentStructureRule.ts +2 -2
  239. package/src/rules/issues/components/noReferenceComponentRule.ts +2 -2
  240. package/src/rules/issues/components/unknownComponentRule.ts +2 -2
  241. package/src/rules/issues/context/noContextConsumersRule.ts +2 -2
  242. package/src/rules/issues/context/unknownContextFormulaRule.ts +2 -2
  243. package/src/rules/issues/context/unknownContextProviderFormulaRule.ts +2 -2
  244. package/src/rules/issues/context/unknownContextProviderRule.ts +32 -31
  245. package/src/rules/issues/dom/createRequiredDirectChildRule.ts +2 -2
  246. package/src/rules/issues/dom/createRequiredDirectParentRule.ts +2 -2
  247. package/src/rules/issues/dom/createRequiredElementAttributeRule.ts +2 -2
  248. package/src/rules/issues/dom/createRequiredMetaTagRule.ts +2 -2
  249. package/src/rules/issues/dom/elementWithoutInteractiveContentRule.ts +2 -2
  250. package/src/rules/issues/dom/imageWithoutDimensionRule.ts +2 -2
  251. package/src/rules/issues/dom/nonEmptyVoidElementRule.ts +2 -2
  252. package/src/rules/issues/events/duplicateEventTriggerRule.ts +2 -2
  253. package/src/rules/issues/events/noReferenceEventRule.ts +2 -2
  254. package/src/rules/issues/events/unknownEventRule.ts +2 -2
  255. package/src/rules/issues/events/unknownTriggerEventRule.ts +2 -2
  256. package/src/rules/issues/formulas/duplicateFormulaArgumentNameRule.ts +2 -2
  257. package/src/rules/issues/formulas/legacyFormulaRule.fix.ts +2 -2
  258. package/src/rules/issues/formulas/legacyFormulaRule.ts +2 -2
  259. package/src/rules/issues/formulas/noReferenceComponentFormulaRule.ts +2 -2
  260. package/src/rules/issues/formulas/noReferenceProjectFormulaRule.ts +2 -2
  261. package/src/rules/issues/formulas/unknownComponentFormulaInputRule.ts +2 -2
  262. package/src/rules/issues/formulas/unknownFormulaRule.ts +2 -2
  263. package/src/rules/issues/formulas/unknownProjectFormulaInputRule.ts +2 -2
  264. package/src/rules/issues/formulas/unknownProjectFormulaRule.ts +2 -2
  265. package/src/rules/issues/formulas/unknownRepeatIndexFormulaRule.ts +2 -2
  266. package/src/rules/issues/formulas/unknownRepeatItemFormulaRule.ts +2 -2
  267. package/src/rules/issues/logic/noStaticNodeCondition.ts +2 -2
  268. package/src/rules/issues/logic/noUnnecessaryConditionFalsy.ts +3 -3
  269. package/src/rules/issues/logic/noUnnecessaryConditionTruthy.ts +3 -3
  270. package/src/rules/issues/miscellaneous/createStaticSizeConstraintRule.ts +2 -2
  271. package/src/rules/issues/miscellaneous/noReferenceNodeRule.ts +2 -2
  272. package/src/rules/issues/miscellaneous/noReferencePackageRule.ts +2 -2
  273. package/src/rules/issues/miscellaneous/requireExtensionRule.ts +2 -2
  274. package/src/rules/issues/miscellaneous/unknownCookieRule.ts +7 -4
  275. package/src/rules/issues/routing/duplicateRouteRule.ts +2 -2
  276. package/src/rules/issues/routing/duplicateUrlParameterRule.ts +2 -2
  277. package/src/rules/issues/routing/unknownSetUrlParameterRule.ts +2 -2
  278. package/src/rules/issues/routing/unknownSetUrlParametersRule.ts +2 -2
  279. package/src/rules/issues/routing/unknownUrlParameterRule.ts +2 -2
  280. package/src/rules/issues/slots/unknownComponentSlotRule.ts +2 -2
  281. package/src/rules/issues/style/invalidStyleSyntaxRule.ts +2 -2
  282. package/src/rules/issues/style/legacyStyleVariableRule.ts +2 -2
  283. package/src/rules/issues/style/legacyThemeRule.ts +2 -2
  284. package/src/rules/issues/style/noReferenceAnimationRule.ts +2 -2
  285. package/src/rules/issues/style/noReferenceGlobalCSSVariable.ts +2 -2
  286. package/src/rules/issues/style/unknownCSSVariable.ts +2 -2
  287. package/src/rules/issues/style/unknownClassnameRule.ts +2 -2
  288. package/src/rules/issues/variables/noReferenceVariableRule.ts +2 -2
  289. package/src/rules/issues/variables/unknownVariableRule.ts +2 -2
  290. package/src/rules/issues/variables/unknownVariableSetterRule.ts +2 -2
  291. package/src/rules/issues/workflows/duplicateWorkflowParameterRule.ts +29 -28
  292. package/src/rules/issues/workflows/noPostNavigateAction.ts +2 -2
  293. package/src/rules/issues/workflows/noReferenceComponentWorkflowRule.ts +2 -2
  294. package/src/rules/issues/workflows/unknownContextProviderWorkflowRule.ts +2 -2
  295. package/src/rules/issues/workflows/unknownContextWorkflowRule.ts +2 -2
  296. package/src/rules/issues/workflows/unknownTriggerWorkflowParameterRule.ts +55 -54
  297. package/src/rules/issues/workflows/unknownTriggerWorkflowRule.ts +2 -2
  298. package/src/rules/issues/workflows/unknownWorkflowParameterRule.ts +2 -2
  299. package/src/rules/search/fieldSearchRule.test.ts +464 -0
  300. package/src/rules/search/fieldSearchRule.ts +391 -0
  301. package/src/search.worker.ts +19 -46
  302. package/src/searchProject.ts +45 -27
  303. package/src/types.ts +41 -3
  304. package/src/util/contextlessEvaluateFormula.ts +4 -4
  305. package/src/util/parseSearchQuery.test.ts +56 -0
  306. package/src/util/parseSearchQuery.ts +92 -0
@@ -0,0 +1,464 @@
1
+ import type { ProjectFiles } from '@nordcraft/ssr/dist/ssr.types'
2
+ import { describe, expect, test } from 'bun:test'
3
+ import { searchProject } from '../../searchProject'
4
+ import { createFieldSearchRule } from './fieldSearchRule'
5
+
6
+ describe('fieldSearchRule', () => {
7
+ const files: ProjectFiles = {
8
+ formulas: {},
9
+ components: {
10
+ test: {
11
+ name: 'test',
12
+ nodes: {
13
+ myNode: {
14
+ type: 'element',
15
+ tag: 'div',
16
+ attrs: {
17
+ alt: {
18
+ type: 'and',
19
+ arguments: [
20
+ {
21
+ formula: {
22
+ type: 'function',
23
+ name: 'myFormula',
24
+ arguments: [],
25
+ },
26
+ },
27
+ ],
28
+ },
29
+ },
30
+ children: [],
31
+ events: {},
32
+ },
33
+ },
34
+ formulas: {
35
+ myFormula: {
36
+ name: 'myFormula',
37
+ formula: {
38
+ type: 'function',
39
+ name: 'myFormula',
40
+ arguments: [],
41
+ '@nordcraft/metadata': {
42
+ comments: {
43
+ 0: {
44
+ index: 0,
45
+ text: 'This is a comment',
46
+ },
47
+ },
48
+ },
49
+ },
50
+ },
51
+ },
52
+ apis: {},
53
+ attributes: {},
54
+ variables: {},
55
+ route: {
56
+ path: [],
57
+ query: {},
58
+ },
59
+ workflows: {},
60
+ },
61
+ },
62
+ }
63
+
64
+ test('it should find nodes with programmatic search', () => {
65
+ const results = Array.from(
66
+ searchProject({
67
+ withDetails: false,
68
+ files,
69
+ rules: [
70
+ createFieldSearchRule({
71
+ query: '<formula>name:"myFormula"',
72
+ }),
73
+ ],
74
+ }),
75
+ )
76
+
77
+ expect(results).toHaveLength(2)
78
+ })
79
+
80
+ test('it should find nodes with programmatic search and empty nodeType', () => {
81
+ const results = Array.from(
82
+ searchProject({
83
+ withDetails: false,
84
+ files,
85
+ rules: [
86
+ createFieldSearchRule({
87
+ query: '<>tag:"div"',
88
+ }),
89
+ ],
90
+ }),
91
+ )
92
+
93
+ expect(results).toHaveLength(1)
94
+ })
95
+
96
+ test('it should find nodes with plain text search', () => {
97
+ const results = Array.from(
98
+ searchProject({
99
+ withDetails: false,
100
+ files,
101
+ rules: [
102
+ createFieldSearchRule({
103
+ query: 'myForm',
104
+ }),
105
+ ],
106
+ }),
107
+ )
108
+
109
+ expect(results).toHaveLength(3)
110
+ })
111
+
112
+ test('it should find nodes with plain text search (exact match with quotes)', () => {
113
+ const resultsWithSubstring = Array.from(
114
+ searchProject({
115
+ withDetails: false,
116
+ files,
117
+ rules: [
118
+ createFieldSearchRule({
119
+ query: '"myForm"',
120
+ }),
121
+ ],
122
+ }),
123
+ )
124
+ const resultExactMatch = Array.from(
125
+ searchProject({
126
+ withDetails: false,
127
+ files,
128
+ rules: [
129
+ createFieldSearchRule({
130
+ query: '"myFormula"',
131
+ }),
132
+ ],
133
+ }),
134
+ )
135
+
136
+ expect(resultsWithSubstring).toHaveLength(0)
137
+ expect(resultExactMatch).toHaveLength(3)
138
+ })
139
+
140
+ test('it should find nodes with regex in programmatic search', () => {
141
+ const results = Array.from(
142
+ searchProject({
143
+ withDetails: false,
144
+ files,
145
+ rules: [
146
+ createFieldSearchRule({
147
+ query: '<>tag:"div" attrs.alt.arguments.0.formula.name:"/my.*/"',
148
+ }),
149
+ ],
150
+ }),
151
+ )
152
+
153
+ expect(results).toHaveLength(1)
154
+ expect(results[0].path).toEqual(['components', 'test', 'nodes', 'myNode'])
155
+ })
156
+
157
+ test('it should find path formulas with array match (Variable,my-var)', () => {
158
+ const _files = {
159
+ components: {
160
+ test: {
161
+ name: 'test',
162
+ nodes: {},
163
+ formulas: {
164
+ myFormula: {
165
+ name: 'myFormula',
166
+ formula: {
167
+ type: 'path',
168
+ path: ['Variables', 'my-var', 'field'],
169
+ } as any,
170
+ },
171
+ },
172
+ apis: {},
173
+ attributes: {},
174
+ variables: {},
175
+ },
176
+ },
177
+ } as any
178
+ const results1 = Array.from(
179
+ searchProject({
180
+ withDetails: true,
181
+ files: _files,
182
+ rules: [
183
+ createFieldSearchRule({
184
+ // Should work with or without whitespace after the comma
185
+ query: 'Variables, my-var',
186
+ }),
187
+ ],
188
+ }),
189
+ )
190
+ const results2 = Array.from(
191
+ searchProject({
192
+ withDetails: true,
193
+ files: _files,
194
+ rules: [
195
+ createFieldSearchRule({
196
+ query: 'Variables,my-var',
197
+ }),
198
+ ],
199
+ }),
200
+ )
201
+
202
+ expect(results1).toHaveLength(1)
203
+ expect(results1[0].path).toEqual([
204
+ 'components',
205
+ 'test',
206
+ 'formulas',
207
+ 'myFormula',
208
+ 'formula',
209
+ ])
210
+ expect(results2).toHaveLength(1)
211
+ expect(results2[0].path).toEqual([
212
+ 'components',
213
+ 'test',
214
+ 'formulas',
215
+ 'myFormula',
216
+ 'formula',
217
+ ])
218
+ })
219
+
220
+ test('it should find nodes with plain text search (includes)', () => {
221
+ const results = Array.from(
222
+ searchProject({
223
+ files,
224
+ rules: [
225
+ createFieldSearchRule({
226
+ query: 'formula',
227
+ }),
228
+ ],
229
+ }),
230
+ )
231
+
232
+ expect(results).toHaveLength(3)
233
+ })
234
+
235
+ test('it should find nodes with case-sensitive regex', () => {
236
+ const results = Array.from(
237
+ searchProject({
238
+ files,
239
+ rules: [
240
+ createFieldSearchRule({
241
+ query: '/myFormula/',
242
+ }),
243
+ ],
244
+ }),
245
+ )
246
+
247
+ expect(results).toHaveLength(3)
248
+
249
+ const results2 = Array.from(
250
+ searchProject({
251
+ files,
252
+ rules: [
253
+ createFieldSearchRule({
254
+ query: '/myformula/',
255
+ }),
256
+ ],
257
+ }),
258
+ )
259
+ expect(results2).toHaveLength(0)
260
+ })
261
+
262
+ test('it should find nodes with complex object fields', () => {
263
+ const results = Array.from(
264
+ searchProject({
265
+ files,
266
+ rules: [
267
+ createFieldSearchRule({
268
+ query: '<formula>@nordcraft/metadata.comments.0.text:comment',
269
+ }),
270
+ ],
271
+ }),
272
+ )
273
+
274
+ expect(results).toHaveLength(3)
275
+ expect(results[0].path).toEqual([
276
+ 'components',
277
+ 'test',
278
+ 'formulas',
279
+ 'myFormula',
280
+ 'formula',
281
+ ])
282
+ })
283
+
284
+ test('it should find nodes with complex object exact match', () => {
285
+ const results = Array.from(
286
+ searchProject({
287
+ files,
288
+ rules: [
289
+ createFieldSearchRule({
290
+ query:
291
+ '<formula>@nordcraft/metadata.comments.0.text:"This is a comment"',
292
+ }),
293
+ ],
294
+ }),
295
+ )
296
+
297
+ expect(results).toHaveLength(1)
298
+ expect(results[0].path).toEqual([
299
+ 'components',
300
+ 'test',
301
+ 'formulas',
302
+ 'myFormula',
303
+ 'formula',
304
+ ])
305
+ })
306
+
307
+ test('it has details when withDetails is true', () => {
308
+ const results = Array.from(
309
+ searchProject({
310
+ withDetails: true,
311
+ files,
312
+ rules: [
313
+ createFieldSearchRule({
314
+ query: 'Form',
315
+ }),
316
+ ],
317
+ }),
318
+ )
319
+
320
+ expect(results).toHaveLength(3)
321
+ expect(results[1].details.context).toEqual({
322
+ before: 'my',
323
+ matched: 'Form',
324
+ after: 'ula',
325
+ })
326
+ expect(results[1].details.field).toEqual('name')
327
+ })
328
+
329
+ test('it should not report from skipped fields', () => {
330
+ const filesWithChildren: ProjectFiles = {
331
+ ...files,
332
+ components: {
333
+ test: {
334
+ ...files.components.test,
335
+ name: 'test',
336
+ nodes: {
337
+ ...files.components.test?.nodes,
338
+ myNode: {
339
+ ...files.components.test?.nodes?.myNode,
340
+ children: ['_xyz_'],
341
+ attrs: {},
342
+ events: {},
343
+ tag: 'div',
344
+ type: 'element',
345
+ classes: {
346
+ myClass: {},
347
+ },
348
+ },
349
+ },
350
+ },
351
+ },
352
+ }
353
+ const results = Array.from(
354
+ searchProject({
355
+ withDetails: true,
356
+ files: filesWithChildren as any,
357
+ rules: [
358
+ createFieldSearchRule({
359
+ query: 'xyz',
360
+ skippedFields: {
361
+ 'component-node': ['children'],
362
+ },
363
+ }),
364
+ ],
365
+ }),
366
+ )
367
+ expect(results).toBeEmpty()
368
+ })
369
+
370
+ test('regex "value.*person" search should match combined from key and values', () => {
371
+ const filesWithCombinedField: ProjectFiles = {
372
+ ...files,
373
+ components: {
374
+ test: {
375
+ ...files.components.test,
376
+ name: 'test',
377
+ nodes: {
378
+ ...files.components.test?.nodes,
379
+ myNode: {
380
+ ...files.components.test?.nodes?.myNode,
381
+ type: 'element',
382
+ tag: 'img',
383
+ attrs: {
384
+ alt: {
385
+ type: 'value',
386
+ value: 'a person',
387
+ },
388
+ },
389
+ events: {},
390
+ children: [],
391
+ },
392
+ },
393
+ },
394
+ },
395
+ }
396
+ const results = Array.from(
397
+ searchProject({
398
+ withDetails: true,
399
+ files: filesWithCombinedField as any,
400
+ rules: [
401
+ createFieldSearchRule({
402
+ query: '/value.*person/',
403
+ }),
404
+ ],
405
+ }),
406
+ )
407
+
408
+ expect(results).toHaveLength(1)
409
+ expect(results[0].path).toEqual([
410
+ 'components',
411
+ 'test',
412
+ 'nodes',
413
+ 'myNode',
414
+ 'attrs',
415
+ 'alt',
416
+ ])
417
+ })
418
+
419
+ test('match on a key should append the value to the context "after" field', () => {
420
+ const filesWithCombinedField: ProjectFiles = {
421
+ ...files,
422
+ components: {
423
+ test: {
424
+ ...files.components.test,
425
+ name: 'test',
426
+ nodes: {
427
+ ...files.components.test?.nodes,
428
+ myNode: {
429
+ ...files.components.test?.nodes?.myNode,
430
+ type: 'element',
431
+ tag: 'img',
432
+ events: {},
433
+ children: [],
434
+ attrs: {},
435
+ style: {
436
+ 'background:': 'var(--dark-blue)',
437
+ },
438
+ },
439
+ },
440
+ },
441
+ },
442
+ }
443
+ const results = Array.from(
444
+ searchProject({
445
+ withDetails: true,
446
+ files: filesWithCombinedField as any,
447
+ rules: [
448
+ createFieldSearchRule({
449
+ query: '/ag/',
450
+ }),
451
+ ],
452
+ }),
453
+ )
454
+
455
+ expect(results).toHaveLength(1)
456
+ expect(results[0].details.nodeType).toBe('component-node')
457
+ expect(results[0].details.field).toBe('tag')
458
+ expect(results[0].details.context).toEqual({
459
+ before: 't',
460
+ matched: 'ag',
461
+ after: ': img',
462
+ })
463
+ })
464
+ })