@cucumber/react-components 24.2.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.
- package/LICENSE +1 -1
- package/README.md +2 -2
- package/dist/CucumberQueryContext.d.ts +3 -0
- package/dist/CucumberQueryContext.js +4 -0
- package/dist/GherkinQueryContext.d.ts +3 -0
- package/dist/GherkinQueryContext.js +4 -0
- package/dist/SearchContext.d.ts +18 -0
- package/dist/SearchContext.js +10 -0
- package/dist/ciCommitLink.d.ts +2 -0
- package/dist/ciCommitLink.js +12 -0
- package/dist/components/app/CICommitLink.d.ts +5 -0
- package/dist/components/app/CICommitLink.js +16 -0
- package/dist/components/app/CIJobLink.d.ts +5 -0
- package/dist/components/app/CIJobLink.js +10 -0
- package/dist/{src/components → components}/app/ControlledSearchProvider.d.ts +2 -3
- package/dist/components/app/ControlledSearchProvider.js +39 -0
- package/dist/components/app/CopyButton.d.ts +5 -0
- package/dist/components/app/CopyButton.js +23 -0
- package/dist/{src/components → components}/app/DocumentAccordion.d.ts +3 -4
- package/dist/components/app/DocumentAccordion.js +22 -0
- package/dist/{src/components → components}/app/DocumentAccordion.module.scss +15 -7
- package/dist/components/app/EnvelopesProvider.d.ts +7 -0
- package/dist/components/app/EnvelopesProvider.js +18 -0
- package/dist/components/app/ExecutionSummary.d.ts +2 -0
- package/dist/components/app/ExecutionSummary.js +38 -0
- package/dist/components/app/FilteredDocuments.d.ts +2 -0
- package/dist/components/app/FilteredDocuments.js +15 -0
- package/dist/components/app/GherkinDocumentList.d.ts +8 -0
- package/dist/components/app/GherkinDocumentList.js +23 -0
- package/dist/{src/components → components}/app/Header.d.ts +1 -2
- package/dist/components/app/Header.js +12 -0
- package/dist/components/app/HealthChart.d.ts +2 -0
- package/dist/components/app/HealthChart.js +14 -0
- package/dist/components/app/HighLight.d.ts +8 -0
- package/dist/components/app/HighLight.js +38 -0
- package/dist/components/app/ImplementationIcon.d.ts +5 -0
- package/dist/components/app/ImplementationIcon.js +10 -0
- package/dist/{src/components → components}/app/InMemorySearchProvider.d.ts +2 -3
- package/dist/components/app/InMemorySearchProvider.js +11 -0
- package/dist/components/app/NavigationButton.d.ts +2 -0
- package/dist/components/app/NavigationButton.js +6 -0
- package/dist/components/app/OSIcon.d.ts +5 -0
- package/dist/components/app/OSIcon.js +18 -0
- package/dist/components/app/QueriesProvider.d.ts +9 -0
- package/dist/components/app/QueriesProvider.js +7 -0
- package/dist/components/app/Report.d.ts +2 -0
- package/dist/components/app/Report.js +10 -0
- package/dist/components/app/RuntimeIcon.d.ts +5 -0
- package/dist/components/app/RuntimeIcon.js +18 -0
- package/dist/components/app/SearchBar.d.ts +2 -0
- package/dist/components/app/SearchBar.js +33 -0
- package/dist/components/app/StatusesSummary.d.ts +2 -0
- package/dist/components/app/StatusesSummary.js +16 -0
- package/dist/components/app/TestRunHooks.d.ts +2 -0
- package/dist/components/app/TestRunHooks.js +14 -0
- package/dist/{src/components → components}/app/UrlSearchProvider.d.ts +1 -2
- package/dist/components/app/UrlSearchProvider.js +29 -0
- package/dist/{src/components → components}/app/findMostSevereTestStepResultStatus.d.ts +0 -1
- package/dist/components/app/findMostSevereTestStepResultStatus.js +17 -0
- package/dist/components/app/icons/CucumberLogo.d.ts +2 -0
- package/dist/components/app/icons/CucumberLogo.js +5 -0
- package/dist/components/app/icons/Jvm.d.ts +2 -0
- package/dist/components/app/icons/Jvm.js +5 -0
- package/dist/components/app/icons/Linux.d.ts +2 -0
- package/dist/components/app/icons/Linux.js +5 -0
- package/dist/components/app/icons/MacOS.d.ts +2 -0
- package/dist/components/app/icons/MacOS.js +5 -0
- package/dist/components/app/icons/NodeJs.d.ts +2 -0
- package/dist/components/app/icons/NodeJs.js +5 -0
- package/dist/components/app/icons/Ruby.d.ts +2 -0
- package/dist/components/app/icons/Ruby.js +5 -0
- package/dist/components/app/icons/Windows.d.ts +2 -0
- package/dist/components/app/icons/Windows.js +5 -0
- package/dist/{src/components/app/index.js → components/app/index.d.ts} +0 -1
- package/dist/components/app/index.js +15 -0
- package/dist/components/app/makeSetupString.d.ts +2 -0
- package/dist/components/app/makeSetupString.js +21 -0
- package/dist/components/app/markdownComponents.d.ts +8 -0
- package/dist/components/app/markdownComponents.js +6 -0
- package/dist/components/app/rehypePlugins.d.ts +3 -0
- package/dist/components/app/rehypePlugins.js +9 -0
- package/dist/components/app/remarkPlugins.d.ts +3 -0
- package/dist/components/app/remarkPlugins.js +4 -0
- package/dist/{src/components → components}/customise/CustomRendering.d.ts +18 -19
- package/dist/components/customise/CustomRendering.js +35 -0
- package/dist/components/customise/CustomRendering.stories.scss +8 -0
- package/dist/{src/components/customise/index.js → components/customise/index.d.ts} +0 -1
- package/dist/components/customise/index.js +3 -0
- package/dist/{src/components → components}/customise/theming.d.ts +0 -1
- package/dist/components/customise/theming.js +2 -0
- package/dist/components/gherkin/Anchor.d.ts +3 -0
- package/dist/components/gherkin/Anchor.js +13 -0
- package/dist/components/gherkin/Background.d.ts +3 -0
- package/dist/components/gherkin/Background.js +18 -0
- package/dist/components/gherkin/Children.d.ts +3 -0
- package/dist/components/gherkin/Children.js +11 -0
- package/dist/components/gherkin/DataTable.d.ts +3 -0
- package/dist/components/gherkin/DataTable.js +16 -0
- package/dist/components/gherkin/Description.d.ts +3 -0
- package/dist/components/gherkin/Description.js +15 -0
- package/dist/components/gherkin/DocString.d.ts +3 -0
- package/dist/components/gherkin/DocString.js +12 -0
- package/dist/components/gherkin/ErrorMessage.d.ts +3 -0
- package/dist/components/gherkin/ErrorMessage.js +13 -0
- package/dist/components/gherkin/ErrorMessage.module.scss +24 -0
- package/dist/components/gherkin/Examples.d.ts +3 -0
- package/dist/components/gherkin/Examples.js +31 -0
- package/dist/components/gherkin/Feature.d.ts +3 -0
- package/dist/components/gherkin/Feature.js +30 -0
- package/dist/components/gherkin/GherkinDocument.d.ts +3 -0
- package/dist/components/gherkin/GherkinDocument.js +11 -0
- package/dist/components/gherkin/Keyword.d.ts +3 -0
- package/dist/components/gherkin/Keyword.js +11 -0
- package/dist/{src/components → components}/gherkin/Keyword.module.scss +0 -1
- package/dist/components/gherkin/Parameter.d.ts +3 -0
- package/dist/components/gherkin/Parameter.js +11 -0
- package/dist/components/gherkin/Rule.d.ts +3 -0
- package/dist/components/gherkin/Rule.js +26 -0
- package/dist/components/gherkin/Scenario.d.ts +3 -0
- package/dist/components/gherkin/Scenario.js +22 -0
- package/dist/components/gherkin/StatusIcon.d.ts +3 -0
- package/dist/components/gherkin/StatusIcon.js +24 -0
- package/dist/components/gherkin/StepsList.d.ts +4 -0
- package/dist/components/gherkin/StepsList.js +6 -0
- package/dist/components/gherkin/Tags.d.ts +3 -0
- package/dist/components/gherkin/Tags.js +15 -0
- package/dist/components/gherkin/Title.d.ts +3 -0
- package/dist/components/gherkin/Title.js +12 -0
- package/dist/components/gherkin/attachment/Attachment.d.ts +3 -0
- package/dist/components/gherkin/attachment/Attachment.js +45 -0
- package/dist/{src/components → components}/gherkin/attachment/Attachment.module.scss +15 -5
- package/dist/components/gherkin/attachment/Image.d.ts +7 -0
- package/dist/components/gherkin/attachment/Image.js +16 -0
- package/dist/components/gherkin/attachment/Links.d.ts +7 -0
- package/dist/components/gherkin/attachment/Links.js +14 -0
- package/dist/components/gherkin/attachment/Log.d.ts +7 -0
- package/dist/components/gherkin/attachment/Log.js +12 -0
- package/dist/components/gherkin/attachment/Text.d.ts +8 -0
- package/dist/components/gherkin/attachment/Text.js +16 -0
- package/dist/components/gherkin/attachment/Unknown.d.ts +3 -0
- package/dist/components/gherkin/attachment/Unknown.js +61 -0
- package/dist/components/gherkin/attachment/Video.d.ts +5 -0
- package/dist/components/gherkin/attachment/Video.js +16 -0
- package/dist/components/gherkin/attachment/attachmentFilename.d.ts +2 -0
- package/dist/components/gherkin/attachment/attachmentFilename.js +12 -0
- package/dist/components/gherkin/attachment/base64Decode.d.ts +9 -0
- package/dist/components/gherkin/attachment/base64Decode.js +19 -0
- package/dist/{src/components/gherkin/attachment/index.js → components/gherkin/attachment/index.d.ts} +0 -1
- package/dist/components/gherkin/attachment/index.js +2 -0
- package/dist/{src/components → components}/gherkin/attachment/useText.d.ts +1 -2
- package/dist/components/gherkin/attachment/useText.js +28 -0
- package/dist/components/gherkin/composeHookStepTitle.d.ts +2 -0
- package/dist/components/gherkin/composeHookStepTitle.js +23 -0
- package/dist/{src/components → components}/gherkin/composePickleStepTitle.d.ts +1 -2
- package/dist/components/gherkin/composePickleStepTitle.js +36 -0
- package/dist/{src/components/gherkin/index.js → components/gherkin/index.d.ts} +0 -1
- package/dist/components/gherkin/index.js +19 -0
- package/dist/{src/components → components}/gherkin/isNumber.d.ts +0 -1
- package/dist/components/gherkin/isNumber.js +7 -0
- package/dist/components/gherkin/statusName.d.ts +3 -0
- package/dist/components/gherkin/statusName.js +4 -0
- package/dist/{src/components/index.js → components/index.d.ts} +0 -1
- package/dist/components/index.js +4 -0
- package/dist/components/results/AmbiguousResult.d.ts +7 -0
- package/dist/components/results/AmbiguousResult.js +11 -0
- package/dist/components/results/AmbiguousResult.module.scss +22 -0
- package/dist/components/results/FailedResult.d.ts +7 -0
- package/dist/components/results/FailedResult.js +15 -0
- package/dist/components/results/PendingResult.d.ts +7 -0
- package/dist/components/results/PendingResult.js +12 -0
- package/dist/components/results/ResultNote.d.ts +2 -0
- package/dist/components/results/ResultNote.js +6 -0
- package/dist/components/results/ResultNote.module.scss +6 -0
- package/dist/components/results/SkippedResult.d.ts +7 -0
- package/dist/components/results/SkippedResult.js +12 -0
- package/dist/components/results/SourceReference.d.ts +7 -0
- package/dist/components/results/SourceReference.js +13 -0
- package/dist/components/results/SourceReference.module.scss +10 -0
- package/dist/components/results/TestCaseOutcome.d.ts +7 -0
- package/dist/components/results/TestCaseOutcome.js +32 -0
- package/dist/{src/components → components}/results/TestRunHookOutcome.d.ts +2 -3
- package/dist/components/results/TestRunHookOutcome.js +11 -0
- package/dist/components/results/TestStepAttachments.d.ts +7 -0
- package/dist/components/results/TestStepAttachments.js +12 -0
- package/dist/components/results/TestStepDuration.d.ts +5 -0
- package/dist/components/results/TestStepDuration.js +19 -0
- package/dist/{src/components → components}/results/TestStepOutcome.d.ts +2 -3
- package/dist/components/results/TestStepOutcome.js +45 -0
- package/dist/{src/components → components}/results/TestStepOutcome.module.scss +1 -1
- package/dist/components/results/UndefinedResult.d.ts +7 -0
- package/dist/components/results/UndefinedResult.js +18 -0
- package/dist/{src/components/gherkin/ErrorMessage.module.scss → components/results/UndefinedResult.module.scss} +5 -3
- package/dist/components/results/index.d.ts +2 -0
- package/dist/components/results/index.js +3 -0
- package/dist/{src/hooks/helpers.d.ts → ensure.d.ts} +0 -1
- package/dist/ensure.js +7 -0
- package/dist/{src/formatExecutionDistance.d.ts → formatExecutionDistance.d.ts} +0 -1
- package/dist/formatExecutionDistance.js +7 -0
- package/dist/{src/formatExecutionDuration.d.ts → formatExecutionDuration.d.ts} +0 -1
- package/dist/formatExecutionDuration.js +12 -0
- package/dist/{src/formatPassedQuantity.d.ts → formatPassedQuantity.d.ts} +0 -1
- package/dist/formatPassedQuantity.js +4 -0
- package/dist/{src/formatStatusRate.d.ts → formatStatusRate.d.ts} +0 -1
- package/dist/formatStatusRate.js +9 -0
- package/dist/{src/hooks/index.js → hooks/index.d.ts} +0 -1
- package/dist/hooks/index.js +3 -0
- package/dist/hooks/useFilteredDocuments.d.ts +5 -0
- package/dist/hooks/useFilteredDocuments.js +67 -0
- package/dist/hooks/useFilteredTestCases.d.ts +6 -0
- package/dist/hooks/useFilteredTestCases.js +36 -0
- package/dist/{src/hooks → hooks}/useMostSevereStatusByUri.d.ts +0 -1
- package/dist/hooks/useMostSevereStatusByUri.js +25 -0
- package/dist/hooks/useQueries.d.ts +6 -0
- package/dist/hooks/useQueries.js +9 -0
- package/dist/{src/hooks → hooks}/useResultStatistics.d.ts +1 -2
- package/dist/hooks/useResultStatistics.js +24 -0
- package/dist/hooks/useSearch.d.ts +2 -0
- package/dist/hooks/useSearch.js +6 -0
- package/dist/hooks/useSearchResult.d.ts +26 -0
- package/dist/hooks/useSearchResult.js +58 -0
- package/dist/hooks/useTestCaseStarted.d.ts +7 -0
- package/dist/hooks/useTestCaseStarted.js +20 -0
- package/dist/{src/hooks → hooks}/useTestRunHooks.d.ts +1 -2
- package/dist/hooks/useTestRunHooks.js +14 -0
- package/dist/{src/index.js → index.d.ts} +0 -1
- package/dist/index.js +3 -0
- package/dist/{src/isTagExpression.d.ts → isTagExpression.d.ts} +0 -1
- package/dist/isTagExpression.js +5 -0
- package/dist/search/FeatureSearch.d.ts +12 -0
- package/dist/search/FeatureSearch.js +39 -0
- package/dist/search/ScenarioLikeSearch.d.ts +19 -0
- package/dist/search/ScenarioLikeSearch.js +37 -0
- package/dist/search/StepSearch.d.ts +11 -0
- package/dist/search/StepSearch.js +40 -0
- package/dist/search/TextSearch.d.ts +11 -0
- package/dist/search/TextSearch.js +67 -0
- package/dist/search/createSearchIndex.d.ts +6 -0
- package/dist/search/createSearchIndex.js +10 -0
- package/dist/search/deriveLineageConstraints.d.ts +7 -0
- package/dist/search/deriveLineageConstraints.js +38 -0
- package/dist/search/filterAndExpandTestCaseEvents.d.ts +20 -0
- package/dist/search/filterAndExpandTestCaseEvents.js +32 -0
- package/dist/search/index.d.ts +6 -0
- package/dist/search/index.js +7 -0
- package/dist/search/pruneGherkinDocuments.d.ts +23 -0
- package/dist/search/pruneGherkinDocuments.js +179 -0
- package/dist/search/pruneTestCaseEvents.d.ts +16 -0
- package/dist/search/pruneTestCaseEvents.js +41 -0
- package/dist/search/types.d.ts +44 -0
- package/dist/search/types.js +2 -0
- package/dist/{src/statuses.d.ts → statuses.d.ts} +0 -1
- package/dist/statuses.js +12 -0
- package/dist/toRepositoryId.d.ts +1 -0
- package/dist/toRepositoryId.js +12 -0
- package/package.json +65 -75
- package/dist/src/CucumberQueryContext.d.ts +0 -5
- package/dist/src/CucumberQueryContext.d.ts.map +0 -1
- package/dist/src/CucumberQueryContext.js +0 -4
- package/dist/src/CucumberQueryContext.js.map +0 -1
- package/dist/src/GherkinQueryContext.d.ts +0 -5
- package/dist/src/GherkinQueryContext.d.ts.map +0 -1
- package/dist/src/GherkinQueryContext.js +0 -4
- package/dist/src/GherkinQueryContext.js.map +0 -1
- package/dist/src/SearchContext.d.ts +0 -13
- package/dist/src/SearchContext.d.ts.map +0 -1
- package/dist/src/SearchContext.js +0 -8
- package/dist/src/SearchContext.js.map +0 -1
- package/dist/src/ciCommitLink.d.ts +0 -3
- package/dist/src/ciCommitLink.d.ts.map +0 -1
- package/dist/src/ciCommitLink.js +0 -12
- package/dist/src/ciCommitLink.js.map +0 -1
- package/dist/src/components/app/CICommitLink.d.ts +0 -6
- package/dist/src/components/app/CICommitLink.d.ts.map +0 -1
- package/dist/src/components/app/CICommitLink.js +0 -21
- package/dist/src/components/app/CICommitLink.js.map +0 -1
- package/dist/src/components/app/CIJobLink.d.ts +0 -6
- package/dist/src/components/app/CIJobLink.d.ts.map +0 -1
- package/dist/src/components/app/CIJobLink.js +0 -14
- package/dist/src/components/app/CIJobLink.js.map +0 -1
- package/dist/src/components/app/ControlledSearchProvider.d.ts.map +0 -1
- package/dist/src/components/app/ControlledSearchProvider.js +0 -17
- package/dist/src/components/app/ControlledSearchProvider.js.map +0 -1
- package/dist/src/components/app/CopyButton.d.ts +0 -5
- package/dist/src/components/app/CopyButton.d.ts.map +0 -1
- package/dist/src/components/app/CopyButton.js +0 -23
- package/dist/src/components/app/CopyButton.js.map +0 -1
- package/dist/src/components/app/DocumentAccordion.d.ts.map +0 -1
- package/dist/src/components/app/DocumentAccordion.js +0 -30
- package/dist/src/components/app/DocumentAccordion.js.map +0 -1
- package/dist/src/components/app/EnvelopesProvider.d.ts +0 -8
- package/dist/src/components/app/EnvelopesProvider.d.ts.map +0 -1
- package/dist/src/components/app/EnvelopesProvider.js +0 -17
- package/dist/src/components/app/EnvelopesProvider.js.map +0 -1
- package/dist/src/components/app/ExecutionSummary.d.ts +0 -3
- package/dist/src/components/app/ExecutionSummary.d.ts.map +0 -1
- package/dist/src/components/app/ExecutionSummary.js +0 -84
- package/dist/src/components/app/ExecutionSummary.js.map +0 -1
- package/dist/src/components/app/FilteredDocuments.d.ts +0 -3
- package/dist/src/components/app/FilteredDocuments.d.ts.map +0 -1
- package/dist/src/components/app/FilteredDocuments.js +0 -15
- package/dist/src/components/app/FilteredDocuments.js.map +0 -1
- package/dist/src/components/app/GherkinDocumentList.d.ts +0 -9
- package/dist/src/components/app/GherkinDocumentList.d.ts.map +0 -1
- package/dist/src/components/app/GherkinDocumentList.js +0 -24
- package/dist/src/components/app/GherkinDocumentList.js.map +0 -1
- package/dist/src/components/app/Header.d.ts.map +0 -1
- package/dist/src/components/app/Header.js +0 -12
- package/dist/src/components/app/Header.js.map +0 -1
- package/dist/src/components/app/HealthChart.d.ts +0 -3
- package/dist/src/components/app/HealthChart.d.ts.map +0 -1
- package/dist/src/components/app/HealthChart.js +0 -15
- package/dist/src/components/app/HealthChart.js.map +0 -1
- package/dist/src/components/app/HighLight.d.ts +0 -9
- package/dist/src/components/app/HighLight.d.ts.map +0 -1
- package/dist/src/components/app/HighLight.js +0 -32
- package/dist/src/components/app/HighLight.js.map +0 -1
- package/dist/src/components/app/ImplementationIcon.d.ts +0 -6
- package/dist/src/components/app/ImplementationIcon.d.ts.map +0 -1
- package/dist/src/components/app/ImplementationIcon.js +0 -10
- package/dist/src/components/app/ImplementationIcon.js.map +0 -1
- package/dist/src/components/app/InMemorySearchProvider.d.ts.map +0 -1
- package/dist/src/components/app/InMemorySearchProvider.js +0 -10
- package/dist/src/components/app/InMemorySearchProvider.js.map +0 -1
- package/dist/src/components/app/NavigationButton.d.ts +0 -3
- package/dist/src/components/app/NavigationButton.d.ts.map +0 -1
- package/dist/src/components/app/NavigationButton.js +0 -6
- package/dist/src/components/app/NavigationButton.js.map +0 -1
- package/dist/src/components/app/OSIcon.d.ts +0 -6
- package/dist/src/components/app/OSIcon.d.ts.map +0 -1
- package/dist/src/components/app/OSIcon.js +0 -18
- package/dist/src/components/app/OSIcon.js.map +0 -1
- package/dist/src/components/app/QueriesProvider.d.ts +0 -10
- package/dist/src/components/app/QueriesProvider.d.ts.map +0 -1
- package/dist/src/components/app/QueriesProvider.js +0 -6
- package/dist/src/components/app/QueriesProvider.js.map +0 -1
- package/dist/src/components/app/Report.d.ts +0 -3
- package/dist/src/components/app/Report.d.ts.map +0 -1
- package/dist/src/components/app/Report.js +0 -19
- package/dist/src/components/app/Report.js.map +0 -1
- package/dist/src/components/app/RuntimeIcon.d.ts +0 -6
- package/dist/src/components/app/RuntimeIcon.d.ts.map +0 -1
- package/dist/src/components/app/RuntimeIcon.js +0 -18
- package/dist/src/components/app/RuntimeIcon.js.map +0 -1
- package/dist/src/components/app/SearchBar.d.ts +0 -3
- package/dist/src/components/app/SearchBar.d.ts.map +0 -1
- package/dist/src/components/app/SearchBar.js +0 -48
- package/dist/src/components/app/SearchBar.js.map +0 -1
- package/dist/src/components/app/StatusesSummary.d.ts +0 -3
- package/dist/src/components/app/StatusesSummary.d.ts.map +0 -1
- package/dist/src/components/app/StatusesSummary.js +0 -19
- package/dist/src/components/app/StatusesSummary.js.map +0 -1
- package/dist/src/components/app/TestRunHooks.d.ts +0 -3
- package/dist/src/components/app/TestRunHooks.d.ts.map +0 -1
- package/dist/src/components/app/TestRunHooks.js +0 -14
- package/dist/src/components/app/TestRunHooks.js.map +0 -1
- package/dist/src/components/app/UrlSearchProvider.d.ts.map +0 -1
- package/dist/src/components/app/UrlSearchProvider.js +0 -26
- package/dist/src/components/app/UrlSearchProvider.js.map +0 -1
- package/dist/src/components/app/findMostSevereTestStepResultStatus.d.ts.map +0 -1
- package/dist/src/components/app/findMostSevereTestStepResultStatus.js +0 -17
- package/dist/src/components/app/findMostSevereTestStepResultStatus.js.map +0 -1
- package/dist/src/components/app/icons/CucumberLogo.d.ts +0 -3
- package/dist/src/components/app/icons/CucumberLogo.d.ts.map +0 -1
- package/dist/src/components/app/icons/CucumberLogo.js +0 -9
- package/dist/src/components/app/icons/CucumberLogo.js.map +0 -1
- package/dist/src/components/app/icons/Jvm.d.ts +0 -3
- package/dist/src/components/app/icons/Jvm.d.ts.map +0 -1
- package/dist/src/components/app/icons/Jvm.js +0 -10
- package/dist/src/components/app/icons/Jvm.js.map +0 -1
- package/dist/src/components/app/icons/Linux.d.ts +0 -3
- package/dist/src/components/app/icons/Linux.d.ts.map +0 -1
- package/dist/src/components/app/icons/Linux.js +0 -20
- package/dist/src/components/app/icons/Linux.js.map +0 -1
- package/dist/src/components/app/icons/MacOS.d.ts +0 -3
- package/dist/src/components/app/icons/MacOS.d.ts.map +0 -1
- package/dist/src/components/app/icons/MacOS.js +0 -6
- package/dist/src/components/app/icons/MacOS.js.map +0 -1
- package/dist/src/components/app/icons/NodeJs.d.ts +0 -3
- package/dist/src/components/app/icons/NodeJs.d.ts.map +0 -1
- package/dist/src/components/app/icons/NodeJs.js +0 -8
- package/dist/src/components/app/icons/NodeJs.js.map +0 -1
- package/dist/src/components/app/icons/Ruby.d.ts +0 -3
- package/dist/src/components/app/icons/Ruby.d.ts.map +0 -1
- package/dist/src/components/app/icons/Ruby.js +0 -6
- package/dist/src/components/app/icons/Ruby.js.map +0 -1
- package/dist/src/components/app/icons/Windows.d.ts +0 -3
- package/dist/src/components/app/icons/Windows.d.ts.map +0 -1
- package/dist/src/components/app/icons/Windows.js +0 -6
- package/dist/src/components/app/icons/Windows.js.map +0 -1
- package/dist/src/components/app/index.d.ts +0 -15
- package/dist/src/components/app/index.d.ts.map +0 -1
- package/dist/src/components/app/index.js.map +0 -1
- package/dist/src/components/app/makeSetupString.d.ts +0 -3
- package/dist/src/components/app/makeSetupString.d.ts.map +0 -1
- package/dist/src/components/app/makeSetupString.js +0 -21
- package/dist/src/components/app/makeSetupString.js.map +0 -1
- package/dist/src/components/app/rehypePlugins.d.ts +0 -4
- package/dist/src/components/app/rehypePlugins.d.ts.map +0 -1
- package/dist/src/components/app/rehypePlugins.js +0 -9
- package/dist/src/components/app/rehypePlugins.js.map +0 -1
- package/dist/src/components/app/remarkPlugins.d.ts +0 -4
- package/dist/src/components/app/remarkPlugins.d.ts.map +0 -1
- package/dist/src/components/app/remarkPlugins.js +0 -4
- package/dist/src/components/app/remarkPlugins.js.map +0 -1
- package/dist/src/components/customise/CustomRendering.d.ts.map +0 -1
- package/dist/src/components/customise/CustomRendering.js +0 -34
- package/dist/src/components/customise/CustomRendering.js.map +0 -1
- package/dist/src/components/customise/CustomRendering.stories.scss +0 -25
- package/dist/src/components/customise/index.d.ts +0 -3
- package/dist/src/components/customise/index.d.ts.map +0 -1
- package/dist/src/components/customise/index.js.map +0 -1
- package/dist/src/components/customise/theming.d.ts.map +0 -1
- package/dist/src/components/customise/theming.js +0 -2
- package/dist/src/components/customise/theming.js.map +0 -1
- package/dist/src/components/gherkin/Anchor.d.ts +0 -4
- package/dist/src/components/gherkin/Anchor.d.ts.map +0 -1
- package/dist/src/components/gherkin/Anchor.js +0 -16
- package/dist/src/components/gherkin/Anchor.js.map +0 -1
- package/dist/src/components/gherkin/Background.d.ts +0 -4
- package/dist/src/components/gherkin/Background.d.ts.map +0 -1
- package/dist/src/components/gherkin/Background.js +0 -24
- package/dist/src/components/gherkin/Background.js.map +0 -1
- package/dist/src/components/gherkin/Children.d.ts +0 -4
- package/dist/src/components/gherkin/Children.d.ts.map +0 -1
- package/dist/src/components/gherkin/Children.js +0 -11
- package/dist/src/components/gherkin/Children.js.map +0 -1
- package/dist/src/components/gherkin/DataTable.d.ts +0 -4
- package/dist/src/components/gherkin/DataTable.d.ts.map +0 -1
- package/dist/src/components/gherkin/DataTable.js +0 -18
- package/dist/src/components/gherkin/DataTable.js.map +0 -1
- package/dist/src/components/gherkin/Description.d.ts +0 -4
- package/dist/src/components/gherkin/Description.d.ts.map +0 -1
- package/dist/src/components/gherkin/Description.js +0 -16
- package/dist/src/components/gherkin/Description.js.map +0 -1
- package/dist/src/components/gherkin/DocString.d.ts +0 -4
- package/dist/src/components/gherkin/DocString.d.ts.map +0 -1
- package/dist/src/components/gherkin/DocString.js +0 -13
- package/dist/src/components/gherkin/DocString.js.map +0 -1
- package/dist/src/components/gherkin/ErrorMessage.d.ts +0 -4
- package/dist/src/components/gherkin/ErrorMessage.d.ts.map +0 -1
- package/dist/src/components/gherkin/ErrorMessage.js +0 -11
- package/dist/src/components/gherkin/ErrorMessage.js.map +0 -1
- package/dist/src/components/gherkin/Examples.d.ts +0 -4
- package/dist/src/components/gherkin/Examples.d.ts.map +0 -1
- package/dist/src/components/gherkin/Examples.js +0 -42
- package/dist/src/components/gherkin/Examples.js.map +0 -1
- package/dist/src/components/gherkin/Feature.d.ts +0 -4
- package/dist/src/components/gherkin/Feature.d.ts.map +0 -1
- package/dist/src/components/gherkin/Feature.js +0 -40
- package/dist/src/components/gherkin/Feature.js.map +0 -1
- package/dist/src/components/gherkin/GherkinDocument.d.ts +0 -4
- package/dist/src/components/gherkin/GherkinDocument.d.ts.map +0 -1
- package/dist/src/components/gherkin/GherkinDocument.js +0 -11
- package/dist/src/components/gherkin/GherkinDocument.js.map +0 -1
- package/dist/src/components/gherkin/Keyword.d.ts +0 -4
- package/dist/src/components/gherkin/Keyword.d.ts.map +0 -1
- package/dist/src/components/gherkin/Keyword.js +0 -11
- package/dist/src/components/gherkin/Keyword.js.map +0 -1
- package/dist/src/components/gherkin/Parameter.d.ts +0 -4
- package/dist/src/components/gherkin/Parameter.d.ts.map +0 -1
- package/dist/src/components/gherkin/Parameter.js +0 -11
- package/dist/src/components/gherkin/Parameter.js.map +0 -1
- package/dist/src/components/gherkin/Rule.d.ts +0 -4
- package/dist/src/components/gherkin/Rule.d.ts.map +0 -1
- package/dist/src/components/gherkin/Rule.js +0 -36
- package/dist/src/components/gherkin/Rule.js.map +0 -1
- package/dist/src/components/gherkin/Scenario.d.ts +0 -4
- package/dist/src/components/gherkin/Scenario.d.ts.map +0 -1
- package/dist/src/components/gherkin/Scenario.js +0 -31
- package/dist/src/components/gherkin/Scenario.js.map +0 -1
- package/dist/src/components/gherkin/StatusIcon.d.ts +0 -4
- package/dist/src/components/gherkin/StatusIcon.d.ts.map +0 -1
- package/dist/src/components/gherkin/StatusIcon.js +0 -24
- package/dist/src/components/gherkin/StatusIcon.js.map +0 -1
- package/dist/src/components/gherkin/StepsList.d.ts +0 -5
- package/dist/src/components/gherkin/StepsList.d.ts.map +0 -1
- package/dist/src/components/gherkin/StepsList.js +0 -6
- package/dist/src/components/gherkin/StepsList.js.map +0 -1
- package/dist/src/components/gherkin/Tags.d.ts +0 -4
- package/dist/src/components/gherkin/Tags.d.ts.map +0 -1
- package/dist/src/components/gherkin/Tags.js +0 -16
- package/dist/src/components/gherkin/Tags.js.map +0 -1
- package/dist/src/components/gherkin/Title.d.ts +0 -4
- package/dist/src/components/gherkin/Title.d.ts.map +0 -1
- package/dist/src/components/gherkin/Title.js +0 -13
- package/dist/src/components/gherkin/Title.js.map +0 -1
- package/dist/src/components/gherkin/attachment/Attachment.d.ts +0 -4
- package/dist/src/components/gherkin/attachment/Attachment.d.ts.map +0 -1
- package/dist/src/components/gherkin/attachment/Attachment.js +0 -48
- package/dist/src/components/gherkin/attachment/Attachment.js.map +0 -1
- package/dist/src/components/gherkin/attachment/Image.d.ts +0 -8
- package/dist/src/components/gherkin/attachment/Image.d.ts.map +0 -1
- package/dist/src/components/gherkin/attachment/Image.js +0 -18
- package/dist/src/components/gherkin/attachment/Image.js.map +0 -1
- package/dist/src/components/gherkin/attachment/Links.d.ts +0 -8
- package/dist/src/components/gherkin/attachment/Links.d.ts.map +0 -1
- package/dist/src/components/gherkin/attachment/Links.js +0 -17
- package/dist/src/components/gherkin/attachment/Links.js.map +0 -1
- package/dist/src/components/gherkin/attachment/Log.d.ts +0 -8
- package/dist/src/components/gherkin/attachment/Log.d.ts.map +0 -1
- package/dist/src/components/gherkin/attachment/Log.js +0 -12
- package/dist/src/components/gherkin/attachment/Log.js.map +0 -1
- package/dist/src/components/gherkin/attachment/Text.d.ts +0 -9
- package/dist/src/components/gherkin/attachment/Text.d.ts.map +0 -1
- package/dist/src/components/gherkin/attachment/Text.js +0 -18
- package/dist/src/components/gherkin/attachment/Text.js.map +0 -1
- package/dist/src/components/gherkin/attachment/Unknown.d.ts +0 -4
- package/dist/src/components/gherkin/attachment/Unknown.d.ts.map +0 -1
- package/dist/src/components/gherkin/attachment/Unknown.js +0 -69
- package/dist/src/components/gherkin/attachment/Unknown.js.map +0 -1
- package/dist/src/components/gherkin/attachment/Video.d.ts +0 -6
- package/dist/src/components/gherkin/attachment/Video.d.ts.map +0 -1
- package/dist/src/components/gherkin/attachment/Video.js +0 -20
- package/dist/src/components/gherkin/attachment/Video.js.map +0 -1
- package/dist/src/components/gherkin/attachment/attachmentFilename.d.ts +0 -3
- package/dist/src/components/gherkin/attachment/attachmentFilename.d.ts.map +0 -1
- package/dist/src/components/gherkin/attachment/attachmentFilename.js +0 -12
- package/dist/src/components/gherkin/attachment/attachmentFilename.js.map +0 -1
- package/dist/src/components/gherkin/attachment/base64Decode.d.ts +0 -2
- package/dist/src/components/gherkin/attachment/base64Decode.d.ts.map +0 -1
- package/dist/src/components/gherkin/attachment/base64Decode.js +0 -5
- package/dist/src/components/gherkin/attachment/base64Decode.js.map +0 -1
- package/dist/src/components/gherkin/attachment/index.d.ts +0 -2
- package/dist/src/components/gherkin/attachment/index.d.ts.map +0 -1
- package/dist/src/components/gherkin/attachment/index.js.map +0 -1
- package/dist/src/components/gherkin/attachment/useText.d.ts.map +0 -1
- package/dist/src/components/gherkin/attachment/useText.js +0 -28
- package/dist/src/components/gherkin/attachment/useText.js.map +0 -1
- package/dist/src/components/gherkin/composeHookStepTitle.d.ts +0 -3
- package/dist/src/components/gherkin/composeHookStepTitle.d.ts.map +0 -1
- package/dist/src/components/gherkin/composeHookStepTitle.js +0 -23
- package/dist/src/components/gherkin/composeHookStepTitle.js.map +0 -1
- package/dist/src/components/gherkin/composePickleStepTitle.d.ts.map +0 -1
- package/dist/src/components/gherkin/composePickleStepTitle.js +0 -36
- package/dist/src/components/gherkin/composePickleStepTitle.js.map +0 -1
- package/dist/src/components/gherkin/index.d.ts +0 -19
- package/dist/src/components/gherkin/index.d.ts.map +0 -1
- package/dist/src/components/gherkin/index.js.map +0 -1
- package/dist/src/components/gherkin/isNumber.d.ts.map +0 -1
- package/dist/src/components/gherkin/isNumber.js +0 -7
- package/dist/src/components/gherkin/isNumber.js.map +0 -1
- package/dist/src/components/gherkin/statusName.d.ts +0 -4
- package/dist/src/components/gherkin/statusName.d.ts.map +0 -1
- package/dist/src/components/gherkin/statusName.js +0 -4
- package/dist/src/components/gherkin/statusName.js.map +0 -1
- package/dist/src/components/index.d.ts +0 -4
- package/dist/src/components/index.d.ts.map +0 -1
- package/dist/src/components/index.js.map +0 -1
- package/dist/src/components/results/TestCaseOutcome.d.ts +0 -8
- package/dist/src/components/results/TestCaseOutcome.d.ts.map +0 -1
- package/dist/src/components/results/TestCaseOutcome.js +0 -36
- package/dist/src/components/results/TestCaseOutcome.js.map +0 -1
- package/dist/src/components/results/TestRunHookOutcome.d.ts.map +0 -1
- package/dist/src/components/results/TestRunHookOutcome.js +0 -20
- package/dist/src/components/results/TestRunHookOutcome.js.map +0 -1
- package/dist/src/components/results/TestStepAttachments.d.ts +0 -8
- package/dist/src/components/results/TestStepAttachments.d.ts.map +0 -1
- package/dist/src/components/results/TestStepAttachments.js +0 -13
- package/dist/src/components/results/TestStepAttachments.js.map +0 -1
- package/dist/src/components/results/TestStepDuration.d.ts +0 -6
- package/dist/src/components/results/TestStepDuration.d.ts.map +0 -1
- package/dist/src/components/results/TestStepDuration.js +0 -17
- package/dist/src/components/results/TestStepDuration.js.map +0 -1
- package/dist/src/components/results/TestStepOutcome.d.ts.map +0 -1
- package/dist/src/components/results/TestStepOutcome.js +0 -54
- package/dist/src/components/results/TestStepOutcome.js.map +0 -1
- package/dist/src/components/results/TestStepResultDetails.d.ts +0 -4
- package/dist/src/components/results/TestStepResultDetails.d.ts.map +0 -1
- package/dist/src/components/results/TestStepResultDetails.js +0 -16
- package/dist/src/components/results/TestStepResultDetails.js.map +0 -1
- package/dist/src/components/results/index.d.ts +0 -3
- package/dist/src/components/results/index.d.ts.map +0 -1
- package/dist/src/components/results/index.js +0 -3
- package/dist/src/components/results/index.js.map +0 -1
- package/dist/src/formatExecutionDistance.d.ts.map +0 -1
- package/dist/src/formatExecutionDistance.js +0 -7
- package/dist/src/formatExecutionDistance.js.map +0 -1
- package/dist/src/formatExecutionDuration.d.ts.map +0 -1
- package/dist/src/formatExecutionDuration.js +0 -12
- package/dist/src/formatExecutionDuration.js.map +0 -1
- package/dist/src/formatPassedQuantity.d.ts.map +0 -1
- package/dist/src/formatPassedQuantity.js +0 -4
- package/dist/src/formatPassedQuantity.js.map +0 -1
- package/dist/src/formatStatusRate.d.ts.map +0 -1
- package/dist/src/formatStatusRate.js +0 -9
- package/dist/src/formatStatusRate.js.map +0 -1
- package/dist/src/hooks/helpers.d.ts.map +0 -1
- package/dist/src/hooks/helpers.js +0 -7
- package/dist/src/hooks/helpers.js.map +0 -1
- package/dist/src/hooks/index.d.ts +0 -3
- package/dist/src/hooks/index.d.ts.map +0 -1
- package/dist/src/hooks/index.js.map +0 -1
- package/dist/src/hooks/useFilteredDocuments.d.ts +0 -6
- package/dist/src/hooks/useFilteredDocuments.d.ts.map +0 -1
- package/dist/src/hooks/useFilteredDocuments.js +0 -49
- package/dist/src/hooks/useFilteredDocuments.js.map +0 -1
- package/dist/src/hooks/useMostSevereStatusByUri.d.ts.map +0 -1
- package/dist/src/hooks/useMostSevereStatusByUri.js +0 -25
- package/dist/src/hooks/useMostSevereStatusByUri.js.map +0 -1
- package/dist/src/hooks/useQueries.d.ts +0 -7
- package/dist/src/hooks/useQueries.d.ts.map +0 -1
- package/dist/src/hooks/useQueries.js +0 -9
- package/dist/src/hooks/useQueries.js.map +0 -1
- package/dist/src/hooks/useResultStatistics.d.ts.map +0 -1
- package/dist/src/hooks/useResultStatistics.js +0 -24
- package/dist/src/hooks/useResultStatistics.js.map +0 -1
- package/dist/src/hooks/useSearch.d.ts +0 -3
- package/dist/src/hooks/useSearch.d.ts.map +0 -1
- package/dist/src/hooks/useSearch.js +0 -6
- package/dist/src/hooks/useSearch.js.map +0 -1
- package/dist/src/hooks/useTestCaseStarted.d.ts +0 -3
- package/dist/src/hooks/useTestCaseStarted.d.ts.map +0 -1
- package/dist/src/hooks/useTestCaseStarted.js +0 -17
- package/dist/src/hooks/useTestCaseStarted.js.map +0 -1
- package/dist/src/hooks/useTestRunHooks.d.ts.map +0 -1
- package/dist/src/hooks/useTestRunHooks.js +0 -14
- package/dist/src/hooks/useTestRunHooks.js.map +0 -1
- package/dist/src/index.d.ts +0 -3
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js.map +0 -1
- package/dist/src/isTagExpression.d.ts.map +0 -1
- package/dist/src/isTagExpression.js +0 -5
- package/dist/src/isTagExpression.js.map +0 -1
- package/dist/src/search/FeatureSearch.d.ts +0 -4
- package/dist/src/search/FeatureSearch.d.ts.map +0 -1
- package/dist/src/search/FeatureSearch.js +0 -45
- package/dist/src/search/FeatureSearch.js.map +0 -1
- package/dist/src/search/ScenarioLikeSearch.d.ts +0 -25
- package/dist/src/search/ScenarioLikeSearch.d.ts.map +0 -1
- package/dist/src/search/ScenarioLikeSearch.js +0 -41
- package/dist/src/search/ScenarioLikeSearch.js.map +0 -1
- package/dist/src/search/Search.d.ts +0 -11
- package/dist/src/search/Search.d.ts.map +0 -1
- package/dist/src/search/Search.js +0 -51
- package/dist/src/search/Search.js.map +0 -1
- package/dist/src/search/StepSearch.d.ts +0 -19
- package/dist/src/search/StepSearch.d.ts.map +0 -1
- package/dist/src/search/StepSearch.js +0 -44
- package/dist/src/search/StepSearch.js.map +0 -1
- package/dist/src/search/TagSearch.d.ts +0 -4
- package/dist/src/search/TagSearch.d.ts.map +0 -1
- package/dist/src/search/TagSearch.js +0 -57
- package/dist/src/search/TagSearch.js.map +0 -1
- package/dist/src/search/TextSearch.d.ts +0 -3
- package/dist/src/search/TextSearch.d.ts.map +0 -1
- package/dist/src/search/TextSearch.js +0 -63
- package/dist/src/search/TextSearch.js.map +0 -1
- package/dist/src/search/index.d.ts +0 -3
- package/dist/src/search/index.d.ts.map +0 -1
- package/dist/src/search/index.js +0 -3
- package/dist/src/search/index.js.map +0 -1
- package/dist/src/search/types.d.ts +0 -14
- package/dist/src/search/types.d.ts.map +0 -1
- package/dist/src/search/types.js +0 -2
- package/dist/src/search/types.js.map +0 -1
- package/dist/src/statuses.d.ts.map +0 -1
- package/dist/src/statuses.js +0 -12
- package/dist/src/statuses.js.map +0 -1
- package/dist/src/toRepositoryId.d.ts +0 -2
- package/dist/src/toRepositoryId.d.ts.map +0 -1
- package/dist/src/toRepositoryId.js +0 -11
- package/dist/src/toRepositoryId.js.map +0 -1
- package/dist/tsconfig.build.tsbuildinfo +0 -1
- /package/dist/{src/components → components}/app/CopyButton.module.scss +0 -0
- /package/dist/{src/components → components}/app/ExecutionSummary.module.scss +0 -0
- /package/dist/{src/components → components}/app/FilteredDocuments.module.scss +0 -0
- /package/dist/{src/components → components}/app/Header.module.scss +0 -0
- /package/dist/{src/components → components}/app/HealthChart.module.scss +0 -0
- /package/dist/{src/components → components}/app/NavigationButton.module.scss +0 -0
- /package/dist/{src/components → components}/app/Report.module.scss +0 -0
- /package/dist/{src/components → components}/app/SearchBar.module.scss +0 -0
- /package/dist/{src/components → components}/app/StatusesSummary.module.scss +0 -0
- /package/dist/{src/components → components}/app/TestRunHooks.module.scss +0 -0
- /package/dist/{src/components → components}/gherkin/Anchor.module.scss +0 -0
- /package/dist/{src/components → components}/gherkin/Children.module.scss +0 -0
- /package/dist/{src/components → components}/gherkin/DataTable.module.scss +0 -0
- /package/dist/{src/components → components}/gherkin/Description.module.scss +0 -0
- /package/dist/{src/components → components}/gherkin/DocString.module.scss +0 -0
- /package/dist/{src/components → components}/gherkin/Examples.module.scss +0 -0
- /package/dist/{src/components → components}/gherkin/Parameter.module.scss +0 -0
- /package/dist/{src/components → components}/gherkin/StatusIcon.module.scss +0 -0
- /package/dist/{src/components → components}/gherkin/StepsList.module.scss +0 -0
- /package/dist/{src/components → components}/gherkin/Tags.module.scss +0 -0
- /package/dist/{src/components → components}/gherkin/Title.module.scss +0 -0
- /package/dist/{src/components → components}/results/TestCaseOutcome.module.scss +0 -0
- /package/dist/{src/components → components}/results/TestRunHookOutcome.module.scss +0 -0
- /package/dist/{src/components → components}/results/TestStepAttachments.module.scss +0 -0
- /package/dist/{src/components → components}/results/TestStepDuration.module.scss +0 -0
- /package/dist/{src/styles → styles}/statuses.scss +0 -0
- /package/dist/{src/styles → styles}/tables.scss +0 -0
- /package/dist/{src/styles → styles}/theming.scss +0 -0
|
@@ -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==
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { TestCaseStarted } from '@cucumber/messages';
|
|
2
|
+
/**
|
|
3
|
+
* Finds the corresponding TestCaseStarted for an Example or Scenario node from a Gherkin
|
|
4
|
+
* document
|
|
5
|
+
* @param nodeId the Gherkin node id
|
|
6
|
+
*/
|
|
7
|
+
export declare function useTestCaseStarted(nodeId: string): TestCaseStarted | undefined;
|
|
@@ -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==
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { Hook, TestRunHookFinished } from '@cucumber/messages';
|
|
1
|
+
import type { Hook, TestRunHookFinished } from '@cucumber/messages';
|
|
2
2
|
type RunHooksList = {
|
|
3
3
|
testRunHookFinished: TestRunHookFinished;
|
|
4
4
|
hook: Hook;
|
|
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==
|
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==
|
|
@@ -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=
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { GherkinDocument } from '@cucumber/messages';
|
|
2
|
+
import type { IndexHit, TypedIndex } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* A little different to the other indexes - a Feature doesn't have its own id,
|
|
5
|
+
* so we use the uri of the GherkinDocument as a pointer
|
|
6
|
+
*/
|
|
7
|
+
export declare class FeatureSearch implements TypedIndex<GherkinDocument> {
|
|
8
|
+
private readonly index;
|
|
9
|
+
constructor();
|
|
10
|
+
search(term: string): Promise<ReadonlyArray<IndexHit>>;
|
|
11
|
+
add(gherkinDocument: GherkinDocument, _uri: string): Promise<this>;
|
|
12
|
+
}
|
|
@@ -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
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type TypedIndex } from './types.js';
|
|
2
|
+
export interface ScenarioLike {
|
|
3
|
+
id: string;
|
|
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 declare class ScenarioLikeSearch<T extends ScenarioLike> implements TypedIndex<T> {
|
|
12
|
+
private readonly index;
|
|
13
|
+
constructor();
|
|
14
|
+
search(term: string): Promise<{
|
|
15
|
+
uri: string;
|
|
16
|
+
id: string;
|
|
17
|
+
}[]>;
|
|
18
|
+
add(item: T, uri: string): Promise<this>;
|
|
19
|
+
}
|
|
@@ -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=
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Step } from '@cucumber/messages';
|
|
2
|
+
import { type TypedIndex } from './types.js';
|
|
3
|
+
export declare class StepSearch implements TypedIndex<Step> {
|
|
4
|
+
private readonly index;
|
|
5
|
+
constructor();
|
|
6
|
+
search(term: string): Promise<{
|
|
7
|
+
uri: string;
|
|
8
|
+
id: string;
|
|
9
|
+
}[]>;
|
|
10
|
+
add(step: Step, uri: string): Promise<this>;
|
|
11
|
+
}
|
|
@@ -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=
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { GherkinDocument } from '@cucumber/messages';
|
|
2
|
+
import type { SearchHits, SearchIndex } from './types.js';
|
|
3
|
+
export declare class TextSearch implements SearchIndex {
|
|
4
|
+
private readonly featureSearch;
|
|
5
|
+
private readonly backgroundSearch;
|
|
6
|
+
private readonly ruleSearch;
|
|
7
|
+
private readonly scenarioSearch;
|
|
8
|
+
private readonly stepSearch;
|
|
9
|
+
search(query: string): Promise<SearchHits>;
|
|
10
|
+
add(gherkinDocument: GherkinDocument): Promise<void>;
|
|
11
|
+
}
|
|
@@ -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==
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { GherkinDocument } from '@cucumber/messages';
|
|
2
|
+
import type { SearchIndex } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Creates a search index that supports querying by term
|
|
5
|
+
*/
|
|
6
|
+
export declare function createSearchIndex(gherkinDocuments: ReadonlyArray<GherkinDocument>): Promise<SearchIndex>;
|
|
@@ -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
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Pickle } from '@cucumber/messages';
|
|
2
|
+
import type { Lineage } from '@cucumber/query';
|
|
3
|
+
import type { LineageConstraints } from './types.js';
|
|
4
|
+
export declare function deriveLineageConstraints(items: ReadonlyArray<{
|
|
5
|
+
pickle: Pickle;
|
|
6
|
+
lineage: Lineage;
|
|
7
|
+
}>): LineageConstraints;
|
|
@@ -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>>;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { TestStepResultStatus as Status, } from '@cucumber/messages';
|
|
2
|
+
import { ensure } from '../ensure.js';
|
|
3
|
+
/**
|
|
4
|
+
* Filters test cases by status and/or tag expression, expanding each survivor with its pickle and
|
|
5
|
+
* lineage.
|
|
6
|
+
*
|
|
7
|
+
* Works for either `TestCaseStarted` or `TestCaseFinished` - the element type flows through to the
|
|
8
|
+
* `testCaseEvent` of each returned item.
|
|
9
|
+
*/
|
|
10
|
+
export function filterAndExpandTestCaseEvents(cucumberQuery, testCaseEvents, { hideStatuses, tagExpression }) {
|
|
11
|
+
const expanded = [];
|
|
12
|
+
for (const testCaseEvent of testCaseEvents) {
|
|
13
|
+
if (hideStatuses.length) {
|
|
14
|
+
const status = cucumberQuery.findMostSevereTestStepResultBy(testCaseEvent)?.status ?? Status.UNKNOWN;
|
|
15
|
+
if (hideStatuses.includes(status)) {
|
|
16
|
+
continue;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
const id = 'id' in testCaseEvent ? testCaseEvent.id : testCaseEvent.testCaseStartedId;
|
|
20
|
+
const pickle = ensure(cucumberQuery.findPickleBy(testCaseEvent), `No Pickle found for TestCase ${id}`);
|
|
21
|
+
if (tagExpression) {
|
|
22
|
+
const tags = pickle.tags.map((tag) => tag.name);
|
|
23
|
+
if (!tagExpression.evaluate(tags)) {
|
|
24
|
+
continue;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
const lineage = ensure(cucumberQuery.findLineageBy(pickle), `No Lineage found for Pickle ${pickle.uri}`);
|
|
28
|
+
expanded.push({ testCaseEvent, pickle, lineage });
|
|
29
|
+
}
|
|
30
|
+
return expanded;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyQW5kRXhwYW5kVGVzdENhc2VFdmVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VhcmNoL2ZpbHRlckFuZEV4cGFuZFRlc3RDYXNlRXZlbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxvQkFBb0IsSUFBSSxNQUFNLEdBSS9CLE1BQU0sb0JBQW9CLENBQUE7QUFHM0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQWFyQzs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsNkJBQTZCLENBQzNDLGFBQTRCLEVBQzVCLGNBQWdDLEVBQ2hDLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBa0I7SUFFL0MsTUFBTSxRQUFRLEdBQStCLEVBQUUsQ0FBQTtJQUMvQyxLQUFLLE1BQU0sYUFBYSxJQUFJLGNBQWMsRUFBRSxDQUFDO1FBQzNDLElBQUksWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3hCLE1BQU0sTUFBTSxHQUNWLGFBQWEsQ0FBQyw4QkFBOEIsQ0FBQyxhQUFhLENBQUMsRUFBRSxNQUFNLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQTtZQUN2RixJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDbEMsU0FBUTtZQUNWLENBQUM7UUFDSCxDQUFDO1FBQ0QsTUFBTSxFQUFFLEdBQUcsSUFBSSxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFBO1FBQ3JGLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FDbkIsYUFBYSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsRUFDekMsZ0NBQWdDLEVBQUUsRUFBRSxDQUNyQyxDQUFBO1FBQ0QsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNsQixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQy9DLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ2xDLFNBQVE7WUFDVixDQUFDO1FBQ0gsQ0FBQztRQUNELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FDcEIsYUFBYSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFDbkMsK0JBQStCLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FDNUMsQ0FBQTtRQUNELFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUE7SUFDbkQsQ0FBQztJQUNELE9BQU8sUUFBUSxDQUFBO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICB0eXBlIFBpY2tsZSxcbiAgVGVzdFN0ZXBSZXN1bHRTdGF0dXMgYXMgU3RhdHVzLFxuICB0eXBlIFRlc3RDYXNlRmluaXNoZWQsXG4gIHR5cGUgVGVzdENhc2VTdGFydGVkLFxuICB0eXBlIFRlc3RTdGVwUmVzdWx0U3RhdHVzLFxufSBmcm9tICdAY3VjdW1iZXIvbWVzc2FnZXMnXG5pbXBvcnQgdHlwZSB7IFF1ZXJ5IGFzIEN1Y3VtYmVyUXVlcnksIExpbmVhZ2UgfSBmcm9tICdAY3VjdW1iZXIvcXVlcnknXG5pbXBvcnQgdHlwZSB7IE5vZGUgYXMgVGFnRXhwcmVzc2lvbiB9IGZyb20gJ0BjdWN1bWJlci90YWctZXhwcmVzc2lvbnMnXG5pbXBvcnQgeyBlbnN1cmUgfSBmcm9tICcuLi9lbnN1cmUuanMnXG5cbmV4cG9ydCBpbnRlcmZhY2UgRXhwYW5kZWRUZXN0Q2FzZTxUIGV4dGVuZHMgVGVzdENhc2VTdGFydGVkIHwgVGVzdENhc2VGaW5pc2hlZD4ge1xuICB0ZXN0Q2FzZUV2ZW50OiBUXG4gIHBpY2tsZTogUGlja2xlXG4gIGxpbmVhZ2U6IExpbmVhZ2Vcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJDcml0ZXJpYSB7XG4gIGhpZGVTdGF0dXNlczogUmVhZG9ubHlBcnJheTxUZXN0U3RlcFJlc3VsdFN0YXR1cz5cbiAgdGFnRXhwcmVzc2lvbj86IFRhZ0V4cHJlc3Npb25cbn1cblxuLyoqXG4gKiBGaWx0ZXJzIHRlc3QgY2FzZXMgYnkgc3RhdHVzIGFuZC9vciB0YWcgZXhwcmVzc2lvbiwgZXhwYW5kaW5nIGVhY2ggc3Vydml2b3Igd2l0aCBpdHMgcGlja2xlIGFuZFxuICogbGluZWFnZS5cbiAqXG4gKiBXb3JrcyBmb3IgZWl0aGVyIGBUZXN0Q2FzZVN0YXJ0ZWRgIG9yIGBUZXN0Q2FzZUZpbmlzaGVkYCAtIHRoZSBlbGVtZW50IHR5cGUgZmxvd3MgdGhyb3VnaCB0byB0aGVcbiAqIGB0ZXN0Q2FzZUV2ZW50YCBvZiBlYWNoIHJldHVybmVkIGl0ZW0uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJBbmRFeHBhbmRUZXN0Q2FzZUV2ZW50czxUIGV4dGVuZHMgVGVzdENhc2VTdGFydGVkIHwgVGVzdENhc2VGaW5pc2hlZD4oXG4gIGN1Y3VtYmVyUXVlcnk6IEN1Y3VtYmVyUXVlcnksXG4gIHRlc3RDYXNlRXZlbnRzOiBSZWFkb25seUFycmF5PFQ+LFxuICB7IGhpZGVTdGF0dXNlcywgdGFnRXhwcmVzc2lvbiB9OiBGaWx0ZXJDcml0ZXJpYVxuKTogQXJyYXk8RXhwYW5kZWRUZXN0Q2FzZTxUPj4ge1xuICBjb25zdCBleHBhbmRlZDogQXJyYXk8RXhwYW5kZWRUZXN0Q2FzZTxUPj4gPSBbXVxuICBmb3IgKGNvbnN0IHRlc3RDYXNlRXZlbnQgb2YgdGVzdENhc2VFdmVudHMpIHtcbiAgICBpZiAoaGlkZVN0YXR1c2VzLmxlbmd0aCkge1xuICAgICAgY29uc3Qgc3RhdHVzID1cbiAgICAgICAgY3VjdW1iZXJRdWVyeS5maW5kTW9zdFNldmVyZVRlc3RTdGVwUmVzdWx0QnkodGVzdENhc2VFdmVudCk/LnN0YXR1cyA/PyBTdGF0dXMuVU5LTk9XTlxuICAgICAgaWYgKGhpZGVTdGF0dXNlcy5pbmNsdWRlcyhzdGF0dXMpKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGlkID0gJ2lkJyBpbiB0ZXN0Q2FzZUV2ZW50ID8gdGVzdENhc2VFdmVudC5pZCA6IHRlc3RDYXNlRXZlbnQudGVzdENhc2VTdGFydGVkSWRcbiAgICBjb25zdCBwaWNrbGUgPSBlbnN1cmUoXG4gICAgICBjdWN1bWJlclF1ZXJ5LmZpbmRQaWNrbGVCeSh0ZXN0Q2FzZUV2ZW50KSxcbiAgICAgIGBObyBQaWNrbGUgZm91bmQgZm9yIFRlc3RDYXNlICR7aWR9YFxuICAgIClcbiAgICBpZiAodGFnRXhwcmVzc2lvbikge1xuICAgICAgY29uc3QgdGFncyA9IHBpY2tsZS50YWdzLm1hcCgodGFnKSA9PiB0YWcubmFtZSlcbiAgICAgIGlmICghdGFnRXhwcmVzc2lvbi5ldmFsdWF0ZSh0YWdzKSkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBsaW5lYWdlID0gZW5zdXJlKFxuICAgICAgY3VjdW1iZXJRdWVyeS5maW5kTGluZWFnZUJ5KHBpY2tsZSksXG4gICAgICBgTm8gTGluZWFnZSBmb3VuZCBmb3IgUGlja2xlICR7cGlja2xlLnVyaX1gXG4gICAgKVxuICAgIGV4cGFuZGVkLnB1c2goeyB0ZXN0Q2FzZUV2ZW50LCBwaWNrbGUsIGxpbmVhZ2UgfSlcbiAgfVxuICByZXR1cm4gZXhwYW5kZWRcbn1cbiJdfQ==
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from './createSearchIndex.js';
|
|
2
|
+
export * from './deriveLineageConstraints.js';
|
|
3
|
+
export * from './filterAndExpandTestCaseEvents.js';
|
|
4
|
+
export * from './pruneGherkinDocuments.js';
|
|
5
|
+
export * from './pruneTestCaseEvents.js';
|
|
6
|
+
export * from './types.js';
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VhcmNoL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsd0JBQXdCLENBQUE7QUFDdEMsY0FBYywrQkFBK0IsQ0FBQTtBQUM3QyxjQUFjLG9DQUFvQyxDQUFBO0FBQ2xELGNBQWMsNEJBQTRCLENBQUE7QUFDMUMsY0FBYywwQkFBMEIsQ0FBQTtBQUN4QyxjQUFjLFlBQVksQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY3JlYXRlU2VhcmNoSW5kZXguanMnXG5leHBvcnQgKiBmcm9tICcuL2Rlcml2ZUxpbmVhZ2VDb25zdHJhaW50cy5qcydcbmV4cG9ydCAqIGZyb20gJy4vZmlsdGVyQW5kRXhwYW5kVGVzdENhc2VFdmVudHMuanMnXG5leHBvcnQgKiBmcm9tICcuL3BydW5lR2hlcmtpbkRvY3VtZW50cy5qcydcbmV4cG9ydCAqIGZyb20gJy4vcHJ1bmVUZXN0Q2FzZUV2ZW50cy5qcydcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMuanMnXG4iXX0=
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { GherkinDocument } from '@cucumber/messages';
|
|
2
|
+
import type { LineageConstraints, SearchHits } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Returns abridged copies of the given documents, with lineage constraints and search hits used
|
|
5
|
+
* to filter out nodes that shouldn't be shown
|
|
6
|
+
*
|
|
7
|
+
* @param gherkinDocuments - the original documents to prune
|
|
8
|
+
* @param constraints - the set of AST node IDs to retain, derived from pickle lineage
|
|
9
|
+
* @param searchHits - if provided, further narrows results to nodes matching a search query
|
|
10
|
+
*
|
|
11
|
+
* @remarks
|
|
12
|
+
* The two filtering mechanisms behave a little differently.
|
|
13
|
+
*
|
|
14
|
+
* `lineageConstraints` are strictly enforced at every level - any node of the covered types must
|
|
15
|
+
* have its id included otherwise it will be filtered off. This check is performed eagerly at every
|
|
16
|
+
* level so for e.g. a Rule that isn't matched, we won't even look at its child Scenarios.
|
|
17
|
+
*
|
|
18
|
+
* `searchHits` has cascading behaviour - a match at a higher level (Feature, Rule, or Background)
|
|
19
|
+
* ensures all of its descendants will be retained, and a match at a lower level (Scenario, Step)
|
|
20
|
+
* ensures all of its ascendants (but not siblings) will be retained. An empty map means there were
|
|
21
|
+
* no hits at all, so no documents will be returned.
|
|
22
|
+
*/
|
|
23
|
+
export declare function pruneGherkinDocuments(gherkinDocuments: ReadonlyArray<GherkinDocument>, constraints: LineageConstraints, searchHits?: SearchHits): ReadonlyArray<GherkinDocument>;
|