@qontinui/ui-bridge-native 0.1.5 → 0.1.6

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 (92) hide show
  1. package/dist/control/{index.d.mts → action-executor.d.ts} +6 -10
  2. package/dist/control/action-executor.d.ts.map +1 -0
  3. package/dist/control/index.d.ts +5 -91
  4. package/dist/control/index.d.ts.map +1 -0
  5. package/dist/control/index.js +1 -1
  6. package/dist/control/index.js.map +1 -1
  7. package/dist/control/index.mjs +1 -1
  8. package/dist/control/index.mjs.map +1 -1
  9. package/dist/{types-BCYWwyVy.d.ts → control/types.d.ts} +17 -18
  10. package/dist/control/types.d.ts.map +1 -0
  11. package/dist/core/element-identifier.d.ts +41 -0
  12. package/dist/core/element-identifier.d.ts.map +1 -0
  13. package/dist/core/index.d.ts +6 -43
  14. package/dist/core/index.d.ts.map +1 -0
  15. package/dist/{registry-B8A_EoxS.d.ts → core/registry.d.ts} +10 -13
  16. package/dist/core/registry.d.ts.map +1 -0
  17. package/dist/{types-BPNuYxDx.d.ts → core/types.d.ts} +30 -30
  18. package/dist/core/types.d.ts.map +1 -0
  19. package/dist/debug/index.d.ts +4 -44
  20. package/dist/debug/index.d.ts.map +1 -0
  21. package/dist/debug/index.js.map +1 -1
  22. package/dist/debug/index.mjs.map +1 -1
  23. package/dist/debug/{index.d.mts → inspector.d.ts} +3 -6
  24. package/dist/debug/inspector.d.ts.map +1 -0
  25. package/dist/design/{index.d.mts → design-inspector-native.d.ts} +7 -11
  26. package/dist/design/design-inspector-native.d.ts.map +1 -0
  27. package/dist/{design-types-BHr6Q1FX.d.ts → design/design-types.d.ts} +10 -11
  28. package/dist/design/design-types.d.ts.map +1 -0
  29. package/dist/design/index.d.ts +5 -60
  30. package/dist/design/index.d.ts.map +1 -0
  31. package/dist/index.d.ts +28 -86
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +107 -4
  34. package/dist/index.js.map +1 -1
  35. package/dist/index.mjs +107 -4
  36. package/dist/index.mjs.map +1 -1
  37. package/dist/react/UIBridgeNativeProvider.d.ts +147 -0
  38. package/dist/react/UIBridgeNativeProvider.d.ts.map +1 -0
  39. package/dist/react/index.d.ts +8 -69
  40. package/dist/react/index.d.ts.map +1 -0
  41. package/dist/react/index.js +116 -4
  42. package/dist/react/index.js.map +1 -1
  43. package/dist/react/index.mjs +116 -4
  44. package/dist/react/index.mjs.map +1 -1
  45. package/dist/react/{index.d.mts → useAutoRegister.d.ts} +7 -15
  46. package/dist/react/useAutoRegister.d.ts.map +1 -0
  47. package/dist/react/useUIBridge.d.ts +103 -0
  48. package/dist/react/useUIBridge.d.ts.map +1 -0
  49. package/dist/react/useUIComponent.d.ts +112 -0
  50. package/dist/react/useUIComponent.d.ts.map +1 -0
  51. package/dist/react/useUIElement.d.ts +162 -0
  52. package/dist/react/useUIElement.d.ts.map +1 -0
  53. package/dist/server/design-handlers.d.ts +47 -0
  54. package/dist/server/design-handlers.d.ts.map +1 -0
  55. package/dist/server/handlers.d.ts +20 -0
  56. package/dist/server/handlers.d.ts.map +1 -0
  57. package/dist/server/http-server.d.ts +247 -0
  58. package/dist/server/http-server.d.ts.map +1 -0
  59. package/dist/server/index.d.ts +13 -117
  60. package/dist/server/index.d.ts.map +1 -0
  61. package/dist/server/index.js +102 -1
  62. package/dist/server/index.js.map +1 -1
  63. package/dist/server/index.mjs +102 -1
  64. package/dist/server/index.mjs.map +1 -1
  65. package/dist/server/types.d.ts +200 -0
  66. package/dist/server/types.d.ts.map +1 -0
  67. package/dist/server/ws-connection.d.ts +48 -0
  68. package/dist/server/ws-connection.d.ts.map +1 -0
  69. package/dist/server/ws-event-bridge.d.ts +113 -0
  70. package/dist/server/ws-event-bridge.d.ts.map +1 -0
  71. package/dist/server/ws-protocol.d.ts +48 -0
  72. package/dist/server/ws-protocol.d.ts.map +1 -0
  73. package/dist/server/ws-types.d.ts +65 -0
  74. package/dist/server/ws-types.d.ts.map +1 -0
  75. package/dist/transport/CloudRelayClient.d.ts +51 -0
  76. package/dist/transport/CloudRelayClient.d.ts.map +1 -0
  77. package/dist/transport/DeviceAnnouncer.d.ts +75 -0
  78. package/dist/transport/DeviceAnnouncer.d.ts.map +1 -0
  79. package/dist/transport/index.d.ts +3 -0
  80. package/dist/transport/index.d.ts.map +1 -0
  81. package/package.json +1 -1
  82. package/dist/core/index.d.mts +0 -46
  83. package/dist/design-types-BHr6Q1FX.d.mts +0 -205
  84. package/dist/http-server-B7KudcYJ.d.ts +0 -622
  85. package/dist/http-server-D7uVANBU.d.mts +0 -622
  86. package/dist/index.d.mts +0 -89
  87. package/dist/registry-DhbGbl9c.d.mts +0 -215
  88. package/dist/server/index.d.mts +0 -119
  89. package/dist/types-BPNuYxDx.d.mts +0 -383
  90. package/dist/types-Bcj7ji97.d.mts +0 -177
  91. package/dist/useUIBridge-CDZbWxII.d.ts +0 -571
  92. package/dist/useUIBridge-DfIEq9EQ.d.mts +0 -571
@@ -1,5 +1,3 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
-
3
1
  /**
4
2
  * UI Bridge Native Debug Inspector
5
3
  *
@@ -9,7 +7,7 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
9
7
  /**
10
8
  * Inspector props
11
9
  */
12
- interface UIBridgeInspectorProps {
10
+ export interface UIBridgeInspectorProps {
13
11
  /** Whether to show the inspector */
14
12
  visible?: boolean;
15
13
  /** Callback when inspector is closed */
@@ -42,6 +40,5 @@ interface UIBridgeInspectorProps {
42
40
  * }
43
41
  * ```
44
42
  */
45
- declare function UIBridgeInspector({ visible, onClose, togglePosition, }: UIBridgeInspectorProps): react_jsx_runtime.JSX.Element | null;
46
-
47
- export { UIBridgeInspector, type UIBridgeInspectorProps };
43
+ export declare function UIBridgeInspector({ visible, onClose, togglePosition, }: UIBridgeInspectorProps): import("react/jsx-runtime").JSX.Element | null;
44
+ //# sourceMappingURL=inspector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspector.d.ts","sourceRoot":"","sources":["../../src/debug/inspector.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAeH;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,oCAAoC;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,8CAA8C;IAC9C,cAAc,CAAC,EAAE,UAAU,GAAG,WAAW,GAAG,aAAa,GAAG,cAAc,CAAC;CAC5E;AA2ID;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,OAAe,EACf,OAAO,EACP,cAA+B,GAChC,EAAE,sBAAsB,kDAuGxB"}
@@ -1,7 +1,3 @@
1
- import { R as ResponsiveSnapshot, S as StateStyles, E as ElementDesignData, a as ExtendedComputedStyles } from '../design-types-BHr6Q1FX.mjs';
2
- export { F as FlattenedNativeStyle, N as NativeInteractionStateName, b as NativeStateStyles, P as PseudoElementStyles, c as StyleDiff } from '../design-types-BHr6Q1FX.mjs';
3
- import { n as NativeLayout } from '../types-BPNuYxDx.mjs';
4
-
5
1
  /**
6
2
  * Native Design Inspector
7
3
  *
@@ -18,7 +14,8 @@ import { n as NativeLayout } from '../types-BPNuYxDx.mjs';
18
14
  * - Shadows differ: iOS uses shadow* props, Android uses elevation
19
15
  * - Numeric values → "Npx" strings
20
16
  */
21
-
17
+ import type { ExtendedComputedStyles, ElementDesignData, StateStyles, ResponsiveSnapshot } from './design-types';
18
+ import type { NativeLayout } from '../core/types';
22
19
  /**
23
20
  * Map a flattened React Native style object to ExtendedComputedStyles.
24
21
  *
@@ -29,16 +26,16 @@ import { n as NativeLayout } from '../types-BPNuYxDx.mjs';
29
26
  * - RN shadow props → boxShadow string
30
27
  * - CSS-only properties (cursor, visibility, grid*, etc.) → empty string
31
28
  */
32
- declare function mapNativeStyleToExtended(rnStyle: Record<string, unknown> | undefined | null): ExtendedComputedStyles;
29
+ export declare function mapNativeStyleToExtended(rnStyle: Record<string, unknown> | undefined | null): ExtendedComputedStyles;
33
30
  /**
34
31
  * Produce ElementDesignData for a single native element.
35
32
  */
36
- declare function getNativeElementDesignData(id: string, label: string | undefined, type: string, rnStyle: Record<string, unknown> | undefined | null, layout: NativeLayout | null): ElementDesignData;
33
+ export declare function getNativeElementDesignData(id: string, label: string | undefined, type: string, rnStyle: Record<string, unknown> | undefined | null, layout: NativeLayout | null): ElementDesignData;
37
34
  /**
38
35
  * Produce StateStyles[] for default/pressed/focused/disabled.
39
36
  * Only includes states that have actual overrides or the default state.
40
37
  */
41
- declare function captureNativeStateVariations(baseStyle: Record<string, unknown> | undefined | null, stateStyles?: {
38
+ export declare function captureNativeStateVariations(baseStyle: Record<string, unknown> | undefined | null, stateStyles?: {
42
39
  pressed?: Record<string, unknown>;
43
40
  focused?: Record<string, unknown>;
44
41
  disabled?: Record<string, unknown>;
@@ -49,7 +46,7 @@ declare function captureNativeStateVariations(baseStyle: Record<string, unknown>
49
46
  * Platform limitation: RN cannot constrain screen width at runtime.
50
47
  * This returns a single snapshot at the current device dimensions.
51
48
  */
52
- declare function captureNativeResponsiveSnapshot(elements: Array<{
49
+ export declare function captureNativeResponsiveSnapshot(elements: Array<{
53
50
  id: string;
54
51
  label?: string;
55
52
  type: string;
@@ -59,5 +56,4 @@ declare function captureNativeResponsiveSnapshot(elements: Array<{
59
56
  width: number;
60
57
  height: number;
61
58
  }): ResponsiveSnapshot[];
62
-
63
- export { ElementDesignData, ExtendedComputedStyles, ResponsiveSnapshot, StateStyles, captureNativeResponsiveSnapshot, captureNativeStateVariations, getNativeElementDesignData, mapNativeStyleToExtended };
59
+ //# sourceMappingURL=design-inspector-native.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"design-inspector-native.d.ts","sourceRoot":"","sources":["../../src/design/design-inspector-native.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EACV,sBAAsB,EACtB,iBAAiB,EACjB,WAAW,EAEX,kBAAkB,EAEnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AA6JlD;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,IAAI,GAClD,sBAAsB,CAqExB;AAMD;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,IAAI,EACnD,MAAM,EAAE,YAAY,GAAG,IAAI,GAC1B,iBAAiB,CAgBnB;AAiCD;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,IAAI,EACrD,WAAW,CAAC,EAAE;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,GACA,WAAW,EAAE,CA+Bf;AAED;;;;;GAKG;AACH,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,KAAK,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;CAC7B,CAAC,EACF,gBAAgB,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAClD,kBAAkB,EAAE,CAatB"}
@@ -8,7 +8,7 @@
8
8
  * Extended computed styles (~40 design-relevant CSS properties).
9
9
  * This is the canonical format shared with the web SDK.
10
10
  */
11
- interface ExtendedComputedStyles {
11
+ export interface ExtendedComputedStyles {
12
12
  display: string;
13
13
  position: string;
14
14
  boxSizing: string;
@@ -65,7 +65,7 @@ interface ExtendedComputedStyles {
65
65
  /**
66
66
  * Style diff entry: a property that changed from default state
67
67
  */
68
- interface StyleDiff {
68
+ export interface StyleDiff {
69
69
  property: string;
70
70
  defaultValue: string;
71
71
  stateValue: string;
@@ -73,7 +73,7 @@ interface StyleDiff {
73
73
  /**
74
74
  * Styles captured in a specific interaction state
75
75
  */
76
- interface StateStyles {
76
+ export interface StateStyles {
77
77
  state: NativeInteractionStateName;
78
78
  styles: ExtendedComputedStyles;
79
79
  diffFromDefault: StyleDiff[];
@@ -81,7 +81,7 @@ interface StateStyles {
81
81
  /**
82
82
  * Full design data for a single element
83
83
  */
84
- interface ElementDesignData {
84
+ export interface ElementDesignData {
85
85
  elementId: string;
86
86
  label?: string;
87
87
  type: string;
@@ -98,7 +98,7 @@ interface ElementDesignData {
98
98
  /**
99
99
  * Pseudo-element styles (always empty on RN — no ::before/::after)
100
100
  */
101
- interface PseudoElementStyles {
101
+ export interface PseudoElementStyles {
102
102
  selector: '::before' | '::after';
103
103
  content: string;
104
104
  styles: Partial<ExtendedComputedStyles>;
@@ -106,7 +106,7 @@ interface PseudoElementStyles {
106
106
  /**
107
107
  * Design snapshot at a specific viewport/screen size
108
108
  */
109
- interface ResponsiveSnapshot {
109
+ export interface ResponsiveSnapshot {
110
110
  viewportWidth: number;
111
111
  viewportLabel?: string;
112
112
  elements: ElementDesignData[];
@@ -116,7 +116,7 @@ interface ResponsiveSnapshot {
116
116
  * Flattened React Native style — explicit RN style properties.
117
117
  * Not tied to any specific RN version. All properties optional.
118
118
  */
119
- interface FlattenedNativeStyle {
119
+ export interface FlattenedNativeStyle {
120
120
  display?: 'flex' | 'none';
121
121
  position?: 'absolute' | 'relative';
122
122
  width?: number | string;
@@ -191,7 +191,7 @@ interface FlattenedNativeStyle {
191
191
  /**
192
192
  * State-specific style overrides for RN (maps to Pressable states)
193
193
  */
194
- interface NativeStateStyles {
194
+ export interface NativeStateStyles {
195
195
  pressed?: FlattenedNativeStyle;
196
196
  focused?: FlattenedNativeStyle;
197
197
  disabled?: FlattenedNativeStyle;
@@ -200,6 +200,5 @@ interface NativeStateStyles {
200
200
  * Native interaction state names.
201
201
  * RN doesn't have hover/active — uses pressed, focused, disabled instead.
202
202
  */
203
- type NativeInteractionStateName = 'default' | 'pressed' | 'focused' | 'disabled';
204
-
205
- export type { ElementDesignData as E, FlattenedNativeStyle as F, NativeInteractionStateName as N, PseudoElementStyles as P, ResponsiveSnapshot as R, StateStyles as S, ExtendedComputedStyles as a, NativeStateStyles as b, StyleDiff as c };
203
+ export type NativeInteractionStateName = 'default' | 'pressed' | 'focused' | 'disabled';
204
+ //# sourceMappingURL=design-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"design-types.d.ts","sourceRoot":"","sources":["../../src/design/design-types.ts"],"names":[],"mappings":"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"}
@@ -1,63 +1,8 @@
1
- import { R as ResponsiveSnapshot, S as StateStyles, E as ElementDesignData, a as ExtendedComputedStyles } from '../design-types-BHr6Q1FX.js';
2
- export { F as FlattenedNativeStyle, N as NativeInteractionStateName, b as NativeStateStyles, P as PseudoElementStyles, c as StyleDiff } from '../design-types-BHr6Q1FX.js';
3
- import { n as NativeLayout } from '../types-BPNuYxDx.js';
4
-
5
1
  /**
6
- * Native Design Inspector
2
+ * UI Bridge Native - Design Review
7
3
  *
8
- * Pure TypeScript functions that map flattened React Native styles to the
9
- * web SDK's ExtendedComputedStyles format. No react-native imports — works
10
- * with already-flattened style objects from the registry.
11
- *
12
- * Key differences from web:
13
- * - No `window.getComputedStyle()` — styles are declarative objects
14
- * - No hover/active states — uses pressed/focused/disabled
15
- * - No pseudo-elements (::before/::after)
16
- * - No CSS grid, cursor, visibility, transitions, background-image
17
- * - RN default flexDirection is 'column' (not 'row')
18
- * - Shadows differ: iOS uses shadow* props, Android uses elevation
19
- * - Numeric values → "Npx" strings
20
- */
21
-
22
- /**
23
- * Map a flattened React Native style object to ExtendedComputedStyles.
24
- *
25
- * Rules:
26
- * - Numeric values → "Npx"
27
- * - String values → pass through
28
- * - textDecorationLine → textDecoration
29
- * - RN shadow props → boxShadow string
30
- * - CSS-only properties (cursor, visibility, grid*, etc.) → empty string
31
- */
32
- declare function mapNativeStyleToExtended(rnStyle: Record<string, unknown> | undefined | null): ExtendedComputedStyles;
33
- /**
34
- * Produce ElementDesignData for a single native element.
35
- */
36
- declare function getNativeElementDesignData(id: string, label: string | undefined, type: string, rnStyle: Record<string, unknown> | undefined | null, layout: NativeLayout | null): ElementDesignData;
37
- /**
38
- * Produce StateStyles[] for default/pressed/focused/disabled.
39
- * Only includes states that have actual overrides or the default state.
40
- */
41
- declare function captureNativeStateVariations(baseStyle: Record<string, unknown> | undefined | null, stateStyles?: {
42
- pressed?: Record<string, unknown>;
43
- focused?: Record<string, unknown>;
44
- disabled?: Record<string, unknown>;
45
- }): StateStyles[];
46
- /**
47
- * Capture a responsive snapshot.
48
- *
49
- * Platform limitation: RN cannot constrain screen width at runtime.
50
- * This returns a single snapshot at the current device dimensions.
4
+ * Style capture, mapping, and design review for React Native elements.
51
5
  */
52
- declare function captureNativeResponsiveSnapshot(elements: Array<{
53
- id: string;
54
- label?: string;
55
- type: string;
56
- flatStyle?: Record<string, unknown>;
57
- layout: NativeLayout | null;
58
- }>, screenDimensions: {
59
- width: number;
60
- height: number;
61
- }): ResponsiveSnapshot[];
62
-
63
- export { ElementDesignData, ExtendedComputedStyles, ResponsiveSnapshot, StateStyles, captureNativeResponsiveSnapshot, captureNativeStateVariations, getNativeElementDesignData, mapNativeStyleToExtended };
6
+ export type { ExtendedComputedStyles, StyleDiff, StateStyles, ElementDesignData, PseudoElementStyles, ResponsiveSnapshot, FlattenedNativeStyle, NativeStateStyles, NativeInteractionStateName, } from './design-types';
7
+ export { mapNativeStyleToExtended, getNativeElementDesignData, captureNativeStateVariations, captureNativeResponsiveSnapshot, } from './design-inspector-native';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/design/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EACV,sBAAsB,EACtB,SAAS,EACT,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,0BAA0B,GAC3B,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,wBAAwB,EACxB,0BAA0B,EAC1B,4BAA4B,EAC5B,+BAA+B,GAChC,MAAM,2BAA2B,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,89 +1,31 @@
1
- export { A as ActionHandler, B as BridgeEvent, a as BridgeEventListener, b as BridgeEventType, C as ComponentAction, c as CustomAction, D as DiscoveredNativeElement, N as NativeActionRequest, d as NativeActionResponse, e as NativeBridgeSnapshot, f as NativeComponentAction, g as NativeCustomAction, h as NativeElementIdentifier, i as NativeElementRef, j as NativeElementState, k as NativeElementType, l as NativeFindRequest, m as NativeFindResponse, n as NativeLayout, o as NativeStandardAction, p as NativeUIBridgeConfig, q as NativeUIBridgeFeatures, R as RegisteredNativeComponent, r as RegisteredNativeElement, W as WaitOptions, s as Workflow, t as WorkflowStep, u as WorkflowStepType } from './types-BPNuYxDx.js';
2
- export { N as NativeRegistryConfig, a as NativeUIBridgeRegistry, R as RegisterComponentOptions, b as RegisterElementOptions, e as extractHandlerNames, g as getGlobalRegistry, r as resetGlobalRegistry, s as setGlobalRegistry } from './registry-B8A_EoxS.js';
3
- export { buildTreePath, createNativeElementIdentifier, findAllByPattern, findElementByIdentifier, matchesIdentifier, parseTreePath } from './core/index.js';
4
- export { C as CloudRelayClient, a as CloudRelayConfig, b as ComponentActionDef, c as ComponentActionRequest, d as ComponentActionResponse, U as UIBridgeNativeContextValue, e as UIBridgeNativeProvider, f as UIBridgeNativeProviderProps, g as UIBridgeProps, h as UseUIBridgeReturn, i as UseUIComponentOptions, j as UseUIComponentReturn, k as UseUIElementOptions, l as UseUIElementReturn, m as UseUIElementWithPropsReturn, u as useUIBridge, n as useUIBridgeNative, o as useUIBridgeNativeOptional, p as useUIBridgeNativeRequired, q as useUIBridgeRequired, r as useUIComponent, s as useUIComponentAction, t as useUIElement, v as useUIElementWithProps } from './useUIBridge-CDZbWxII.js';
5
- export { A as ActionExecutionOptions, C as ControlActionRequest, a as ControlActionResponse, b as ControlComponentActionRequest, c as ControlComponentActionResponse, N as NativeActionExecutor, P as PressActionParams, S as ScrollActionParams, d as SwipeActionParams, T as TypeActionParams, W as WaitResult } from './types-BCYWwyVy.js';
6
- export { DefaultNativeActionExecutor, createNativeActionExecutor } from './control/index.js';
7
- export { A as APIResponse, H as HTTPRequest, a as HTTPResponse, b as HandlerContext, c as HandlerFunction, J as JsonRpcBatchRequest, d as JsonRpcBatchResponse, e as JsonRpcEvent, f as JsonRpcRequest, g as JsonRpcResponse, N as NativeServerConfig, h as NativeServerHandlers, i as NativeUIBridgeServer, j as NavigationProvider, R as RequestHandler, k as RouteDefinition, l as RouteProvider, S as ScreenshotProvider, m as ServerAdapter, U as UI_BRIDGE_NATIVE_ROUTES, W as WebSocketConnection, n as WebSocketEventBridge, o as WebSocketMessageHandler, p as WebSocketServerAdapter, q as createNativeServer } from './http-server-B7KudcYJ.js';
8
- export { NativeDesignHandlers, buildUpgradeResponse, computeAcceptKey, createDesignHandlers, createServerHandlers } from './server/index.js';
9
- export { E as ElementDesignData, a as ExtendedComputedStyles, F as FlattenedNativeStyle, N as NativeInteractionStateName, b as NativeStateStyles, P as PseudoElementStyles, R as ResponsiveSnapshot, S as StateStyles, c as StyleDiff } from './design-types-BHr6Q1FX.js';
10
- export { captureNativeResponsiveSnapshot, captureNativeStateVariations, getNativeElementDesignData, mapNativeStyleToExtended } from './design/index.js';
11
- export { UIBridgeInspector, UIBridgeInspectorProps } from './debug/index.js';
12
- import 'react/jsx-runtime';
13
- import 'react';
14
-
15
1
  /**
16
- * Device Announcer — mDNS + Cloud registration for physical device discovery
2
+ * UI Bridge Native
17
3
  *
18
- * Announces the UI Bridge service on the local network via mDNS (when
19
- * react-native-zeroconf is available) and optionally registers with the
20
- * cloud relay backend.
21
- */
22
- interface AnnouncerConfig {
23
- /** Stable device identifier */
24
- deviceId: string;
25
- /** App bundle/package ID */
26
- appId: string;
27
- /** UI Bridge server port (default 8087) */
28
- port?: number;
29
- /** Cloud relay WebSocket URL for registration */
30
- cloudRelayUrl?: string;
31
- /** Auth token for cloud relay */
32
- cloudToken?: string;
33
- /** UI Bridge SDK version */
34
- version?: string;
35
- }
36
- interface DeviceAnnouncerState {
37
- mdnsActive: boolean;
38
- cloudConnected: boolean;
39
- }
40
- /** Minimal interface for the react-native-zeroconf Zeroconf instance */
41
- interface ZeroconfService {
42
- publishService(type: string, protocol: string, domain: string, name: string, port: number, txtRecord: Record<string, string>): void;
43
- unpublishService(name: string): void;
44
- }
45
- /**
46
- * Announces the UI Bridge server on the local network (mDNS) and optionally
47
- * registers with the qontinui.io cloud relay for remote discovery.
4
+ * UI Bridge framework for React Native applications.
5
+ * Enables AI-driven UI automation and testing for mobile apps.
6
+ *
7
+ * @packageDocumentation
48
8
  */
49
- declare class DeviceAnnouncer {
50
- private config;
51
- private state;
52
- private cloudWs;
53
- private reconnectTimer;
54
- private reconnectDelay;
55
- private stopped;
56
- /** Zeroconf instance, set when mDNS is successfully started */
57
- private zeroconf;
58
- /** Rotated pairing token for mDNS TXT records */
59
- private pairingToken;
60
- constructor(config: AnnouncerConfig);
61
- /**
62
- * Start mDNS advertisement.
63
- *
64
- * The consumer must pass the `Zeroconf` constructor (from `react-native-zeroconf`)
65
- * explicitly; otherwise this is a no-op.
66
- *
67
- * Rationale: Metro's `require()` throws an uncatchable module-load error if the
68
- * bundle doesn't include the named package. That error escapes async try/catch
69
- * boundaries and crashes the app. We avoid it by never calling `require()`
70
- * ourselves — the consumer imports the package when they know it's installed.
71
- *
72
- * @param ZeroconfCtor - constructor from `import Zeroconf from 'react-native-zeroconf'`
73
- */
74
- startMdnsAdvertise(ZeroconfCtor?: new () => ZeroconfService): Promise<void>;
75
- /**
76
- * Connect to the cloud relay WebSocket and send a device_register message.
77
- *
78
- * Reconnects automatically with exponential backoff (2 s → 60 s) if the
79
- * connection drops.
80
- */
81
- connectCloudRelay(): Promise<void>;
82
- /** Stop all advertising and registration. */
83
- stop(): Promise<void>;
84
- /** Return a copy of the current announcer state. */
85
- getState(): DeviceAnnouncerState;
86
- private scheduleReconnect;
87
- }
88
-
89
- export { type AnnouncerConfig, DeviceAnnouncer, type DeviceAnnouncerState };
9
+ export { type NativeElementIdentifier, type NativeElementState, type NativeLayout, type NativeElementType, type NativeStandardAction, type NativeCustomAction, type RegisteredNativeElement, type RegisteredNativeComponent, type NativeComponentAction, type NativeActionRequest, type NativeActionResponse, type NativeBridgeSnapshot, type NativeUIBridgeFeatures, type NativeUIBridgeConfig, type NativeFindRequest, type NativeFindResponse, type DiscoveredNativeElement, type NativeElementRef, type Workflow, type WorkflowStep, type WorkflowStepType, type WaitOptions, type BridgeEvent, type BridgeEventType, type BridgeEventListener, type ActionHandler, type CustomAction, type ComponentAction, } from './core/types';
10
+ export { NativeUIBridgeRegistry, extractHandlerNames, setGlobalRegistry, getGlobalRegistry, resetGlobalRegistry, type RegisterElementOptions, type RegisterComponentOptions, type NativeRegistryConfig, } from './core/registry';
11
+ export { createNativeElementIdentifier, findElementByIdentifier, findAllByPattern, buildTreePath, parseTreePath, matchesIdentifier, } from './core/element-identifier';
12
+ export { UIBridgeNativeProvider, useUIBridgeNative, useUIBridgeNativeOptional, useUIBridgeNativeRequired, type UIBridgeNativeContextValue, type UIBridgeNativeProviderProps, } from './react/UIBridgeNativeProvider';
13
+ export { useUIElement, useUIElementWithProps, type UseUIElementOptions, type UseUIElementReturn, type UseUIElementWithPropsReturn, type UIBridgeProps, } from './react/useUIElement';
14
+ export { useUIComponent, useUIComponentAction, type ComponentActionDef, type UseUIComponentOptions, type UseUIComponentReturn, } from './react/useUIComponent';
15
+ export { useUIBridge, useUIBridgeRequired, type UseUIBridgeReturn, type ComponentActionRequest, type ComponentActionResponse, } from './react/useUIBridge';
16
+ export { type ControlActionRequest, type ControlActionResponse, type ComponentActionRequest as ControlComponentActionRequest, type ComponentActionResponse as ControlComponentActionResponse, type WaitResult, type NativeActionExecutor, type ActionExecutionOptions, type TypeActionParams, type ScrollActionParams, type SwipeActionParams, type PressActionParams, } from './control/types';
17
+ export { DefaultNativeActionExecutor, createNativeActionExecutor } from './control/action-executor';
18
+ export { type NativeServerConfig, type RouteDefinition, type APIResponse, type HandlerContext, type HandlerFunction, type NativeServerHandlers, type NavigationProvider, type ScreenshotProvider, type RouteProvider, UI_BRIDGE_NATIVE_ROUTES, } from './server/types';
19
+ export { createServerHandlers } from './server/handlers';
20
+ export { NativeUIBridgeServer, createNativeServer, type HTTPRequest, type HTTPResponse, type RequestHandler, type ServerAdapter, type WebSocketServerAdapter, } from './server/http-server';
21
+ export { buildUpgradeResponse, computeAcceptKey } from './server/ws-protocol';
22
+ export { WebSocketConnection } from './server/ws-connection';
23
+ export type { WebSocketMessageHandler } from './server/ws-connection';
24
+ export { WebSocketEventBridge } from './server/ws-event-bridge';
25
+ export type { JsonRpcRequest, JsonRpcResponse, JsonRpcEvent, JsonRpcBatchRequest, JsonRpcBatchResponse, } from './server/ws-types';
26
+ export { type ExtendedComputedStyles, type StyleDiff, type StateStyles, type ElementDesignData, type PseudoElementStyles, type ResponsiveSnapshot, type FlattenedNativeStyle, type NativeStateStyles, type NativeInteractionStateName, } from './design/design-types';
27
+ export { mapNativeStyleToExtended, getNativeElementDesignData, captureNativeStateVariations, captureNativeResponsiveSnapshot, } from './design/design-inspector-native';
28
+ export { createDesignHandlers, type NativeDesignHandlers } from './server/design-handlers';
29
+ export { UIBridgeInspector, type UIBridgeInspectorProps } from './debug/inspector';
30
+ export * from './transport';
31
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -741,7 +741,7 @@ var DefaultNativeActionExecutor = class {
741
741
  if (!params?.text) {
742
742
  throw new Error("Type action requires text parameter");
743
743
  }
744
- if (params.clearFirst) {
744
+ if (params.clearFirst || params.clear) {
745
745
  await this.performClear(element, props);
746
746
  }
747
747
  if (params.delay && params.delay > 0) {
@@ -1974,6 +1974,10 @@ var WS_ROUTES = [
1974
1974
  { pattern: "health", handler: "health", httpMethods: ["GET"] },
1975
1975
  // Elements
1976
1976
  { pattern: "control/elements", handler: "getElements", httpMethods: ["GET"] },
1977
+ // Flat alias — matches the runner UI Bridge's `/ui-bridge/elements` path so
1978
+ // agents can use the same URL across runner + mobile without remembering
1979
+ // the `control/` prefix. Delegates to the same handler.
1980
+ { pattern: "elements", handler: "getElements", httpMethods: ["GET"] },
1977
1981
  { pattern: "control/element/:id", handler: "getElement", httpMethods: ["GET"] },
1978
1982
  { pattern: "control/element/:id/state", handler: "getElementState", httpMethods: ["GET"] },
1979
1983
  { pattern: "control/element/:id/action", handler: "executeAction", httpMethods: ["POST"] },
@@ -2024,6 +2028,87 @@ var WS_ROUTES = [
2024
2028
  // Meta / Introspection
2025
2029
  { pattern: "meta/methods", handler: "getMethods", httpMethods: ["GET"] }
2026
2030
  ];
2031
+ var HANDLER_DESCRIPTIONS = {
2032
+ health: "Liveness probe; returns app metadata + element count",
2033
+ getElements: "Flat list of registered UI elements",
2034
+ getElement: "Single element by id",
2035
+ getElementState: "Dynamic state (value, focused, checked) for one element",
2036
+ executeAction: 'Run an action on an element (see "actions" below for names)',
2037
+ getComponents: "Higher-level components with action schemas",
2038
+ getComponent: "Component detail + per-action paramSchema",
2039
+ executeComponentAction: "Invoke a component action directly (preferred over button clicks)",
2040
+ find: "AI-powered element search by natural-language query",
2041
+ getSnapshot: "Full snapshot: elements + route + state. Supports ?visibleOnly=true and ?currentRouteOnly=true",
2042
+ getWorkflows: "List registered workflows",
2043
+ runWorkflow: "Trigger a workflow by id",
2044
+ pageRefresh: "Reload the current route",
2045
+ pageNavigate: "Imperative router.push(url) \u2014 preferred over tapping tab buttons",
2046
+ pageReplace: "router.replace(url)",
2047
+ pageGoBack: "router.back()",
2048
+ pageGoForward: "router.forward()",
2049
+ getScreenshot: "PNG screenshot of the current screen",
2050
+ getElementStyles: "Computed styles for an element (design review)",
2051
+ getElementStateStyles: "Computed styles per interaction state (hover/focus/disabled)",
2052
+ getDesignSnapshot: "Visual + style snapshot for design review",
2053
+ getResponsiveSnapshots: "Screenshots at multiple viewport widths",
2054
+ runDesignAudit: "Accessibility + visual audit",
2055
+ loadStyleGuide: "Load a design system style guide",
2056
+ getStyleGuide: "Fetch the currently loaded style guide",
2057
+ clearStyleGuide: "Unload the style guide",
2058
+ evaluateQuality: "Score the current UI against a quality context",
2059
+ getQualityContexts: "List available quality evaluation contexts",
2060
+ saveBaseline: "Save a quality baseline snapshot",
2061
+ diffBaseline: "Diff current UI against a saved baseline",
2062
+ getMethods: "List every handler name (legacy introspection)"
2063
+ };
2064
+ var ACTION_REFERENCE = [
2065
+ { name: "press", aliases: ["click"], params: "PressActionParams (optional position)" },
2066
+ { name: "longPress", params: "PressActionParams (optional position)" },
2067
+ { name: "doubleTap", params: "none" },
2068
+ {
2069
+ name: "type",
2070
+ params: "TypeActionParams { text, delay?, clear? | clearFirst? } \u2014 `clear:true` replaces content atomically"
2071
+ },
2072
+ { name: "clear", params: "none \u2014 empties the input" },
2073
+ { name: "focus", params: "none" },
2074
+ { name: "blur", params: "none" },
2075
+ { name: "scroll", params: "ScrollActionParams { offset? {x,y}, to? }" },
2076
+ { name: "swipe", params: "SwipeActionParams { direction, distance }" },
2077
+ { name: "toggle", params: "none \u2014 flips boolean controls" }
2078
+ ];
2079
+ function buildRoutesPayload() {
2080
+ const entries = [];
2081
+ for (const r of WS_ROUTES) {
2082
+ if (!r.httpMethods) continue;
2083
+ for (const m of r.httpMethods) {
2084
+ entries.push({ method: m, path: `/ui-bridge/${r.pattern}` });
2085
+ }
2086
+ }
2087
+ entries.push({ method: "GET", path: "/ui-bridge/_help" });
2088
+ entries.push({ method: "GET", path: "/ui-bridge/_routes" });
2089
+ entries.sort((a, b) => a.path.localeCompare(b.path) || a.method.localeCompare(b.method));
2090
+ return { routes: entries, count: entries.length };
2091
+ }
2092
+ function buildHelpPayload() {
2093
+ return {
2094
+ version: 1,
2095
+ description: "UI Bridge Native HTTP surface. Prefix every path with /ui-bridge/.",
2096
+ routes: WS_ROUTES.map((r) => ({
2097
+ pattern: r.pattern,
2098
+ httpMethods: r.httpMethods ?? [],
2099
+ wsOnly: !r.httpMethods,
2100
+ handler: r.handler,
2101
+ description: HANDLER_DESCRIPTIONS[r.handler] ?? ""
2102
+ })),
2103
+ actions: ACTION_REFERENCE,
2104
+ tips: [
2105
+ "Start with `GET /ui-bridge/control/snapshot?visibleOnly=true` to see what the user actually sees.",
2106
+ "Prefer `control/component/:id/action/:actionId` over button presses \u2014 typed paramSchema, no button-id guessing.",
2107
+ "Use `pageNavigate` for tab switches instead of pressing tab buttons; gesture state often swallows clicks.",
2108
+ "The `type` action supports `clear:true` to replace existing text atomically in one call."
2109
+ ]
2110
+ };
2111
+ }
2027
2112
  var NativeUIBridgeServer = class {
2028
2113
  constructor(registry, executor, config = {}) {
2029
2114
  this.registry = registry;
@@ -2040,7 +2125,9 @@ var NativeUIBridgeServer = class {
2040
2125
  cors: true,
2041
2126
  ...config
2042
2127
  };
2043
- this.handlers = createServerHandlers(registry, executor);
2128
+ this.handlers = createServerHandlers(registry, executor, {
2129
+ appInfo: this.config.appInfo
2130
+ });
2044
2131
  this.handlers.getMethods = async () => {
2045
2132
  const methods = WS_ROUTES.map((r) => ({
2046
2133
  method: r.pattern,
@@ -2844,6 +2931,20 @@ var NativeUIBridgeServer = class {
2844
2931
  };
2845
2932
  }
2846
2933
  const stripped = path.slice(PREFIX.length);
2934
+ if (method === "GET" && stripped === "_help") {
2935
+ return {
2936
+ success: true,
2937
+ data: buildHelpPayload(),
2938
+ timestamp: Date.now()
2939
+ };
2940
+ }
2941
+ if (method === "GET" && stripped === "_routes") {
2942
+ return {
2943
+ success: true,
2944
+ data: buildRoutesPayload(),
2945
+ timestamp: Date.now()
2946
+ };
2947
+ }
2847
2948
  let patternMatchedButWrongVerb = false;
2848
2949
  for (const route of WS_ROUTES) {
2849
2950
  const pathParams = parsePath(route.pattern, stripped);
@@ -3508,7 +3609,8 @@ function UIBridgeNativeProvider({
3508
3609
  }
3509
3610
  const server = createNativeServer(registry, executor, {
3510
3611
  serverPort: config.serverPort || 8087,
3511
- cors: true
3612
+ cors: true,
3613
+ appInfo: config.appInfo
3512
3614
  });
3513
3615
  server.setAdapter(serverAdapter);
3514
3616
  if (navigationProvider) {
@@ -3595,7 +3697,8 @@ function UIBridgeNativeProvider({
3595
3697
  try {
3596
3698
  const bareServer = createNativeServer(registry, executor, {
3597
3699
  serverPort: config.serverPort || 8087,
3598
- cors: true
3700
+ cors: true,
3701
+ appInfo: config.appInfo
3599
3702
  });
3600
3703
  if (navigationProvider) bareServer.setNavigationProvider(navigationProvider);
3601
3704
  if (screenshotProvider) bareServer.setScreenshotProvider(screenshotProvider);