@qontinui/ui-bridge 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/dist/control/index.d.mts +134 -0
  2. package/dist/control/index.d.ts +134 -0
  3. package/dist/control/index.js +924 -0
  4. package/dist/control/index.js.map +1 -0
  5. package/dist/control/index.mjs +919 -0
  6. package/dist/control/index.mjs.map +1 -0
  7. package/dist/core/index.d.mts +52 -0
  8. package/dist/core/index.d.ts +52 -0
  9. package/dist/core/index.js +1424 -0
  10. package/dist/core/index.js.map +1 -0
  11. package/dist/core/index.mjs +1409 -0
  12. package/dist/core/index.mjs.map +1 -0
  13. package/dist/debug/index.d.mts +93 -0
  14. package/dist/debug/index.d.ts +93 -0
  15. package/dist/debug/index.js +673 -0
  16. package/dist/debug/index.js.map +1 -0
  17. package/dist/debug/index.mjs +664 -0
  18. package/dist/debug/index.mjs.map +1 -0
  19. package/dist/index.d.mts +12 -0
  20. package/dist/index.d.ts +12 -0
  21. package/dist/index.js +4719 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/index.mjs +4665 -0
  24. package/dist/index.mjs.map +1 -0
  25. package/dist/metrics-BCG7z7Aq.d.mts +147 -0
  26. package/dist/metrics-QCnK0EFw.d.ts +147 -0
  27. package/dist/react/index.d.mts +786 -0
  28. package/dist/react/index.d.ts +786 -0
  29. package/dist/react/index.js +4312 -0
  30. package/dist/react/index.js.map +1 -0
  31. package/dist/react/index.mjs +4290 -0
  32. package/dist/react/index.mjs.map +1 -0
  33. package/dist/registry-CT6BVVKr.d.mts +253 -0
  34. package/dist/registry-D4mQ01B3.d.ts +253 -0
  35. package/dist/render-log/index.d.mts +340 -0
  36. package/dist/render-log/index.d.ts +340 -0
  37. package/dist/render-log/index.js +702 -0
  38. package/dist/render-log/index.js.map +1 -0
  39. package/dist/render-log/index.mjs +695 -0
  40. package/dist/render-log/index.mjs.map +1 -0
  41. package/dist/types-BDkXy5si.d.ts +354 -0
  42. package/dist/types-BpvpStn3.d.mts +802 -0
  43. package/dist/types-BpvpStn3.d.ts +802 -0
  44. package/dist/types-DdJD9yw5.d.mts +354 -0
  45. package/dist/websocket-client-B2LC9CYc.d.mts +124 -0
  46. package/dist/websocket-client-DupH0X7B.d.ts +124 -0
  47. package/package.json +83 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/core/element-identifier.ts","../../src/control/action-executor.ts","../../src/control/workflow-engine.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * Element Identification Module\n *\n * Provides utilities for identifying DOM elements using multiple strategies:\n * 1. data-ui-id (explicit UI Bridge identifier - preferred)\n * 2. data-testid (testing library convention)\n * 3. data-awas-element (legacy support)\n * 4. id (HTML id attribute)\n * 5. Generated XPath/CSS selector (fallback)\n */\n\nimport type { ElementIdentifier } from './types';\n\n/**\n * Data attributes used for element identification (in priority order)\n */\nexport const ID_ATTRIBUTES = ['data-ui-id', 'data-testid', 'data-awas-element', 'id'] as const;\n\n/**\n * Generate a unique XPath for an element\n */\nexport function generateXPath(element: HTMLElement): string {\n if (element.id) {\n return `//*[@id=\"${element.id}\"]`;\n }\n\n const parts: string[] = [];\n let current: HTMLElement | null = element;\n\n while (current && current.nodeType === Node.ELEMENT_NODE) {\n let selector = current.nodeName.toLowerCase();\n\n // Check for identifying attributes\n const uiId = current.getAttribute('data-ui-id');\n if (uiId) {\n selector += `[@data-ui-id=\"${uiId}\"]`;\n parts.unshift(selector);\n break;\n }\n\n const testId = current.getAttribute('data-testid');\n if (testId) {\n selector += `[@data-testid=\"${testId}\"]`;\n parts.unshift(selector);\n break;\n }\n\n const id = current.id;\n if (id) {\n selector += `[@id=\"${id}\"]`;\n parts.unshift(selector);\n break;\n }\n\n // Calculate position among siblings with same tag\n const parentEl: HTMLElement | null = current.parentElement;\n if (parentEl) {\n const currentEl = current;\n const siblings = Array.from(parentEl.children).filter(\n (child): child is Element => child.nodeName === currentEl.nodeName\n );\n if (siblings.length > 1) {\n const index = siblings.indexOf(currentEl) + 1;\n selector += `[${index}]`;\n }\n }\n\n parts.unshift(selector);\n current = parentEl;\n }\n\n return '/' + parts.join('/');\n}\n\n/**\n * Generate a unique CSS selector for an element\n */\nexport function generateCSSSelector(element: HTMLElement): string {\n // Check for identifying attributes first\n const uiId = element.getAttribute('data-ui-id');\n if (uiId) {\n return `[data-ui-id=\"${uiId}\"]`;\n }\n\n const testId = element.getAttribute('data-testid');\n if (testId) {\n return `[data-testid=\"${testId}\"]`;\n }\n\n const awasId = element.getAttribute('data-awas-element');\n if (awasId) {\n return `[data-awas-element=\"${awasId}\"]`;\n }\n\n if (element.id) {\n return `#${CSS.escape(element.id)}`;\n }\n\n // Build a path selector\n const path: string[] = [];\n let current: HTMLElement | null = element;\n\n while (current && current.nodeType === Node.ELEMENT_NODE) {\n let selector = current.nodeName.toLowerCase();\n\n // Check for unique identifiers on ancestors\n const parentUiId = current.getAttribute('data-ui-id');\n if (parentUiId && current !== element) {\n path.unshift(`[data-ui-id=\"${parentUiId}\"]`);\n break;\n }\n\n const parentTestId = current.getAttribute('data-testid');\n if (parentTestId && current !== element) {\n path.unshift(`[data-testid=\"${parentTestId}\"]`);\n break;\n }\n\n if (current.id) {\n path.unshift(`#${CSS.escape(current.id)}`);\n break;\n }\n\n // Add nth-child if needed for uniqueness\n const parentEl: HTMLElement | null = current.parentElement;\n if (parentEl) {\n const currentEl = current;\n const siblings = Array.from(parentEl.children);\n const sameTagSiblings = siblings.filter(\n (s): s is Element => s.nodeName === currentEl.nodeName\n );\n\n if (sameTagSiblings.length > 1) {\n const index = siblings.indexOf(currentEl) + 1;\n selector += `:nth-child(${index})`;\n }\n }\n\n path.unshift(selector);\n current = current.parentElement;\n }\n\n return path.join(' > ');\n}\n\n/**\n * Get the best identifier for an element based on available attributes\n */\nexport function getBestIdentifier(element: HTMLElement): string {\n // Priority order\n const uiId = element.getAttribute('data-ui-id');\n if (uiId) return uiId;\n\n const testId = element.getAttribute('data-testid');\n if (testId) return testId;\n\n const awasId = element.getAttribute('data-awas-element');\n if (awasId) return awasId;\n\n if (element.id) return element.id;\n\n // Fallback to generated CSS selector\n return generateCSSSelector(element);\n}\n\n/**\n * Create a full ElementIdentifier object for an element\n */\nexport function createElementIdentifier(element: HTMLElement): ElementIdentifier {\n return {\n uiId: element.getAttribute('data-ui-id') || undefined,\n testId: element.getAttribute('data-testid') || undefined,\n awasId: element.getAttribute('data-awas-element') || undefined,\n htmlId: element.id || undefined,\n xpath: generateXPath(element),\n selector: generateCSSSelector(element),\n };\n}\n\n/**\n * Find an element by its identifier\n *\n * Tries each identification method in priority order\n */\nexport function findElementByIdentifier(\n identifier: string | ElementIdentifier,\n root: ParentNode = document\n): HTMLElement | null {\n // If string, try each identification method\n if (typeof identifier === 'string') {\n // Try data-ui-id\n const byUiId = root.querySelector<HTMLElement>(`[data-ui-id=\"${identifier}\"]`);\n if (byUiId) return byUiId;\n\n // Try data-testid\n const byTestId = root.querySelector<HTMLElement>(`[data-testid=\"${identifier}\"]`);\n if (byTestId) return byTestId;\n\n // Try data-awas-element\n const byAwasId = root.querySelector<HTMLElement>(`[data-awas-element=\"${identifier}\"]`);\n if (byAwasId) return byAwasId;\n\n // Try id\n const byId = root.querySelector<HTMLElement>(`#${CSS.escape(identifier)}`);\n if (byId) return byId;\n\n // Try as CSS selector\n try {\n const bySelector = root.querySelector<HTMLElement>(identifier);\n if (bySelector) return bySelector;\n } catch {\n // Invalid selector, ignore\n }\n\n // Try as XPath\n try {\n const result = document.evaluate(\n identifier,\n root,\n null,\n XPathResult.FIRST_ORDERED_NODE_TYPE,\n null\n );\n if (result.singleNodeValue instanceof HTMLElement) {\n return result.singleNodeValue;\n }\n } catch {\n // Invalid XPath, ignore\n }\n\n return null;\n }\n\n // If ElementIdentifier object, try in priority order\n if (identifier.uiId) {\n const el = root.querySelector<HTMLElement>(`[data-ui-id=\"${identifier.uiId}\"]`);\n if (el) return el;\n }\n\n if (identifier.testId) {\n const el = root.querySelector<HTMLElement>(`[data-testid=\"${identifier.testId}\"]`);\n if (el) return el;\n }\n\n if (identifier.awasId) {\n const el = root.querySelector<HTMLElement>(`[data-awas-element=\"${identifier.awasId}\"]`);\n if (el) return el;\n }\n\n if (identifier.htmlId) {\n const el = root.querySelector<HTMLElement>(`#${CSS.escape(identifier.htmlId)}`);\n if (el) return el;\n }\n\n // Try CSS selector\n if (identifier.selector) {\n try {\n const el = root.querySelector<HTMLElement>(identifier.selector);\n if (el) return el;\n } catch {\n // Invalid selector\n }\n }\n\n // Try XPath\n if (identifier.xpath) {\n try {\n const result = document.evaluate(\n identifier.xpath,\n root,\n null,\n XPathResult.FIRST_ORDERED_NODE_TYPE,\n null\n );\n if (result.singleNodeValue instanceof HTMLElement) {\n return result.singleNodeValue;\n }\n } catch {\n // Invalid XPath\n }\n }\n\n return null;\n}\n\n/**\n * Find all elements matching an identifier pattern\n */\nexport function findAllElementsByIdentifier(\n pattern: string,\n root: ParentNode = document\n): HTMLElement[] {\n const results: HTMLElement[] = [];\n\n // Try as CSS selector first (supports wildcards better)\n try {\n const elements = root.querySelectorAll<HTMLElement>(pattern);\n results.push(...Array.from(elements));\n if (results.length > 0) return results;\n } catch {\n // Not a valid CSS selector\n }\n\n // Try partial matching on data attributes\n const partials = [\n `[data-ui-id*=\"${pattern}\"]`,\n `[data-testid*=\"${pattern}\"]`,\n `[data-awas-element*=\"${pattern}\"]`,\n `[id*=\"${pattern}\"]`,\n ];\n\n for (const selector of partials) {\n try {\n const elements = root.querySelectorAll<HTMLElement>(selector);\n for (const el of elements) {\n if (!results.includes(el)) {\n results.push(el);\n }\n }\n } catch {\n // Invalid selector\n }\n }\n\n return results;\n}\n\n/**\n * Check if an element matches an identifier\n */\nexport function elementMatchesIdentifier(\n element: HTMLElement,\n identifier: string | ElementIdentifier\n): boolean {\n if (typeof identifier === 'string') {\n return (\n element.getAttribute('data-ui-id') === identifier ||\n element.getAttribute('data-testid') === identifier ||\n element.getAttribute('data-awas-element') === identifier ||\n element.id === identifier ||\n element.matches(identifier)\n );\n }\n\n return (\n (identifier.uiId && element.getAttribute('data-ui-id') === identifier.uiId) ||\n (identifier.testId && element.getAttribute('data-testid') === identifier.testId) ||\n (identifier.awasId && element.getAttribute('data-awas-element') === identifier.awasId) ||\n (identifier.htmlId && element.id === identifier.htmlId) ||\n false\n );\n}\n","/**\n * Action Executor\n *\n * Executes actions on registered elements and components.\n */\n\nimport type { UIBridgeRegistry } from '../core/registry';\nimport type { WaitOptions, ElementState, StandardAction } from '../core/types';\nimport { findElementByIdentifier } from '../core/element-identifier';\nimport type {\n ControlActionRequest,\n ControlActionResponse,\n ComponentActionRequest,\n ComponentActionResponse,\n WaitResult,\n FindRequest,\n FindResponse,\n DiscoveredElement,\n ControlSnapshot,\n ActionExecutor,\n TypeAction,\n SelectAction,\n ScrollAction,\n MouseAction,\n} from './types';\n\n/**\n * Default wait options\n */\nconst DEFAULT_WAIT_OPTIONS: Required<WaitOptions> = {\n visible: true,\n enabled: true,\n focused: false,\n state: {},\n timeout: 10000,\n interval: 100,\n};\n\n/**\n * Get element state for an HTML element\n */\nfunction getElementState(element: HTMLElement): ElementState {\n const rect = element.getBoundingClientRect();\n const style = window.getComputedStyle(element);\n\n const state: ElementState = {\n visible: isVisible(element, rect, style),\n enabled: !isDisabled(element),\n focused: document.activeElement === element,\n rect: {\n x: rect.x,\n y: rect.y,\n width: rect.width,\n height: rect.height,\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left,\n },\n computedStyles: {\n display: style.display,\n visibility: style.visibility,\n opacity: style.opacity,\n pointerEvents: style.pointerEvents,\n },\n };\n\n if (element instanceof HTMLInputElement) {\n state.value = element.value;\n if (element.type === 'checkbox' || element.type === 'radio') {\n state.checked = element.checked;\n }\n } else if (element instanceof HTMLTextAreaElement) {\n state.value = element.value;\n } else if (element instanceof HTMLSelectElement) {\n state.value = element.value;\n state.selectedOptions = Array.from(element.selectedOptions).map((opt) => opt.value);\n }\n\n return state;\n}\n\nfunction isVisible(element: HTMLElement, rect: DOMRect, style: CSSStyleDeclaration): boolean {\n if (rect.width === 0 || rect.height === 0) return false;\n if (style.display === 'none') return false;\n if (style.visibility === 'hidden') return false;\n if (parseFloat(style.opacity) === 0) return false;\n return (\n rect.top < window.innerHeight &&\n rect.bottom > 0 &&\n rect.left < window.innerWidth &&\n rect.right > 0\n );\n}\n\nfunction isDisabled(element: HTMLElement): boolean {\n if ('disabled' in element && (element as HTMLInputElement).disabled) return true;\n if (element.getAttribute('aria-disabled') === 'true') return true;\n return false;\n}\n\n/**\n * Sleep for a duration\n */\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n/**\n * Create a mouse event\n */\nfunction createMouseEvent(type: string, element: HTMLElement, options?: MouseAction): MouseEvent {\n const rect = element.getBoundingClientRect();\n const x = options?.position?.x ?? rect.width / 2;\n const y = options?.position?.y ?? rect.height / 2;\n\n return new MouseEvent(type, {\n bubbles: true,\n cancelable: true,\n view: window,\n button: options?.button === 'right' ? 2 : options?.button === 'middle' ? 1 : 0,\n clientX: rect.left + x,\n clientY: rect.top + y,\n });\n}\n\n/**\n * Default action executor implementation\n */\nexport class DefaultActionExecutor implements ActionExecutor {\n constructor(private registry: UIBridgeRegistry) {}\n\n /**\n * Execute an action on an element\n */\n async executeAction(\n elementId: string,\n request: ControlActionRequest\n ): Promise<ControlActionResponse> {\n const startTime = performance.now();\n let waitDurationMs = 0;\n\n try {\n // Find the element\n const registered = this.registry.getElement(elementId);\n let element: HTMLElement | null = registered?.element ?? null;\n\n // If not registered, try to find by identifier\n if (!element) {\n element = findElementByIdentifier(elementId);\n }\n\n if (!element) {\n return {\n success: false,\n error: `Element not found: ${elementId}`,\n durationMs: performance.now() - startTime,\n timestamp: Date.now(),\n requestId: request.requestId,\n };\n }\n\n // Wait for conditions if specified\n if (request.waitOptions) {\n const waitResult = await this.waitForElement(element, request.waitOptions);\n waitDurationMs = waitResult.waitedMs;\n if (!waitResult.met) {\n return {\n success: false,\n error: waitResult.error || 'Wait condition not met',\n durationMs: performance.now() - startTime,\n timestamp: Date.now(),\n requestId: request.requestId,\n waitDurationMs,\n };\n }\n }\n\n // Execute the action\n const result = await this.performAction(element, request.action, request.params);\n\n return {\n success: true,\n elementState: getElementState(element),\n result,\n durationMs: performance.now() - startTime,\n timestamp: Date.now(),\n requestId: request.requestId,\n waitDurationMs,\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : String(error),\n stack: error instanceof Error ? error.stack : undefined,\n durationMs: performance.now() - startTime,\n timestamp: Date.now(),\n requestId: request.requestId,\n waitDurationMs,\n };\n }\n }\n\n /**\n * Execute an action on a component\n */\n async executeComponentAction(\n componentId: string,\n request: ComponentActionRequest\n ): Promise<ComponentActionResponse> {\n const startTime = performance.now();\n\n try {\n const component = this.registry.getComponent(componentId);\n if (!component) {\n return {\n success: false,\n error: `Component not found: ${componentId}`,\n durationMs: performance.now() - startTime,\n timestamp: Date.now(),\n requestId: request.requestId,\n };\n }\n\n const action = component.actions.find((a) => a.id === request.action);\n if (!action) {\n return {\n success: false,\n error: `Action not found: ${request.action}`,\n durationMs: performance.now() - startTime,\n timestamp: Date.now(),\n requestId: request.requestId,\n };\n }\n\n const result = await action.handler(request.params);\n\n return {\n success: true,\n result,\n durationMs: performance.now() - startTime,\n timestamp: Date.now(),\n requestId: request.requestId,\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : String(error),\n stack: error instanceof Error ? error.stack : undefined,\n durationMs: performance.now() - startTime,\n timestamp: Date.now(),\n requestId: request.requestId,\n };\n }\n }\n\n /**\n * Wait for a condition on an element\n */\n async waitFor(elementId: string, options: WaitOptions): Promise<WaitResult> {\n const registered = this.registry.getElement(elementId);\n let element: HTMLElement | null = registered?.element ?? null;\n\n if (!element) {\n element = findElementByIdentifier(elementId);\n }\n\n if (!element) {\n return {\n met: false,\n waitedMs: 0,\n error: `Element not found: ${elementId}`,\n };\n }\n\n return this.waitForElement(element, options);\n }\n\n /**\n * Find controllable elements\n */\n async find(options?: FindRequest): Promise<FindResponse> {\n const startTime = performance.now();\n const elements: DiscoveredElement[] = [];\n\n // Get root element\n let root: HTMLElement = document.body;\n if (options?.root) {\n const rootEl = document.querySelector<HTMLElement>(options.root);\n if (rootEl) root = rootEl;\n }\n\n // Find interactive elements\n const interactiveSelectors = [\n 'a[href]',\n 'button',\n 'input',\n 'select',\n 'textarea',\n '[onclick]',\n '[role=\"button\"]',\n '[role=\"link\"]',\n '[role=\"checkbox\"]',\n '[role=\"radio\"]',\n '[role=\"menuitem\"]',\n '[role=\"tab\"]',\n '[role=\"switch\"]',\n '[tabindex]:not([tabindex=\"-1\"])',\n '[contenteditable=\"true\"]',\n '[data-ui-id]',\n '[data-testid]',\n ];\n\n const selector = options?.selector || interactiveSelectors.join(', ');\n const foundElements = root.querySelectorAll<HTMLElement>(selector);\n\n for (const el of foundElements) {\n if (options?.limit && elements.length >= options.limit) break;\n\n const state = getElementState(el);\n\n // Filter by visibility\n if (!options?.includeHidden && !state.visible) continue;\n\n // Filter by type\n if (options?.types) {\n const type = this.inferElementType(el);\n if (!options.types.includes(type)) continue;\n }\n\n // Check if registered\n const registered = this.registry.findByDOMElement(el);\n\n elements.push({\n id: registered?.id || this.getElementId(el),\n type: registered?.type || this.inferElementType(el),\n label: registered?.label || this.getElementLabel(el),\n tagName: el.tagName.toLowerCase(),\n role: el.getAttribute('role') || undefined,\n accessibleName: this.getAccessibleName(el),\n actions: registered?.actions || this.inferActions(el),\n state,\n registered: !!registered,\n });\n }\n\n return {\n elements,\n total: elements.length,\n durationMs: performance.now() - startTime,\n timestamp: Date.now(),\n };\n }\n\n /**\n * Discover controllable elements\n * @deprecated Use find() instead\n */\n async discover(options?: FindRequest): Promise<FindResponse> {\n return this.find(options);\n }\n\n /**\n * Get control snapshot\n */\n async getSnapshot(): Promise<ControlSnapshot> {\n const elements = this.registry.getAllElements();\n const components = this.registry.getAllComponents();\n const workflows = this.registry.getAllWorkflows();\n\n return {\n timestamp: Date.now(),\n elements: elements.map((el) => ({\n id: el.id,\n type: el.type,\n label: el.label,\n actions: [...el.actions, ...(el.customActions ? Object.keys(el.customActions) : [])],\n state: el.getState(),\n })),\n components: components.map((comp) => ({\n id: comp.id,\n name: comp.name,\n actions: comp.actions.map((a) => a.id),\n })),\n workflows: workflows.map((wf) => ({\n id: wf.id,\n name: wf.name,\n stepCount: wf.steps.length,\n })),\n activeRuns: [], // Workflow engine manages this\n };\n }\n\n /**\n * Wait for element conditions\n */\n private async waitForElement(element: HTMLElement, options: WaitOptions): Promise<WaitResult> {\n const opts = { ...DEFAULT_WAIT_OPTIONS, ...options };\n const startTime = performance.now();\n const deadline = startTime + opts.timeout;\n\n while (Date.now() < deadline) {\n const state = getElementState(element);\n\n // Check conditions\n let allMet = true;\n\n if (opts.visible && !state.visible) allMet = false;\n if (opts.enabled && !state.enabled) allMet = false;\n if (opts.focused && !state.focused) allMet = false;\n\n // Check custom state conditions\n if (opts.state) {\n for (const [key, value] of Object.entries(opts.state)) {\n if (state[key as keyof ElementState] !== value) {\n allMet = false;\n break;\n }\n }\n }\n\n if (allMet) {\n return {\n met: true,\n waitedMs: performance.now() - startTime,\n state,\n };\n }\n\n await sleep(opts.interval);\n }\n\n return {\n met: false,\n waitedMs: performance.now() - startTime,\n state: getElementState(element),\n error: `Timeout waiting for conditions after ${opts.timeout}ms`,\n };\n }\n\n /**\n * Perform an action on an element\n */\n private async performAction(\n element: HTMLElement,\n action: string,\n params?: Record<string, unknown>\n ): Promise<unknown> {\n switch (action as StandardAction) {\n case 'click':\n return this.performClick(element, params as MouseAction);\n case 'doubleClick':\n return this.performDoubleClick(element, params as MouseAction);\n case 'rightClick':\n return this.performRightClick(element, params as MouseAction);\n case 'type':\n return this.performType(element, params as unknown as TypeAction);\n case 'clear':\n return this.performClear(element);\n case 'select':\n return this.performSelect(element, params as unknown as SelectAction);\n case 'focus':\n return this.performFocus(element);\n case 'blur':\n return this.performBlur(element);\n case 'hover':\n return this.performHover(element);\n case 'scroll':\n return this.performScroll(element, params as ScrollAction);\n case 'check':\n return this.performCheck(element, true);\n case 'uncheck':\n return this.performCheck(element, false);\n case 'toggle':\n return this.performToggle(element);\n default: {\n // Check for custom actions\n const registered = this.registry.findByDOMElement(element);\n if (registered?.customActions?.[action]) {\n return registered.customActions[action].handler(params);\n }\n throw new Error(`Unknown action: ${action}`);\n }\n }\n }\n\n private performClick(element: HTMLElement, options?: MouseAction): void {\n element.dispatchEvent(createMouseEvent('mousedown', element, options));\n element.dispatchEvent(createMouseEvent('mouseup', element, options));\n element.dispatchEvent(createMouseEvent('click', element, options));\n }\n\n private performDoubleClick(element: HTMLElement, options?: MouseAction): void {\n this.performClick(element, options);\n this.performClick(element, options);\n element.dispatchEvent(createMouseEvent('dblclick', element, options));\n }\n\n private performRightClick(element: HTMLElement, options?: MouseAction): void {\n const opts = { ...options, button: 'right' as const };\n element.dispatchEvent(createMouseEvent('mousedown', element, opts));\n element.dispatchEvent(createMouseEvent('mouseup', element, opts));\n element.dispatchEvent(createMouseEvent('contextmenu', element, opts));\n }\n\n private async performType(element: HTMLElement, options?: TypeAction): Promise<void> {\n if (!(element instanceof HTMLInputElement || element instanceof HTMLTextAreaElement)) {\n throw new Error('Type action requires an input or textarea element');\n }\n\n element.focus();\n\n if (options?.clear) {\n element.value = '';\n element.dispatchEvent(new Event('input', { bubbles: true }));\n }\n\n const text = options?.text || '';\n const delay = options?.delay || 0;\n\n for (const char of text) {\n element.value += char;\n if (options?.triggerEvents !== false) {\n element.dispatchEvent(new Event('input', { bubbles: true }));\n }\n if (delay > 0) {\n await sleep(delay);\n }\n }\n\n if (options?.triggerEvents !== false) {\n element.dispatchEvent(new Event('change', { bubbles: true }));\n }\n }\n\n private performClear(element: HTMLElement): void {\n if (element instanceof HTMLInputElement || element instanceof HTMLTextAreaElement) {\n element.value = '';\n element.dispatchEvent(new Event('input', { bubbles: true }));\n element.dispatchEvent(new Event('change', { bubbles: true }));\n }\n }\n\n private performSelect(element: HTMLElement, options?: SelectAction): void {\n if (!(element instanceof HTMLSelectElement)) {\n throw new Error('Select action requires a select element');\n }\n\n const values = Array.isArray(options?.value) ? options.value : [options?.value];\n\n if (!options?.additive) {\n // Clear existing selection for single select or when not additive\n for (const option of element.options) {\n option.selected = false;\n }\n }\n\n for (const option of element.options) {\n const matchValue = options?.byLabel ? option.text : option.value;\n if (values.includes(matchValue)) {\n option.selected = true;\n }\n }\n\n element.dispatchEvent(new Event('change', { bubbles: true }));\n }\n\n private performFocus(element: HTMLElement): void {\n element.focus();\n element.dispatchEvent(new FocusEvent('focus', { bubbles: true }));\n }\n\n private performBlur(element: HTMLElement): void {\n element.blur();\n element.dispatchEvent(new FocusEvent('blur', { bubbles: true }));\n }\n\n private performHover(element: HTMLElement): void {\n element.dispatchEvent(createMouseEvent('mouseenter', element));\n element.dispatchEvent(createMouseEvent('mouseover', element));\n }\n\n private performScroll(element: HTMLElement, options?: ScrollAction): void {\n if (options?.toElement) {\n const target = document.querySelector<HTMLElement>(options.toElement);\n if (target) {\n target.scrollIntoView({ behavior: options.smooth ? 'smooth' : 'auto' });\n return;\n }\n }\n\n if (options?.position) {\n element.scrollTo({\n left: options.position.x,\n top: options.position.y,\n behavior: options.smooth ? 'smooth' : 'auto',\n });\n return;\n }\n\n const amount = options?.amount || 100;\n const direction = options?.direction || 'down';\n\n switch (direction) {\n case 'up':\n element.scrollBy({ top: -amount, behavior: options?.smooth ? 'smooth' : 'auto' });\n break;\n case 'down':\n element.scrollBy({ top: amount, behavior: options?.smooth ? 'smooth' : 'auto' });\n break;\n case 'left':\n element.scrollBy({ left: -amount, behavior: options?.smooth ? 'smooth' : 'auto' });\n break;\n case 'right':\n element.scrollBy({ left: amount, behavior: options?.smooth ? 'smooth' : 'auto' });\n break;\n }\n }\n\n private performCheck(element: HTMLElement, checked: boolean): void {\n if (\n element instanceof HTMLInputElement &&\n (element.type === 'checkbox' || element.type === 'radio')\n ) {\n if (element.checked !== checked) {\n element.checked = checked;\n element.dispatchEvent(new Event('change', { bubbles: true }));\n }\n }\n }\n\n private performToggle(element: HTMLElement): void {\n if (element instanceof HTMLInputElement && element.type === 'checkbox') {\n element.checked = !element.checked;\n element.dispatchEvent(new Event('change', { bubbles: true }));\n }\n }\n\n private getElementId(element: HTMLElement): string {\n return (\n element.getAttribute('data-ui-id') ||\n element.getAttribute('data-testid') ||\n element.id ||\n `${element.tagName.toLowerCase()}-${Math.random().toString(36).substr(2, 8)}`\n );\n }\n\n private getElementLabel(element: HTMLElement): string | undefined {\n return (\n element.getAttribute('aria-label') ||\n element.getAttribute('title') ||\n element.textContent?.trim().substring(0, 50) ||\n undefined\n );\n }\n\n private getAccessibleName(element: HTMLElement): string | undefined {\n const ariaLabel = element.getAttribute('aria-label');\n if (ariaLabel) return ariaLabel;\n\n const labelledBy = element.getAttribute('aria-labelledby');\n if (labelledBy) {\n const labels = labelledBy\n .split(' ')\n .map((id) => document.getElementById(id)?.textContent?.trim())\n .filter(Boolean);\n if (labels.length > 0) return labels.join(' ');\n }\n\n if (\n element instanceof HTMLInputElement ||\n element instanceof HTMLSelectElement ||\n element instanceof HTMLTextAreaElement\n ) {\n if (element.id) {\n const label = document.querySelector<HTMLLabelElement>(`label[for=\"${element.id}\"]`);\n if (label) return label.textContent?.trim();\n }\n }\n\n return (\n element.getAttribute('title') || element.textContent?.trim().substring(0, 50) || undefined\n );\n }\n\n private inferElementType(element: HTMLElement): string {\n const tagName = element.tagName.toLowerCase();\n const role = element.getAttribute('role');\n\n if (role) {\n switch (role) {\n case 'button':\n return 'button';\n case 'textbox':\n return 'input';\n case 'checkbox':\n return 'checkbox';\n case 'radio':\n return 'radio';\n case 'link':\n return 'link';\n case 'listbox':\n case 'combobox':\n return 'select';\n case 'menu':\n return 'menu';\n case 'menuitem':\n return 'menuitem';\n case 'tab':\n return 'tab';\n case 'dialog':\n return 'dialog';\n }\n }\n\n switch (tagName) {\n case 'button':\n return 'button';\n case 'input': {\n const type = (element as HTMLInputElement).type;\n if (type === 'checkbox') return 'checkbox';\n if (type === 'radio') return 'radio';\n if (type === 'submit' || type === 'button') return 'button';\n return 'input';\n }\n case 'textarea':\n return 'textarea';\n case 'select':\n return 'select';\n case 'a':\n return 'link';\n case 'form':\n return 'form';\n default:\n return 'custom';\n }\n }\n\n private inferActions(element: HTMLElement): string[] {\n const type = this.inferElementType(element);\n const baseActions = ['focus', 'blur', 'hover'];\n\n switch (type) {\n case 'button':\n return [...baseActions, 'click', 'doubleClick', 'rightClick'];\n case 'input':\n return [...baseActions, 'click', 'type', 'clear'];\n case 'textarea':\n return [...baseActions, 'click', 'type', 'clear'];\n case 'select':\n return [...baseActions, 'click', 'select'];\n case 'checkbox':\n return [...baseActions, 'click', 'check', 'uncheck', 'toggle'];\n case 'radio':\n return [...baseActions, 'click', 'check'];\n case 'link':\n return [...baseActions, 'click'];\n default:\n return [...baseActions, 'click'];\n }\n }\n}\n\n/**\n * Create an action executor\n */\nexport function createActionExecutor(registry: UIBridgeRegistry): ActionExecutor {\n return new DefaultActionExecutor(registry);\n}\n","/**\n * Workflow Engine\n *\n * Executes multi-step workflows with error handling and state tracking.\n */\n\nimport type { UIBridgeRegistry } from '../core/registry';\nimport type { WorkflowStep, Workflow } from '../core/types';\nimport type {\n WorkflowRunRequest,\n WorkflowRunResponse,\n WorkflowStepResult,\n WorkflowRunStatus,\n WorkflowEngine,\n ActionExecutor,\n} from './types';\n\n/**\n * Generate a unique run ID\n */\nfunction generateRunId(): string {\n return `run-${Date.now()}-${Math.random().toString(36).substr(2, 8)}`;\n}\n\n/**\n * Default workflow engine implementation\n */\nexport class DefaultWorkflowEngine implements WorkflowEngine {\n private activeRuns = new Map<string, WorkflowRunState>();\n\n constructor(\n private registry: UIBridgeRegistry,\n private executor: ActionExecutor\n ) {}\n\n /**\n * Run a workflow\n */\n async run(workflowId: string, request?: WorkflowRunRequest): Promise<WorkflowRunResponse> {\n const workflow = this.registry.getWorkflow(workflowId);\n if (!workflow) {\n return {\n workflowId,\n runId: generateRunId(),\n status: 'failed',\n steps: [],\n totalSteps: 0,\n success: false,\n error: `Workflow not found: ${workflowId}`,\n startedAt: Date.now(),\n completedAt: Date.now(),\n durationMs: 0,\n };\n }\n\n const runId = generateRunId();\n const state: WorkflowRunState = {\n workflowId,\n runId,\n workflow,\n request,\n status: 'running',\n steps: [],\n currentStep: 0,\n startedAt: Date.now(),\n };\n\n this.activeRuns.set(runId, state);\n\n try {\n await this.executeWorkflow(state);\n } catch (error) {\n state.status = 'failed';\n state.error = error instanceof Error ? error.message : String(error);\n }\n\n state.completedAt = Date.now();\n state.durationMs = state.completedAt - state.startedAt;\n\n // Determine overall success\n state.success = state.status === 'completed' && state.steps.every((s) => s.success);\n\n // Clean up after a delay\n setTimeout(() => {\n this.activeRuns.delete(runId);\n }, 60000);\n\n return this.buildResponse(state);\n }\n\n /**\n * Get workflow run status\n */\n async getRunStatus(runId: string): Promise<WorkflowRunResponse | null> {\n const state = this.activeRuns.get(runId);\n if (!state) return null;\n return this.buildResponse(state);\n }\n\n /**\n * Cancel a running workflow\n */\n async cancel(runId: string): Promise<boolean> {\n const state = this.activeRuns.get(runId);\n if (!state || state.status !== 'running') return false;\n\n state.status = 'cancelled';\n state.completedAt = Date.now();\n state.durationMs = state.completedAt - state.startedAt;\n state.error = 'Workflow cancelled by user';\n\n return true;\n }\n\n /**\n * List active runs\n */\n async listActiveRuns(): Promise<WorkflowRunResponse[]> {\n return Array.from(this.activeRuns.values())\n .filter((state) => state.status === 'running')\n .map((state) => this.buildResponse(state));\n }\n\n /**\n * Execute a workflow\n */\n private async executeWorkflow(state: WorkflowRunState): Promise<void> {\n const { workflow, request } = state;\n const params = { ...workflow.defaultParams, ...request?.params };\n\n // Find start step index\n let startIndex = 0;\n if (request?.startStep) {\n const idx = workflow.steps.findIndex((s) => s.id === request.startStep);\n if (idx >= 0) startIndex = idx;\n }\n\n // Find stop step index\n let stopIndex = workflow.steps.length;\n if (request?.stopStep) {\n const idx = workflow.steps.findIndex((s) => s.id === request.stopStep);\n if (idx >= 0) stopIndex = idx + 1;\n }\n\n // Execute steps\n for (let i = startIndex; i < stopIndex; i++) {\n // Check for cancellation\n if (state.status === 'cancelled') break;\n\n state.currentStep = i;\n const step = workflow.steps[i];\n\n const stepResult = await this.executeStep(step, params, request?.stepTimeout);\n state.steps.push(stepResult);\n\n // Stop on failure\n if (!stepResult.success) {\n state.status = 'failed';\n state.error = stepResult.error;\n return;\n }\n }\n\n state.status = 'completed';\n }\n\n /**\n * Execute a single step\n */\n private async executeStep(\n step: WorkflowStep,\n params: Record<string, unknown>,\n timeout?: number\n ): Promise<WorkflowStepResult> {\n const startTime = performance.now();\n\n try {\n // Apply timeout if specified\n const timeoutPromise = timeout\n ? new Promise<never>((_, reject) =>\n setTimeout(() => reject(new Error('Step timeout')), timeout)\n )\n : null;\n\n const executePromise = this.executeStepInternal(step, params);\n\n const result = timeoutPromise\n ? await Promise.race([executePromise, timeoutPromise])\n : await executePromise;\n\n return {\n stepId: step.id,\n stepType: step.type,\n success: true,\n result,\n durationMs: performance.now() - startTime,\n timestamp: Date.now(),\n };\n } catch (error) {\n return {\n stepId: step.id,\n stepType: step.type,\n success: false,\n error: error instanceof Error ? error.message : String(error),\n durationMs: performance.now() - startTime,\n timestamp: Date.now(),\n };\n }\n }\n\n /**\n * Execute step internal logic\n */\n private async executeStepInternal(\n step: WorkflowStep,\n params: Record<string, unknown>\n ): Promise<unknown> {\n // Interpolate params in step\n const resolvedParams = this.interpolateParams(step.params || {}, params);\n\n switch (step.type) {\n case 'element-action':\n if (!step.target || !step.action) {\n throw new Error('Element action requires target and action');\n }\n return this.executor.executeAction(step.target, {\n action: step.action,\n params: resolvedParams,\n waitOptions: step.waitOptions,\n });\n\n case 'component-action':\n if (!step.target || !step.action) {\n throw new Error('Component action requires target and action');\n }\n return this.executor.executeComponentAction(step.target, {\n action: step.action,\n params: resolvedParams,\n });\n\n case 'wait': {\n if (!step.target) {\n throw new Error('Wait step requires target');\n }\n const waitResult = await this.executor.waitFor(step.target, step.waitOptions || {});\n if (!waitResult.met) {\n throw new Error(waitResult.error || 'Wait condition not met');\n }\n return waitResult;\n }\n\n case 'assert':\n if (!step.target || !step.expectedState) {\n throw new Error('Assert step requires target and expectedState');\n }\n return this.performAssertion(step.target, step.expectedState);\n\n case 'custom':\n if (!step.handler) {\n throw new Error('Custom step requires handler');\n }\n return step.handler();\n\n default:\n throw new Error(`Unknown step type: ${step.type}`);\n }\n }\n\n /**\n * Perform state assertion\n */\n private async performAssertion(\n target: string,\n expectedState: Record<string, unknown>\n ): Promise<{ passed: boolean; differences: string[] }> {\n const snapshot = await this.executor.getSnapshot();\n const element = snapshot.elements.find((e) => e.id === target);\n\n if (!element) {\n throw new Error(`Element not found for assertion: ${target}`);\n }\n\n const differences: string[] = [];\n\n for (const [key, expected] of Object.entries(expectedState)) {\n const actual = (element.state as unknown as Record<string, unknown>)[key];\n if (actual !== expected) {\n differences.push(`${key}: expected ${expected}, got ${actual}`);\n }\n }\n\n if (differences.length > 0) {\n throw new Error(`Assertion failed:\\n${differences.join('\\n')}`);\n }\n\n return { passed: true, differences };\n }\n\n /**\n * Interpolate parameters with {{param}} syntax\n */\n private interpolateParams(\n stepParams: Record<string, unknown>,\n workflowParams: Record<string, unknown>\n ): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n\n for (const [key, value] of Object.entries(stepParams)) {\n if (typeof value === 'string') {\n result[key] = value.replace(/\\{\\{(\\w+)\\}\\}/g, (_, name) => {\n return String(workflowParams[name] ?? '');\n });\n } else {\n result[key] = value;\n }\n }\n\n return result;\n }\n\n /**\n * Build response from state\n */\n private buildResponse(state: WorkflowRunState): WorkflowRunResponse {\n return {\n workflowId: state.workflowId,\n runId: state.runId,\n status: state.status,\n steps: [...state.steps],\n currentStep: state.currentStep,\n totalSteps: state.workflow.steps.length,\n success: state.success,\n error: state.error,\n startedAt: state.startedAt,\n completedAt: state.completedAt,\n durationMs: state.durationMs,\n };\n }\n}\n\n/**\n * Internal workflow run state\n */\ninterface WorkflowRunState {\n workflowId: string;\n runId: string;\n workflow: Workflow;\n request?: WorkflowRunRequest;\n status: WorkflowRunStatus;\n steps: WorkflowStepResult[];\n currentStep: number;\n startedAt: number;\n completedAt?: number;\n durationMs?: number;\n success?: boolean;\n error?: string;\n}\n\n/**\n * Create a workflow engine\n */\nexport function createWorkflowEngine(\n registry: UIBridgeRegistry,\n executor: ActionExecutor\n): WorkflowEngine {\n return new DefaultWorkflowEngine(registry, executor);\n}\n"]}
@@ -0,0 +1,52 @@
1
+ import { E as ElementIdentifier } from '../types-BpvpStn3.mjs';
2
+ export { A as ActionHandler, a as ActionRequest, b as ActionResponse, B as BranchCondition, c as BridgeEvent, d as BridgeEventListener, e as BridgeEventType, f as BridgeSnapshot, C as ComponentAction, g as CustomAction, h as ElementState, i as ElementType, j as ExtractConfig, L as LogConfig, k as LoopConfig, N as NavigationResult, P as PathResult, R as RegisteredComponent, l as RegisteredElement, S as StandardAction, m as StateSnapshot, T as TransitionResult, U as UIBridgeConfig, n as UIBridgeFeatures, o as UIState, p as UIStateGroup, q as UITransition, W as WSClientConfig, r as WSClientMessage, s as WSClientMessageType, t as WSConnectionState, u as WSDiscoverMessage, v as WSErrorMessage, w as WSEventMessage, x as WSExecuteActionMessage, y as WSExecuteComponentActionMessage, z as WSExecuteWorkflowMessage, D as WSFindMessage, F as WSGetElementMessage, G as WSGetSnapshotMessage, H as WSMessageBase, I as WSPingMessage, J as WSPongMessage, K as WSResponseMessage, M as WSServerMessage, O as WSServerMessageType, Q as WSSubscribeMessage, V as WSSubscribedMessage, X as WSSubscriptionOptions, Y as WSUnsubscribeMessage, Z as WSUnsubscribedMessage, _ as WSWelcomeMessage, $ as WSWorkflowProgressMessage, a0 as WaitOptions, a1 as Workflow, a2 as WorkflowStep, a3 as WorkflowStepType } from '../types-BpvpStn3.mjs';
3
+ export { R as RegistryOptions, U as UIBridgeRegistry, g as getGlobalRegistry, r as resetGlobalRegistry, s as setGlobalRegistry } from '../registry-CT6BVVKr.mjs';
4
+ export { U as UIBridgeWSClient, c as createWSClient } from '../websocket-client-B2LC9CYc.mjs';
5
+
6
+ /**
7
+ * Element Identification Module
8
+ *
9
+ * Provides utilities for identifying DOM elements using multiple strategies:
10
+ * 1. data-ui-id (explicit UI Bridge identifier - preferred)
11
+ * 2. data-testid (testing library convention)
12
+ * 3. data-awas-element (legacy support)
13
+ * 4. id (HTML id attribute)
14
+ * 5. Generated XPath/CSS selector (fallback)
15
+ */
16
+
17
+ /**
18
+ * Data attributes used for element identification (in priority order)
19
+ */
20
+ declare const ID_ATTRIBUTES: readonly ["data-ui-id", "data-testid", "data-awas-element", "id"];
21
+ /**
22
+ * Generate a unique XPath for an element
23
+ */
24
+ declare function generateXPath(element: HTMLElement): string;
25
+ /**
26
+ * Generate a unique CSS selector for an element
27
+ */
28
+ declare function generateCSSSelector(element: HTMLElement): string;
29
+ /**
30
+ * Get the best identifier for an element based on available attributes
31
+ */
32
+ declare function getBestIdentifier(element: HTMLElement): string;
33
+ /**
34
+ * Create a full ElementIdentifier object for an element
35
+ */
36
+ declare function createElementIdentifier(element: HTMLElement): ElementIdentifier;
37
+ /**
38
+ * Find an element by its identifier
39
+ *
40
+ * Tries each identification method in priority order
41
+ */
42
+ declare function findElementByIdentifier(identifier: string | ElementIdentifier, root?: ParentNode): HTMLElement | null;
43
+ /**
44
+ * Find all elements matching an identifier pattern
45
+ */
46
+ declare function findAllElementsByIdentifier(pattern: string, root?: ParentNode): HTMLElement[];
47
+ /**
48
+ * Check if an element matches an identifier
49
+ */
50
+ declare function elementMatchesIdentifier(element: HTMLElement, identifier: string | ElementIdentifier): boolean;
51
+
52
+ export { ElementIdentifier, ID_ATTRIBUTES, createElementIdentifier, elementMatchesIdentifier, findAllElementsByIdentifier, findElementByIdentifier, generateCSSSelector, generateXPath, getBestIdentifier };
@@ -0,0 +1,52 @@
1
+ import { E as ElementIdentifier } from '../types-BpvpStn3.js';
2
+ export { A as ActionHandler, a as ActionRequest, b as ActionResponse, B as BranchCondition, c as BridgeEvent, d as BridgeEventListener, e as BridgeEventType, f as BridgeSnapshot, C as ComponentAction, g as CustomAction, h as ElementState, i as ElementType, j as ExtractConfig, L as LogConfig, k as LoopConfig, N as NavigationResult, P as PathResult, R as RegisteredComponent, l as RegisteredElement, S as StandardAction, m as StateSnapshot, T as TransitionResult, U as UIBridgeConfig, n as UIBridgeFeatures, o as UIState, p as UIStateGroup, q as UITransition, W as WSClientConfig, r as WSClientMessage, s as WSClientMessageType, t as WSConnectionState, u as WSDiscoverMessage, v as WSErrorMessage, w as WSEventMessage, x as WSExecuteActionMessage, y as WSExecuteComponentActionMessage, z as WSExecuteWorkflowMessage, D as WSFindMessage, F as WSGetElementMessage, G as WSGetSnapshotMessage, H as WSMessageBase, I as WSPingMessage, J as WSPongMessage, K as WSResponseMessage, M as WSServerMessage, O as WSServerMessageType, Q as WSSubscribeMessage, V as WSSubscribedMessage, X as WSSubscriptionOptions, Y as WSUnsubscribeMessage, Z as WSUnsubscribedMessage, _ as WSWelcomeMessage, $ as WSWorkflowProgressMessage, a0 as WaitOptions, a1 as Workflow, a2 as WorkflowStep, a3 as WorkflowStepType } from '../types-BpvpStn3.js';
3
+ export { R as RegistryOptions, U as UIBridgeRegistry, g as getGlobalRegistry, r as resetGlobalRegistry, s as setGlobalRegistry } from '../registry-D4mQ01B3.js';
4
+ export { U as UIBridgeWSClient, c as createWSClient } from '../websocket-client-DupH0X7B.js';
5
+
6
+ /**
7
+ * Element Identification Module
8
+ *
9
+ * Provides utilities for identifying DOM elements using multiple strategies:
10
+ * 1. data-ui-id (explicit UI Bridge identifier - preferred)
11
+ * 2. data-testid (testing library convention)
12
+ * 3. data-awas-element (legacy support)
13
+ * 4. id (HTML id attribute)
14
+ * 5. Generated XPath/CSS selector (fallback)
15
+ */
16
+
17
+ /**
18
+ * Data attributes used for element identification (in priority order)
19
+ */
20
+ declare const ID_ATTRIBUTES: readonly ["data-ui-id", "data-testid", "data-awas-element", "id"];
21
+ /**
22
+ * Generate a unique XPath for an element
23
+ */
24
+ declare function generateXPath(element: HTMLElement): string;
25
+ /**
26
+ * Generate a unique CSS selector for an element
27
+ */
28
+ declare function generateCSSSelector(element: HTMLElement): string;
29
+ /**
30
+ * Get the best identifier for an element based on available attributes
31
+ */
32
+ declare function getBestIdentifier(element: HTMLElement): string;
33
+ /**
34
+ * Create a full ElementIdentifier object for an element
35
+ */
36
+ declare function createElementIdentifier(element: HTMLElement): ElementIdentifier;
37
+ /**
38
+ * Find an element by its identifier
39
+ *
40
+ * Tries each identification method in priority order
41
+ */
42
+ declare function findElementByIdentifier(identifier: string | ElementIdentifier, root?: ParentNode): HTMLElement | null;
43
+ /**
44
+ * Find all elements matching an identifier pattern
45
+ */
46
+ declare function findAllElementsByIdentifier(pattern: string, root?: ParentNode): HTMLElement[];
47
+ /**
48
+ * Check if an element matches an identifier
49
+ */
50
+ declare function elementMatchesIdentifier(element: HTMLElement, identifier: string | ElementIdentifier): boolean;
51
+
52
+ export { ElementIdentifier, ID_ATTRIBUTES, createElementIdentifier, elementMatchesIdentifier, findAllElementsByIdentifier, findElementByIdentifier, generateCSSSelector, generateXPath, getBestIdentifier };