@cucumber/react-components 24.3.0 → 24.4.0

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 (635) hide show
  1. package/README.md +2 -2
  2. package/dist/{src/CucumberQueryContext.d.ts → CucumberQueryContext.d.ts} +0 -1
  3. package/dist/CucumberQueryContext.js +4 -0
  4. package/dist/{src/GherkinQueryContext.d.ts → GherkinQueryContext.d.ts} +0 -1
  5. package/dist/GherkinQueryContext.js +4 -0
  6. package/dist/{src/SearchContext.d.ts → SearchContext.d.ts} +0 -1
  7. package/dist/SearchContext.js +10 -0
  8. package/dist/{src/ciCommitLink.d.ts → ciCommitLink.d.ts} +0 -1
  9. package/dist/ciCommitLink.js +12 -0
  10. package/dist/{src/components → components}/app/CICommitLink.d.ts +0 -1
  11. package/dist/components/app/CICommitLink.js +16 -0
  12. package/dist/{src/components → components}/app/CIJobLink.d.ts +0 -1
  13. package/dist/components/app/CIJobLink.js +10 -0
  14. package/dist/{src/components → components}/app/ControlledSearchProvider.d.ts +0 -1
  15. package/dist/components/app/ControlledSearchProvider.js +39 -0
  16. package/dist/{src/components → components}/app/CopyButton.d.ts +0 -1
  17. package/dist/components/app/CopyButton.js +23 -0
  18. package/dist/{src/components → components}/app/DocumentAccordion.d.ts +0 -1
  19. package/dist/components/app/DocumentAccordion.js +22 -0
  20. package/dist/{src/components → components}/app/EnvelopesProvider.d.ts +0 -1
  21. package/dist/components/app/EnvelopesProvider.js +18 -0
  22. package/dist/{src/components → components}/app/ExecutionSummary.d.ts +0 -1
  23. package/dist/components/app/ExecutionSummary.js +38 -0
  24. package/dist/{src/components → components}/app/FilteredDocuments.d.ts +0 -1
  25. package/dist/components/app/FilteredDocuments.js +15 -0
  26. package/dist/{src/components → components}/app/GherkinDocumentList.d.ts +0 -1
  27. package/dist/components/app/GherkinDocumentList.js +23 -0
  28. package/dist/{src/components → components}/app/Header.d.ts +0 -1
  29. package/dist/components/app/Header.js +12 -0
  30. package/dist/{src/components → components}/app/HealthChart.d.ts +0 -1
  31. package/dist/components/app/HealthChart.js +14 -0
  32. package/dist/{src/components → components}/app/HighLight.d.ts +0 -1
  33. package/dist/components/app/HighLight.js +38 -0
  34. package/dist/{src/components → components}/app/ImplementationIcon.d.ts +0 -1
  35. package/dist/components/app/ImplementationIcon.js +10 -0
  36. package/dist/{src/components → components}/app/InMemorySearchProvider.d.ts +0 -1
  37. package/dist/components/app/InMemorySearchProvider.js +11 -0
  38. package/dist/{src/components → components}/app/NavigationButton.d.ts +0 -1
  39. package/dist/components/app/NavigationButton.js +6 -0
  40. package/dist/{src/components → components}/app/OSIcon.d.ts +0 -1
  41. package/dist/components/app/OSIcon.js +18 -0
  42. package/dist/{src/components → components}/app/QueriesProvider.d.ts +0 -1
  43. package/dist/components/app/QueriesProvider.js +7 -0
  44. package/dist/{src/components → components}/app/Report.d.ts +0 -1
  45. package/dist/components/app/Report.js +10 -0
  46. package/dist/{src/components → components}/app/RuntimeIcon.d.ts +0 -1
  47. package/dist/components/app/RuntimeIcon.js +18 -0
  48. package/dist/{src/components → components}/app/SearchBar.d.ts +0 -1
  49. package/dist/components/app/SearchBar.js +33 -0
  50. package/dist/{src/components → components}/app/StatusesSummary.d.ts +0 -1
  51. package/dist/components/app/StatusesSummary.js +16 -0
  52. package/dist/{src/components → components}/app/TestRunHooks.d.ts +0 -1
  53. package/dist/components/app/TestRunHooks.js +14 -0
  54. package/dist/{src/components → components}/app/UrlSearchProvider.d.ts +0 -1
  55. package/dist/components/app/UrlSearchProvider.js +29 -0
  56. package/dist/{src/components → components}/app/findMostSevereTestStepResultStatus.d.ts +0 -1
  57. package/dist/components/app/findMostSevereTestStepResultStatus.js +17 -0
  58. package/dist/{src/components → components}/app/icons/CucumberLogo.d.ts +0 -1
  59. package/dist/components/app/icons/CucumberLogo.js +5 -0
  60. package/dist/{src/components → components}/app/icons/Jvm.d.ts +0 -1
  61. package/dist/components/app/icons/Jvm.js +5 -0
  62. package/dist/{src/components → components}/app/icons/Linux.d.ts +0 -1
  63. package/dist/components/app/icons/Linux.js +5 -0
  64. package/dist/{src/components → components}/app/icons/MacOS.d.ts +0 -1
  65. package/dist/components/app/icons/MacOS.js +5 -0
  66. package/dist/{src/components → components}/app/icons/NodeJs.d.ts +0 -1
  67. package/dist/components/app/icons/NodeJs.js +5 -0
  68. package/dist/{src/components → components}/app/icons/Ruby.d.ts +0 -1
  69. package/dist/components/app/icons/Ruby.js +5 -0
  70. package/dist/{src/components → components}/app/icons/Windows.d.ts +0 -1
  71. package/dist/components/app/icons/Windows.js +5 -0
  72. package/dist/{src/components/app/index.js → components/app/index.d.ts} +0 -1
  73. package/dist/components/app/index.js +15 -0
  74. package/dist/{src/components → components}/app/makeSetupString.d.ts +0 -1
  75. package/dist/components/app/makeSetupString.js +21 -0
  76. package/dist/{src/components → components}/app/markdownComponents.d.ts +1 -2
  77. package/dist/components/app/markdownComponents.js +6 -0
  78. package/dist/{src/components → components}/app/rehypePlugins.d.ts +0 -1
  79. package/dist/components/app/rehypePlugins.js +9 -0
  80. package/dist/{src/components → components}/app/remarkPlugins.d.ts +0 -1
  81. package/dist/components/app/remarkPlugins.js +4 -0
  82. package/dist/{src/components → components}/customise/CustomRendering.d.ts +0 -1
  83. package/dist/components/customise/CustomRendering.js +35 -0
  84. package/dist/{src/components/customise/index.js → components/customise/index.d.ts} +0 -1
  85. package/dist/components/customise/index.js +3 -0
  86. package/dist/{src/components → components}/customise/theming.d.ts +0 -1
  87. package/dist/components/customise/theming.js +2 -0
  88. package/dist/{src/components → components}/gherkin/Anchor.d.ts +0 -1
  89. package/dist/components/gherkin/Anchor.js +13 -0
  90. package/dist/{src/components → components}/gherkin/Background.d.ts +0 -1
  91. package/dist/components/gherkin/Background.js +18 -0
  92. package/dist/{src/components → components}/gherkin/Children.d.ts +0 -1
  93. package/dist/components/gherkin/Children.js +11 -0
  94. package/dist/{src/components → components}/gherkin/DataTable.d.ts +0 -1
  95. package/dist/components/gherkin/DataTable.js +16 -0
  96. package/dist/{src/components → components}/gherkin/Description.d.ts +0 -1
  97. package/dist/components/gherkin/Description.js +15 -0
  98. package/dist/{src/components → components}/gherkin/DocString.d.ts +0 -1
  99. package/dist/components/gherkin/DocString.js +12 -0
  100. package/dist/{src/components → components}/gherkin/ErrorMessage.d.ts +0 -1
  101. package/dist/components/gherkin/ErrorMessage.js +13 -0
  102. package/dist/{src/components → components}/gherkin/Examples.d.ts +0 -1
  103. package/dist/components/gherkin/Examples.js +31 -0
  104. package/dist/{src/components → components}/gherkin/Feature.d.ts +0 -1
  105. package/dist/components/gherkin/Feature.js +30 -0
  106. package/dist/{src/components → components}/gherkin/GherkinDocument.d.ts +0 -1
  107. package/dist/components/gherkin/GherkinDocument.js +11 -0
  108. package/dist/{src/components → components}/gherkin/Keyword.d.ts +0 -1
  109. package/dist/components/gherkin/Keyword.js +11 -0
  110. package/dist/{src/components → components}/gherkin/Parameter.d.ts +0 -1
  111. package/dist/components/gherkin/Parameter.js +11 -0
  112. package/dist/{src/components → components}/gherkin/Rule.d.ts +0 -1
  113. package/dist/components/gherkin/Rule.js +26 -0
  114. package/dist/{src/components → components}/gherkin/Scenario.d.ts +0 -1
  115. package/dist/components/gherkin/Scenario.js +22 -0
  116. package/dist/{src/components → components}/gherkin/StatusIcon.d.ts +0 -1
  117. package/dist/components/gherkin/StatusIcon.js +24 -0
  118. package/dist/{src/components → components}/gherkin/StepsList.d.ts +0 -1
  119. package/dist/components/gherkin/StepsList.js +6 -0
  120. package/dist/{src/components → components}/gherkin/Tags.d.ts +0 -1
  121. package/dist/components/gherkin/Tags.js +15 -0
  122. package/dist/{src/components → components}/gherkin/Title.d.ts +0 -1
  123. package/dist/components/gherkin/Title.js +12 -0
  124. package/dist/{src/components → components}/gherkin/attachment/Attachment.d.ts +0 -1
  125. package/dist/components/gherkin/attachment/Attachment.js +45 -0
  126. package/dist/{src/components → components}/gherkin/attachment/Image.d.ts +0 -1
  127. package/dist/components/gherkin/attachment/Image.js +16 -0
  128. package/dist/{src/components → components}/gherkin/attachment/Links.d.ts +0 -1
  129. package/dist/components/gherkin/attachment/Links.js +14 -0
  130. package/dist/{src/components → components}/gherkin/attachment/Log.d.ts +0 -1
  131. package/dist/components/gherkin/attachment/Log.js +12 -0
  132. package/dist/{src/components → components}/gherkin/attachment/Text.d.ts +0 -1
  133. package/dist/components/gherkin/attachment/Text.js +16 -0
  134. package/dist/{src/components → components}/gherkin/attachment/Unknown.d.ts +0 -1
  135. package/dist/components/gherkin/attachment/Unknown.js +61 -0
  136. package/dist/{src/components → components}/gherkin/attachment/Video.d.ts +0 -1
  137. package/dist/components/gherkin/attachment/Video.js +16 -0
  138. package/dist/{src/components → components}/gherkin/attachment/attachmentFilename.d.ts +0 -1
  139. package/dist/components/gherkin/attachment/attachmentFilename.js +12 -0
  140. package/dist/{src/components → components}/gherkin/attachment/base64Decode.d.ts +0 -1
  141. package/dist/components/gherkin/attachment/base64Decode.js +19 -0
  142. package/dist/{src/components/gherkin/attachment/index.js → components/gherkin/attachment/index.d.ts} +0 -1
  143. package/dist/components/gherkin/attachment/index.js +2 -0
  144. package/dist/{src/components → components}/gherkin/attachment/useText.d.ts +0 -1
  145. package/dist/components/gherkin/attachment/useText.js +28 -0
  146. package/dist/{src/components → components}/gherkin/composeHookStepTitle.d.ts +0 -1
  147. package/dist/components/gherkin/composeHookStepTitle.js +23 -0
  148. package/dist/{src/components → components}/gherkin/composePickleStepTitle.d.ts +0 -1
  149. package/dist/components/gherkin/composePickleStepTitle.js +36 -0
  150. package/dist/{src/components/gherkin/index.js → components/gherkin/index.d.ts} +0 -1
  151. package/dist/components/gherkin/index.js +19 -0
  152. package/dist/{src/components → components}/gherkin/isNumber.d.ts +0 -1
  153. package/dist/components/gherkin/isNumber.js +7 -0
  154. package/dist/components/gherkin/statusName.d.ts +3 -0
  155. package/dist/components/gherkin/statusName.js +4 -0
  156. package/dist/{src/components/index.js → components/index.d.ts} +0 -1
  157. package/dist/components/index.js +4 -0
  158. package/dist/{src/components → components}/results/AmbiguousResult.d.ts +0 -1
  159. package/dist/components/results/AmbiguousResult.js +11 -0
  160. package/dist/{src/components → components}/results/FailedResult.d.ts +0 -1
  161. package/dist/components/results/FailedResult.js +15 -0
  162. package/dist/{src/components → components}/results/PendingResult.d.ts +0 -1
  163. package/dist/components/results/PendingResult.js +12 -0
  164. package/dist/{src/components → components}/results/ResultNote.d.ts +0 -1
  165. package/dist/components/results/ResultNote.js +6 -0
  166. package/dist/{src/components → components}/results/SkippedResult.d.ts +0 -1
  167. package/dist/components/results/SkippedResult.js +12 -0
  168. package/dist/{src/components → components}/results/SourceReference.d.ts +0 -1
  169. package/dist/components/results/SourceReference.js +13 -0
  170. package/dist/{src/components → components}/results/TestCaseOutcome.d.ts +0 -1
  171. package/dist/components/results/TestCaseOutcome.js +32 -0
  172. package/dist/{src/components → components}/results/TestRunHookOutcome.d.ts +0 -1
  173. package/dist/components/results/TestRunHookOutcome.js +11 -0
  174. package/dist/{src/components → components}/results/TestStepAttachments.d.ts +0 -1
  175. package/dist/components/results/TestStepAttachments.js +12 -0
  176. package/dist/{src/components → components}/results/TestStepDuration.d.ts +0 -1
  177. package/dist/components/results/TestStepDuration.js +19 -0
  178. package/dist/{src/components → components}/results/TestStepOutcome.d.ts +0 -1
  179. package/dist/components/results/TestStepOutcome.js +45 -0
  180. package/dist/{src/components → components}/results/UndefinedResult.d.ts +0 -1
  181. package/dist/components/results/UndefinedResult.js +18 -0
  182. package/dist/{src/components/results/index.js → components/results/index.d.ts} +0 -1
  183. package/dist/components/results/index.js +3 -0
  184. package/dist/{src/hooks/helpers.d.ts → ensure.d.ts} +0 -1
  185. package/dist/ensure.js +7 -0
  186. package/dist/{src/formatExecutionDistance.d.ts → formatExecutionDistance.d.ts} +0 -1
  187. package/dist/formatExecutionDistance.js +7 -0
  188. package/dist/{src/formatExecutionDuration.d.ts → formatExecutionDuration.d.ts} +0 -1
  189. package/dist/formatExecutionDuration.js +12 -0
  190. package/dist/{src/formatPassedQuantity.d.ts → formatPassedQuantity.d.ts} +0 -1
  191. package/dist/formatPassedQuantity.js +4 -0
  192. package/dist/{src/formatStatusRate.d.ts → formatStatusRate.d.ts} +0 -1
  193. package/dist/formatStatusRate.js +9 -0
  194. package/dist/{src/hooks/index.js → hooks/index.d.ts} +0 -1
  195. package/dist/hooks/index.js +3 -0
  196. package/dist/{src/hooks → hooks}/useFilteredDocuments.d.ts +1 -2
  197. package/dist/hooks/useFilteredDocuments.js +67 -0
  198. package/dist/hooks/useFilteredTestCases.d.ts +6 -0
  199. package/dist/hooks/useFilteredTestCases.js +36 -0
  200. package/dist/{src/hooks → hooks}/useMostSevereStatusByUri.d.ts +0 -1
  201. package/dist/hooks/useMostSevereStatusByUri.js +25 -0
  202. package/dist/{src/hooks → hooks}/useQueries.d.ts +0 -1
  203. package/dist/hooks/useQueries.js +9 -0
  204. package/dist/{src/hooks → hooks}/useResultStatistics.d.ts +0 -1
  205. package/dist/hooks/useResultStatistics.js +24 -0
  206. package/dist/{src/hooks → hooks}/useSearch.d.ts +0 -1
  207. package/dist/hooks/useSearch.js +6 -0
  208. package/dist/hooks/useSearchResult.d.ts +26 -0
  209. package/dist/hooks/useSearchResult.js +58 -0
  210. package/dist/{src/hooks → hooks}/useTestCaseStarted.d.ts +0 -1
  211. package/dist/hooks/useTestCaseStarted.js +20 -0
  212. package/dist/{src/hooks → hooks}/useTestRunHooks.d.ts +0 -1
  213. package/dist/hooks/useTestRunHooks.js +14 -0
  214. package/dist/{src/index.js → index.d.ts} +0 -1
  215. package/dist/index.js +3 -0
  216. package/dist/{src/isTagExpression.d.ts → isTagExpression.d.ts} +0 -1
  217. package/dist/isTagExpression.js +5 -0
  218. package/dist/{src/search → search}/FeatureSearch.d.ts +0 -1
  219. package/dist/search/FeatureSearch.js +39 -0
  220. package/dist/{src/search → search}/ScenarioLikeSearch.d.ts +0 -1
  221. package/dist/search/ScenarioLikeSearch.js +37 -0
  222. package/dist/{src/search → search}/StepSearch.d.ts +0 -1
  223. package/dist/search/StepSearch.js +40 -0
  224. package/dist/{src/search → search}/TextSearch.d.ts +1 -2
  225. package/dist/search/TextSearch.js +67 -0
  226. package/dist/{src/search → search}/createSearchIndex.d.ts +0 -1
  227. package/dist/search/createSearchIndex.js +10 -0
  228. package/dist/{src/search → search}/deriveLineageConstraints.d.ts +0 -1
  229. package/dist/search/deriveLineageConstraints.js +38 -0
  230. package/dist/search/filterAndExpandTestCaseEvents.d.ts +20 -0
  231. package/dist/search/filterAndExpandTestCaseEvents.js +32 -0
  232. package/dist/{src/search → search}/index.d.ts +2 -1
  233. package/dist/search/index.js +7 -0
  234. package/dist/{src/search → search}/pruneGherkinDocuments.d.ts +3 -4
  235. package/dist/search/pruneGherkinDocuments.js +179 -0
  236. package/dist/search/pruneTestCaseEvents.d.ts +16 -0
  237. package/dist/search/pruneTestCaseEvents.js +41 -0
  238. package/dist/{src/search → search}/types.d.ts +5 -6
  239. package/dist/search/types.js +2 -0
  240. package/dist/{src/statuses.d.ts → statuses.d.ts} +0 -1
  241. package/dist/statuses.js +12 -0
  242. package/dist/{src/toRepositoryId.d.ts → toRepositoryId.d.ts} +0 -1
  243. package/dist/toRepositoryId.js +12 -0
  244. package/package.json +31 -28
  245. package/dist/src/CucumberQueryContext.d.ts.map +0 -1
  246. package/dist/src/CucumberQueryContext.js +0 -4
  247. package/dist/src/CucumberQueryContext.js.map +0 -1
  248. package/dist/src/GherkinQueryContext.d.ts.map +0 -1
  249. package/dist/src/GherkinQueryContext.js +0 -4
  250. package/dist/src/GherkinQueryContext.js.map +0 -1
  251. package/dist/src/SearchContext.d.ts.map +0 -1
  252. package/dist/src/SearchContext.js +0 -10
  253. package/dist/src/SearchContext.js.map +0 -1
  254. package/dist/src/ciCommitLink.d.ts.map +0 -1
  255. package/dist/src/ciCommitLink.js +0 -12
  256. package/dist/src/ciCommitLink.js.map +0 -1
  257. package/dist/src/components/app/CICommitLink.d.ts.map +0 -1
  258. package/dist/src/components/app/CICommitLink.js +0 -16
  259. package/dist/src/components/app/CICommitLink.js.map +0 -1
  260. package/dist/src/components/app/CIJobLink.d.ts.map +0 -1
  261. package/dist/src/components/app/CIJobLink.js +0 -10
  262. package/dist/src/components/app/CIJobLink.js.map +0 -1
  263. package/dist/src/components/app/ControlledSearchProvider.d.ts.map +0 -1
  264. package/dist/src/components/app/ControlledSearchProvider.js +0 -39
  265. package/dist/src/components/app/ControlledSearchProvider.js.map +0 -1
  266. package/dist/src/components/app/CopyButton.d.ts.map +0 -1
  267. package/dist/src/components/app/CopyButton.js +0 -23
  268. package/dist/src/components/app/CopyButton.js.map +0 -1
  269. package/dist/src/components/app/DocumentAccordion.d.ts.map +0 -1
  270. package/dist/src/components/app/DocumentAccordion.js +0 -22
  271. package/dist/src/components/app/DocumentAccordion.js.map +0 -1
  272. package/dist/src/components/app/EnvelopesProvider.d.ts.map +0 -1
  273. package/dist/src/components/app/EnvelopesProvider.js +0 -18
  274. package/dist/src/components/app/EnvelopesProvider.js.map +0 -1
  275. package/dist/src/components/app/ExecutionSummary.d.ts.map +0 -1
  276. package/dist/src/components/app/ExecutionSummary.js +0 -38
  277. package/dist/src/components/app/ExecutionSummary.js.map +0 -1
  278. package/dist/src/components/app/FilteredDocuments.d.ts.map +0 -1
  279. package/dist/src/components/app/FilteredDocuments.js +0 -15
  280. package/dist/src/components/app/FilteredDocuments.js.map +0 -1
  281. package/dist/src/components/app/GherkinDocumentList.d.ts.map +0 -1
  282. package/dist/src/components/app/GherkinDocumentList.js +0 -23
  283. package/dist/src/components/app/GherkinDocumentList.js.map +0 -1
  284. package/dist/src/components/app/Header.d.ts.map +0 -1
  285. package/dist/src/components/app/Header.js +0 -12
  286. package/dist/src/components/app/Header.js.map +0 -1
  287. package/dist/src/components/app/HealthChart.d.ts.map +0 -1
  288. package/dist/src/components/app/HealthChart.js +0 -14
  289. package/dist/src/components/app/HealthChart.js.map +0 -1
  290. package/dist/src/components/app/HighLight.d.ts.map +0 -1
  291. package/dist/src/components/app/HighLight.js +0 -38
  292. package/dist/src/components/app/HighLight.js.map +0 -1
  293. package/dist/src/components/app/ImplementationIcon.d.ts.map +0 -1
  294. package/dist/src/components/app/ImplementationIcon.js +0 -10
  295. package/dist/src/components/app/ImplementationIcon.js.map +0 -1
  296. package/dist/src/components/app/InMemorySearchProvider.d.ts.map +0 -1
  297. package/dist/src/components/app/InMemorySearchProvider.js +0 -11
  298. package/dist/src/components/app/InMemorySearchProvider.js.map +0 -1
  299. package/dist/src/components/app/NavigationButton.d.ts.map +0 -1
  300. package/dist/src/components/app/NavigationButton.js +0 -6
  301. package/dist/src/components/app/NavigationButton.js.map +0 -1
  302. package/dist/src/components/app/OSIcon.d.ts.map +0 -1
  303. package/dist/src/components/app/OSIcon.js +0 -18
  304. package/dist/src/components/app/OSIcon.js.map +0 -1
  305. package/dist/src/components/app/QueriesProvider.d.ts.map +0 -1
  306. package/dist/src/components/app/QueriesProvider.js +0 -7
  307. package/dist/src/components/app/QueriesProvider.js.map +0 -1
  308. package/dist/src/components/app/Report.d.ts.map +0 -1
  309. package/dist/src/components/app/Report.js +0 -10
  310. package/dist/src/components/app/Report.js.map +0 -1
  311. package/dist/src/components/app/RuntimeIcon.d.ts.map +0 -1
  312. package/dist/src/components/app/RuntimeIcon.js +0 -18
  313. package/dist/src/components/app/RuntimeIcon.js.map +0 -1
  314. package/dist/src/components/app/SearchBar.d.ts.map +0 -1
  315. package/dist/src/components/app/SearchBar.js +0 -33
  316. package/dist/src/components/app/SearchBar.js.map +0 -1
  317. package/dist/src/components/app/StatusesSummary.d.ts.map +0 -1
  318. package/dist/src/components/app/StatusesSummary.js +0 -16
  319. package/dist/src/components/app/StatusesSummary.js.map +0 -1
  320. package/dist/src/components/app/TestRunHooks.d.ts.map +0 -1
  321. package/dist/src/components/app/TestRunHooks.js +0 -14
  322. package/dist/src/components/app/TestRunHooks.js.map +0 -1
  323. package/dist/src/components/app/UrlSearchProvider.d.ts.map +0 -1
  324. package/dist/src/components/app/UrlSearchProvider.js +0 -29
  325. package/dist/src/components/app/UrlSearchProvider.js.map +0 -1
  326. package/dist/src/components/app/findMostSevereTestStepResultStatus.d.ts.map +0 -1
  327. package/dist/src/components/app/findMostSevereTestStepResultStatus.js +0 -17
  328. package/dist/src/components/app/findMostSevereTestStepResultStatus.js.map +0 -1
  329. package/dist/src/components/app/icons/CucumberLogo.d.ts.map +0 -1
  330. package/dist/src/components/app/icons/CucumberLogo.js +0 -5
  331. package/dist/src/components/app/icons/CucumberLogo.js.map +0 -1
  332. package/dist/src/components/app/icons/Jvm.d.ts.map +0 -1
  333. package/dist/src/components/app/icons/Jvm.js +0 -5
  334. package/dist/src/components/app/icons/Jvm.js.map +0 -1
  335. package/dist/src/components/app/icons/Linux.d.ts.map +0 -1
  336. package/dist/src/components/app/icons/Linux.js +0 -5
  337. package/dist/src/components/app/icons/Linux.js.map +0 -1
  338. package/dist/src/components/app/icons/MacOS.d.ts.map +0 -1
  339. package/dist/src/components/app/icons/MacOS.js +0 -5
  340. package/dist/src/components/app/icons/MacOS.js.map +0 -1
  341. package/dist/src/components/app/icons/NodeJs.d.ts.map +0 -1
  342. package/dist/src/components/app/icons/NodeJs.js +0 -5
  343. package/dist/src/components/app/icons/NodeJs.js.map +0 -1
  344. package/dist/src/components/app/icons/Ruby.d.ts.map +0 -1
  345. package/dist/src/components/app/icons/Ruby.js +0 -5
  346. package/dist/src/components/app/icons/Ruby.js.map +0 -1
  347. package/dist/src/components/app/icons/Windows.d.ts.map +0 -1
  348. package/dist/src/components/app/icons/Windows.js +0 -5
  349. package/dist/src/components/app/icons/Windows.js.map +0 -1
  350. package/dist/src/components/app/index.d.ts +0 -15
  351. package/dist/src/components/app/index.d.ts.map +0 -1
  352. package/dist/src/components/app/index.js.map +0 -1
  353. package/dist/src/components/app/makeSetupString.d.ts.map +0 -1
  354. package/dist/src/components/app/makeSetupString.js +0 -21
  355. package/dist/src/components/app/makeSetupString.js.map +0 -1
  356. package/dist/src/components/app/markdownComponents.d.ts.map +0 -1
  357. package/dist/src/components/app/markdownComponents.js +0 -6
  358. package/dist/src/components/app/markdownComponents.js.map +0 -1
  359. package/dist/src/components/app/rehypePlugins.d.ts.map +0 -1
  360. package/dist/src/components/app/rehypePlugins.js +0 -9
  361. package/dist/src/components/app/rehypePlugins.js.map +0 -1
  362. package/dist/src/components/app/remarkPlugins.d.ts.map +0 -1
  363. package/dist/src/components/app/remarkPlugins.js +0 -4
  364. package/dist/src/components/app/remarkPlugins.js.map +0 -1
  365. package/dist/src/components/customise/CustomRendering.d.ts.map +0 -1
  366. package/dist/src/components/customise/CustomRendering.js +0 -35
  367. package/dist/src/components/customise/CustomRendering.js.map +0 -1
  368. package/dist/src/components/customise/index.d.ts +0 -3
  369. package/dist/src/components/customise/index.d.ts.map +0 -1
  370. package/dist/src/components/customise/index.js.map +0 -1
  371. package/dist/src/components/customise/theming.d.ts.map +0 -1
  372. package/dist/src/components/customise/theming.js +0 -2
  373. package/dist/src/components/customise/theming.js.map +0 -1
  374. package/dist/src/components/gherkin/Anchor.d.ts.map +0 -1
  375. package/dist/src/components/gherkin/Anchor.js +0 -13
  376. package/dist/src/components/gherkin/Anchor.js.map +0 -1
  377. package/dist/src/components/gherkin/Background.d.ts.map +0 -1
  378. package/dist/src/components/gherkin/Background.js +0 -18
  379. package/dist/src/components/gherkin/Background.js.map +0 -1
  380. package/dist/src/components/gherkin/Children.d.ts.map +0 -1
  381. package/dist/src/components/gherkin/Children.js +0 -11
  382. package/dist/src/components/gherkin/Children.js.map +0 -1
  383. package/dist/src/components/gherkin/DataTable.d.ts.map +0 -1
  384. package/dist/src/components/gherkin/DataTable.js +0 -16
  385. package/dist/src/components/gherkin/DataTable.js.map +0 -1
  386. package/dist/src/components/gherkin/Description.d.ts.map +0 -1
  387. package/dist/src/components/gherkin/Description.js +0 -15
  388. package/dist/src/components/gherkin/Description.js.map +0 -1
  389. package/dist/src/components/gherkin/DocString.d.ts.map +0 -1
  390. package/dist/src/components/gherkin/DocString.js +0 -12
  391. package/dist/src/components/gherkin/DocString.js.map +0 -1
  392. package/dist/src/components/gherkin/ErrorMessage.d.ts.map +0 -1
  393. package/dist/src/components/gherkin/ErrorMessage.js +0 -13
  394. package/dist/src/components/gherkin/ErrorMessage.js.map +0 -1
  395. package/dist/src/components/gherkin/Examples.d.ts.map +0 -1
  396. package/dist/src/components/gherkin/Examples.js +0 -31
  397. package/dist/src/components/gherkin/Examples.js.map +0 -1
  398. package/dist/src/components/gherkin/Feature.d.ts.map +0 -1
  399. package/dist/src/components/gherkin/Feature.js +0 -30
  400. package/dist/src/components/gherkin/Feature.js.map +0 -1
  401. package/dist/src/components/gherkin/GherkinDocument.d.ts.map +0 -1
  402. package/dist/src/components/gherkin/GherkinDocument.js +0 -11
  403. package/dist/src/components/gherkin/GherkinDocument.js.map +0 -1
  404. package/dist/src/components/gherkin/Keyword.d.ts.map +0 -1
  405. package/dist/src/components/gherkin/Keyword.js +0 -11
  406. package/dist/src/components/gherkin/Keyword.js.map +0 -1
  407. package/dist/src/components/gherkin/Parameter.d.ts.map +0 -1
  408. package/dist/src/components/gherkin/Parameter.js +0 -11
  409. package/dist/src/components/gherkin/Parameter.js.map +0 -1
  410. package/dist/src/components/gherkin/Rule.d.ts.map +0 -1
  411. package/dist/src/components/gherkin/Rule.js +0 -26
  412. package/dist/src/components/gherkin/Rule.js.map +0 -1
  413. package/dist/src/components/gherkin/Scenario.d.ts.map +0 -1
  414. package/dist/src/components/gherkin/Scenario.js +0 -22
  415. package/dist/src/components/gherkin/Scenario.js.map +0 -1
  416. package/dist/src/components/gherkin/StatusIcon.d.ts.map +0 -1
  417. package/dist/src/components/gherkin/StatusIcon.js +0 -24
  418. package/dist/src/components/gherkin/StatusIcon.js.map +0 -1
  419. package/dist/src/components/gherkin/StepsList.d.ts.map +0 -1
  420. package/dist/src/components/gherkin/StepsList.js +0 -6
  421. package/dist/src/components/gherkin/StepsList.js.map +0 -1
  422. package/dist/src/components/gherkin/Tags.d.ts.map +0 -1
  423. package/dist/src/components/gherkin/Tags.js +0 -15
  424. package/dist/src/components/gherkin/Tags.js.map +0 -1
  425. package/dist/src/components/gherkin/Title.d.ts.map +0 -1
  426. package/dist/src/components/gherkin/Title.js +0 -12
  427. package/dist/src/components/gherkin/Title.js.map +0 -1
  428. package/dist/src/components/gherkin/attachment/Attachment.d.ts.map +0 -1
  429. package/dist/src/components/gherkin/attachment/Attachment.js +0 -45
  430. package/dist/src/components/gherkin/attachment/Attachment.js.map +0 -1
  431. package/dist/src/components/gherkin/attachment/Image.d.ts.map +0 -1
  432. package/dist/src/components/gherkin/attachment/Image.js +0 -16
  433. package/dist/src/components/gherkin/attachment/Image.js.map +0 -1
  434. package/dist/src/components/gherkin/attachment/Links.d.ts.map +0 -1
  435. package/dist/src/components/gherkin/attachment/Links.js +0 -14
  436. package/dist/src/components/gherkin/attachment/Links.js.map +0 -1
  437. package/dist/src/components/gherkin/attachment/Log.d.ts.map +0 -1
  438. package/dist/src/components/gherkin/attachment/Log.js +0 -12
  439. package/dist/src/components/gherkin/attachment/Log.js.map +0 -1
  440. package/dist/src/components/gherkin/attachment/Text.d.ts.map +0 -1
  441. package/dist/src/components/gherkin/attachment/Text.js +0 -16
  442. package/dist/src/components/gherkin/attachment/Text.js.map +0 -1
  443. package/dist/src/components/gherkin/attachment/Unknown.d.ts.map +0 -1
  444. package/dist/src/components/gherkin/attachment/Unknown.js +0 -61
  445. package/dist/src/components/gherkin/attachment/Unknown.js.map +0 -1
  446. package/dist/src/components/gherkin/attachment/Video.d.ts.map +0 -1
  447. package/dist/src/components/gherkin/attachment/Video.js +0 -16
  448. package/dist/src/components/gherkin/attachment/Video.js.map +0 -1
  449. package/dist/src/components/gherkin/attachment/attachmentFilename.d.ts.map +0 -1
  450. package/dist/src/components/gherkin/attachment/attachmentFilename.js +0 -12
  451. package/dist/src/components/gherkin/attachment/attachmentFilename.js.map +0 -1
  452. package/dist/src/components/gherkin/attachment/base64Decode.d.ts.map +0 -1
  453. package/dist/src/components/gherkin/attachment/base64Decode.js +0 -19
  454. package/dist/src/components/gherkin/attachment/base64Decode.js.map +0 -1
  455. package/dist/src/components/gherkin/attachment/index.d.ts +0 -2
  456. package/dist/src/components/gherkin/attachment/index.d.ts.map +0 -1
  457. package/dist/src/components/gherkin/attachment/index.js.map +0 -1
  458. package/dist/src/components/gherkin/attachment/useText.d.ts.map +0 -1
  459. package/dist/src/components/gherkin/attachment/useText.js +0 -28
  460. package/dist/src/components/gherkin/attachment/useText.js.map +0 -1
  461. package/dist/src/components/gherkin/composeHookStepTitle.d.ts.map +0 -1
  462. package/dist/src/components/gherkin/composeHookStepTitle.js +0 -23
  463. package/dist/src/components/gherkin/composeHookStepTitle.js.map +0 -1
  464. package/dist/src/components/gherkin/composePickleStepTitle.d.ts.map +0 -1
  465. package/dist/src/components/gherkin/composePickleStepTitle.js +0 -36
  466. package/dist/src/components/gherkin/composePickleStepTitle.js.map +0 -1
  467. package/dist/src/components/gherkin/index.d.ts +0 -19
  468. package/dist/src/components/gherkin/index.d.ts.map +0 -1
  469. package/dist/src/components/gherkin/index.js.map +0 -1
  470. package/dist/src/components/gherkin/isNumber.d.ts.map +0 -1
  471. package/dist/src/components/gherkin/isNumber.js +0 -7
  472. package/dist/src/components/gherkin/isNumber.js.map +0 -1
  473. package/dist/src/components/gherkin/statusName.d.ts +0 -4
  474. package/dist/src/components/gherkin/statusName.d.ts.map +0 -1
  475. package/dist/src/components/gherkin/statusName.js +0 -4
  476. package/dist/src/components/gherkin/statusName.js.map +0 -1
  477. package/dist/src/components/index.d.ts +0 -4
  478. package/dist/src/components/index.d.ts.map +0 -1
  479. package/dist/src/components/index.js.map +0 -1
  480. package/dist/src/components/results/AmbiguousResult.d.ts.map +0 -1
  481. package/dist/src/components/results/AmbiguousResult.js +0 -11
  482. package/dist/src/components/results/AmbiguousResult.js.map +0 -1
  483. package/dist/src/components/results/FailedResult.d.ts.map +0 -1
  484. package/dist/src/components/results/FailedResult.js +0 -15
  485. package/dist/src/components/results/FailedResult.js.map +0 -1
  486. package/dist/src/components/results/PendingResult.d.ts.map +0 -1
  487. package/dist/src/components/results/PendingResult.js +0 -12
  488. package/dist/src/components/results/PendingResult.js.map +0 -1
  489. package/dist/src/components/results/ResultNote.d.ts.map +0 -1
  490. package/dist/src/components/results/ResultNote.js +0 -6
  491. package/dist/src/components/results/ResultNote.js.map +0 -1
  492. package/dist/src/components/results/SkippedResult.d.ts.map +0 -1
  493. package/dist/src/components/results/SkippedResult.js +0 -12
  494. package/dist/src/components/results/SkippedResult.js.map +0 -1
  495. package/dist/src/components/results/SourceReference.d.ts.map +0 -1
  496. package/dist/src/components/results/SourceReference.js +0 -13
  497. package/dist/src/components/results/SourceReference.js.map +0 -1
  498. package/dist/src/components/results/TestCaseOutcome.d.ts.map +0 -1
  499. package/dist/src/components/results/TestCaseOutcome.js +0 -32
  500. package/dist/src/components/results/TestCaseOutcome.js.map +0 -1
  501. package/dist/src/components/results/TestRunHookOutcome.d.ts.map +0 -1
  502. package/dist/src/components/results/TestRunHookOutcome.js +0 -11
  503. package/dist/src/components/results/TestRunHookOutcome.js.map +0 -1
  504. package/dist/src/components/results/TestStepAttachments.d.ts.map +0 -1
  505. package/dist/src/components/results/TestStepAttachments.js +0 -12
  506. package/dist/src/components/results/TestStepAttachments.js.map +0 -1
  507. package/dist/src/components/results/TestStepDuration.d.ts.map +0 -1
  508. package/dist/src/components/results/TestStepDuration.js +0 -19
  509. package/dist/src/components/results/TestStepDuration.js.map +0 -1
  510. package/dist/src/components/results/TestStepOutcome.d.ts.map +0 -1
  511. package/dist/src/components/results/TestStepOutcome.js +0 -45
  512. package/dist/src/components/results/TestStepOutcome.js.map +0 -1
  513. package/dist/src/components/results/UndefinedResult.d.ts.map +0 -1
  514. package/dist/src/components/results/UndefinedResult.js +0 -18
  515. package/dist/src/components/results/UndefinedResult.js.map +0 -1
  516. package/dist/src/components/results/index.d.ts +0 -3
  517. package/dist/src/components/results/index.d.ts.map +0 -1
  518. package/dist/src/components/results/index.js.map +0 -1
  519. package/dist/src/formatExecutionDistance.d.ts.map +0 -1
  520. package/dist/src/formatExecutionDistance.js +0 -7
  521. package/dist/src/formatExecutionDistance.js.map +0 -1
  522. package/dist/src/formatExecutionDuration.d.ts.map +0 -1
  523. package/dist/src/formatExecutionDuration.js +0 -12
  524. package/dist/src/formatExecutionDuration.js.map +0 -1
  525. package/dist/src/formatPassedQuantity.d.ts.map +0 -1
  526. package/dist/src/formatPassedQuantity.js +0 -4
  527. package/dist/src/formatPassedQuantity.js.map +0 -1
  528. package/dist/src/formatStatusRate.d.ts.map +0 -1
  529. package/dist/src/formatStatusRate.js +0 -9
  530. package/dist/src/formatStatusRate.js.map +0 -1
  531. package/dist/src/hooks/helpers.d.ts.map +0 -1
  532. package/dist/src/hooks/helpers.js +0 -7
  533. package/dist/src/hooks/helpers.js.map +0 -1
  534. package/dist/src/hooks/index.d.ts +0 -3
  535. package/dist/src/hooks/index.d.ts.map +0 -1
  536. package/dist/src/hooks/index.js.map +0 -1
  537. package/dist/src/hooks/useFilteredDocuments.d.ts.map +0 -1
  538. package/dist/src/hooks/useFilteredDocuments.js +0 -85
  539. package/dist/src/hooks/useFilteredDocuments.js.map +0 -1
  540. package/dist/src/hooks/useMostSevereStatusByUri.d.ts.map +0 -1
  541. package/dist/src/hooks/useMostSevereStatusByUri.js +0 -25
  542. package/dist/src/hooks/useMostSevereStatusByUri.js.map +0 -1
  543. package/dist/src/hooks/useQueries.d.ts.map +0 -1
  544. package/dist/src/hooks/useQueries.js +0 -9
  545. package/dist/src/hooks/useQueries.js.map +0 -1
  546. package/dist/src/hooks/useResultStatistics.d.ts.map +0 -1
  547. package/dist/src/hooks/useResultStatistics.js +0 -24
  548. package/dist/src/hooks/useResultStatistics.js.map +0 -1
  549. package/dist/src/hooks/useSearch.d.ts.map +0 -1
  550. package/dist/src/hooks/useSearch.js +0 -6
  551. package/dist/src/hooks/useSearch.js.map +0 -1
  552. package/dist/src/hooks/useTestCaseStarted.d.ts.map +0 -1
  553. package/dist/src/hooks/useTestCaseStarted.js +0 -20
  554. package/dist/src/hooks/useTestCaseStarted.js.map +0 -1
  555. package/dist/src/hooks/useTestRunHooks.d.ts.map +0 -1
  556. package/dist/src/hooks/useTestRunHooks.js +0 -14
  557. package/dist/src/hooks/useTestRunHooks.js.map +0 -1
  558. package/dist/src/index.d.ts +0 -3
  559. package/dist/src/index.d.ts.map +0 -1
  560. package/dist/src/index.js.map +0 -1
  561. package/dist/src/isTagExpression.d.ts.map +0 -1
  562. package/dist/src/isTagExpression.js +0 -5
  563. package/dist/src/isTagExpression.js.map +0 -1
  564. package/dist/src/search/FeatureSearch.d.ts.map +0 -1
  565. package/dist/src/search/FeatureSearch.js +0 -37
  566. package/dist/src/search/FeatureSearch.js.map +0 -1
  567. package/dist/src/search/ScenarioLikeSearch.d.ts.map +0 -1
  568. package/dist/src/search/ScenarioLikeSearch.js +0 -37
  569. package/dist/src/search/ScenarioLikeSearch.js.map +0 -1
  570. package/dist/src/search/StepSearch.d.ts.map +0 -1
  571. package/dist/src/search/StepSearch.js +0 -40
  572. package/dist/src/search/StepSearch.js.map +0 -1
  573. package/dist/src/search/TextSearch.d.ts.map +0 -1
  574. package/dist/src/search/TextSearch.js +0 -70
  575. package/dist/src/search/TextSearch.js.map +0 -1
  576. package/dist/src/search/createSearchIndex.d.ts.map +0 -1
  577. package/dist/src/search/createSearchIndex.js +0 -10
  578. package/dist/src/search/createSearchIndex.js.map +0 -1
  579. package/dist/src/search/deriveLineageConstraints.d.ts.map +0 -1
  580. package/dist/src/search/deriveLineageConstraints.js +0 -38
  581. package/dist/src/search/deriveLineageConstraints.js.map +0 -1
  582. package/dist/src/search/index.d.ts.map +0 -1
  583. package/dist/src/search/index.js +0 -5
  584. package/dist/src/search/index.js.map +0 -1
  585. package/dist/src/search/pruneGherkinDocuments.d.ts.map +0 -1
  586. package/dist/src/search/pruneGherkinDocuments.js +0 -180
  587. package/dist/src/search/pruneGherkinDocuments.js.map +0 -1
  588. package/dist/src/search/types.d.ts.map +0 -1
  589. package/dist/src/search/types.js +0 -2
  590. package/dist/src/search/types.js.map +0 -1
  591. package/dist/src/statuses.d.ts.map +0 -1
  592. package/dist/src/statuses.js +0 -12
  593. package/dist/src/statuses.js.map +0 -1
  594. package/dist/src/toRepositoryId.d.ts.map +0 -1
  595. package/dist/src/toRepositoryId.js +0 -12
  596. package/dist/src/toRepositoryId.js.map +0 -1
  597. package/dist/tsconfig.build.tsbuildinfo +0 -1
  598. /package/dist/{src/components → components}/app/CopyButton.module.scss +0 -0
  599. /package/dist/{src/components → components}/app/DocumentAccordion.module.scss +0 -0
  600. /package/dist/{src/components → components}/app/ExecutionSummary.module.scss +0 -0
  601. /package/dist/{src/components → components}/app/FilteredDocuments.module.scss +0 -0
  602. /package/dist/{src/components → components}/app/Header.module.scss +0 -0
  603. /package/dist/{src/components → components}/app/HealthChart.module.scss +0 -0
  604. /package/dist/{src/components → components}/app/NavigationButton.module.scss +0 -0
  605. /package/dist/{src/components → components}/app/Report.module.scss +0 -0
  606. /package/dist/{src/components → components}/app/SearchBar.module.scss +0 -0
  607. /package/dist/{src/components → components}/app/StatusesSummary.module.scss +0 -0
  608. /package/dist/{src/components → components}/app/TestRunHooks.module.scss +0 -0
  609. /package/dist/{src/components → components}/customise/CustomRendering.stories.scss +0 -0
  610. /package/dist/{src/components → components}/gherkin/Anchor.module.scss +0 -0
  611. /package/dist/{src/components → components}/gherkin/Children.module.scss +0 -0
  612. /package/dist/{src/components → components}/gherkin/DataTable.module.scss +0 -0
  613. /package/dist/{src/components → components}/gherkin/Description.module.scss +0 -0
  614. /package/dist/{src/components → components}/gherkin/DocString.module.scss +0 -0
  615. /package/dist/{src/components → components}/gherkin/ErrorMessage.module.scss +0 -0
  616. /package/dist/{src/components → components}/gherkin/Examples.module.scss +0 -0
  617. /package/dist/{src/components → components}/gherkin/Keyword.module.scss +0 -0
  618. /package/dist/{src/components → components}/gherkin/Parameter.module.scss +0 -0
  619. /package/dist/{src/components → components}/gherkin/StatusIcon.module.scss +0 -0
  620. /package/dist/{src/components → components}/gherkin/StepsList.module.scss +0 -0
  621. /package/dist/{src/components → components}/gherkin/Tags.module.scss +0 -0
  622. /package/dist/{src/components → components}/gherkin/Title.module.scss +0 -0
  623. /package/dist/{src/components → components}/gherkin/attachment/Attachment.module.scss +0 -0
  624. /package/dist/{src/components → components}/results/AmbiguousResult.module.scss +0 -0
  625. /package/dist/{src/components → components}/results/ResultNote.module.scss +0 -0
  626. /package/dist/{src/components → components}/results/SourceReference.module.scss +0 -0
  627. /package/dist/{src/components → components}/results/TestCaseOutcome.module.scss +0 -0
  628. /package/dist/{src/components → components}/results/TestRunHookOutcome.module.scss +0 -0
  629. /package/dist/{src/components → components}/results/TestStepAttachments.module.scss +0 -0
  630. /package/dist/{src/components → components}/results/TestStepDuration.module.scss +0 -0
  631. /package/dist/{src/components → components}/results/TestStepOutcome.module.scss +0 -0
  632. /package/dist/{src/components → components}/results/UndefinedResult.module.scss +0 -0
  633. /package/dist/{src/styles → styles}/statuses.scss +0 -0
  634. /package/dist/{src/styles → styles}/tables.scss +0 -0
  635. /package/dist/{src/styles → styles}/theming.scss +0 -0
@@ -0,0 +1,25 @@
1
+ import { TestStepResultStatus } from '@cucumber/messages';
2
+ import { SetMultimap } from '@teppeis/multimaps';
3
+ import { useMemo } from 'react';
4
+ import { findMostSevereTestStepResultStatus } from '../components/app/findMostSevereTestStepResultStatus.js';
5
+ import { useQueries } from './useQueries.js';
6
+ export function useMostSevereStatusByUri() {
7
+ const { cucumberQuery } = useQueries();
8
+ return useMemo(() => {
9
+ const allByUri = new SetMultimap();
10
+ for (const testCaseStarted of cucumberQuery.findAllTestCaseStarted()) {
11
+ const result = cucumberQuery.findMostSevereTestStepResultBy(testCaseStarted);
12
+ const status = result ? result.status : TestStepResultStatus.UNKNOWN;
13
+ const pickle = cucumberQuery.findPickleBy(testCaseStarted);
14
+ if (pickle?.uri) {
15
+ allByUri.put(pickle.uri, status);
16
+ }
17
+ }
18
+ const mostSevereByUri = new Map();
19
+ for (const key of allByUri.keys()) {
20
+ mostSevereByUri.set(key, findMostSevereTestStepResultStatus(allByUri.get(key)));
21
+ }
22
+ return mostSevereByUri;
23
+ }, [cucumberQuery]);
24
+ }
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlTW9zdFNldmVyZVN0YXR1c0J5VXJpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3VzZU1vc3RTZXZlcmVTdGF0dXNCeVVyaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDaEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQTtBQUUvQixPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSx5REFBeUQsQ0FBQTtBQUM1RyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFFNUMsTUFBTSxVQUFVLHdCQUF3QjtJQUN0QyxNQUFNLEVBQUUsYUFBYSxFQUFFLEdBQUcsVUFBVSxFQUFFLENBQUE7SUFDdEMsT0FBTyxPQUFPLENBQUMsR0FBRyxFQUFFO1FBQ2xCLE1BQU0sUUFBUSxHQUFHLElBQUksV0FBVyxFQUFnQyxDQUFBO1FBQ2hFLEtBQUssTUFBTSxlQUFlLElBQUksYUFBYSxDQUFDLHNCQUFzQixFQUFFLEVBQUUsQ0FBQztZQUNyRSxNQUFNLE1BQU0sR0FBRyxhQUFhLENBQUMsOEJBQThCLENBQUMsZUFBZSxDQUFDLENBQUE7WUFDNUUsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUE7WUFDcEUsTUFBTSxNQUFNLEdBQUcsYUFBYSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsQ0FBQTtZQUMxRCxJQUFJLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQztnQkFDaEIsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1lBQ2xDLENBQUM7UUFDSCxDQUFDO1FBQ0QsTUFBTSxlQUFlLEdBQUcsSUFBSSxHQUFHLEVBQWdDLENBQUE7UUFDL0QsS0FBSyxNQUFNLEdBQUcsSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNsQyxlQUFlLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxrQ0FBa0MsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNqRixDQUFDO1FBQ0QsT0FBTyxlQUFlLENBQUE7SUFDeEIsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQTtBQUNyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGVzdFN0ZXBSZXN1bHRTdGF0dXMgfSBmcm9tICdAY3VjdW1iZXIvbWVzc2FnZXMnXG5pbXBvcnQgeyBTZXRNdWx0aW1hcCB9IGZyb20gJ0B0ZXBwZWlzL211bHRpbWFwcydcbmltcG9ydCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHsgZmluZE1vc3RTZXZlcmVUZXN0U3RlcFJlc3VsdFN0YXR1cyB9IGZyb20gJy4uL2NvbXBvbmVudHMvYXBwL2ZpbmRNb3N0U2V2ZXJlVGVzdFN0ZXBSZXN1bHRTdGF0dXMuanMnXG5pbXBvcnQgeyB1c2VRdWVyaWVzIH0gZnJvbSAnLi91c2VRdWVyaWVzLmpzJ1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlTW9zdFNldmVyZVN0YXR1c0J5VXJpKCk6IE1hcDxzdHJpbmcsIFRlc3RTdGVwUmVzdWx0U3RhdHVzPiB7XG4gIGNvbnN0IHsgY3VjdW1iZXJRdWVyeSB9ID0gdXNlUXVlcmllcygpXG4gIHJldHVybiB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBhbGxCeVVyaSA9IG5ldyBTZXRNdWx0aW1hcDxzdHJpbmcsIFRlc3RTdGVwUmVzdWx0U3RhdHVzPigpXG4gICAgZm9yIChjb25zdCB0ZXN0Q2FzZVN0YXJ0ZWQgb2YgY3VjdW1iZXJRdWVyeS5maW5kQWxsVGVzdENhc2VTdGFydGVkKCkpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGN1Y3VtYmVyUXVlcnkuZmluZE1vc3RTZXZlcmVUZXN0U3RlcFJlc3VsdEJ5KHRlc3RDYXNlU3RhcnRlZClcbiAgICAgIGNvbnN0IHN0YXR1cyA9IHJlc3VsdCA/IHJlc3VsdC5zdGF0dXMgOiBUZXN0U3RlcFJlc3VsdFN0YXR1cy5VTktOT1dOXG4gICAgICBjb25zdCBwaWNrbGUgPSBjdWN1bWJlclF1ZXJ5LmZpbmRQaWNrbGVCeSh0ZXN0Q2FzZVN0YXJ0ZWQpXG4gICAgICBpZiAocGlja2xlPy51cmkpIHtcbiAgICAgICAgYWxsQnlVcmkucHV0KHBpY2tsZS51cmksIHN0YXR1cylcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgbW9zdFNldmVyZUJ5VXJpID0gbmV3IE1hcDxzdHJpbmcsIFRlc3RTdGVwUmVzdWx0U3RhdHVzPigpXG4gICAgZm9yIChjb25zdCBrZXkgb2YgYWxsQnlVcmkua2V5cygpKSB7XG4gICAgICBtb3N0U2V2ZXJlQnlVcmkuc2V0KGtleSwgZmluZE1vc3RTZXZlcmVUZXN0U3RlcFJlc3VsdFN0YXR1cyhhbGxCeVVyaS5nZXQoa2V5KSkpXG4gICAgfVxuICAgIHJldHVybiBtb3N0U2V2ZXJlQnlVcmlcbiAgfSwgW2N1Y3VtYmVyUXVlcnldKVxufVxuIl19
@@ -4,4 +4,3 @@ export declare function useQueries(): {
4
4
  cucumberQuery: CucumberQuery;
5
5
  gherkinQuery: GherkinQuery;
6
6
  };
7
- //# sourceMappingURL=useQueries.d.ts.map
@@ -0,0 +1,9 @@
1
+ import { useContext } from 'react';
2
+ import CucumberQueryContext from '../CucumberQueryContext.js';
3
+ import GherkinQueryContext from '../GherkinQueryContext.js';
4
+ export function useQueries() {
5
+ const gherkinQuery = useContext(GherkinQueryContext);
6
+ const cucumberQuery = useContext(CucumberQueryContext);
7
+ return { cucumberQuery, gherkinQuery };
8
+ }
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlUXVlcmllcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VRdWVyaWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxPQUFPLENBQUE7QUFFbEMsT0FBTyxvQkFBb0IsTUFBTSw0QkFBNEIsQ0FBQTtBQUM3RCxPQUFPLG1CQUFtQixNQUFNLDJCQUEyQixDQUFBO0FBRTNELE1BQU0sVUFBVSxVQUFVO0lBSXhCLE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO0lBQ3BELE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO0lBQ3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLENBQUE7QUFDeEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUXVlcnkgYXMgR2hlcmtpblF1ZXJ5IH0gZnJvbSAnQGN1Y3VtYmVyL2doZXJraW4tdXRpbHMnXG5pbXBvcnQgdHlwZSB7IFF1ZXJ5IGFzIEN1Y3VtYmVyUXVlcnkgfSBmcm9tICdAY3VjdW1iZXIvcXVlcnknXG5pbXBvcnQgeyB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnXG5cbmltcG9ydCBDdWN1bWJlclF1ZXJ5Q29udGV4dCBmcm9tICcuLi9DdWN1bWJlclF1ZXJ5Q29udGV4dC5qcydcbmltcG9ydCBHaGVya2luUXVlcnlDb250ZXh0IGZyb20gJy4uL0doZXJraW5RdWVyeUNvbnRleHQuanMnXG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VRdWVyaWVzKCk6IHtcbiAgY3VjdW1iZXJRdWVyeTogQ3VjdW1iZXJRdWVyeVxuICBnaGVya2luUXVlcnk6IEdoZXJraW5RdWVyeVxufSB7XG4gIGNvbnN0IGdoZXJraW5RdWVyeSA9IHVzZUNvbnRleHQoR2hlcmtpblF1ZXJ5Q29udGV4dClcbiAgY29uc3QgY3VjdW1iZXJRdWVyeSA9IHVzZUNvbnRleHQoQ3VjdW1iZXJRdWVyeUNvbnRleHQpXG4gIHJldHVybiB7IGN1Y3VtYmVyUXVlcnksIGdoZXJraW5RdWVyeSB9XG59XG4iXX0=
@@ -4,4 +4,3 @@ export declare function useResultStatistics(): {
4
4
  statusesWithScenarios: readonly TestStepResultStatus[];
5
5
  totalScenarioCount: number;
6
6
  };
7
- //# sourceMappingURL=useResultStatistics.d.ts.map
@@ -0,0 +1,24 @@
1
+ import statuses from '../statuses.js';
2
+ import { useQueries } from './useQueries.js';
3
+ export function useResultStatistics() {
4
+ const { cucumberQuery } = useQueries();
5
+ const scenarioCountByStatus = cucumberQuery.countMostSevereTestStepResultStatus();
6
+ const statusesWithScenarios = Object.entries(scenarioCountByStatus)
7
+ .filter(([, value]) => {
8
+ return value > 0;
9
+ })
10
+ .map(([key]) => key)
11
+ .sort(statusComparator);
12
+ const totalScenarioCount = [...Object.values(scenarioCountByStatus)].reduce((prev, curr) => prev + curr, 0);
13
+ return { scenarioCountByStatus, statusesWithScenarios, totalScenarioCount };
14
+ }
15
+ function statusComparator(a, b) {
16
+ if (statuses.indexOf(a) < statuses.indexOf(b)) {
17
+ return -1;
18
+ }
19
+ if (statuses.indexOf(a) > statuses.indexOf(b)) {
20
+ return 1;
21
+ }
22
+ return 0;
23
+ }
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlUmVzdWx0U3RhdGlzdGljcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VSZXN1bHRTdGF0aXN0aWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sUUFBUSxNQUFNLGdCQUFnQixDQUFBO0FBQ3JDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUU1QyxNQUFNLFVBQVUsbUJBQW1CO0lBS2pDLE1BQU0sRUFBRSxhQUFhLEVBQUUsR0FBRyxVQUFVLEVBQUUsQ0FBQTtJQUN0QyxNQUFNLHFCQUFxQixHQUFHLGFBQWEsQ0FBQyxtQ0FBbUMsRUFBRSxDQUFBO0lBRWpGLE1BQU0scUJBQXFCLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQztTQUNoRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtRQUNwQixPQUFPLEtBQUssR0FBRyxDQUFDLENBQUE7SUFDbEIsQ0FBQyxDQUFDO1NBQ0QsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBMkIsQ0FBQztTQUMzQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtJQUV6QixNQUFNLGtCQUFrQixHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQ3pFLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxHQUFHLElBQUksRUFDM0IsQ0FBQyxDQUNGLENBQUE7SUFFRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQTtBQUM3RSxDQUFDO0FBRUQsU0FBUyxnQkFBZ0IsQ0FBQyxDQUF1QixFQUFFLENBQXVCO0lBQ3hFLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDOUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtJQUNYLENBQUM7SUFDRCxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzlDLE9BQU8sQ0FBQyxDQUFBO0lBQ1YsQ0FBQztJQUNELE9BQU8sQ0FBQyxDQUFBO0FBQ1YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgVGVzdFN0ZXBSZXN1bHRTdGF0dXMgfSBmcm9tICdAY3VjdW1iZXIvbWVzc2FnZXMnXG5cbmltcG9ydCBzdGF0dXNlcyBmcm9tICcuLi9zdGF0dXNlcy5qcydcbmltcG9ydCB7IHVzZVF1ZXJpZXMgfSBmcm9tICcuL3VzZVF1ZXJpZXMuanMnXG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VSZXN1bHRTdGF0aXN0aWNzKCk6IHtcbiAgc2NlbmFyaW9Db3VudEJ5U3RhdHVzOiBSZWNvcmQ8VGVzdFN0ZXBSZXN1bHRTdGF0dXMsIG51bWJlcj5cbiAgc3RhdHVzZXNXaXRoU2NlbmFyaW9zOiByZWFkb25seSBUZXN0U3RlcFJlc3VsdFN0YXR1c1tdXG4gIHRvdGFsU2NlbmFyaW9Db3VudDogbnVtYmVyXG59IHtcbiAgY29uc3QgeyBjdWN1bWJlclF1ZXJ5IH0gPSB1c2VRdWVyaWVzKClcbiAgY29uc3Qgc2NlbmFyaW9Db3VudEJ5U3RhdHVzID0gY3VjdW1iZXJRdWVyeS5jb3VudE1vc3RTZXZlcmVUZXN0U3RlcFJlc3VsdFN0YXR1cygpXG5cbiAgY29uc3Qgc3RhdHVzZXNXaXRoU2NlbmFyaW9zID0gT2JqZWN0LmVudHJpZXMoc2NlbmFyaW9Db3VudEJ5U3RhdHVzKVxuICAgIC5maWx0ZXIoKFssIHZhbHVlXSkgPT4ge1xuICAgICAgcmV0dXJuIHZhbHVlID4gMFxuICAgIH0pXG4gICAgLm1hcCgoW2tleV0pID0+IGtleSBhcyBUZXN0U3RlcFJlc3VsdFN0YXR1cylcbiAgICAuc29ydChzdGF0dXNDb21wYXJhdG9yKVxuXG4gIGNvbnN0IHRvdGFsU2NlbmFyaW9Db3VudCA9IFsuLi5PYmplY3QudmFsdWVzKHNjZW5hcmlvQ291bnRCeVN0YXR1cyldLnJlZHVjZShcbiAgICAocHJldiwgY3VycikgPT4gcHJldiArIGN1cnIsXG4gICAgMFxuICApXG5cbiAgcmV0dXJuIHsgc2NlbmFyaW9Db3VudEJ5U3RhdHVzLCBzdGF0dXNlc1dpdGhTY2VuYXJpb3MsIHRvdGFsU2NlbmFyaW9Db3VudCB9XG59XG5cbmZ1bmN0aW9uIHN0YXR1c0NvbXBhcmF0b3IoYTogVGVzdFN0ZXBSZXN1bHRTdGF0dXMsIGI6IFRlc3RTdGVwUmVzdWx0U3RhdHVzKSB7XG4gIGlmIChzdGF0dXNlcy5pbmRleE9mKGEpIDwgc3RhdHVzZXMuaW5kZXhPZihiKSkge1xuICAgIHJldHVybiAtMVxuICB9XG4gIGlmIChzdGF0dXNlcy5pbmRleE9mKGEpID4gc3RhdHVzZXMuaW5kZXhPZihiKSkge1xuICAgIHJldHVybiAxXG4gIH1cbiAgcmV0dXJuIDBcbn1cbiJdfQ==
@@ -1,3 +1,2 @@
1
1
  import { type SearchContextValue } from '../SearchContext.js';
2
2
  export declare function useSearch(): SearchContextValue;
3
- //# sourceMappingURL=useSearch.d.ts.map
@@ -0,0 +1,6 @@
1
+ import { useContext } from 'react';
2
+ import SearchQueryContext from '../SearchContext.js';
3
+ export function useSearch() {
4
+ return useContext(SearchQueryContext);
5
+ }
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlU2VhcmNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3VzZVNlYXJjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sT0FBTyxDQUFBO0FBRWxDLE9BQU8sa0JBQStDLE1BQU0scUJBQXFCLENBQUE7QUFFakYsTUFBTSxVQUFVLFNBQVM7SUFDdkIsT0FBTyxVQUFVLENBQUMsa0JBQWtCLENBQUMsQ0FBQTtBQUN2QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0J1xuXG5pbXBvcnQgU2VhcmNoUXVlcnlDb250ZXh0LCB7IHR5cGUgU2VhcmNoQ29udGV4dFZhbHVlIH0gZnJvbSAnLi4vU2VhcmNoQ29udGV4dC5qcydcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVNlYXJjaCgpOiBTZWFyY2hDb250ZXh0VmFsdWUge1xuICByZXR1cm4gdXNlQ29udGV4dChTZWFyY2hRdWVyeUNvbnRleHQpXG59XG4iXX0=
@@ -0,0 +1,26 @@
1
+ import { type SearchHits } from '../search/index.js';
2
+ /** the search ran - `hits` is an empty map when nothing matched */
3
+ export interface SuccessSearchResult {
4
+ status: 'SUCCESS';
5
+ hits: SearchHits;
6
+ }
7
+ /** there was no search term, so no search was done */
8
+ export interface NoopSearchResult {
9
+ status: 'NOOP';
10
+ }
11
+ /** waiting for the index to build or the search to resolve */
12
+ export interface WaitingSearchResult {
13
+ status: 'WAITING';
14
+ }
15
+ /** the index failed to build or the search itself failed */
16
+ export interface ErrorSearchResult {
17
+ status: 'ERROR';
18
+ error: Error;
19
+ }
20
+ export type SearchResult = SuccessSearchResult | NoopSearchResult | WaitingSearchResult | ErrorSearchResult;
21
+ /**
22
+ * Creates and populates a search index from the loaded Gherkin documents, runs the current search
23
+ * term against it, and returns a discriminated result describing the outcome. Consumers narrow on
24
+ * `result.status` and don't need to know whether a search term is present.
25
+ */
26
+ export declare function useSearchResult(): SearchResult;
@@ -0,0 +1,58 @@
1
+ import { useEffect, useMemo, useState } from 'react';
2
+ import { createSearchIndex } from '../search/index.js';
3
+ import { useQueries } from './useQueries.js';
4
+ import { useSearch } from './useSearch.js';
5
+ /**
6
+ * Creates and populates a search index from the loaded Gherkin documents, runs the current search
7
+ * term against it, and returns a discriminated result describing the outcome. Consumers narrow on
8
+ * `result.status` and don't need to know whether a search term is present.
9
+ */
10
+ export function useSearchResult() {
11
+ const { gherkinQuery } = useQueries();
12
+ const gherkinDocuments = useMemo(() => gherkinQuery.getGherkinDocuments(), [gherkinQuery]);
13
+ const { searchTerm } = useSearch();
14
+ const [searchIndex, setSearchIndex] = useState();
15
+ const [result, setResult] = useState({ status: 'WAITING' });
16
+ useEffect(() => {
17
+ createSearchIndex(gherkinDocuments)
18
+ .then((created) => setSearchIndex(created))
19
+ .catch((error) => {
20
+ console.error('Failed to create search index:', error);
21
+ setSearchIndex(new Error('Failed to create search index', { cause: error }));
22
+ });
23
+ }, [gherkinDocuments]);
24
+ useEffect(() => {
25
+ if (!searchTerm) {
26
+ setResult({ status: 'NOOP' });
27
+ return;
28
+ }
29
+ if (searchIndex === undefined) {
30
+ // search index is not ready yet
31
+ setResult({ status: 'WAITING' });
32
+ return;
33
+ }
34
+ if (searchIndex instanceof Error) {
35
+ setResult({ status: 'ERROR', error: searchIndex });
36
+ return;
37
+ }
38
+ let active = true;
39
+ searchIndex
40
+ .search(searchTerm)
41
+ .then((hits) => {
42
+ if (active) {
43
+ setResult({ status: 'SUCCESS', hits });
44
+ }
45
+ })
46
+ .catch((error) => {
47
+ console.error('Search failed:', error);
48
+ if (active) {
49
+ setResult({ status: 'ERROR', error: new Error('Search failed', { cause: error }) });
50
+ }
51
+ });
52
+ return () => {
53
+ active = false;
54
+ };
55
+ }, [searchIndex, searchTerm]);
56
+ return result;
57
+ }
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlU2VhcmNoUmVzdWx0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3VzZVNlYXJjaFJlc3VsdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUE7QUFDcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFxQyxNQUFNLG9CQUFvQixDQUFBO0FBQ3pGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM1QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUE4QjFDOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsZUFBZTtJQUM3QixNQUFNLEVBQUUsWUFBWSxFQUFFLEdBQUcsVUFBVSxFQUFFLENBQUE7SUFDckMsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFBO0lBQzFGLE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxTQUFTLEVBQUUsQ0FBQTtJQUVsQyxNQUFNLENBQUMsV0FBVyxFQUFFLGNBQWMsQ0FBQyxHQUFHLFFBQVEsRUFBdUIsQ0FBQTtJQUNyRSxNQUFNLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxHQUFHLFFBQVEsQ0FBZSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFBO0lBRXpFLFNBQVMsQ0FBQyxHQUFHLEVBQUU7UUFDYixpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQzthQUNoQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUMxQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsZ0NBQWdDLEVBQUUsS0FBSyxDQUFDLENBQUE7WUFDdEQsY0FBYyxDQUFDLElBQUksS0FBSyxDQUFDLCtCQUErQixFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUM5RSxDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQTtJQUN0QixTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ2IsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLFNBQVMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFBO1lBQzdCLE9BQU07UUFDUixDQUFDO1FBQ0QsSUFBSSxXQUFXLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDOUIsZ0NBQWdDO1lBQ2hDLFNBQVMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFBO1lBQ2hDLE9BQU07UUFDUixDQUFDO1FBQ0QsSUFBSSxXQUFXLFlBQVksS0FBSyxFQUFFLENBQUM7WUFDakMsU0FBUyxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQTtZQUNsRCxPQUFNO1FBQ1IsQ0FBQztRQUNELElBQUksTUFBTSxHQUFHLElBQUksQ0FBQTtRQUNqQixXQUFXO2FBQ1IsTUFBTSxDQUFDLFVBQVUsQ0FBQzthQUNsQixJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNiLElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQ1gsU0FBUyxDQUFDLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO1lBQ3hDLENBQUM7UUFDSCxDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLENBQUE7WUFDdEMsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDWCxTQUFTLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEtBQUssQ0FBQyxlQUFlLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUE7WUFDckYsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFBO1FBQ0osT0FBTyxHQUFHLEVBQUU7WUFDVixNQUFNLEdBQUcsS0FBSyxDQUFBO1FBQ2hCLENBQUMsQ0FBQTtJQUNILENBQUMsRUFBRSxDQUFDLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFBO0lBRTdCLE9BQU8sTUFBTSxDQUFBO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNyZWF0ZVNlYXJjaEluZGV4LCB0eXBlIFNlYXJjaEhpdHMsIHR5cGUgU2VhcmNoSW5kZXggfSBmcm9tICcuLi9zZWFyY2gvaW5kZXguanMnXG5pbXBvcnQgeyB1c2VRdWVyaWVzIH0gZnJvbSAnLi91c2VRdWVyaWVzLmpzJ1xuaW1wb3J0IHsgdXNlU2VhcmNoIH0gZnJvbSAnLi91c2VTZWFyY2guanMnXG5cbi8qKiB0aGUgc2VhcmNoIHJhbiAtIGBoaXRzYCBpcyBhbiBlbXB0eSBtYXAgd2hlbiBub3RoaW5nIG1hdGNoZWQgKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3VjY2Vzc1NlYXJjaFJlc3VsdCB7XG4gIHN0YXR1czogJ1NVQ0NFU1MnXG4gIGhpdHM6IFNlYXJjaEhpdHNcbn1cblxuLyoqIHRoZXJlIHdhcyBubyBzZWFyY2ggdGVybSwgc28gbm8gc2VhcmNoIHdhcyBkb25lICovXG5leHBvcnQgaW50ZXJmYWNlIE5vb3BTZWFyY2hSZXN1bHQge1xuICBzdGF0dXM6ICdOT09QJ1xufVxuXG4vKiogd2FpdGluZyBmb3IgdGhlIGluZGV4IHRvIGJ1aWxkIG9yIHRoZSBzZWFyY2ggdG8gcmVzb2x2ZSAqL1xuZXhwb3J0IGludGVyZmFjZSBXYWl0aW5nU2VhcmNoUmVzdWx0IHtcbiAgc3RhdHVzOiAnV0FJVElORydcbn1cblxuLyoqIHRoZSBpbmRleCBmYWlsZWQgdG8gYnVpbGQgb3IgdGhlIHNlYXJjaCBpdHNlbGYgZmFpbGVkICovXG5leHBvcnQgaW50ZXJmYWNlIEVycm9yU2VhcmNoUmVzdWx0IHtcbiAgc3RhdHVzOiAnRVJST1InXG4gIGVycm9yOiBFcnJvclxufVxuXG5leHBvcnQgdHlwZSBTZWFyY2hSZXN1bHQgPVxuICB8IFN1Y2Nlc3NTZWFyY2hSZXN1bHRcbiAgfCBOb29wU2VhcmNoUmVzdWx0XG4gIHwgV2FpdGluZ1NlYXJjaFJlc3VsdFxuICB8IEVycm9yU2VhcmNoUmVzdWx0XG5cbi8qKlxuICogQ3JlYXRlcyBhbmQgcG9wdWxhdGVzIGEgc2VhcmNoIGluZGV4IGZyb20gdGhlIGxvYWRlZCBHaGVya2luIGRvY3VtZW50cywgcnVucyB0aGUgY3VycmVudCBzZWFyY2hcbiAqIHRlcm0gYWdhaW5zdCBpdCwgYW5kIHJldHVybnMgYSBkaXNjcmltaW5hdGVkIHJlc3VsdCBkZXNjcmliaW5nIHRoZSBvdXRjb21lLiBDb25zdW1lcnMgbmFycm93IG9uXG4gKiBgcmVzdWx0LnN0YXR1c2AgYW5kIGRvbid0IG5lZWQgdG8ga25vdyB3aGV0aGVyIGEgc2VhcmNoIHRlcm0gaXMgcHJlc2VudC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVNlYXJjaFJlc3VsdCgpOiBTZWFyY2hSZXN1bHQge1xuICBjb25zdCB7IGdoZXJraW5RdWVyeSB9ID0gdXNlUXVlcmllcygpXG4gIGNvbnN0IGdoZXJraW5Eb2N1bWVudHMgPSB1c2VNZW1vKCgpID0+IGdoZXJraW5RdWVyeS5nZXRHaGVya2luRG9jdW1lbnRzKCksIFtnaGVya2luUXVlcnldKVxuICBjb25zdCB7IHNlYXJjaFRlcm0gfSA9IHVzZVNlYXJjaCgpXG5cbiAgY29uc3QgW3NlYXJjaEluZGV4LCBzZXRTZWFyY2hJbmRleF0gPSB1c2VTdGF0ZTxTZWFyY2hJbmRleCB8IEVycm9yPigpXG4gIGNvbnN0IFtyZXN1bHQsIHNldFJlc3VsdF0gPSB1c2VTdGF0ZTxTZWFyY2hSZXN1bHQ+KHsgc3RhdHVzOiAnV0FJVElORycgfSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNyZWF0ZVNlYXJjaEluZGV4KGdoZXJraW5Eb2N1bWVudHMpXG4gICAgICAudGhlbigoY3JlYXRlZCkgPT4gc2V0U2VhcmNoSW5kZXgoY3JlYXRlZCkpXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBjcmVhdGUgc2VhcmNoIGluZGV4OicsIGVycm9yKVxuICAgICAgICBzZXRTZWFyY2hJbmRleChuZXcgRXJyb3IoJ0ZhaWxlZCB0byBjcmVhdGUgc2VhcmNoIGluZGV4JywgeyBjYXVzZTogZXJyb3IgfSkpXG4gICAgICB9KVxuICB9LCBbZ2hlcmtpbkRvY3VtZW50c10pXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFzZWFyY2hUZXJtKSB7XG4gICAgICBzZXRSZXN1bHQoeyBzdGF0dXM6ICdOT09QJyB9KVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChzZWFyY2hJbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBzZWFyY2ggaW5kZXggaXMgbm90IHJlYWR5IHlldFxuICAgICAgc2V0UmVzdWx0KHsgc3RhdHVzOiAnV0FJVElORycgfSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoc2VhcmNoSW5kZXggaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgc2V0UmVzdWx0KHsgc3RhdHVzOiAnRVJST1InLCBlcnJvcjogc2VhcmNoSW5kZXggfSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBsZXQgYWN0aXZlID0gdHJ1ZVxuICAgIHNlYXJjaEluZGV4XG4gICAgICAuc2VhcmNoKHNlYXJjaFRlcm0pXG4gICAgICAudGhlbigoaGl0cykgPT4ge1xuICAgICAgICBpZiAoYWN0aXZlKSB7XG4gICAgICAgICAgc2V0UmVzdWx0KHsgc3RhdHVzOiAnU1VDQ0VTUycsIGhpdHMgfSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignU2VhcmNoIGZhaWxlZDonLCBlcnJvcilcbiAgICAgICAgaWYgKGFjdGl2ZSkge1xuICAgICAgICAgIHNldFJlc3VsdCh7IHN0YXR1czogJ0VSUk9SJywgZXJyb3I6IG5ldyBFcnJvcignU2VhcmNoIGZhaWxlZCcsIHsgY2F1c2U6IGVycm9yIH0pIH0pXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGFjdGl2ZSA9IGZhbHNlXG4gICAgfVxuICB9LCBbc2VhcmNoSW5kZXgsIHNlYXJjaFRlcm1dKVxuXG4gIHJldHVybiByZXN1bHRcbn1cbiJdfQ==
@@ -5,4 +5,3 @@ import type { TestCaseStarted } from '@cucumber/messages';
5
5
  * @param nodeId the Gherkin node id
6
6
  */
7
7
  export declare function useTestCaseStarted(nodeId: string): TestCaseStarted | undefined;
8
- //# sourceMappingURL=useTestCaseStarted.d.ts.map
@@ -0,0 +1,20 @@
1
+ import { useMemo } from 'react';
2
+ import { useQueries } from './useQueries.js';
3
+ /**
4
+ * Finds the corresponding TestCaseStarted for an Example or Scenario node from a Gherkin
5
+ * document
6
+ * @param nodeId the Gherkin node id
7
+ */
8
+ export function useTestCaseStarted(nodeId) {
9
+ const { cucumberQuery } = useQueries();
10
+ return useMemo(() => {
11
+ for (const testCaseStarted of cucumberQuery.findAllTestCaseStarted()) {
12
+ const pickle = cucumberQuery.findPickleBy(testCaseStarted);
13
+ const closestNodeId = pickle?.astNodeIds.at(-1);
14
+ if (closestNodeId === nodeId) {
15
+ return testCaseStarted;
16
+ }
17
+ }
18
+ }, [cucumberQuery, nodeId]);
19
+ }
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlVGVzdENhc2VTdGFydGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3VzZVRlc3RDYXNlU3RhcnRlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sT0FBTyxDQUFBO0FBRS9CLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUU1Qzs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUFDLE1BQWM7SUFDL0MsTUFBTSxFQUFFLGFBQWEsRUFBRSxHQUFHLFVBQVUsRUFBRSxDQUFBO0lBQ3RDLE9BQU8sT0FBTyxDQUFDLEdBQUcsRUFBRTtRQUNsQixLQUFLLE1BQU0sZUFBZSxJQUFJLGFBQWEsQ0FBQyxzQkFBc0IsRUFBRSxFQUFFLENBQUM7WUFDckUsTUFBTSxNQUFNLEdBQUcsYUFBYSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsQ0FBQTtZQUMxRCxNQUFNLGFBQWEsR0FBRyxNQUFNLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQy9DLElBQUksYUFBYSxLQUFLLE1BQU0sRUFBRSxDQUFDO2dCQUM3QixPQUFPLGVBQWUsQ0FBQTtZQUN4QixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFBO0FBQzdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFRlc3RDYXNlU3RhcnRlZCB9IGZyb20gJ0BjdWN1bWJlci9tZXNzYWdlcydcbmltcG9ydCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHsgdXNlUXVlcmllcyB9IGZyb20gJy4vdXNlUXVlcmllcy5qcydcblxuLyoqXG4gKiBGaW5kcyB0aGUgY29ycmVzcG9uZGluZyBUZXN0Q2FzZVN0YXJ0ZWQgZm9yIGFuIEV4YW1wbGUgb3IgU2NlbmFyaW8gbm9kZSBmcm9tIGEgR2hlcmtpblxuICogZG9jdW1lbnRcbiAqIEBwYXJhbSBub2RlSWQgdGhlIEdoZXJraW4gbm9kZSBpZFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlVGVzdENhc2VTdGFydGVkKG5vZGVJZDogc3RyaW5nKTogVGVzdENhc2VTdGFydGVkIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgeyBjdWN1bWJlclF1ZXJ5IH0gPSB1c2VRdWVyaWVzKClcbiAgcmV0dXJuIHVzZU1lbW8oKCkgPT4ge1xuICAgIGZvciAoY29uc3QgdGVzdENhc2VTdGFydGVkIG9mIGN1Y3VtYmVyUXVlcnkuZmluZEFsbFRlc3RDYXNlU3RhcnRlZCgpKSB7XG4gICAgICBjb25zdCBwaWNrbGUgPSBjdWN1bWJlclF1ZXJ5LmZpbmRQaWNrbGVCeSh0ZXN0Q2FzZVN0YXJ0ZWQpXG4gICAgICBjb25zdCBjbG9zZXN0Tm9kZUlkID0gcGlja2xlPy5hc3ROb2RlSWRzLmF0KC0xKVxuICAgICAgaWYgKGNsb3Nlc3ROb2RlSWQgPT09IG5vZGVJZCkge1xuICAgICAgICByZXR1cm4gdGVzdENhc2VTdGFydGVkXG4gICAgICB9XG4gICAgfVxuICB9LCBbY3VjdW1iZXJRdWVyeSwgbm9kZUlkXSlcbn1cbiJdfQ==
@@ -5,4 +5,3 @@ type RunHooksList = {
5
5
  }[];
6
6
  export declare function useTestRunHooks(): RunHooksList;
7
7
  export {};
8
- //# sourceMappingURL=useTestRunHooks.d.ts.map
@@ -0,0 +1,14 @@
1
+ import { ensure } from '../ensure.js';
2
+ import { useQueries } from './useQueries.js';
3
+ export function useTestRunHooks() {
4
+ const { cucumberQuery } = useQueries();
5
+ const testRunHooksFinished = cucumberQuery.findAllTestRunHookFinished();
6
+ return testRunHooksFinished.map((testRunHookFinished) => {
7
+ const hook = ensure(cucumberQuery.findHookBy(testRunHookFinished), 'Expected testRunHookFinished to resolve with a hook');
8
+ return {
9
+ testRunHookFinished,
10
+ hook,
11
+ };
12
+ });
13
+ }
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlVGVzdFJ1bkhvb2tzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3VzZVRlc3RSdW5Ib29rcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ3JDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUk1QyxNQUFNLFVBQVUsZUFBZTtJQUM3QixNQUFNLEVBQUUsYUFBYSxFQUFFLEdBQUcsVUFBVSxFQUFFLENBQUE7SUFDdEMsTUFBTSxvQkFBb0IsR0FDeEIsYUFBYSxDQUFDLDBCQUEwQixFQUFFLENBQUE7SUFFNUMsT0FBTyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxtQkFBbUIsRUFBRSxFQUFFO1FBQ3RELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FDakIsYUFBYSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUM3QyxxREFBcUQsQ0FDdEQsQ0FBQTtRQUVELE9BQU87WUFDTCxtQkFBbUI7WUFDbkIsSUFBSTtTQUNMLENBQUE7SUFDSCxDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEhvb2ssIFRlc3RSdW5Ib29rRmluaXNoZWQgfSBmcm9tICdAY3VjdW1iZXIvbWVzc2FnZXMnXG5cbmltcG9ydCB7IGVuc3VyZSB9IGZyb20gJy4uL2Vuc3VyZS5qcydcbmltcG9ydCB7IHVzZVF1ZXJpZXMgfSBmcm9tICcuL3VzZVF1ZXJpZXMuanMnXG5cbnR5cGUgUnVuSG9va3NMaXN0ID0geyB0ZXN0UnVuSG9va0ZpbmlzaGVkOiBUZXN0UnVuSG9va0ZpbmlzaGVkOyBob29rOiBIb29rIH1bXVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlVGVzdFJ1bkhvb2tzKCk6IFJ1bkhvb2tzTGlzdCB7XG4gIGNvbnN0IHsgY3VjdW1iZXJRdWVyeSB9ID0gdXNlUXVlcmllcygpXG4gIGNvbnN0IHRlc3RSdW5Ib29rc0ZpbmlzaGVkOiBSZWFkb25seUFycmF5PFRlc3RSdW5Ib29rRmluaXNoZWQ+ID1cbiAgICBjdWN1bWJlclF1ZXJ5LmZpbmRBbGxUZXN0UnVuSG9va0ZpbmlzaGVkKClcblxuICByZXR1cm4gdGVzdFJ1bkhvb2tzRmluaXNoZWQubWFwKCh0ZXN0UnVuSG9va0ZpbmlzaGVkKSA9PiB7XG4gICAgY29uc3QgaG9vayA9IGVuc3VyZShcbiAgICAgIGN1Y3VtYmVyUXVlcnkuZmluZEhvb2tCeSh0ZXN0UnVuSG9va0ZpbmlzaGVkKSxcbiAgICAgICdFeHBlY3RlZCB0ZXN0UnVuSG9va0ZpbmlzaGVkIHRvIHJlc29sdmUgd2l0aCBhIGhvb2snXG4gICAgKVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRlc3RSdW5Ib29rRmluaXNoZWQsXG4gICAgICBob29rLFxuICAgIH1cbiAgfSlcbn1cbiJdfQ==
@@ -1,3 +1,2 @@
1
1
  export * from './components/index.js';
2
2
  export * from './hooks/index.js';
3
- //# sourceMappingURL=index.js.map
package/dist/index.js ADDED
@@ -0,0 +1,3 @@
1
+ export * from './components/index.js';
2
+ export * from './hooks/index.js';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx1QkFBdUIsQ0FBQTtBQUNyQyxjQUFjLGtCQUFrQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2luZGV4LmpzJ1xuZXhwb3J0ICogZnJvbSAnLi9ob29rcy9pbmRleC5qcydcbiJdfQ==
@@ -1,2 +1 @@
1
1
  export default function isTagExpression(expression: string): boolean;
2
- //# sourceMappingURL=isTagExpression.d.ts.map
@@ -0,0 +1,5 @@
1
+ export default function isTagExpression(expression) {
2
+ const tagExpression = /^\s*((@[^\s]+\s*)|(and\s+)|(or\s+)|(not\s+)|\(|\))+\s*$/;
3
+ return !!tagExpression.exec(expression);
4
+ }
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXNUYWdFeHByZXNzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2lzVGFnRXhwcmVzc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsT0FBTyxVQUFVLGVBQWUsQ0FBQyxVQUFrQjtJQUN4RCxNQUFNLGFBQWEsR0FBRyx5REFBeUQsQ0FBQTtJQUMvRSxPQUFPLENBQUMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO0FBQ3pDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1RhZ0V4cHJlc3Npb24oZXhwcmVzc2lvbjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IHRhZ0V4cHJlc3Npb24gPSAvXlxccyooKEBbXlxcc10rXFxzKil8KGFuZFxccyspfChvclxccyspfChub3RcXHMrKXxcXCh8XFwpKStcXHMqJC9cbiAgcmV0dXJuICEhdGFnRXhwcmVzc2lvbi5leGVjKGV4cHJlc3Npb24pXG59XG4iXX0=
@@ -10,4 +10,3 @@ export declare class FeatureSearch implements TypedIndex<GherkinDocument> {
10
10
  search(term: string): Promise<ReadonlyArray<IndexHit>>;
11
11
  add(gherkinDocument: GherkinDocument, _uri: string): Promise<this>;
12
12
  }
13
- //# sourceMappingURL=FeatureSearch.d.ts.map
@@ -0,0 +1,39 @@
1
+ import { create, insert, search } from '@orama/orama';
2
+ const schema = {
3
+ name: 'string',
4
+ description: 'string',
5
+ };
6
+ /**
7
+ * A little different to the other indexes - a Feature doesn't have its own id,
8
+ * so we use the uri of the GherkinDocument as a pointer
9
+ */
10
+ export class FeatureSearch {
11
+ index;
12
+ constructor() {
13
+ this.index = create({
14
+ schema,
15
+ sort: { enabled: false },
16
+ });
17
+ }
18
+ async search(term) {
19
+ const { hits } = await search(this.index, {
20
+ term,
21
+ });
22
+ return hits.map((hit) => ({ uri: hit.id, id: hit.id }));
23
+ }
24
+ async add(gherkinDocument, _uri) {
25
+ if (!gherkinDocument.feature) {
26
+ return this;
27
+ }
28
+ if (!gherkinDocument.uri) {
29
+ throw new Error('Missing uri on gherkinDocument');
30
+ }
31
+ await insert(this.index, {
32
+ id: gherkinDocument.uri,
33
+ name: gherkinDocument.feature.name,
34
+ description: gherkinDocument.feature.description,
35
+ });
36
+ return this;
37
+ }
38
+ }
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmVhdHVyZVNlYXJjaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZWFyY2gvRmVhdHVyZVNlYXJjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBYyxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFJakUsTUFBTSxNQUFNLEdBQUc7SUFDYixJQUFJLEVBQUUsUUFBUTtJQUNkLFdBQVcsRUFBRSxRQUFRO0NBQ2IsQ0FBQTtBQUVWOzs7R0FHRztBQUNILE1BQU0sT0FBTyxhQUFhO0lBQ1AsS0FBSyxDQUFzQjtJQUU1QztRQUNFLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDO1lBQ2xCLE1BQU07WUFDTixJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFO1NBQ3pCLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsTUFBTSxDQUFDLElBQVk7UUFDdkIsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDeEMsSUFBSTtTQUNMLENBQUMsQ0FBQTtRQUNGLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ3pELENBQUM7SUFFRCxLQUFLLENBQUMsR0FBRyxDQUFDLGVBQWdDLEVBQUUsSUFBWTtRQUN0RCxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzdCLE9BQU8sSUFBSSxDQUFBO1FBQ2IsQ0FBQztRQUNELElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDekIsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFBO1FBQ25ELENBQUM7UUFDRCxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ3ZCLEVBQUUsRUFBRSxlQUFlLENBQUMsR0FBRztZQUN2QixJQUFJLEVBQUUsZUFBZSxDQUFDLE9BQU8sQ0FBQyxJQUFJO1lBQ2xDLFdBQVcsRUFBRSxlQUFlLENBQUMsT0FBTyxDQUFDLFdBQVc7U0FDakQsQ0FBQyxDQUFBO1FBQ0YsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEdoZXJraW5Eb2N1bWVudCB9IGZyb20gJ0BjdWN1bWJlci9tZXNzYWdlcydcbmltcG9ydCB7IGNyZWF0ZSwgaW5zZXJ0LCB0eXBlIE9yYW1hLCBzZWFyY2ggfSBmcm9tICdAb3JhbWEvb3JhbWEnXG5cbmltcG9ydCB0eXBlIHsgSW5kZXhIaXQsIFR5cGVkSW5kZXggfSBmcm9tICcuL3R5cGVzLmpzJ1xuXG5jb25zdCBzY2hlbWEgPSB7XG4gIG5hbWU6ICdzdHJpbmcnLFxuICBkZXNjcmlwdGlvbjogJ3N0cmluZycsXG59IGFzIGNvbnN0XG5cbi8qKlxuICogQSBsaXR0bGUgZGlmZmVyZW50IHRvIHRoZSBvdGhlciBpbmRleGVzIC0gYSBGZWF0dXJlIGRvZXNuJ3QgaGF2ZSBpdHMgb3duIGlkLFxuICogc28gd2UgdXNlIHRoZSB1cmkgb2YgdGhlIEdoZXJraW5Eb2N1bWVudCBhcyBhIHBvaW50ZXJcbiAqL1xuZXhwb3J0IGNsYXNzIEZlYXR1cmVTZWFyY2ggaW1wbGVtZW50cyBUeXBlZEluZGV4PEdoZXJraW5Eb2N1bWVudD4ge1xuICBwcml2YXRlIHJlYWRvbmx5IGluZGV4OiBPcmFtYTx0eXBlb2Ygc2NoZW1hPlxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaW5kZXggPSBjcmVhdGUoe1xuICAgICAgc2NoZW1hLFxuICAgICAgc29ydDogeyBlbmFibGVkOiBmYWxzZSB9LFxuICAgIH0pXG4gIH1cblxuICBhc3luYyBzZWFyY2godGVybTogc3RyaW5nKTogUHJvbWlzZTxSZWFkb25seUFycmF5PEluZGV4SGl0Pj4ge1xuICAgIGNvbnN0IHsgaGl0cyB9ID0gYXdhaXQgc2VhcmNoKHRoaXMuaW5kZXgsIHtcbiAgICAgIHRlcm0sXG4gICAgfSlcbiAgICByZXR1cm4gaGl0cy5tYXAoKGhpdCkgPT4gKHsgdXJpOiBoaXQuaWQsIGlkOiBoaXQuaWQgfSkpXG4gIH1cblxuICBhc3luYyBhZGQoZ2hlcmtpbkRvY3VtZW50OiBHaGVya2luRG9jdW1lbnQsIF91cmk6IHN0cmluZyk6IFByb21pc2U8dGhpcz4ge1xuICAgIGlmICghZ2hlcmtpbkRvY3VtZW50LmZlYXR1cmUpIHtcbiAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuICAgIGlmICghZ2hlcmtpbkRvY3VtZW50LnVyaSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHVyaSBvbiBnaGVya2luRG9jdW1lbnQnKVxuICAgIH1cbiAgICBhd2FpdCBpbnNlcnQodGhpcy5pbmRleCwge1xuICAgICAgaWQ6IGdoZXJraW5Eb2N1bWVudC51cmksXG4gICAgICBuYW1lOiBnaGVya2luRG9jdW1lbnQuZmVhdHVyZS5uYW1lLFxuICAgICAgZGVzY3JpcHRpb246IGdoZXJraW5Eb2N1bWVudC5mZWF0dXJlLmRlc2NyaXB0aW9uLFxuICAgIH0pXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxufVxuIl19
@@ -17,4 +17,3 @@ export declare class ScenarioLikeSearch<T extends ScenarioLike> implements Typed
17
17
  }[]>;
18
18
  add(item: T, uri: string): Promise<this>;
19
19
  }
20
- //# sourceMappingURL=ScenarioLikeSearch.d.ts.map
@@ -0,0 +1,37 @@
1
+ import { create, insert, search } from '@orama/orama';
2
+ import { ID_SEPARATOR } from './types.js';
3
+ const schema = {
4
+ name: 'string',
5
+ description: 'string',
6
+ };
7
+ /**
8
+ * Can be used for Backgrounds, Scenarios and Rules, searching against the
9
+ * name and description
10
+ */
11
+ export class ScenarioLikeSearch {
12
+ index;
13
+ constructor() {
14
+ this.index = create({
15
+ schema,
16
+ sort: { enabled: false },
17
+ });
18
+ }
19
+ async search(term) {
20
+ const { hits } = await search(this.index, {
21
+ term,
22
+ });
23
+ return hits.map((hit) => {
24
+ const [uri, id] = hit.id.split(ID_SEPARATOR);
25
+ return { uri, id };
26
+ });
27
+ }
28
+ async add(item, uri) {
29
+ await insert(this.index, {
30
+ id: uri + ID_SEPARATOR + item.id,
31
+ name: item.name,
32
+ description: item.description,
33
+ });
34
+ return this;
35
+ }
36
+ }
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NlbmFyaW9MaWtlU2VhcmNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlYXJjaC9TY2VuYXJpb0xpa2VTZWFyY2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQWMsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBRWpFLE9BQU8sRUFBRSxZQUFZLEVBQW1CLE1BQU0sWUFBWSxDQUFBO0FBRTFELE1BQU0sTUFBTSxHQUFHO0lBQ2IsSUFBSSxFQUFFLFFBQVE7SUFDZCxXQUFXLEVBQUUsUUFBUTtDQUNiLENBQUE7QUFRVjs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sa0JBQWtCO0lBQ1osS0FBSyxDQUFzQjtJQUU1QztRQUNFLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDO1lBQ2xCLE1BQU07WUFDTixJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFO1NBQ3pCLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsTUFBTSxDQUFDLElBQVk7UUFDdkIsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDeEMsSUFBSTtTQUNMLENBQUMsQ0FBQTtRQUNGLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ3RCLE1BQU0sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUE7WUFDNUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQTtRQUNwQixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsR0FBRyxDQUFDLElBQU8sRUFBRSxHQUFXO1FBQzVCLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDdkIsRUFBRSxFQUFFLEdBQUcsR0FBRyxZQUFZLEdBQUcsSUFBSSxDQUFDLEVBQUU7WUFDaEMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1NBQzlCLENBQUMsQ0FBQTtRQUNGLE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlLCBpbnNlcnQsIHR5cGUgT3JhbWEsIHNlYXJjaCB9IGZyb20gJ0BvcmFtYS9vcmFtYSdcblxuaW1wb3J0IHsgSURfU0VQQVJBVE9SLCB0eXBlIFR5cGVkSW5kZXggfSBmcm9tICcuL3R5cGVzLmpzJ1xuXG5jb25zdCBzY2hlbWEgPSB7XG4gIG5hbWU6ICdzdHJpbmcnLFxuICBkZXNjcmlwdGlvbjogJ3N0cmluZycsXG59IGFzIGNvbnN0XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NlbmFyaW9MaWtlIHtcbiAgaWQ6IHN0cmluZ1xuICBuYW1lOiBzdHJpbmdcbiAgZGVzY3JpcHRpb246IHN0cmluZ1xufVxuXG4vKipcbiAqIENhbiBiZSB1c2VkIGZvciBCYWNrZ3JvdW5kcywgU2NlbmFyaW9zIGFuZCBSdWxlcywgc2VhcmNoaW5nIGFnYWluc3QgdGhlXG4gKiBuYW1lIGFuZCBkZXNjcmlwdGlvblxuICovXG5leHBvcnQgY2xhc3MgU2NlbmFyaW9MaWtlU2VhcmNoPFQgZXh0ZW5kcyBTY2VuYXJpb0xpa2U+IGltcGxlbWVudHMgVHlwZWRJbmRleDxUPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaW5kZXg6IE9yYW1hPHR5cGVvZiBzY2hlbWE+XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5pbmRleCA9IGNyZWF0ZSh7XG4gICAgICBzY2hlbWEsXG4gICAgICBzb3J0OiB7IGVuYWJsZWQ6IGZhbHNlIH0sXG4gICAgfSlcbiAgfVxuXG4gIGFzeW5jIHNlYXJjaCh0ZXJtOiBzdHJpbmcpIHtcbiAgICBjb25zdCB7IGhpdHMgfSA9IGF3YWl0IHNlYXJjaCh0aGlzLmluZGV4LCB7XG4gICAgICB0ZXJtLFxuICAgIH0pXG4gICAgcmV0dXJuIGhpdHMubWFwKChoaXQpID0+IHtcbiAgICAgIGNvbnN0IFt1cmksIGlkXSA9IGhpdC5pZC5zcGxpdChJRF9TRVBBUkFUT1IpXG4gICAgICByZXR1cm4geyB1cmksIGlkIH1cbiAgICB9KVxuICB9XG5cbiAgYXN5bmMgYWRkKGl0ZW06IFQsIHVyaTogc3RyaW5nKTogUHJvbWlzZTx0aGlzPiB7XG4gICAgYXdhaXQgaW5zZXJ0KHRoaXMuaW5kZXgsIHtcbiAgICAgIGlkOiB1cmkgKyBJRF9TRVBBUkFUT1IgKyBpdGVtLmlkLFxuICAgICAgbmFtZTogaXRlbS5uYW1lLFxuICAgICAgZGVzY3JpcHRpb246IGl0ZW0uZGVzY3JpcHRpb24sXG4gICAgfSlcbiAgICByZXR1cm4gdGhpc1xuICB9XG59XG4iXX0=
@@ -9,4 +9,3 @@ export declare class StepSearch implements TypedIndex<Step> {
9
9
  }[]>;
10
10
  add(step: Step, uri: string): Promise<this>;
11
11
  }
12
- //# sourceMappingURL=StepSearch.d.ts.map
@@ -0,0 +1,40 @@
1
+ import { create, insert, search } from '@orama/orama';
2
+ import { ID_SEPARATOR } from './types.js';
3
+ const schema = {
4
+ keyword: 'string',
5
+ text: 'string',
6
+ docString: 'string',
7
+ dataTable: 'string[]',
8
+ };
9
+ export class StepSearch {
10
+ index;
11
+ constructor() {
12
+ this.index = create({
13
+ schema,
14
+ sort: { enabled: false },
15
+ });
16
+ }
17
+ async search(term) {
18
+ const { hits } = await search(this.index, {
19
+ term,
20
+ boost: {
21
+ text: 2,
22
+ },
23
+ });
24
+ return hits.map((hit) => {
25
+ const [uri, id] = hit.id.split(ID_SEPARATOR);
26
+ return { uri, id };
27
+ });
28
+ }
29
+ async add(step, uri) {
30
+ await insert(this.index, {
31
+ id: uri + ID_SEPARATOR + step.id,
32
+ keyword: step.keyword,
33
+ text: step.text,
34
+ docString: step.docString?.content,
35
+ dataTable: step.dataTable?.rows.flatMap((row) => row.cells).map((cell) => cell.value),
36
+ });
37
+ return this;
38
+ }
39
+ }
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RlcFNlYXJjaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZWFyY2gvU3RlcFNlYXJjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBYyxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFFakUsT0FBTyxFQUFFLFlBQVksRUFBbUIsTUFBTSxZQUFZLENBQUE7QUFFMUQsTUFBTSxNQUFNLEdBQUc7SUFDYixPQUFPLEVBQUUsUUFBUTtJQUNqQixJQUFJLEVBQUUsUUFBUTtJQUNkLFNBQVMsRUFBRSxRQUFRO0lBQ25CLFNBQVMsRUFBRSxVQUFVO0NBQ2IsQ0FBQTtBQUVWLE1BQU0sT0FBTyxVQUFVO0lBQ0osS0FBSyxDQUFzQjtJQUU1QztRQUNFLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDO1lBQ2xCLE1BQU07WUFDTixJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFO1NBQ3pCLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsTUFBTSxDQUFDLElBQVk7UUFDdkIsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDeEMsSUFBSTtZQUNKLEtBQUssRUFBRTtnQkFDTCxJQUFJLEVBQUUsQ0FBQzthQUNSO1NBQ0YsQ0FBQyxDQUFBO1FBQ0YsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDdEIsTUFBTSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQTtZQUM1QyxPQUFPLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFBO1FBQ3BCLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBVSxFQUFFLEdBQVc7UUFDL0IsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUN2QixFQUFFLEVBQUUsR0FBRyxHQUFHLFlBQVksR0FBRyxJQUFJLENBQUMsRUFBRTtZQUNoQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTztZQUNsQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQ3RGLENBQUMsQ0FBQTtRQUNGLE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBTdGVwIH0gZnJvbSAnQGN1Y3VtYmVyL21lc3NhZ2VzJ1xuaW1wb3J0IHsgY3JlYXRlLCBpbnNlcnQsIHR5cGUgT3JhbWEsIHNlYXJjaCB9IGZyb20gJ0BvcmFtYS9vcmFtYSdcblxuaW1wb3J0IHsgSURfU0VQQVJBVE9SLCB0eXBlIFR5cGVkSW5kZXggfSBmcm9tICcuL3R5cGVzLmpzJ1xuXG5jb25zdCBzY2hlbWEgPSB7XG4gIGtleXdvcmQ6ICdzdHJpbmcnLFxuICB0ZXh0OiAnc3RyaW5nJyxcbiAgZG9jU3RyaW5nOiAnc3RyaW5nJyxcbiAgZGF0YVRhYmxlOiAnc3RyaW5nW10nLFxufSBhcyBjb25zdFxuXG5leHBvcnQgY2xhc3MgU3RlcFNlYXJjaCBpbXBsZW1lbnRzIFR5cGVkSW5kZXg8U3RlcD4ge1xuICBwcml2YXRlIHJlYWRvbmx5IGluZGV4OiBPcmFtYTx0eXBlb2Ygc2NoZW1hPlxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaW5kZXggPSBjcmVhdGUoe1xuICAgICAgc2NoZW1hLFxuICAgICAgc29ydDogeyBlbmFibGVkOiBmYWxzZSB9LFxuICAgIH0pXG4gIH1cblxuICBhc3luYyBzZWFyY2godGVybTogc3RyaW5nKSB7XG4gICAgY29uc3QgeyBoaXRzIH0gPSBhd2FpdCBzZWFyY2godGhpcy5pbmRleCwge1xuICAgICAgdGVybSxcbiAgICAgIGJvb3N0OiB7XG4gICAgICAgIHRleHQ6IDIsXG4gICAgICB9LFxuICAgIH0pXG4gICAgcmV0dXJuIGhpdHMubWFwKChoaXQpID0+IHtcbiAgICAgIGNvbnN0IFt1cmksIGlkXSA9IGhpdC5pZC5zcGxpdChJRF9TRVBBUkFUT1IpXG4gICAgICByZXR1cm4geyB1cmksIGlkIH1cbiAgICB9KVxuICB9XG5cbiAgYXN5bmMgYWRkKHN0ZXA6IFN0ZXAsIHVyaTogc3RyaW5nKTogUHJvbWlzZTx0aGlzPiB7XG4gICAgYXdhaXQgaW5zZXJ0KHRoaXMuaW5kZXgsIHtcbiAgICAgIGlkOiB1cmkgKyBJRF9TRVBBUkFUT1IgKyBzdGVwLmlkLFxuICAgICAga2V5d29yZDogc3RlcC5rZXl3b3JkLFxuICAgICAgdGV4dDogc3RlcC50ZXh0LFxuICAgICAgZG9jU3RyaW5nOiBzdGVwLmRvY1N0cmluZz8uY29udGVudCxcbiAgICAgIGRhdGFUYWJsZTogc3RlcC5kYXRhVGFibGU/LnJvd3MuZmxhdE1hcCgocm93KSA9PiByb3cuY2VsbHMpLm1hcCgoY2VsbCkgPT4gY2VsbC52YWx1ZSksXG4gICAgfSlcbiAgICByZXR1cm4gdGhpc1xuICB9XG59XG4iXX0=
@@ -6,7 +6,6 @@ export declare class TextSearch implements SearchIndex {
6
6
  private readonly ruleSearch;
7
7
  private readonly scenarioSearch;
8
8
  private readonly stepSearch;
9
- search(query: string): Promise<SearchHits | false>;
9
+ search(query: string): Promise<SearchHits>;
10
10
  add(gherkinDocument: GherkinDocument): Promise<void>;
11
11
  }
12
- //# sourceMappingURL=TextSearch.d.ts.map
@@ -0,0 +1,67 @@
1
+ import { walkGherkinDocument } from '@cucumber/gherkin-utils';
2
+ import { FeatureSearch } from './FeatureSearch.js';
3
+ import { ScenarioLikeSearch } from './ScenarioLikeSearch.js';
4
+ import { StepSearch } from './StepSearch.js';
5
+ export class TextSearch {
6
+ featureSearch = new FeatureSearch();
7
+ backgroundSearch = new ScenarioLikeSearch();
8
+ ruleSearch = new ScenarioLikeSearch();
9
+ scenarioSearch = new ScenarioLikeSearch();
10
+ stepSearch = new StepSearch();
11
+ async search(query) {
12
+ const [featureHits, backgroundHits, ruleHits, scenarioHits, stepHits] = await Promise.all([
13
+ this.featureSearch.search(query),
14
+ this.backgroundSearch.search(query),
15
+ this.ruleSearch.search(query),
16
+ this.scenarioSearch.search(query),
17
+ this.stepSearch.search(query),
18
+ ]);
19
+ // an empty map is a valid result meaning nothing matched
20
+ const map = new Map();
21
+ const getOrDefault = (uri) => {
22
+ let entry = map.get(uri);
23
+ if (!entry) {
24
+ entry = {
25
+ feature: false,
26
+ background: new Set(),
27
+ rule: new Set(),
28
+ scenario: new Set(),
29
+ step: new Set(),
30
+ };
31
+ map.set(uri, entry);
32
+ }
33
+ return entry;
34
+ };
35
+ for (const hit of featureHits) {
36
+ getOrDefault(hit.uri).feature = true;
37
+ }
38
+ for (const hit of backgroundHits) {
39
+ getOrDefault(hit.uri).background.add(hit.id);
40
+ }
41
+ for (const hit of ruleHits) {
42
+ getOrDefault(hit.uri).rule.add(hit.id);
43
+ }
44
+ for (const hit of scenarioHits) {
45
+ getOrDefault(hit.uri).scenario.add(hit.id);
46
+ }
47
+ for (const hit of stepHits) {
48
+ getOrDefault(hit.uri).step.add(hit.id);
49
+ }
50
+ return map;
51
+ }
52
+ async add(gherkinDocument) {
53
+ const uri = gherkinDocument.uri;
54
+ if (!uri) {
55
+ return;
56
+ }
57
+ const promises = walkGherkinDocument(gherkinDocument, [], {
58
+ feature: (_feature, acc) => [...acc, this.featureSearch.add(gherkinDocument, uri)],
59
+ background: (background, acc) => [...acc, this.backgroundSearch.add(background, uri)],
60
+ rule: (rule, acc) => [...acc, this.ruleSearch.add(rule, uri)],
61
+ scenario: (scenario, acc) => [...acc, this.scenarioSearch.add(scenario, uri)],
62
+ step: (step, acc) => [...acc, this.stepSearch.add(step, uri)],
63
+ });
64
+ await Promise.all(promises);
65
+ }
66
+ }
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGV4dFNlYXJjaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZWFyY2gvVGV4dFNlYXJjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUU3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDbEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFDNUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBUzVDLE1BQU0sT0FBTyxVQUFVO0lBQ0osYUFBYSxHQUFHLElBQUksYUFBYSxFQUFFLENBQUE7SUFDbkMsZ0JBQWdCLEdBQUcsSUFBSSxrQkFBa0IsRUFBYyxDQUFBO0lBQ3ZELFVBQVUsR0FBRyxJQUFJLGtCQUFrQixFQUFRLENBQUE7SUFDM0MsY0FBYyxHQUFHLElBQUksa0JBQWtCLEVBQVksQ0FBQTtJQUNuRCxVQUFVLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQTtJQUV2QyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQWE7UUFDL0IsTUFBTSxDQUFDLFdBQVcsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxRQUFRLENBQUMsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUM7WUFDeEYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1lBQ25DLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztZQUM3QixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7WUFDakMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1NBQzlCLENBQUMsQ0FBQTtRQUNGLHlEQUF5RDtRQUN6RCxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBcUMsQ0FBQTtRQUN4RCxNQUFNLFlBQVksR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFO1lBQ25DLElBQUksS0FBSyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDeEIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNYLEtBQUssR0FBRztvQkFDTixPQUFPLEVBQUUsS0FBSztvQkFDZCxVQUFVLEVBQUUsSUFBSSxHQUFHLEVBQUU7b0JBQ3JCLElBQUksRUFBRSxJQUFJLEdBQUcsRUFBRTtvQkFDZixRQUFRLEVBQUUsSUFBSSxHQUFHLEVBQUU7b0JBQ25CLElBQUksRUFBRSxJQUFJLEdBQUcsRUFBRTtpQkFDaEIsQ0FBQTtnQkFDRCxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQTtZQUNyQixDQUFDO1lBQ0QsT0FBTyxLQUFLLENBQUE7UUFDZCxDQUFDLENBQUE7UUFDRCxLQUFLLE1BQU0sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQzlCLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQTtRQUN0QyxDQUFDO1FBQ0QsS0FBSyxNQUFNLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUNqQyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQzlDLENBQUM7UUFDRCxLQUFLLE1BQU0sR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQzNCLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDeEMsQ0FBQztRQUNELEtBQUssTUFBTSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7WUFDL0IsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUM1QyxDQUFDO1FBQ0QsS0FBSyxNQUFNLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUMzQixZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQ3hDLENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQTtJQUNaLENBQUM7SUFFTSxLQUFLLENBQUMsR0FBRyxDQUFDLGVBQWdDO1FBQy9DLE1BQU0sR0FBRyxHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUE7UUFDL0IsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1QsT0FBTTtRQUNSLENBQUM7UUFDRCxNQUFNLFFBQVEsR0FBRyxtQkFBbUIsQ0FBMEIsZUFBZSxFQUFFLEVBQUUsRUFBRTtZQUNqRixPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNsRixVQUFVLEVBQUUsQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3JGLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzdELFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzdFLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQzlELENBQUMsQ0FBQTtRQUNGLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUM3QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB3YWxrR2hlcmtpbkRvY3VtZW50IH0gZnJvbSAnQGN1Y3VtYmVyL2doZXJraW4tdXRpbHMnXG5pbXBvcnQgdHlwZSB7IEJhY2tncm91bmQsIEdoZXJraW5Eb2N1bWVudCwgUnVsZSwgU2NlbmFyaW8gfSBmcm9tICdAY3VjdW1iZXIvbWVzc2FnZXMnXG5pbXBvcnQgeyBGZWF0dXJlU2VhcmNoIH0gZnJvbSAnLi9GZWF0dXJlU2VhcmNoLmpzJ1xuaW1wb3J0IHsgU2NlbmFyaW9MaWtlU2VhcmNoIH0gZnJvbSAnLi9TY2VuYXJpb0xpa2VTZWFyY2guanMnXG5pbXBvcnQgeyBTdGVwU2VhcmNoIH0gZnJvbSAnLi9TdGVwU2VhcmNoLmpzJ1xuaW1wb3J0IHR5cGUgeyBEb2N1bWVudFNlYXJjaEhpdHMsIFNlYXJjaEhpdHMsIFNlYXJjaEluZGV4IH0gZnJvbSAnLi90eXBlcy5qcydcblxudHlwZSBNdXRhYmxlRG9jdW1lbnRTZWFyY2hIaXRzID0ge1xuICBbS2V5IGluIGtleW9mIERvY3VtZW50U2VhcmNoSGl0c106IERvY3VtZW50U2VhcmNoSGl0c1tLZXldIGV4dGVuZHMgUmVhZG9ubHlTZXQ8aW5mZXIgSXRlbT5cbiAgICA/IFNldDxJdGVtPlxuICAgIDogRG9jdW1lbnRTZWFyY2hIaXRzW0tleV1cbn1cblxuZXhwb3J0IGNsYXNzIFRleHRTZWFyY2ggaW1wbGVtZW50cyBTZWFyY2hJbmRleCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZmVhdHVyZVNlYXJjaCA9IG5ldyBGZWF0dXJlU2VhcmNoKClcbiAgcHJpdmF0ZSByZWFkb25seSBiYWNrZ3JvdW5kU2VhcmNoID0gbmV3IFNjZW5hcmlvTGlrZVNlYXJjaDxCYWNrZ3JvdW5kPigpXG4gIHByaXZhdGUgcmVhZG9ubHkgcnVsZVNlYXJjaCA9IG5ldyBTY2VuYXJpb0xpa2VTZWFyY2g8UnVsZT4oKVxuICBwcml2YXRlIHJlYWRvbmx5IHNjZW5hcmlvU2VhcmNoID0gbmV3IFNjZW5hcmlvTGlrZVNlYXJjaDxTY2VuYXJpbz4oKVxuICBwcml2YXRlIHJlYWRvbmx5IHN0ZXBTZWFyY2ggPSBuZXcgU3RlcFNlYXJjaCgpXG5cbiAgcHVibGljIGFzeW5jIHNlYXJjaChxdWVyeTogc3RyaW5nKTogUHJvbWlzZTxTZWFyY2hIaXRzPiB7XG4gICAgY29uc3QgW2ZlYXR1cmVIaXRzLCBiYWNrZ3JvdW5kSGl0cywgcnVsZUhpdHMsIHNjZW5hcmlvSGl0cywgc3RlcEhpdHNdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgdGhpcy5mZWF0dXJlU2VhcmNoLnNlYXJjaChxdWVyeSksXG4gICAgICB0aGlzLmJhY2tncm91bmRTZWFyY2guc2VhcmNoKHF1ZXJ5KSxcbiAgICAgIHRoaXMucnVsZVNlYXJjaC5zZWFyY2gocXVlcnkpLFxuICAgICAgdGhpcy5zY2VuYXJpb1NlYXJjaC5zZWFyY2gocXVlcnkpLFxuICAgICAgdGhpcy5zdGVwU2VhcmNoLnNlYXJjaChxdWVyeSksXG4gICAgXSlcbiAgICAvLyBhbiBlbXB0eSBtYXAgaXMgYSB2YWxpZCByZXN1bHQgbWVhbmluZyBub3RoaW5nIG1hdGNoZWRcbiAgICBjb25zdCBtYXAgPSBuZXcgTWFwPHN0cmluZywgTXV0YWJsZURvY3VtZW50U2VhcmNoSGl0cz4oKVxuICAgIGNvbnN0IGdldE9yRGVmYXVsdCA9ICh1cmk6IHN0cmluZykgPT4ge1xuICAgICAgbGV0IGVudHJ5ID0gbWFwLmdldCh1cmkpXG4gICAgICBpZiAoIWVudHJ5KSB7XG4gICAgICAgIGVudHJ5ID0ge1xuICAgICAgICAgIGZlYXR1cmU6IGZhbHNlLFxuICAgICAgICAgIGJhY2tncm91bmQ6IG5ldyBTZXQoKSxcbiAgICAgICAgICBydWxlOiBuZXcgU2V0KCksXG4gICAgICAgICAgc2NlbmFyaW86IG5ldyBTZXQoKSxcbiAgICAgICAgICBzdGVwOiBuZXcgU2V0KCksXG4gICAgICAgIH1cbiAgICAgICAgbWFwLnNldCh1cmksIGVudHJ5KVxuICAgICAgfVxuICAgICAgcmV0dXJuIGVudHJ5XG4gICAgfVxuICAgIGZvciAoY29uc3QgaGl0IG9mIGZlYXR1cmVIaXRzKSB7XG4gICAgICBnZXRPckRlZmF1bHQoaGl0LnVyaSkuZmVhdHVyZSA9IHRydWVcbiAgICB9XG4gICAgZm9yIChjb25zdCBoaXQgb2YgYmFja2dyb3VuZEhpdHMpIHtcbiAgICAgIGdldE9yRGVmYXVsdChoaXQudXJpKS5iYWNrZ3JvdW5kLmFkZChoaXQuaWQpXG4gICAgfVxuICAgIGZvciAoY29uc3QgaGl0IG9mIHJ1bGVIaXRzKSB7XG4gICAgICBnZXRPckRlZmF1bHQoaGl0LnVyaSkucnVsZS5hZGQoaGl0LmlkKVxuICAgIH1cbiAgICBmb3IgKGNvbnN0IGhpdCBvZiBzY2VuYXJpb0hpdHMpIHtcbiAgICAgIGdldE9yRGVmYXVsdChoaXQudXJpKS5zY2VuYXJpby5hZGQoaGl0LmlkKVxuICAgIH1cbiAgICBmb3IgKGNvbnN0IGhpdCBvZiBzdGVwSGl0cykge1xuICAgICAgZ2V0T3JEZWZhdWx0KGhpdC51cmkpLnN0ZXAuYWRkKGhpdC5pZClcbiAgICB9XG4gICAgcmV0dXJuIG1hcFxuICB9XG5cbiAgcHVibGljIGFzeW5jIGFkZChnaGVya2luRG9jdW1lbnQ6IEdoZXJraW5Eb2N1bWVudCkge1xuICAgIGNvbnN0IHVyaSA9IGdoZXJraW5Eb2N1bWVudC51cmlcbiAgICBpZiAoIXVyaSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNvbnN0IHByb21pc2VzID0gd2Fsa0doZXJraW5Eb2N1bWVudDxBcnJheTxQcm9taXNlPHVua25vd24+Pj4oZ2hlcmtpbkRvY3VtZW50LCBbXSwge1xuICAgICAgZmVhdHVyZTogKF9mZWF0dXJlLCBhY2MpID0+IFsuLi5hY2MsIHRoaXMuZmVhdHVyZVNlYXJjaC5hZGQoZ2hlcmtpbkRvY3VtZW50LCB1cmkpXSxcbiAgICAgIGJhY2tncm91bmQ6IChiYWNrZ3JvdW5kLCBhY2MpID0+IFsuLi5hY2MsIHRoaXMuYmFja2dyb3VuZFNlYXJjaC5hZGQoYmFja2dyb3VuZCwgdXJpKV0sXG4gICAgICBydWxlOiAocnVsZSwgYWNjKSA9PiBbLi4uYWNjLCB0aGlzLnJ1bGVTZWFyY2guYWRkKHJ1bGUsIHVyaSldLFxuICAgICAgc2NlbmFyaW86IChzY2VuYXJpbywgYWNjKSA9PiBbLi4uYWNjLCB0aGlzLnNjZW5hcmlvU2VhcmNoLmFkZChzY2VuYXJpbywgdXJpKV0sXG4gICAgICBzdGVwOiAoc3RlcCwgYWNjKSA9PiBbLi4uYWNjLCB0aGlzLnN0ZXBTZWFyY2guYWRkKHN0ZXAsIHVyaSldLFxuICAgIH0pXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpXG4gIH1cbn1cbiJdfQ==
@@ -4,4 +4,3 @@ import type { SearchIndex } from './types.js';
4
4
  * Creates a search index that supports querying by term
5
5
  */
6
6
  export declare function createSearchIndex(gherkinDocuments: ReadonlyArray<GherkinDocument>): Promise<SearchIndex>;
7
- //# sourceMappingURL=createSearchIndex.d.ts.map
@@ -0,0 +1,10 @@
1
+ import { TextSearch } from './TextSearch.js';
2
+ /**
3
+ * Creates a search index that supports querying by term
4
+ */
5
+ export async function createSearchIndex(gherkinDocuments) {
6
+ const textSearch = new TextSearch();
7
+ await Promise.all(gherkinDocuments.map((gherkinDocument) => textSearch.add(gherkinDocument)));
8
+ return textSearch;
9
+ }
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlU2VhcmNoSW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VhcmNoL2NyZWF0ZVNlYXJjaEluZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUc1Qzs7R0FFRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsaUJBQWlCLENBQ3JDLGdCQUFnRDtJQUVoRCxNQUFNLFVBQVUsR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFBO0lBQ25DLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzdGLE9BQU8sVUFBVSxDQUFBO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEdoZXJraW5Eb2N1bWVudCB9IGZyb20gJ0BjdWN1bWJlci9tZXNzYWdlcydcblxuaW1wb3J0IHsgVGV4dFNlYXJjaCB9IGZyb20gJy4vVGV4dFNlYXJjaC5qcydcbmltcG9ydCB0eXBlIHsgU2VhcmNoSW5kZXggfSBmcm9tICcuL3R5cGVzLmpzJ1xuXG4vKipcbiAqIENyZWF0ZXMgYSBzZWFyY2ggaW5kZXggdGhhdCBzdXBwb3J0cyBxdWVyeWluZyBieSB0ZXJtXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVTZWFyY2hJbmRleChcbiAgZ2hlcmtpbkRvY3VtZW50czogUmVhZG9ubHlBcnJheTxHaGVya2luRG9jdW1lbnQ+XG4pOiBQcm9taXNlPFNlYXJjaEluZGV4PiB7XG4gIGNvbnN0IHRleHRTZWFyY2ggPSBuZXcgVGV4dFNlYXJjaCgpXG4gIGF3YWl0IFByb21pc2UuYWxsKGdoZXJraW5Eb2N1bWVudHMubWFwKChnaGVya2luRG9jdW1lbnQpID0+IHRleHRTZWFyY2guYWRkKGdoZXJraW5Eb2N1bWVudCkpKVxuICByZXR1cm4gdGV4dFNlYXJjaFxufVxuIl19
@@ -5,4 +5,3 @@ export declare function deriveLineageConstraints(items: ReadonlyArray<{
5
5
  pickle: Pickle;
6
6
  lineage: Lineage;
7
7
  }>): LineageConstraints;
8
- //# sourceMappingURL=deriveLineageConstraints.d.ts.map
@@ -0,0 +1,38 @@
1
+ export function deriveLineageConstraints(items) {
2
+ const gherkinDocument = new Set();
3
+ const background = new Set();
4
+ const rule = new Set();
5
+ const scenario = new Set();
6
+ const examples = new Set();
7
+ const example = new Set();
8
+ for (const { pickle, lineage } of items) {
9
+ gherkinDocument.add(pickle.uri);
10
+ if (lineage.background) {
11
+ background.add(lineage.background.id);
12
+ }
13
+ if (lineage.ruleBackground) {
14
+ background.add(lineage.ruleBackground.id);
15
+ }
16
+ if (lineage.rule) {
17
+ rule.add(lineage.rule.id);
18
+ }
19
+ if (lineage.scenario) {
20
+ scenario.add(lineage.scenario.id);
21
+ }
22
+ if (lineage.examples) {
23
+ examples.add(lineage.examples.id);
24
+ }
25
+ if (lineage.example) {
26
+ example.add(lineage.example.id);
27
+ }
28
+ }
29
+ return {
30
+ gherkinDocument,
31
+ background,
32
+ rule,
33
+ scenario,
34
+ examples,
35
+ example,
36
+ };
37
+ }
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVyaXZlTGluZWFnZUNvbnN0cmFpbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlYXJjaC9kZXJpdmVMaW5lYWdlQ29uc3RyYWludHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxVQUFVLHdCQUF3QixDQUN0QyxLQUEwRDtJQUUxRCxNQUFNLGVBQWUsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFBO0lBQ3pDLE1BQU0sVUFBVSxHQUFHLElBQUksR0FBRyxFQUFVLENBQUE7SUFDcEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQTtJQUM5QixNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFBO0lBQ2xDLE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxFQUFVLENBQUE7SUFDbEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQTtJQUNqQyxLQUFLLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksS0FBSyxFQUFFLENBQUM7UUFDeEMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDL0IsSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDdkIsVUFBVSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQ3ZDLENBQUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUMzQixVQUFVLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDM0MsQ0FBQztRQUNELElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUMzQixDQUFDO1FBQ0QsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDckIsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQ25DLENBQUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNyQixRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDbkMsQ0FBQztRQUNELElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3BCLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUNqQyxDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU87UUFDTCxlQUFlO1FBQ2YsVUFBVTtRQUNWLElBQUk7UUFDSixRQUFRO1FBQ1IsUUFBUTtRQUNSLE9BQU87S0FDUixDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUGlja2xlIH0gZnJvbSAnQGN1Y3VtYmVyL21lc3NhZ2VzJ1xuaW1wb3J0IHR5cGUgeyBMaW5lYWdlIH0gZnJvbSAnQGN1Y3VtYmVyL3F1ZXJ5J1xuaW1wb3J0IHR5cGUgeyBMaW5lYWdlQ29uc3RyYWludHMgfSBmcm9tICcuL3R5cGVzLmpzJ1xuXG5leHBvcnQgZnVuY3Rpb24gZGVyaXZlTGluZWFnZUNvbnN0cmFpbnRzKFxuICBpdGVtczogUmVhZG9ubHlBcnJheTx7IHBpY2tsZTogUGlja2xlOyBsaW5lYWdlOiBMaW5lYWdlIH0+XG4pOiBMaW5lYWdlQ29uc3RyYWludHMge1xuICBjb25zdCBnaGVya2luRG9jdW1lbnQgPSBuZXcgU2V0PHN0cmluZz4oKVxuICBjb25zdCBiYWNrZ3JvdW5kID0gbmV3IFNldDxzdHJpbmc+KClcbiAgY29uc3QgcnVsZSA9IG5ldyBTZXQ8c3RyaW5nPigpXG4gIGNvbnN0IHNjZW5hcmlvID0gbmV3IFNldDxzdHJpbmc+KClcbiAgY29uc3QgZXhhbXBsZXMgPSBuZXcgU2V0PHN0cmluZz4oKVxuICBjb25zdCBleGFtcGxlID0gbmV3IFNldDxzdHJpbmc+KClcbiAgZm9yIChjb25zdCB7IHBpY2tsZSwgbGluZWFnZSB9IG9mIGl0ZW1zKSB7XG4gICAgZ2hlcmtpbkRvY3VtZW50LmFkZChwaWNrbGUudXJpKVxuICAgIGlmIChsaW5lYWdlLmJhY2tncm91bmQpIHtcbiAgICAgIGJhY2tncm91bmQuYWRkKGxpbmVhZ2UuYmFja2dyb3VuZC5pZClcbiAgICB9XG4gICAgaWYgKGxpbmVhZ2UucnVsZUJhY2tncm91bmQpIHtcbiAgICAgIGJhY2tncm91bmQuYWRkKGxpbmVhZ2UucnVsZUJhY2tncm91bmQuaWQpXG4gICAgfVxuICAgIGlmIChsaW5lYWdlLnJ1bGUpIHtcbiAgICAgIHJ1bGUuYWRkKGxpbmVhZ2UucnVsZS5pZClcbiAgICB9XG4gICAgaWYgKGxpbmVhZ2Uuc2NlbmFyaW8pIHtcbiAgICAgIHNjZW5hcmlvLmFkZChsaW5lYWdlLnNjZW5hcmlvLmlkKVxuICAgIH1cbiAgICBpZiAobGluZWFnZS5leGFtcGxlcykge1xuICAgICAgZXhhbXBsZXMuYWRkKGxpbmVhZ2UuZXhhbXBsZXMuaWQpXG4gICAgfVxuICAgIGlmIChsaW5lYWdlLmV4YW1wbGUpIHtcbiAgICAgIGV4YW1wbGUuYWRkKGxpbmVhZ2UuZXhhbXBsZS5pZClcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBnaGVya2luRG9jdW1lbnQsXG4gICAgYmFja2dyb3VuZCxcbiAgICBydWxlLFxuICAgIHNjZW5hcmlvLFxuICAgIGV4YW1wbGVzLFxuICAgIGV4YW1wbGUsXG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,20 @@
1
+ import { type Pickle, type TestCaseFinished, type TestCaseStarted, type TestStepResultStatus } from '@cucumber/messages';
2
+ import type { Query as CucumberQuery, Lineage } from '@cucumber/query';
3
+ import type { Node as TagExpression } from '@cucumber/tag-expressions';
4
+ export interface ExpandedTestCase<T extends TestCaseStarted | TestCaseFinished> {
5
+ testCaseEvent: T;
6
+ pickle: Pickle;
7
+ lineage: Lineage;
8
+ }
9
+ export interface FilterCriteria {
10
+ hideStatuses: ReadonlyArray<TestStepResultStatus>;
11
+ tagExpression?: TagExpression;
12
+ }
13
+ /**
14
+ * Filters test cases by status and/or tag expression, expanding each survivor with its pickle and
15
+ * lineage.
16
+ *
17
+ * Works for either `TestCaseStarted` or `TestCaseFinished` - the element type flows through to the
18
+ * `testCaseEvent` of each returned item.
19
+ */
20
+ export declare function filterAndExpandTestCaseEvents<T extends TestCaseStarted | TestCaseFinished>(cucumberQuery: CucumberQuery, testCaseEvents: ReadonlyArray<T>, { hideStatuses, tagExpression }: FilterCriteria): Array<ExpandedTestCase<T>>;