@supernal/interface 1.0.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 +22 -0
- package/README.md +165 -0
- package/dist/cjs/names/API.js +104 -0
- package/dist/cjs/names/API.js.map +1 -0
- package/dist/cjs/names/Components.js +104 -0
- package/dist/cjs/names/Components.js.map +1 -0
- package/dist/cjs/names/Containers.js +99 -0
- package/dist/cjs/names/Containers.js.map +1 -0
- package/dist/cjs/names/Functions.js +114 -0
- package/dist/cjs/names/Functions.js.map +1 -0
- package/dist/cjs/names/index.js +118 -0
- package/dist/cjs/names/index.js.map +1 -0
- package/dist/cjs/src/adapters/ChatUIProvider.js +176 -0
- package/dist/cjs/src/adapters/ChatUIProvider.js.map +1 -0
- package/dist/cjs/src/adapters/bridge.js +225 -0
- package/dist/cjs/src/adapters/bridge.js.map +1 -0
- package/dist/cjs/src/adapters/copilotkit/CopilotKitAdapter.js +289 -0
- package/dist/cjs/src/adapters/copilotkit/CopilotKitAdapter.js.map +1 -0
- package/dist/cjs/src/adapters/copilotkit/index.js +10 -0
- package/dist/cjs/src/adapters/copilotkit/index.js.map +1 -0
- package/dist/cjs/src/adapters/index.js +63 -0
- package/dist/cjs/src/adapters/index.js.map +1 -0
- package/dist/cjs/src/adapters/native/NativeAdapter.js +268 -0
- package/dist/cjs/src/adapters/native/NativeAdapter.js.map +1 -0
- package/dist/cjs/src/adapters/native/index.js +10 -0
- package/dist/cjs/src/adapters/native/index.js.map +1 -0
- package/dist/cjs/src/adapters/types/index.js +9 -0
- package/dist/cjs/src/adapters/types/index.js.map +1 -0
- package/dist/cjs/src/ai/ToolExecutor.js +211 -0
- package/dist/cjs/src/ai/ToolExecutor.js.map +1 -0
- package/dist/cjs/src/ai/ToolMatcher.js +202 -0
- package/dist/cjs/src/ai/ToolMatcher.js.map +1 -0
- package/dist/cjs/src/ai/index.js +29 -0
- package/dist/cjs/src/ai/index.js.map +1 -0
- package/dist/cjs/src/architecture/createContainer.js +106 -0
- package/dist/cjs/src/architecture/createContainer.js.map +1 -0
- package/dist/cjs/src/architecture/initialize.js +125 -0
- package/dist/cjs/src/architecture/initialize.js.map +1 -0
- package/dist/cjs/src/architecture/registry.js +111 -0
- package/dist/cjs/src/architecture/registry.js.map +1 -0
- package/dist/cjs/src/background/architecture/ArchitectureInitializer.js +174 -0
- package/dist/cjs/src/background/architecture/ArchitectureInitializer.js.map +1 -0
- package/dist/cjs/src/background/architecture/Containers.js +46 -0
- package/dist/cjs/src/background/architecture/Containers.js.map +1 -0
- package/dist/cjs/src/background/architecture/DataContractTypes.js +28 -0
- package/dist/cjs/src/background/architecture/DataContractTypes.js.map +1 -0
- package/dist/cjs/src/background/architecture/index.js +24 -0
- package/dist/cjs/src/background/architecture/index.js.map +1 -0
- package/dist/cjs/src/background/navigation/NavigationGraph.js +71 -0
- package/dist/cjs/src/background/navigation/NavigationGraph.js.map +1 -0
- package/dist/cjs/src/background/navigation/RuntimeTreeBuilder.js +66 -0
- package/dist/cjs/src/background/navigation/RuntimeTreeBuilder.js.map +1 -0
- package/dist/cjs/src/background/navigation/useComponentTracking.js +20 -0
- package/dist/cjs/src/background/navigation/useComponentTracking.js.map +1 -0
- package/dist/cjs/src/background/registry/ComponentRegistry.js +340 -0
- package/dist/cjs/src/background/registry/ComponentRegistry.js.map +1 -0
- package/dist/cjs/src/background/registry/ToolRegistry.js +668 -0
- package/dist/cjs/src/background/registry/ToolRegistry.js.map +1 -0
- package/dist/cjs/src/browser.js +70 -0
- package/dist/cjs/src/browser.js.map +1 -0
- package/dist/cjs/src/components/ComponentScanner.js +362 -0
- package/dist/cjs/src/components/ComponentScanner.js.map +1 -0
- package/dist/cjs/src/components/index.js +24 -0
- package/dist/cjs/src/components/index.js.map +1 -0
- package/dist/cjs/src/data/TestDataManager.js +187 -0
- package/dist/cjs/src/data/TestDataManager.js.map +1 -0
- package/dist/cjs/src/data/index.js +23 -0
- package/dist/cjs/src/data/index.js.map +1 -0
- package/dist/cjs/src/decorators/Component.js +108 -0
- package/dist/cjs/src/decorators/Component.js.map +1 -0
- package/dist/cjs/src/decorators/ContainerHelpers.js +45 -0
- package/dist/cjs/src/decorators/ContainerHelpers.js.map +1 -0
- package/dist/cjs/src/decorators/SpecializedTools.js +386 -0
- package/dist/cjs/src/decorators/SpecializedTools.js.map +1 -0
- package/dist/cjs/src/decorators/Tool.js +700 -0
- package/dist/cjs/src/decorators/Tool.js.map +1 -0
- package/dist/cjs/src/decorators/ToolHelpers.js +261 -0
- package/dist/cjs/src/decorators/ToolHelpers.js.map +1 -0
- package/dist/cjs/src/decorators/ToolPreset.js +270 -0
- package/dist/cjs/src/decorators/ToolPreset.js.map +1 -0
- package/dist/cjs/src/decorators/ToolProvider.js +86 -0
- package/dist/cjs/src/decorators/ToolProvider.js.map +1 -0
- package/dist/cjs/src/decorators/index.js +44 -0
- package/dist/cjs/src/decorators/index.js.map +1 -0
- package/dist/cjs/src/execution/DOMExecutor.js +233 -0
- package/dist/cjs/src/execution/DOMExecutor.js.map +1 -0
- package/dist/cjs/src/execution/PlaywrightExecutor.js +196 -0
- package/dist/cjs/src/execution/PlaywrightExecutor.js.map +1 -0
- package/dist/cjs/src/exposure/ExposureCollector.js +358 -0
- package/dist/cjs/src/exposure/ExposureCollector.js.map +1 -0
- package/dist/cjs/src/exposure/index.js +26 -0
- package/dist/cjs/src/exposure/index.js.map +1 -0
- package/dist/cjs/src/index.js +187 -0
- package/dist/cjs/src/index.js.map +1 -0
- package/dist/cjs/src/interfaces/StatefulComponent.js +50 -0
- package/dist/cjs/src/interfaces/StatefulComponent.js.map +1 -0
- package/dist/cjs/src/name-contracts/ContractScanner.js +15 -0
- package/dist/cjs/src/name-contracts/ContractScanner.js.map +1 -0
- package/dist/cjs/src/name-contracts/RouteContractScanner.js +225 -0
- package/dist/cjs/src/name-contracts/RouteContractScanner.js.map +1 -0
- package/dist/cjs/src/name-contracts/index.js +15 -0
- package/dist/cjs/src/name-contracts/index.js.map +1 -0
- package/dist/cjs/src/names/createNames.js +86 -0
- package/dist/cjs/src/names/createNames.js.map +1 -0
- package/dist/cjs/src/react/hooks/useChatWithContext.js +221 -0
- package/dist/cjs/src/react/hooks/useChatWithContext.js.map +1 -0
- package/dist/cjs/src/react/index.js +28 -0
- package/dist/cjs/src/react/index.js.map +1 -0
- package/dist/cjs/src/react/useNavigationHandler.js +88 -0
- package/dist/cjs/src/react/useNavigationHandler.js.map +1 -0
- package/dist/cjs/src/react/usePersistedState.js +72 -0
- package/dist/cjs/src/react/usePersistedState.js.map +1 -0
- package/dist/cjs/src/react/useToolBinding.js +110 -0
- package/dist/cjs/src/react/useToolBinding.js.map +1 -0
- package/dist/cjs/src/routes/RouteContractGenerator.js +119 -0
- package/dist/cjs/src/routes/RouteContractGenerator.js.map +1 -0
- package/dist/cjs/src/routes/RouteContractsConfig.js +39 -0
- package/dist/cjs/src/routes/RouteContractsConfig.js.map +1 -0
- package/dist/cjs/src/routes/index.js +20 -0
- package/dist/cjs/src/routes/index.js.map +1 -0
- package/dist/cjs/src/routes/scanners/NameExtractor.js +193 -0
- package/dist/cjs/src/routes/scanners/NameExtractor.js.map +1 -0
- package/dist/cjs/src/routes/scanners/NextjsDynamicScanner.js +102 -0
- package/dist/cjs/src/routes/scanners/NextjsDynamicScanner.js.map +1 -0
- package/dist/cjs/src/routes/scanners/RouteScanner.js +13 -0
- package/dist/cjs/src/routes/scanners/RouteScanner.js.map +1 -0
- package/dist/cjs/src/storage/LocalStorageAdapter.js +87 -0
- package/dist/cjs/src/storage/LocalStorageAdapter.js.map +1 -0
- package/dist/cjs/src/storage/StateManager.js +299 -0
- package/dist/cjs/src/storage/StateManager.js.map +1 -0
- package/dist/cjs/src/storage/StorageAdapter.js +164 -0
- package/dist/cjs/src/storage/StorageAdapter.js.map +1 -0
- package/dist/cjs/src/storage/index.js +37 -0
- package/dist/cjs/src/storage/index.js.map +1 -0
- package/dist/cjs/src/testing/BrowserStateInjection.js +130 -0
- package/dist/cjs/src/testing/BrowserStateInjection.js.map +1 -0
- package/dist/cjs/src/testing/ComponentStateHelpers.js +200 -0
- package/dist/cjs/src/testing/ComponentStateHelpers.js.map +1 -0
- package/dist/cjs/src/testing/GherkinParser.js +252 -0
- package/dist/cjs/src/testing/GherkinParser.js.map +1 -0
- package/dist/cjs/src/testing/PlaywrightStateHelpers.js +254 -0
- package/dist/cjs/src/testing/PlaywrightStateHelpers.js.map +1 -0
- package/dist/cjs/src/testing/TestRunner.js +158 -0
- package/dist/cjs/src/testing/TestRunner.js.map +1 -0
- package/dist/cjs/src/testing/index.js +46 -0
- package/dist/cjs/src/testing/index.js.map +1 -0
- package/dist/cjs/src/testing/selectors.js +84 -0
- package/dist/cjs/src/testing/selectors.js.map +1 -0
- package/dist/cjs/src/tools/SystemTools.js +262 -0
- package/dist/cjs/src/tools/SystemTools.js.map +1 -0
- package/dist/cjs/src/types/ClassifiedTool.js +50 -0
- package/dist/cjs/src/types/ClassifiedTool.js.map +1 -0
- package/dist/cjs/src/types/ComponentState.js +30 -0
- package/dist/cjs/src/types/ComponentState.js.map +1 -0
- package/dist/cjs/src/types/DiscoverableToolProvider.js +9 -0
- package/dist/cjs/src/types/DiscoverableToolProvider.js.map +1 -0
- package/dist/cjs/src/types/ExposureState.js +25 -0
- package/dist/cjs/src/types/ExposureState.js.map +1 -0
- package/dist/cjs/src/types/NavigationGraph.js +8 -0
- package/dist/cjs/src/types/NavigationGraph.js.map +1 -0
- package/dist/cjs/src/types/OperationType.js +49 -0
- package/dist/cjs/src/types/OperationType.js.map +1 -0
- package/dist/cjs/src/types/StateManagers.js +39 -0
- package/dist/cjs/src/types/StateManagers.js.map +1 -0
- package/dist/cjs/src/types/Tool.js +41 -0
- package/dist/cjs/src/types/Tool.js.map +1 -0
- package/dist/cjs/src/types/ToolPermissions.js +54 -0
- package/dist/cjs/src/types/ToolPermissions.js.map +1 -0
- package/dist/cjs/src/types/ToolResult.js +25 -0
- package/dist/cjs/src/types/ToolResult.js.map +1 -0
- package/dist/cjs/src/types/index.js +59 -0
- package/dist/cjs/src/types/index.js.map +1 -0
- package/dist/cjs/src/ui/react/chat/ChatBubble.js +221 -0
- package/dist/cjs/src/ui/react/chat/ChatBubble.js.map +1 -0
- package/dist/esm/names/API.d.ts +77 -0
- package/dist/esm/names/API.d.ts.map +1 -0
- package/dist/esm/names/API.js +99 -0
- package/dist/esm/names/API.js.map +1 -0
- package/dist/esm/names/Components.d.ts +77 -0
- package/dist/esm/names/Components.d.ts.map +1 -0
- package/dist/esm/names/Components.js +99 -0
- package/dist/esm/names/Components.js.map +1 -0
- package/dist/esm/names/Containers.d.ts +84 -0
- package/dist/esm/names/Containers.d.ts.map +1 -0
- package/dist/esm/names/Containers.js +94 -0
- package/dist/esm/names/Containers.js.map +1 -0
- package/dist/esm/names/Functions.d.ts +87 -0
- package/dist/esm/names/Functions.d.ts.map +1 -0
- package/dist/esm/names/Functions.js +109 -0
- package/dist/esm/names/Functions.js.map +1 -0
- package/dist/esm/names/index.d.ts +187 -0
- package/dist/esm/names/index.d.ts.map +1 -0
- package/dist/esm/names/index.js +99 -0
- package/dist/esm/names/index.js.map +1 -0
- package/dist/esm/src/adapters/ChatUIProvider.d.ts +76 -0
- package/dist/esm/src/adapters/ChatUIProvider.d.ts.map +1 -0
- package/dist/esm/src/adapters/ChatUIProvider.js +136 -0
- package/dist/esm/src/adapters/ChatUIProvider.js.map +1 -0
- package/dist/esm/src/adapters/bridge.d.ts +145 -0
- package/dist/esm/src/adapters/bridge.d.ts.map +1 -0
- package/dist/esm/src/adapters/bridge.js +218 -0
- package/dist/esm/src/adapters/bridge.js.map +1 -0
- package/dist/esm/src/adapters/copilotkit/CopilotKitAdapter.d.ts +49 -0
- package/dist/esm/src/adapters/copilotkit/CopilotKitAdapter.d.ts.map +1 -0
- package/dist/esm/src/adapters/copilotkit/CopilotKitAdapter.js +251 -0
- package/dist/esm/src/adapters/copilotkit/CopilotKitAdapter.js.map +1 -0
- package/dist/esm/src/adapters/copilotkit/index.d.ts +6 -0
- package/dist/esm/src/adapters/copilotkit/index.d.ts.map +1 -0
- package/dist/esm/src/adapters/copilotkit/index.js +5 -0
- package/dist/esm/src/adapters/copilotkit/index.js.map +1 -0
- package/dist/esm/src/adapters/index.d.ts +31 -0
- package/dist/esm/src/adapters/index.d.ts.map +1 -0
- package/dist/esm/src/adapters/index.js +32 -0
- package/dist/esm/src/adapters/index.js.map +1 -0
- package/dist/esm/src/adapters/native/NativeAdapter.d.ts +47 -0
- package/dist/esm/src/adapters/native/NativeAdapter.d.ts.map +1 -0
- package/dist/esm/src/adapters/native/NativeAdapter.js +230 -0
- package/dist/esm/src/adapters/native/NativeAdapter.js.map +1 -0
- package/dist/esm/src/adapters/native/index.d.ts +6 -0
- package/dist/esm/src/adapters/native/index.d.ts.map +1 -0
- package/dist/esm/src/adapters/native/index.js +5 -0
- package/dist/esm/src/adapters/native/index.js.map +1 -0
- package/dist/esm/src/adapters/types/index.d.ts +155 -0
- package/dist/esm/src/adapters/types/index.d.ts.map +1 -0
- package/dist/esm/src/adapters/types/index.js +8 -0
- package/dist/esm/src/adapters/types/index.js.map +1 -0
- package/dist/esm/src/ai/ToolExecutor.d.ts +49 -0
- package/dist/esm/src/ai/ToolExecutor.d.ts.map +1 -0
- package/dist/esm/src/ai/ToolExecutor.js +174 -0
- package/dist/esm/src/ai/ToolExecutor.js.map +1 -0
- package/dist/esm/src/ai/ToolMatcher.d.ts +61 -0
- package/dist/esm/src/ai/ToolMatcher.d.ts.map +1 -0
- package/dist/esm/src/ai/ToolMatcher.js +198 -0
- package/dist/esm/src/ai/ToolMatcher.js.map +1 -0
- package/dist/esm/src/ai/index.d.ts +9 -0
- package/dist/esm/src/ai/index.d.ts.map +1 -0
- package/dist/esm/src/ai/index.js +13 -0
- package/dist/esm/src/ai/index.js.map +1 -0
- package/dist/esm/src/architecture/createContainer.d.ts +60 -0
- package/dist/esm/src/architecture/createContainer.d.ts.map +1 -0
- package/dist/esm/src/architecture/createContainer.js +102 -0
- package/dist/esm/src/architecture/createContainer.js.map +1 -0
- package/dist/esm/src/architecture/initialize.d.ts +81 -0
- package/dist/esm/src/architecture/initialize.d.ts.map +1 -0
- package/dist/esm/src/architecture/initialize.js +121 -0
- package/dist/esm/src/architecture/initialize.js.map +1 -0
- package/dist/esm/src/architecture/registry.d.ts +61 -0
- package/dist/esm/src/architecture/registry.d.ts.map +1 -0
- package/dist/esm/src/architecture/registry.js +107 -0
- package/dist/esm/src/architecture/registry.js.map +1 -0
- package/dist/esm/src/background/architecture/ArchitectureInitializer.d.ts +95 -0
- package/dist/esm/src/background/architecture/ArchitectureInitializer.d.ts.map +1 -0
- package/dist/esm/src/background/architecture/ArchitectureInitializer.js +170 -0
- package/dist/esm/src/background/architecture/ArchitectureInitializer.js.map +1 -0
- package/dist/esm/src/background/architecture/Containers.d.ts +52 -0
- package/dist/esm/src/background/architecture/Containers.d.ts.map +1 -0
- package/dist/esm/src/background/architecture/Containers.js +40 -0
- package/dist/esm/src/background/architecture/Containers.js.map +1 -0
- package/dist/esm/src/background/architecture/DataContractTypes.d.ts +33 -0
- package/dist/esm/src/background/architecture/DataContractTypes.d.ts.map +1 -0
- package/dist/esm/src/background/architecture/DataContractTypes.js +22 -0
- package/dist/esm/src/background/architecture/DataContractTypes.js.map +1 -0
- package/dist/esm/src/background/architecture/index.d.ts +12 -0
- package/dist/esm/src/background/architecture/index.d.ts.map +1 -0
- package/dist/esm/src/background/architecture/index.js +13 -0
- package/dist/esm/src/background/architecture/index.js.map +1 -0
- package/dist/esm/src/background/navigation/NavigationGraph.d.ts +48 -0
- package/dist/esm/src/background/navigation/NavigationGraph.d.ts.map +1 -0
- package/dist/esm/src/background/navigation/NavigationGraph.js +67 -0
- package/dist/esm/src/background/navigation/NavigationGraph.js.map +1 -0
- package/dist/esm/src/background/navigation/RuntimeTreeBuilder.d.ts +30 -0
- package/dist/esm/src/background/navigation/RuntimeTreeBuilder.d.ts.map +1 -0
- package/dist/esm/src/background/navigation/RuntimeTreeBuilder.js +60 -0
- package/dist/esm/src/background/navigation/RuntimeTreeBuilder.js.map +1 -0
- package/dist/esm/src/background/navigation/useComponentTracking.d.ts +10 -0
- package/dist/esm/src/background/navigation/useComponentTracking.d.ts.map +1 -0
- package/dist/esm/src/background/navigation/useComponentTracking.js +17 -0
- package/dist/esm/src/background/navigation/useComponentTracking.js.map +1 -0
- package/dist/esm/src/background/registry/ComponentRegistry.d.ts +192 -0
- package/dist/esm/src/background/registry/ComponentRegistry.d.ts.map +1 -0
- package/dist/esm/src/background/registry/ComponentRegistry.js +336 -0
- package/dist/esm/src/background/registry/ComponentRegistry.js.map +1 -0
- package/dist/esm/src/background/registry/ToolRegistry.d.ts +232 -0
- package/dist/esm/src/background/registry/ToolRegistry.d.ts.map +1 -0
- package/dist/esm/src/background/registry/ToolRegistry.js +664 -0
- package/dist/esm/src/background/registry/ToolRegistry.js.map +1 -0
- package/dist/esm/src/browser.d.ts +21 -0
- package/dist/esm/src/browser.d.ts.map +1 -0
- package/dist/esm/src/browser.js +31 -0
- package/dist/esm/src/browser.js.map +1 -0
- package/dist/esm/src/components/ComponentScanner.d.ts +99 -0
- package/dist/esm/src/components/ComponentScanner.d.ts.map +1 -0
- package/dist/esm/src/components/ComponentScanner.js +325 -0
- package/dist/esm/src/components/ComponentScanner.js.map +1 -0
- package/dist/esm/src/components/index.d.ts +9 -0
- package/dist/esm/src/components/index.d.ts.map +1 -0
- package/dist/esm/src/components/index.js +8 -0
- package/dist/esm/src/components/index.js.map +1 -0
- package/dist/esm/src/data/TestDataManager.d.ts +125 -0
- package/dist/esm/src/data/TestDataManager.d.ts.map +1 -0
- package/dist/esm/src/data/TestDataManager.js +183 -0
- package/dist/esm/src/data/TestDataManager.js.map +1 -0
- package/dist/esm/src/data/index.d.ts +7 -0
- package/dist/esm/src/data/index.d.ts.map +1 -0
- package/dist/esm/src/data/index.js +7 -0
- package/dist/esm/src/data/index.js.map +1 -0
- package/dist/esm/src/decorators/Component.d.ts +59 -0
- package/dist/esm/src/decorators/Component.d.ts.map +1 -0
- package/dist/esm/src/decorators/Component.js +103 -0
- package/dist/esm/src/decorators/Component.js.map +1 -0
- package/dist/esm/src/decorators/ContainerHelpers.d.ts +26 -0
- package/dist/esm/src/decorators/ContainerHelpers.d.ts.map +1 -0
- package/dist/esm/src/decorators/ContainerHelpers.js +42 -0
- package/dist/esm/src/decorators/ContainerHelpers.js.map +1 -0
- package/dist/esm/src/decorators/SpecializedTools.d.ts +218 -0
- package/dist/esm/src/decorators/SpecializedTools.d.ts.map +1 -0
- package/dist/esm/src/decorators/SpecializedTools.js +383 -0
- package/dist/esm/src/decorators/SpecializedTools.js.map +1 -0
- package/dist/esm/src/decorators/Tool.d.ts +210 -0
- package/dist/esm/src/decorators/Tool.d.ts.map +1 -0
- package/dist/esm/src/decorators/Tool.js +694 -0
- package/dist/esm/src/decorators/Tool.js.map +1 -0
- package/dist/esm/src/decorators/ToolHelpers.d.ts +74 -0
- package/dist/esm/src/decorators/ToolHelpers.d.ts.map +1 -0
- package/dist/esm/src/decorators/ToolHelpers.js +219 -0
- package/dist/esm/src/decorators/ToolHelpers.js.map +1 -0
- package/dist/esm/src/decorators/ToolPreset.d.ts +138 -0
- package/dist/esm/src/decorators/ToolPreset.d.ts.map +1 -0
- package/dist/esm/src/decorators/ToolPreset.js +259 -0
- package/dist/esm/src/decorators/ToolPreset.js.map +1 -0
- package/dist/esm/src/decorators/ToolProvider.d.ts +65 -0
- package/dist/esm/src/decorators/ToolProvider.d.ts.map +1 -0
- package/dist/esm/src/decorators/ToolProvider.js +81 -0
- package/dist/esm/src/decorators/ToolProvider.js.map +1 -0
- package/dist/esm/src/decorators/index.d.ts +13 -0
- package/dist/esm/src/decorators/index.d.ts.map +1 -0
- package/dist/esm/src/decorators/index.js +14 -0
- package/dist/esm/src/decorators/index.js.map +1 -0
- package/dist/esm/src/execution/DOMExecutor.d.ts +43 -0
- package/dist/esm/src/execution/DOMExecutor.d.ts.map +1 -0
- package/dist/esm/src/execution/DOMExecutor.js +229 -0
- package/dist/esm/src/execution/DOMExecutor.js.map +1 -0
- package/dist/esm/src/execution/PlaywrightExecutor.d.ts +38 -0
- package/dist/esm/src/execution/PlaywrightExecutor.d.ts.map +1 -0
- package/dist/esm/src/execution/PlaywrightExecutor.js +192 -0
- package/dist/esm/src/execution/PlaywrightExecutor.js.map +1 -0
- package/dist/esm/src/exposure/ExposureCollector.d.ts +88 -0
- package/dist/esm/src/exposure/ExposureCollector.d.ts.map +1 -0
- package/dist/esm/src/exposure/ExposureCollector.js +354 -0
- package/dist/esm/src/exposure/ExposureCollector.js.map +1 -0
- package/dist/esm/src/exposure/index.d.ts +8 -0
- package/dist/esm/src/exposure/index.d.ts.map +1 -0
- package/dist/esm/src/exposure/index.js +10 -0
- package/dist/esm/src/exposure/index.js.map +1 -0
- package/dist/esm/src/index.d.ts +49 -0
- package/dist/esm/src/index.d.ts.map +1 -0
- package/dist/esm/src/index.js +79 -0
- package/dist/esm/src/index.js.map +1 -0
- package/dist/esm/src/interfaces/StatefulComponent.d.ts +72 -0
- package/dist/esm/src/interfaces/StatefulComponent.d.ts.map +1 -0
- package/dist/esm/src/interfaces/StatefulComponent.js +47 -0
- package/dist/esm/src/interfaces/StatefulComponent.js.map +1 -0
- package/dist/esm/src/name-contracts/ContractScanner.d.ts +61 -0
- package/dist/esm/src/name-contracts/ContractScanner.d.ts.map +1 -0
- package/dist/esm/src/name-contracts/ContractScanner.js +11 -0
- package/dist/esm/src/name-contracts/ContractScanner.js.map +1 -0
- package/dist/esm/src/name-contracts/RouteContractScanner.d.ts +30 -0
- package/dist/esm/src/name-contracts/RouteContractScanner.d.ts.map +1 -0
- package/dist/esm/src/name-contracts/RouteContractScanner.js +188 -0
- package/dist/esm/src/name-contracts/RouteContractScanner.js.map +1 -0
- package/dist/esm/src/name-contracts/index.d.ts +10 -0
- package/dist/esm/src/name-contracts/index.d.ts.map +1 -0
- package/dist/esm/src/name-contracts/index.js +10 -0
- package/dist/esm/src/name-contracts/index.js.map +1 -0
- package/dist/esm/src/names/createNames.d.ts +49 -0
- package/dist/esm/src/names/createNames.d.ts.map +1 -0
- package/dist/esm/src/names/createNames.js +81 -0
- package/dist/esm/src/names/createNames.js.map +1 -0
- package/dist/esm/src/react/hooks/useChatWithContext.d.ts +68 -0
- package/dist/esm/src/react/hooks/useChatWithContext.d.ts.map +1 -0
- package/dist/esm/src/react/hooks/useChatWithContext.js +218 -0
- package/dist/esm/src/react/hooks/useChatWithContext.js.map +1 -0
- package/dist/esm/src/react/index.d.ts +12 -0
- package/dist/esm/src/react/index.d.ts.map +1 -0
- package/dist/esm/src/react/index.js +21 -0
- package/dist/esm/src/react/index.js.map +1 -0
- package/dist/esm/src/react/useNavigationHandler.d.ts +42 -0
- package/dist/esm/src/react/useNavigationHandler.d.ts.map +1 -0
- package/dist/esm/src/react/useNavigationHandler.js +85 -0
- package/dist/esm/src/react/useNavigationHandler.js.map +1 -0
- package/dist/esm/src/react/usePersistedState.d.ts +13 -0
- package/dist/esm/src/react/usePersistedState.d.ts.map +1 -0
- package/dist/esm/src/react/usePersistedState.js +69 -0
- package/dist/esm/src/react/usePersistedState.js.map +1 -0
- package/dist/esm/src/react/useToolBinding.d.ts +8 -0
- package/dist/esm/src/react/useToolBinding.d.ts.map +1 -0
- package/dist/esm/src/react/useToolBinding.js +107 -0
- package/dist/esm/src/react/useToolBinding.js.map +1 -0
- package/dist/esm/src/routes/RouteContractGenerator.d.ts +37 -0
- package/dist/esm/src/routes/RouteContractGenerator.d.ts.map +1 -0
- package/dist/esm/src/routes/RouteContractGenerator.js +115 -0
- package/dist/esm/src/routes/RouteContractGenerator.js.map +1 -0
- package/dist/esm/src/routes/RouteContractsConfig.d.ts +93 -0
- package/dist/esm/src/routes/RouteContractsConfig.d.ts.map +1 -0
- package/dist/esm/src/routes/RouteContractsConfig.js +36 -0
- package/dist/esm/src/routes/RouteContractsConfig.js.map +1 -0
- package/dist/esm/src/routes/index.d.ts +13 -0
- package/dist/esm/src/routes/index.d.ts.map +1 -0
- package/dist/esm/src/routes/index.js +13 -0
- package/dist/esm/src/routes/index.js.map +1 -0
- package/dist/esm/src/routes/scanners/NameExtractor.d.ts +36 -0
- package/dist/esm/src/routes/scanners/NameExtractor.d.ts.map +1 -0
- package/dist/esm/src/routes/scanners/NameExtractor.js +156 -0
- package/dist/esm/src/routes/scanners/NameExtractor.js.map +1 -0
- package/dist/esm/src/routes/scanners/NextjsDynamicScanner.d.ts +35 -0
- package/dist/esm/src/routes/scanners/NextjsDynamicScanner.d.ts.map +1 -0
- package/dist/esm/src/routes/scanners/NextjsDynamicScanner.js +98 -0
- package/dist/esm/src/routes/scanners/NextjsDynamicScanner.js.map +1 -0
- package/dist/esm/src/routes/scanners/RouteScanner.d.ts +64 -0
- package/dist/esm/src/routes/scanners/RouteScanner.d.ts.map +1 -0
- package/dist/esm/src/routes/scanners/RouteScanner.js +9 -0
- package/dist/esm/src/routes/scanners/RouteScanner.js.map +1 -0
- package/dist/esm/src/storage/LocalStorageAdapter.d.ts +29 -0
- package/dist/esm/src/storage/LocalStorageAdapter.d.ts.map +1 -0
- package/dist/esm/src/storage/LocalStorageAdapter.js +83 -0
- package/dist/esm/src/storage/LocalStorageAdapter.js.map +1 -0
- package/dist/esm/src/storage/StateManager.d.ts +175 -0
- package/dist/esm/src/storage/StateManager.d.ts.map +1 -0
- package/dist/esm/src/storage/StateManager.js +295 -0
- package/dist/esm/src/storage/StateManager.js.map +1 -0
- package/dist/esm/src/storage/StorageAdapter.d.ts +94 -0
- package/dist/esm/src/storage/StorageAdapter.d.ts.map +1 -0
- package/dist/esm/src/storage/StorageAdapter.js +158 -0
- package/dist/esm/src/storage/StorageAdapter.js.map +1 -0
- package/dist/esm/src/storage/index.d.ts +12 -0
- package/dist/esm/src/storage/index.d.ts.map +1 -0
- package/dist/esm/src/storage/index.js +17 -0
- package/dist/esm/src/storage/index.js.map +1 -0
- package/dist/esm/src/testing/BrowserStateInjection.d.ts +74 -0
- package/dist/esm/src/testing/BrowserStateInjection.d.ts.map +1 -0
- package/dist/esm/src/testing/BrowserStateInjection.js +126 -0
- package/dist/esm/src/testing/BrowserStateInjection.js.map +1 -0
- package/dist/esm/src/testing/ComponentStateHelpers.d.ts +121 -0
- package/dist/esm/src/testing/ComponentStateHelpers.d.ts.map +1 -0
- package/dist/esm/src/testing/ComponentStateHelpers.js +190 -0
- package/dist/esm/src/testing/ComponentStateHelpers.js.map +1 -0
- package/dist/esm/src/testing/GherkinParser.d.ts +87 -0
- package/dist/esm/src/testing/GherkinParser.d.ts.map +1 -0
- package/dist/esm/src/testing/GherkinParser.js +248 -0
- package/dist/esm/src/testing/GherkinParser.js.map +1 -0
- package/dist/esm/src/testing/PlaywrightStateHelpers.d.ts +163 -0
- package/dist/esm/src/testing/PlaywrightStateHelpers.d.ts.map +1 -0
- package/dist/esm/src/testing/PlaywrightStateHelpers.js +242 -0
- package/dist/esm/src/testing/PlaywrightStateHelpers.js.map +1 -0
- package/dist/esm/src/testing/TestRunner.d.ts +50 -0
- package/dist/esm/src/testing/TestRunner.d.ts.map +1 -0
- package/dist/esm/src/testing/TestRunner.js +121 -0
- package/dist/esm/src/testing/TestRunner.js.map +1 -0
- package/dist/esm/src/testing/index.d.ts +12 -0
- package/dist/esm/src/testing/index.d.ts.map +1 -0
- package/dist/esm/src/testing/index.js +25 -0
- package/dist/esm/src/testing/index.js.map +1 -0
- package/dist/esm/src/testing/selectors.d.ts +65 -0
- package/dist/esm/src/testing/selectors.d.ts.map +1 -0
- package/dist/esm/src/testing/selectors.js +76 -0
- package/dist/esm/src/testing/selectors.js.map +1 -0
- package/dist/esm/src/tools/SystemTools.d.ts +139 -0
- package/dist/esm/src/tools/SystemTools.d.ts.map +1 -0
- package/dist/esm/src/tools/SystemTools.js +258 -0
- package/dist/esm/src/tools/SystemTools.js.map +1 -0
- package/dist/esm/src/types/ClassifiedTool.d.ts +61 -0
- package/dist/esm/src/types/ClassifiedTool.d.ts.map +1 -0
- package/dist/esm/src/types/ClassifiedTool.js +47 -0
- package/dist/esm/src/types/ClassifiedTool.js.map +1 -0
- package/dist/esm/src/types/ComponentState.d.ts +207 -0
- package/dist/esm/src/types/ComponentState.d.ts.map +1 -0
- package/dist/esm/src/types/ComponentState.js +25 -0
- package/dist/esm/src/types/ComponentState.js.map +1 -0
- package/dist/esm/src/types/DiscoverableToolProvider.d.ts +59 -0
- package/dist/esm/src/types/DiscoverableToolProvider.d.ts.map +1 -0
- package/dist/esm/src/types/DiscoverableToolProvider.js +8 -0
- package/dist/esm/src/types/DiscoverableToolProvider.js.map +1 -0
- package/dist/esm/src/types/ExposureState.d.ts +75 -0
- package/dist/esm/src/types/ExposureState.d.ts.map +1 -0
- package/dist/esm/src/types/ExposureState.js +22 -0
- package/dist/esm/src/types/ExposureState.js.map +1 -0
- package/dist/esm/src/types/NavigationGraph.d.ts +98 -0
- package/dist/esm/src/types/NavigationGraph.d.ts.map +1 -0
- package/dist/esm/src/types/NavigationGraph.js +7 -0
- package/dist/esm/src/types/NavigationGraph.js.map +1 -0
- package/dist/esm/src/types/OperationType.d.ts +45 -0
- package/dist/esm/src/types/OperationType.d.ts.map +1 -0
- package/dist/esm/src/types/OperationType.js +46 -0
- package/dist/esm/src/types/OperationType.js.map +1 -0
- package/dist/esm/src/types/StateManagers.d.ts +35 -0
- package/dist/esm/src/types/StateManagers.d.ts.map +1 -0
- package/dist/esm/src/types/StateManagers.js +36 -0
- package/dist/esm/src/types/StateManagers.js.map +1 -0
- package/dist/esm/src/types/Tool.d.ts +162 -0
- package/dist/esm/src/types/Tool.d.ts.map +1 -0
- package/dist/esm/src/types/Tool.js +38 -0
- package/dist/esm/src/types/Tool.js.map +1 -0
- package/dist/esm/src/types/ToolPermissions.d.ts +73 -0
- package/dist/esm/src/types/ToolPermissions.d.ts.map +1 -0
- package/dist/esm/src/types/ToolPermissions.js +51 -0
- package/dist/esm/src/types/ToolPermissions.js.map +1 -0
- package/dist/esm/src/types/ToolResult.d.ts +129 -0
- package/dist/esm/src/types/ToolResult.d.ts.map +1 -0
- package/dist/esm/src/types/ToolResult.js +22 -0
- package/dist/esm/src/types/ToolResult.js.map +1 -0
- package/dist/esm/src/types/index.d.ts +47 -0
- package/dist/esm/src/types/index.d.ts.map +1 -0
- package/dist/esm/src/types/index.js +42 -0
- package/dist/esm/src/types/index.js.map +1 -0
- package/dist/esm/src/ui/react/chat/ChatBubble.d.ts +23 -0
- package/dist/esm/src/ui/react/chat/ChatBubble.d.ts.map +1 -0
- package/dist/esm/src/ui/react/chat/ChatBubble.js +184 -0
- package/dist/esm/src/ui/react/chat/ChatBubble.js.map +1 -0
- package/package.json +118 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser State Injection - Test Utilities
|
|
3
|
+
*
|
|
4
|
+
* Provides mechanism for E2E tests to set and read component state
|
|
5
|
+
* in the browser context. Only active in test environments.
|
|
6
|
+
*
|
|
7
|
+
* @module BrowserStateInjection
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Global test state interface
|
|
11
|
+
* Exposed on window for Playwright tests to access
|
|
12
|
+
*/
|
|
13
|
+
export interface TestStateManager {
|
|
14
|
+
/**
|
|
15
|
+
* Set component state via custom event
|
|
16
|
+
* @param component - Component name (from @Component decorator)
|
|
17
|
+
* @param state - Partial state to merge
|
|
18
|
+
*/
|
|
19
|
+
setState(component: string, state: any): void;
|
|
20
|
+
/**
|
|
21
|
+
* Get component state by reading data-state attribute
|
|
22
|
+
* @param component - Component name
|
|
23
|
+
* @returns Current component state or undefined
|
|
24
|
+
*/
|
|
25
|
+
getState(component: string): any | undefined;
|
|
26
|
+
/**
|
|
27
|
+
* Wait for component to be ready (registered and rendered)
|
|
28
|
+
* @param component - Component name
|
|
29
|
+
* @param timeoutMs - Timeout in milliseconds (default: 5000)
|
|
30
|
+
*/
|
|
31
|
+
waitForComponent(component: string, timeoutMs?: number): Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
* Reset component to initial state
|
|
34
|
+
* @param component - Component name
|
|
35
|
+
*/
|
|
36
|
+
resetState(component: string): void;
|
|
37
|
+
/**
|
|
38
|
+
* Check if component is registered and available
|
|
39
|
+
* @param component - Component name
|
|
40
|
+
*/
|
|
41
|
+
hasComponent(component: string): boolean;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Custom event detail for state updates
|
|
45
|
+
*/
|
|
46
|
+
export interface StateUpdateEvent {
|
|
47
|
+
component: string;
|
|
48
|
+
state: any;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Custom event detail for state reset
|
|
52
|
+
*/
|
|
53
|
+
export interface StateResetEvent {
|
|
54
|
+
component: string;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Initialize test state manager on window
|
|
58
|
+
* Only runs in test environment
|
|
59
|
+
*/
|
|
60
|
+
export declare function initializeTestStateManager(): void;
|
|
61
|
+
/**
|
|
62
|
+
* Get test state manager from window
|
|
63
|
+
* Returns undefined if not in browser or not test environment
|
|
64
|
+
*/
|
|
65
|
+
export declare function getTestStateManager(): TestStateManager | undefined;
|
|
66
|
+
/**
|
|
67
|
+
* Type augmentation for Window interface
|
|
68
|
+
*/
|
|
69
|
+
declare global {
|
|
70
|
+
interface Window {
|
|
71
|
+
__testState__?: TestStateManager;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=BrowserStateInjection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BrowserStateInjection.d.ts","sourceRoot":"","sources":["../../../../src/testing/BrowserStateInjection.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI,CAAC;IAE9C;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,GAAG,GAAG,SAAS,CAAC;IAE7C;;;;OAIG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvE;;;OAGG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAEpC;;;OAGG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1C;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,GAAG,CAAC;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;CACnB;AAqGD;;;GAGG;AACH,wBAAgB,0BAA0B,IAAI,IAAI,CAmBjD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,gBAAgB,GAAG,SAAS,CAMlE;AAOD;;GAEG;AACH,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,aAAa,CAAC,EAAE,gBAAgB,CAAC;KAClC;CACF"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser State Injection - Test Utilities
|
|
3
|
+
*
|
|
4
|
+
* Provides mechanism for E2E tests to set and read component state
|
|
5
|
+
* in the browser context. Only active in test environments.
|
|
6
|
+
*
|
|
7
|
+
* @module BrowserStateInjection
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Test state manager implementation
|
|
11
|
+
* Available as window.__testState__ in test environments
|
|
12
|
+
*/
|
|
13
|
+
class BrowserTestStateManager {
|
|
14
|
+
constructor() {
|
|
15
|
+
this.eventPrefix = 'test:';
|
|
16
|
+
}
|
|
17
|
+
setState(component, state) {
|
|
18
|
+
if (typeof window === 'undefined') {
|
|
19
|
+
throw new Error('setState can only be called in browser context');
|
|
20
|
+
}
|
|
21
|
+
const event = new CustomEvent(`${this.eventPrefix}setState`, {
|
|
22
|
+
detail: { component, state },
|
|
23
|
+
bubbles: false,
|
|
24
|
+
cancelable: false,
|
|
25
|
+
});
|
|
26
|
+
window.dispatchEvent(event);
|
|
27
|
+
// Also log for debugging
|
|
28
|
+
if (process.env.NODE_ENV === 'test') {
|
|
29
|
+
console.log(`[TEST] setState: ${component}`, state);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
getState(component) {
|
|
33
|
+
if (typeof window === 'undefined') {
|
|
34
|
+
throw new Error('getState can only be called in browser context');
|
|
35
|
+
}
|
|
36
|
+
// Find element by component name
|
|
37
|
+
const element = document.querySelector(`[data-component="${component}"]`);
|
|
38
|
+
if (!element) {
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
// Read state from data-state attribute
|
|
42
|
+
const stateAttr = element.getAttribute('data-state');
|
|
43
|
+
if (!stateAttr) {
|
|
44
|
+
return undefined;
|
|
45
|
+
}
|
|
46
|
+
try {
|
|
47
|
+
return JSON.parse(stateAttr);
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
console.error(`[TEST] Failed to parse state for ${component}:`, error);
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
async waitForComponent(component, timeoutMs = 5000) {
|
|
55
|
+
if (typeof window === 'undefined') {
|
|
56
|
+
throw new Error('waitForComponent can only be called in browser context');
|
|
57
|
+
}
|
|
58
|
+
const startTime = Date.now();
|
|
59
|
+
while (Date.now() - startTime < timeoutMs) {
|
|
60
|
+
const element = document.querySelector(`[data-component="${component}"]`);
|
|
61
|
+
if (element) {
|
|
62
|
+
// Component element exists, wait a bit for React to initialize
|
|
63
|
+
await new Promise(resolve => setTimeout(resolve, 100));
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
await new Promise(resolve => setTimeout(resolve, 100));
|
|
67
|
+
}
|
|
68
|
+
throw new Error(`Component '${component}' not found after ${timeoutMs}ms`);
|
|
69
|
+
}
|
|
70
|
+
resetState(component) {
|
|
71
|
+
if (typeof window === 'undefined') {
|
|
72
|
+
throw new Error('resetState can only be called in browser context');
|
|
73
|
+
}
|
|
74
|
+
const event = new CustomEvent(`${this.eventPrefix}resetState`, {
|
|
75
|
+
detail: { component },
|
|
76
|
+
bubbles: false,
|
|
77
|
+
cancelable: false,
|
|
78
|
+
});
|
|
79
|
+
window.dispatchEvent(event);
|
|
80
|
+
if (process.env.NODE_ENV === 'test') {
|
|
81
|
+
console.log(`[TEST] resetState: ${component}`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
hasComponent(component) {
|
|
85
|
+
if (typeof window === 'undefined') {
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
const element = document.querySelector(`[data-component="${component}"]`);
|
|
89
|
+
return !!element;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Initialize test state manager on window
|
|
94
|
+
* Only runs in test environment
|
|
95
|
+
*/
|
|
96
|
+
export function initializeTestStateManager() {
|
|
97
|
+
if (typeof window === 'undefined') {
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
// Only initialize in test environment
|
|
101
|
+
if (process.env.NODE_ENV !== 'test') {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
// Check if already initialized
|
|
105
|
+
if (window.__testState__) {
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
// Create and expose test state manager
|
|
109
|
+
window.__testState__ = new BrowserTestStateManager();
|
|
110
|
+
console.log('[TEST] Browser state injection initialized');
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Get test state manager from window
|
|
114
|
+
* Returns undefined if not in browser or not test environment
|
|
115
|
+
*/
|
|
116
|
+
export function getTestStateManager() {
|
|
117
|
+
if (typeof window === 'undefined') {
|
|
118
|
+
return undefined;
|
|
119
|
+
}
|
|
120
|
+
return window.__testState__;
|
|
121
|
+
}
|
|
122
|
+
// Auto-initialize in test environment
|
|
123
|
+
if (typeof window !== 'undefined' && process.env.NODE_ENV === 'test') {
|
|
124
|
+
initializeTestStateManager();
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=BrowserStateInjection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BrowserStateInjection.js","sourceRoot":"","sources":["../../../../src/testing/BrowserStateInjection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generalized State-Based Test Helpers
|
|
3
|
+
*
|
|
4
|
+
* Utilities for testing ANY component using data contracts instead of UI text.
|
|
5
|
+
* These helpers provide a component-agnostic way to assert state.
|
|
6
|
+
*
|
|
7
|
+
* @module tests/generalized-state-helpers
|
|
8
|
+
*/
|
|
9
|
+
import { Page } from '@playwright/test';
|
|
10
|
+
/**
|
|
11
|
+
* Get state from any component that exposes it
|
|
12
|
+
*
|
|
13
|
+
* @param page - Playwright page
|
|
14
|
+
* @param componentId - Component identifier (e.g., 'demo-widgets', 'chat', 'counter')
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* const state = await getComponentState(page, 'demo-widgets');
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export declare function getComponentState<TState = any>(page: Page, componentId: string): Promise<TState>;
|
|
22
|
+
/**
|
|
23
|
+
* Assert component state matches expected values
|
|
24
|
+
*
|
|
25
|
+
* @param page - Playwright page
|
|
26
|
+
* @param componentId - Component identifier
|
|
27
|
+
* @param expected - Partial state to match
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```typescript
|
|
31
|
+
* await assertComponentState(page, 'demo-widgets', { menuOpen: true });
|
|
32
|
+
* await assertComponentState(page, 'counter', { count: 5 });
|
|
33
|
+
* await assertComponentState(page, 'chat', { isMinimized: false });
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export declare function assertComponentState<TState = any>(page: Page, componentId: string, expected: Partial<TState>): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* Set component state (if component supports it)
|
|
39
|
+
*
|
|
40
|
+
* @param page - Playwright page
|
|
41
|
+
* @param componentId - Component identifier
|
|
42
|
+
* @param updates - Partial state to set
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```typescript
|
|
46
|
+
* await setComponentState(page, 'demo-widgets', { theme: 'dark' });
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
export declare function setComponentState<TState = any>(page: Page, componentId: string, updates: Partial<TState>): Promise<void>;
|
|
50
|
+
/**
|
|
51
|
+
* Wait for component state to match condition
|
|
52
|
+
*
|
|
53
|
+
* @param page - Playwright page
|
|
54
|
+
* @param componentId - Component identifier
|
|
55
|
+
* @param condition - Function that returns true when state is ready
|
|
56
|
+
* @param options - Timeout and polling options
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* ```typescript
|
|
60
|
+
* await waitForComponentState(page, 'chat',
|
|
61
|
+
* state => state.messages.length > 0
|
|
62
|
+
* );
|
|
63
|
+
* ```
|
|
64
|
+
*/
|
|
65
|
+
export declare function waitForComponentState<TState = any>(page: Page, componentId: string, condition: (state: TState) => boolean, options?: {
|
|
66
|
+
timeout?: number;
|
|
67
|
+
pollInterval?: number;
|
|
68
|
+
}): Promise<void>;
|
|
69
|
+
/**
|
|
70
|
+
* Assert state via data-state attributes (alternative approach)
|
|
71
|
+
* Useful when component doesn't expose JS state but adds data attributes
|
|
72
|
+
*
|
|
73
|
+
* @param page - Playwright page
|
|
74
|
+
* @param selector - CSS selector for component
|
|
75
|
+
* @param attribute - data-state-* attribute name
|
|
76
|
+
* @param expectedValue - Expected attribute value
|
|
77
|
+
*
|
|
78
|
+
* @example
|
|
79
|
+
* ```typescript
|
|
80
|
+
* await assertStateAttribute(page, '[data-testid="menu"]', 'data-state-open', 'true');
|
|
81
|
+
* ```
|
|
82
|
+
*/
|
|
83
|
+
export declare function assertStateAttribute(page: Page, selector: string, attribute: string, expectedValue: string): Promise<void>;
|
|
84
|
+
/**
|
|
85
|
+
* Get all registered component state IDs
|
|
86
|
+
* Useful for debugging
|
|
87
|
+
*
|
|
88
|
+
* @param page - Playwright page
|
|
89
|
+
* @returns Array of component IDs that expose state
|
|
90
|
+
*
|
|
91
|
+
* @example
|
|
92
|
+
* ```typescript
|
|
93
|
+
* const components = await getRegisteredComponents(page);
|
|
94
|
+
* console.log('Available:', components); // ['demo-widgets', 'chat', 'counter']
|
|
95
|
+
* ```
|
|
96
|
+
*/
|
|
97
|
+
export declare function getRegisteredComponents(page: Page): Promise<string[]>;
|
|
98
|
+
/**
|
|
99
|
+
* Debug helper: Print current state of a component
|
|
100
|
+
*
|
|
101
|
+
* @param page - Playwright page
|
|
102
|
+
* @param componentId - Component identifier
|
|
103
|
+
*
|
|
104
|
+
* @example
|
|
105
|
+
* ```typescript
|
|
106
|
+
* await debugComponentState(page, 'demo-widgets');
|
|
107
|
+
* ```
|
|
108
|
+
*/
|
|
109
|
+
export declare function debugComponentState(page: Page, componentId: string): Promise<void>;
|
|
110
|
+
/**
|
|
111
|
+
* Debug helper: Print all component states
|
|
112
|
+
*
|
|
113
|
+
* @param page - Playwright page
|
|
114
|
+
*
|
|
115
|
+
* @example
|
|
116
|
+
* ```typescript
|
|
117
|
+
* await debugAllComponentStates(page);
|
|
118
|
+
* ```
|
|
119
|
+
*/
|
|
120
|
+
export declare function debugAllComponentStates(page: Page): Promise<void>;
|
|
121
|
+
//# sourceMappingURL=ComponentStateHelpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ComponentStateHelpers.d.ts","sourceRoot":"","sources":["../../../../src/testing/ComponentStateHelpers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,IAAI,EAAU,MAAM,kBAAkB,CAAC;AAWhD;;;;;;;;;;GAUG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,GAAG,GAAG,EAClD,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CAWjB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,GAAG,GAAG,EACrD,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,GACxB,OAAO,CAAC,IAAI,CAAC,CAkBf;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,GAAG,GAAG,EAClD,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,GACvB,OAAO,CAAC,IAAI,CAAC,CAaf;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,qBAAqB,CAAC,MAAM,GAAG,GAAG,EACtD,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,EACrC,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAO,GACxD,OAAO,CAAC,IAAI,CAAC,CAkBf;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC,CAGf;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAI3E;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAKf;AAED;;;;;;;;;GASG;AACH,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAevE"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generalized State-Based Test Helpers
|
|
3
|
+
*
|
|
4
|
+
* Utilities for testing ANY component using data contracts instead of UI text.
|
|
5
|
+
* These helpers provide a component-agnostic way to assert state.
|
|
6
|
+
*
|
|
7
|
+
* @module tests/generalized-state-helpers
|
|
8
|
+
*/
|
|
9
|
+
import { expect } from '@playwright/test';
|
|
10
|
+
/**
|
|
11
|
+
* Get state from any component that exposes it
|
|
12
|
+
*
|
|
13
|
+
* @param page - Playwright page
|
|
14
|
+
* @param componentId - Component identifier (e.g., 'demo-widgets', 'chat', 'counter')
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* const state = await getComponentState(page, 'demo-widgets');
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export async function getComponentState(page, componentId) {
|
|
22
|
+
return await page.evaluate((id) => {
|
|
23
|
+
if (window.__componentState__?.[id]) {
|
|
24
|
+
return window.__componentState__[id].get();
|
|
25
|
+
}
|
|
26
|
+
throw new Error(`Component state not exposed for: ${id}\n` +
|
|
27
|
+
`Available components: ${Object.keys(window.__componentState__ || {}).join(', ')}\n` +
|
|
28
|
+
`Make sure the component exposes state via window.__componentState__['${id}']`);
|
|
29
|
+
}, componentId);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Assert component state matches expected values
|
|
33
|
+
*
|
|
34
|
+
* @param page - Playwright page
|
|
35
|
+
* @param componentId - Component identifier
|
|
36
|
+
* @param expected - Partial state to match
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```typescript
|
|
40
|
+
* await assertComponentState(page, 'demo-widgets', { menuOpen: true });
|
|
41
|
+
* await assertComponentState(page, 'counter', { count: 5 });
|
|
42
|
+
* await assertComponentState(page, 'chat', { isMinimized: false });
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
export async function assertComponentState(page, componentId, expected) {
|
|
46
|
+
const actual = await getComponentState(page, componentId);
|
|
47
|
+
// Check each expected key matches
|
|
48
|
+
for (const key of Object.keys(expected)) {
|
|
49
|
+
const expectedValue = expected[key];
|
|
50
|
+
const actualValue = actual[key];
|
|
51
|
+
if (JSON.stringify(actualValue) !== JSON.stringify(expectedValue)) {
|
|
52
|
+
throw new Error(`State mismatch for component "${componentId}".\n` +
|
|
53
|
+
`Field: ${key}\n` +
|
|
54
|
+
`Expected: ${JSON.stringify(expectedValue)}\n` +
|
|
55
|
+
`Actual: ${JSON.stringify(actualValue)}\n` +
|
|
56
|
+
`Full state: ${JSON.stringify(actual, null, 2)}`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Set component state (if component supports it)
|
|
62
|
+
*
|
|
63
|
+
* @param page - Playwright page
|
|
64
|
+
* @param componentId - Component identifier
|
|
65
|
+
* @param updates - Partial state to set
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* ```typescript
|
|
69
|
+
* await setComponentState(page, 'demo-widgets', { theme: 'dark' });
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
export async function setComponentState(page, componentId, updates) {
|
|
73
|
+
await page.evaluate(({ id, state }) => {
|
|
74
|
+
if (window.__componentState__?.[id]?.update) {
|
|
75
|
+
window.__componentState__[id].update(state);
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
throw new Error(`Component ${id} does not support state updates or is not exposed`);
|
|
79
|
+
}
|
|
80
|
+
}, { id: componentId, state: updates });
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Wait for component state to match condition
|
|
84
|
+
*
|
|
85
|
+
* @param page - Playwright page
|
|
86
|
+
* @param componentId - Component identifier
|
|
87
|
+
* @param condition - Function that returns true when state is ready
|
|
88
|
+
* @param options - Timeout and polling options
|
|
89
|
+
*
|
|
90
|
+
* @example
|
|
91
|
+
* ```typescript
|
|
92
|
+
* await waitForComponentState(page, 'chat',
|
|
93
|
+
* state => state.messages.length > 0
|
|
94
|
+
* );
|
|
95
|
+
* ```
|
|
96
|
+
*/
|
|
97
|
+
export async function waitForComponentState(page, componentId, condition, options = {}) {
|
|
98
|
+
const { timeout = 5000, pollInterval = 100 } = options;
|
|
99
|
+
const startTime = Date.now();
|
|
100
|
+
while (Date.now() - startTime < timeout) {
|
|
101
|
+
const state = await getComponentState(page, componentId);
|
|
102
|
+
if (condition(state)) {
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
await page.waitForTimeout(pollInterval);
|
|
106
|
+
}
|
|
107
|
+
const currentState = await getComponentState(page, componentId);
|
|
108
|
+
throw new Error(`Timeout waiting for component state condition after ${timeout}ms.\n` +
|
|
109
|
+
`Component: ${componentId}\n` +
|
|
110
|
+
`Current state: ${JSON.stringify(currentState, null, 2)}`);
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Assert state via data-state attributes (alternative approach)
|
|
114
|
+
* Useful when component doesn't expose JS state but adds data attributes
|
|
115
|
+
*
|
|
116
|
+
* @param page - Playwright page
|
|
117
|
+
* @param selector - CSS selector for component
|
|
118
|
+
* @param attribute - data-state-* attribute name
|
|
119
|
+
* @param expectedValue - Expected attribute value
|
|
120
|
+
*
|
|
121
|
+
* @example
|
|
122
|
+
* ```typescript
|
|
123
|
+
* await assertStateAttribute(page, '[data-testid="menu"]', 'data-state-open', 'true');
|
|
124
|
+
* ```
|
|
125
|
+
*/
|
|
126
|
+
export async function assertStateAttribute(page, selector, attribute, expectedValue) {
|
|
127
|
+
const element = page.locator(selector);
|
|
128
|
+
await expect(element).toHaveAttribute(attribute, expectedValue);
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Get all registered component state IDs
|
|
132
|
+
* Useful for debugging
|
|
133
|
+
*
|
|
134
|
+
* @param page - Playwright page
|
|
135
|
+
* @returns Array of component IDs that expose state
|
|
136
|
+
*
|
|
137
|
+
* @example
|
|
138
|
+
* ```typescript
|
|
139
|
+
* const components = await getRegisteredComponents(page);
|
|
140
|
+
* console.log('Available:', components); // ['demo-widgets', 'chat', 'counter']
|
|
141
|
+
* ```
|
|
142
|
+
*/
|
|
143
|
+
export async function getRegisteredComponents(page) {
|
|
144
|
+
return await page.evaluate(() => {
|
|
145
|
+
return Object.keys(window.__componentState__ || {});
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Debug helper: Print current state of a component
|
|
150
|
+
*
|
|
151
|
+
* @param page - Playwright page
|
|
152
|
+
* @param componentId - Component identifier
|
|
153
|
+
*
|
|
154
|
+
* @example
|
|
155
|
+
* ```typescript
|
|
156
|
+
* await debugComponentState(page, 'demo-widgets');
|
|
157
|
+
* ```
|
|
158
|
+
*/
|
|
159
|
+
export async function debugComponentState(page, componentId) {
|
|
160
|
+
const state = await getComponentState(page, componentId);
|
|
161
|
+
console.log(`=== ${componentId} State ===`);
|
|
162
|
+
console.log(JSON.stringify(state, null, 2));
|
|
163
|
+
console.log('========================');
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Debug helper: Print all component states
|
|
167
|
+
*
|
|
168
|
+
* @param page - Playwright page
|
|
169
|
+
*
|
|
170
|
+
* @example
|
|
171
|
+
* ```typescript
|
|
172
|
+
* await debugAllComponentStates(page);
|
|
173
|
+
* ```
|
|
174
|
+
*/
|
|
175
|
+
export async function debugAllComponentStates(page) {
|
|
176
|
+
const components = await getRegisteredComponents(page);
|
|
177
|
+
console.log(`\n=== All Component States (${components.length} found) ===`);
|
|
178
|
+
for (const id of components) {
|
|
179
|
+
try {
|
|
180
|
+
const state = await getComponentState(page, id);
|
|
181
|
+
console.log(`\n[${id}]:`);
|
|
182
|
+
console.log(JSON.stringify(state, null, 2));
|
|
183
|
+
}
|
|
184
|
+
catch (error) {
|
|
185
|
+
console.log(`\n[${id}]: Error - ${error}`);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
console.log('\n========================================\n');
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=ComponentStateHelpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ComponentStateHelpers.js","sourceRoot":"","sources":["../../../../src/testing/ComponentStateHelpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gherkin Parser
|
|
3
|
+
*
|
|
4
|
+
* Parses Gherkin .feature files and converts them to executable test scenarios.
|
|
5
|
+
* Basic open-source version (Story system is enterprise edition).
|
|
6
|
+
*/
|
|
7
|
+
export interface GherkinFeature {
|
|
8
|
+
name: string;
|
|
9
|
+
description?: string;
|
|
10
|
+
tags?: string[];
|
|
11
|
+
scenarios: GherkinScenario[];
|
|
12
|
+
}
|
|
13
|
+
export interface GherkinScenario {
|
|
14
|
+
name: string;
|
|
15
|
+
tags?: string[];
|
|
16
|
+
steps: GherkinStep[];
|
|
17
|
+
}
|
|
18
|
+
export interface GherkinStep {
|
|
19
|
+
keyword: 'Given' | 'When' | 'Then' | 'And' | 'But';
|
|
20
|
+
text: string;
|
|
21
|
+
toolId?: string;
|
|
22
|
+
params?: Record<string, any>;
|
|
23
|
+
}
|
|
24
|
+
export declare class GherkinParser {
|
|
25
|
+
/**
|
|
26
|
+
* Parse a Gherkin feature file content
|
|
27
|
+
*/
|
|
28
|
+
static parseFeature(content: string): GherkinFeature;
|
|
29
|
+
/**
|
|
30
|
+
* Resolve tool IDs from step text using natural language matching
|
|
31
|
+
*/
|
|
32
|
+
static resolveSteps(steps: GherkinStep[]): GherkinStep[];
|
|
33
|
+
/**
|
|
34
|
+
* Extract parameters from step text
|
|
35
|
+
*/
|
|
36
|
+
private static extractParameters;
|
|
37
|
+
/**
|
|
38
|
+
* Convert Gherkin scenario to Story definition
|
|
39
|
+
*
|
|
40
|
+
* NOTE: Story system is part of @supernal/interface-enterprise
|
|
41
|
+
* This method is not available in the open source edition.
|
|
42
|
+
*
|
|
43
|
+
* For enterprise features including story system, visit:
|
|
44
|
+
* https://supernal.ai/enterprise
|
|
45
|
+
*/
|
|
46
|
+
static scenarioToStory(scenario: GherkinScenario, featureName: string): any;
|
|
47
|
+
/**
|
|
48
|
+
* Convert entire feature to stories and register them
|
|
49
|
+
*
|
|
50
|
+
* NOTE: Story system is part of @supernal/interface-enterprise
|
|
51
|
+
* This method is not available in the open source edition.
|
|
52
|
+
*/
|
|
53
|
+
static featureToStories(feature: GherkinFeature): any[];
|
|
54
|
+
/**
|
|
55
|
+
* Generate unique story ID from feature and scenario names
|
|
56
|
+
*/
|
|
57
|
+
private static generateStoryId;
|
|
58
|
+
/**
|
|
59
|
+
* Generate Gherkin steps from tools
|
|
60
|
+
* Moved from ToolPromptGenerator for consolidation
|
|
61
|
+
*/
|
|
62
|
+
static generateSteps(tools: any[]): string;
|
|
63
|
+
/**
|
|
64
|
+
* Generate complete Gherkin feature from tool metadata
|
|
65
|
+
* Consolidated from both ToolPromptGenerator and original generateFeature
|
|
66
|
+
*/
|
|
67
|
+
static generateFeature(featureName: string, tools: any[], options?: {
|
|
68
|
+
description?: string;
|
|
69
|
+
tags?: string[];
|
|
70
|
+
}): string;
|
|
71
|
+
/**
|
|
72
|
+
* Generate Playwright test from Gherkin feature
|
|
73
|
+
*/
|
|
74
|
+
static generatePlaywrightTest(feature: GherkinFeature): string;
|
|
75
|
+
/**
|
|
76
|
+
* Validate round-trip: Generate → Parse → Generate
|
|
77
|
+
* Ensures parsing and generation are consistent
|
|
78
|
+
*/
|
|
79
|
+
static validateRoundTrip(tools: any[], featureName?: string): {
|
|
80
|
+
valid: boolean;
|
|
81
|
+
original: string;
|
|
82
|
+
parsed: GherkinFeature;
|
|
83
|
+
regenerated: string;
|
|
84
|
+
errors: string[];
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=GherkinParser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GherkinParser.d.ts","sourceRoot":"","sources":["../../../../src/testing/GherkinParser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,EAAE,eAAe,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC9B;AAED,qBAAa,aAAa;IACxB;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc;IAiEpD;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE;IA0BxD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAkBhC;;;;;;;;OAQG;IACH,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,GAAG,GAAG;IAO3E;;;;;OAKG;IACH,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,cAAc,GAAG,GAAG,EAAE;IAOvD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAM9B;;;OAGG;IACH,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,MAAM;IAW1C;;;OAGG;IACH,MAAM,CAAC,eAAe,CACpB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,GAAG,EAAE,EACZ,OAAO,CAAC,EAAE;QACR,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;KACjB,GACA,MAAM;IAuBT;;OAEG;IACH,MAAM,CAAC,sBAAsB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM;IA4B9D;;;OAGG;IACH,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,WAAW,GAAE,MAAuB,GAAG;QAC5E,KAAK,EAAE,OAAO,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,cAAc,CAAC;QACvB,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB;CAqDF"}
|