@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
@@ -38,7 +38,7 @@ export const contextlessEvaluateFormula = (
38
38
  }
39
39
 
40
40
  case 'array': {
41
- const results = formula.arguments.map((arg) =>
41
+ const results = (formula.arguments ?? []).map((arg) =>
42
42
  contextlessEvaluateFormula(arg.formula),
43
43
  )
44
44
 
@@ -49,7 +49,7 @@ export const contextlessEvaluateFormula = (
49
49
  }
50
50
 
51
51
  case 'record': {
52
- const entries = Object.entries(formula.entries).map(
52
+ const entries = Object.entries(formula.entries ?? {}).map(
53
53
  ([key, arg]) => [key, contextlessEvaluateFormula(arg.formula)] as const,
54
54
  )
55
55
 
@@ -68,7 +68,7 @@ export const contextlessEvaluateFormula = (
68
68
  // - ANY condition is static and falsy
69
69
  // - EMPTY argument list is always true
70
70
  case 'and': {
71
- const results = formula.arguments.map((arg) =>
71
+ const results = (formula.arguments ?? []).map((arg) =>
72
72
  contextlessEvaluateFormula(arg.formula),
73
73
  )
74
74
 
@@ -90,7 +90,7 @@ export const contextlessEvaluateFormula = (
90
90
  // - ALL conditions are static AND falsy
91
91
  // - EMPTY argument list is always false
92
92
  case 'or': {
93
- const results = formula.arguments.map((arg) =>
93
+ const results = (formula.arguments ?? []).map((arg) =>
94
94
  contextlessEvaluateFormula(arg.formula),
95
95
  )
96
96
 
@@ -0,0 +1,56 @@
1
+ import { describe, expect, test } from 'bun:test'
2
+ import { parseSearchQuery } from './parseSearchQuery'
3
+
4
+ describe('parseSearchQuery', () => {
5
+ test('it should parse simple strings as a literal', () => {
6
+ const result = parseSearchQuery('Some string')
7
+ expect(result).toHaveLength(1)
8
+ expect(result[0].fields).toBe('Some string')
9
+ })
10
+
11
+ test('it should parse case-insensitive regex', () => {
12
+ const result = parseSearchQuery('/some string/i')
13
+ expect(result).toHaveLength(1)
14
+ expect(result[0].fields).toBeInstanceOf(RegExp)
15
+ expect((result[0].fields as RegExp).source).toBe('some string')
16
+ expect((result[0].fields as RegExp).flags).toBe('i')
17
+ })
18
+
19
+ test('it should parse case-sensitive regex', () => {
20
+ const result = parseSearchQuery('/Some string/')
21
+ expect(result).toHaveLength(1)
22
+ expect(result[0].fields).toBeInstanceOf(RegExp)
23
+ expect((result[0].fields as RegExp).source).toBe('Some string')
24
+ expect((result[0].fields as RegExp).flags).toBe('')
25
+ })
26
+
27
+ test('it should parse Variable,my-var as a literal', () => {
28
+ const result = parseSearchQuery('Variable,my-var')
29
+ expect(result).toHaveLength(1)
30
+ expect(result[0].fields).toBe('Variable,my-var')
31
+ })
32
+
33
+ test('it should parse programmatic search with empty nodeType and exact match quotes', () => {
34
+ const result = parseSearchQuery('<>tag:"div"')
35
+ expect(result).toHaveLength(1)
36
+ expect(result[0].nodeType).toBeUndefined()
37
+ expect(result[0].fields).toEqual({ tag: '"div"' })
38
+ })
39
+
40
+ test('it should parse programmatic search with specific nodeType and exact match quotes', () => {
41
+ const result = parseSearchQuery('<component-node>tag:"img"')
42
+ expect(result).toHaveLength(1)
43
+ expect(result[0].nodeType).toBe('component-node')
44
+ expect(result[0].fields).toEqual({ tag: '"img"' })
45
+ })
46
+
47
+ test('it should parse programmatic search with multiple fields and regex', () => {
48
+ const result = parseSearchQuery('<>tag:"img" attrs.alt:"/.+/"')
49
+ expect(result).toHaveLength(1)
50
+ expect(result[0].fields).toEqual({
51
+ tag: '"img"',
52
+ 'attrs.alt': expect.any(RegExp),
53
+ })
54
+ expect((result[0].fields as any)['attrs.alt'].source).toBe('.+')
55
+ })
56
+ })
@@ -0,0 +1,92 @@
1
+ import type { NodeType } from '../types'
2
+
3
+ export type SearchQueryPart = {
4
+ nodeType?: NodeType['nodeType']
5
+ fields?: Record<string, string | RegExp> | string | RegExp
6
+ exclude?: boolean // -key:value or -value
7
+ }
8
+
9
+ /**
10
+ * Takes a string query and return a search query object.
11
+ *
12
+ * Query format examples:
13
+ * - `Some string` - will match exactly "some string" (case insensitive) in a field
14
+ * - `/some string/i` - same as the above
15
+ * - `/Some string/` - same as the above, but case sensitive (any regex allowed)
16
+ * - `Variable,my-var` - will match formula path nodes, as Arrays and objects are stringified when possible.
17
+ *
18
+ * Programmatic search only (WIP, may change):
19
+ * All starts with "<" and contains one ">".
20
+ *
21
+ * - `<>tag:"div"` - will return fields with key "tag" and value exactly "div"
22
+ * - `<component-node>tag:"img"` - same as above, but will only return nodes of type "component-node"
23
+ * - `<>tag:"img" attrs.alt:"/.+/"` - has field tag equals "img" and any value in field "alt" of object "attrs" on the same element.
24
+ * - `<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)
25
+ */
26
+ export function parseSearchQuery(query: string): SearchQueryPart[] {
27
+ const trimmed = query.trim()
28
+ if (!trimmed) return []
29
+
30
+ // Check for programmatic search: <nodeType>field:"value" ...
31
+ const closingBracketIndex = trimmed.startsWith('<')
32
+ ? trimmed.indexOf('>')
33
+ : -1
34
+ if (closingBracketIndex > 0) {
35
+ const nodeTypeStr = trimmed.slice(1, closingBracketIndex).trim()
36
+ const fieldsPart = trimmed.slice(closingBracketIndex + 1).trim()
37
+
38
+ const nodeType = nodeTypeStr
39
+ ? (nodeTypeStr as NodeType['nodeType'])
40
+ : undefined
41
+ const fields: Record<string, string | RegExp> = {}
42
+
43
+ // Regex to match field:"value" or field:"/regex/flags"
44
+ // Modified to swallow quotes around /regex/
45
+ const fieldRegex =
46
+ /\s*([^:]+?)\s*:(?:"\/([^/]*)\/([gimuy]*)"|(?:"([^"]*)"))/gi
47
+ let match: RegExpExecArray | null
48
+ while ((match = fieldRegex.exec(fieldsPart)) !== null) {
49
+ const fieldName = match[1]
50
+ const regexPattern = match[2]
51
+ const regexFlags = match[3]
52
+ const quotedValue = match[4]
53
+
54
+ if (regexPattern !== undefined) {
55
+ try {
56
+ fields[fieldName] = new RegExp(regexPattern, regexFlags || undefined)
57
+ } catch {
58
+ fields[fieldName] = `/${regexPattern}/${regexFlags}`
59
+ }
60
+ } else if (quotedValue !== undefined) {
61
+ // Keep the quotes to indicate "exact match" in the rule
62
+ fields[fieldName] = `"${quotedValue}"`
63
+ }
64
+ }
65
+
66
+ return [{ nodeType, fields }]
67
+ }
68
+
69
+ // Regular text search
70
+ // Regex match?
71
+ if (trimmed.startsWith('/') && trimmed.lastIndexOf('/') > 0) {
72
+ const lastSlashIndex = trimmed.lastIndexOf('/')
73
+ const pattern = trimmed.slice(1, lastSlashIndex)
74
+ const flags = trimmed.slice(lastSlashIndex + 1)
75
+ try {
76
+ // If no flags provided, don't default to 'i' if user specifically provided /.../
77
+ // The requirement says /Some string/ is case sensitive, /some string/i is case insensitive.
78
+ return [{ fields: new RegExp(pattern, flags || undefined) }]
79
+ } catch {
80
+ // Fallback
81
+ }
82
+ }
83
+
84
+ // Default: literal case-insensitive match (as a regex for simple consistency with rule)
85
+ // The user says matches exactly "some string" (case insensitive)
86
+ // We use the raw string here because we want to match it exactly (not as a regex)
87
+ return [
88
+ {
89
+ fields: trimmed,
90
+ },
91
+ ]
92
+ }