@qontinui/ui-bridge 0.3.0 → 0.3.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 (127) hide show
  1. package/dist/ai/index.d.mts +312 -155
  2. package/dist/ai/index.d.ts +312 -155
  3. package/dist/ai/index.js +2363 -67
  4. package/dist/ai/index.js.map +1 -1
  5. package/dist/ai/index.mjs +2328 -68
  6. package/dist/ai/index.mjs.map +1 -1
  7. package/dist/annotations/index.d.mts +218 -0
  8. package/dist/annotations/index.d.ts +218 -0
  9. package/dist/annotations/index.js +246 -0
  10. package/dist/annotations/index.js.map +1 -0
  11. package/dist/annotations/index.mjs +241 -0
  12. package/dist/annotations/index.mjs.map +1 -0
  13. package/dist/assertions-BSR3afVr.d.ts +161 -0
  14. package/dist/assertions-CTw1hfOx.d.mts +161 -0
  15. package/dist/babel-plugin/index.js +23 -34
  16. package/dist/babel-plugin/index.js.map +1 -1
  17. package/dist/babel-plugin/index.mjs +23 -34
  18. package/dist/babel-plugin/index.mjs.map +1 -1
  19. package/dist/browser-capture-Bms60T6f.d.mts +47 -0
  20. package/dist/browser-capture-CsTU29mb.d.ts +47 -0
  21. package/dist/control/index.d.mts +26 -7
  22. package/dist/control/index.d.ts +26 -7
  23. package/dist/control/index.js +276 -48
  24. package/dist/control/index.js.map +1 -1
  25. package/dist/control/index.mjs +276 -48
  26. package/dist/control/index.mjs.map +1 -1
  27. package/dist/core/index.d.mts +2 -2
  28. package/dist/core/index.d.ts +2 -2
  29. package/dist/core/index.js.map +1 -1
  30. package/dist/core/index.mjs.map +1 -1
  31. package/dist/debug/index.d.mts +5 -3
  32. package/dist/debug/index.d.ts +5 -3
  33. package/dist/debug/index.js +925 -1
  34. package/dist/debug/index.js.map +1 -1
  35. package/dist/debug/index.mjs +924 -2
  36. package/dist/debug/index.mjs.map +1 -1
  37. package/dist/index.d.mts +12 -7
  38. package/dist/index.d.ts +12 -7
  39. package/dist/index.js +4720 -173
  40. package/dist/index.js.map +1 -1
  41. package/dist/index.mjs +4656 -174
  42. package/dist/index.mjs.map +1 -1
  43. package/dist/{metrics-DTA2bwG7.d.mts → metrics-DuA2qIIz.d.mts} +2 -2
  44. package/dist/{metrics-BfiT_rhZ.d.ts → metrics-KFAAKNEB.d.ts} +2 -2
  45. package/dist/native/control/index.js +2 -7
  46. package/dist/native/control/index.js.map +1 -1
  47. package/dist/native/control/index.mjs +2 -7
  48. package/dist/native/control/index.mjs.map +1 -1
  49. package/dist/native/core/index.js.map +1 -1
  50. package/dist/native/core/index.mjs.map +1 -1
  51. package/dist/native/debug/index.js +23 -66
  52. package/dist/native/debug/index.js.map +1 -1
  53. package/dist/native/debug/index.mjs +23 -66
  54. package/dist/native/debug/index.mjs.map +1 -1
  55. package/dist/native/index.js +89 -131
  56. package/dist/native/index.js.map +1 -1
  57. package/dist/native/index.mjs +89 -131
  58. package/dist/native/index.mjs.map +1 -1
  59. package/dist/native/react/index.js +28 -52
  60. package/dist/native/react/index.js.map +1 -1
  61. package/dist/native/react/index.mjs +28 -52
  62. package/dist/native/react/index.mjs.map +1 -1
  63. package/dist/native/server/index.js +38 -13
  64. package/dist/native/server/index.js.map +1 -1
  65. package/dist/native/server/index.mjs +38 -13
  66. package/dist/native/server/index.mjs.map +1 -1
  67. package/dist/react/index.d.mts +107 -8
  68. package/dist/react/index.d.ts +107 -8
  69. package/dist/react/index.js +2194 -84
  70. package/dist/react/index.js.map +1 -1
  71. package/dist/react/index.mjs +2194 -85
  72. package/dist/react/index.mjs.map +1 -1
  73. package/dist/{registry-BKLEm-yk.d.ts → registry-C6dDtn1v.d.ts} +27 -2
  74. package/dist/{registry-BmZgyCz8.d.mts → registry-POtcxnal.d.mts} +27 -2
  75. package/dist/render-log/index.d.mts +1 -1
  76. package/dist/render-log/index.d.ts +1 -1
  77. package/dist/server/express.d.mts +5 -4
  78. package/dist/server/express.d.ts +5 -4
  79. package/dist/server/express.js +104 -2
  80. package/dist/server/express.js.map +1 -1
  81. package/dist/server/express.mjs +104 -2
  82. package/dist/server/express.mjs.map +1 -1
  83. package/dist/server/handlers.d.mts +36 -5
  84. package/dist/server/handlers.d.ts +36 -5
  85. package/dist/server/handlers.js +3129 -224
  86. package/dist/server/handlers.js.map +1 -1
  87. package/dist/server/handlers.mjs +3129 -224
  88. package/dist/server/handlers.mjs.map +1 -1
  89. package/dist/server/index.d.mts +7 -5
  90. package/dist/server/index.d.ts +7 -5
  91. package/dist/server/index.js +3215 -183
  92. package/dist/server/index.js.map +1 -1
  93. package/dist/server/index.mjs +3215 -183
  94. package/dist/server/index.mjs.map +1 -1
  95. package/dist/server/nextjs.d.mts +6 -4
  96. package/dist/server/nextjs.d.ts +6 -4
  97. package/dist/server/nextjs.js +106 -3
  98. package/dist/server/nextjs.js.map +1 -1
  99. package/dist/server/nextjs.mjs +106 -3
  100. package/dist/server/nextjs.mjs.map +1 -1
  101. package/dist/server/standalone.d.mts +6 -5
  102. package/dist/server/standalone.d.ts +6 -5
  103. package/dist/server/standalone.js +131 -5
  104. package/dist/server/standalone.js.map +1 -1
  105. package/dist/server/standalone.mjs +131 -5
  106. package/dist/server/standalone.mjs.map +1 -1
  107. package/dist/specs/index.d.mts +365 -0
  108. package/dist/specs/index.d.ts +365 -0
  109. package/dist/specs/index.js +2809 -0
  110. package/dist/specs/index.js.map +1 -0
  111. package/dist/specs/index.mjs +2786 -0
  112. package/dist/specs/index.mjs.map +1 -0
  113. package/dist/{standalone-BURj8J3G.d.ts → standalone-B6GLIEmR.d.ts} +6 -2
  114. package/dist/{standalone-Dwmel29d.d.mts → standalone-CjdYqj3P.d.mts} +6 -2
  115. package/dist/{types-CHnlwiTK.d.ts → types-B2EfvEaq.d.ts} +83 -3
  116. package/dist/{types-B7J7noLK.d.mts → types-C7gVYRnF.d.ts} +72 -2
  117. package/dist/{types-BkNRILUa.d.ts → types-CJGrBEhC.d.mts} +72 -2
  118. package/dist/types-CebMQj76.d.ts +1275 -0
  119. package/dist/types-D_ypYl3T.d.mts +1275 -0
  120. package/dist/types-UBtp7R0u.d.mts +132 -0
  121. package/dist/types-UBtp7R0u.d.ts +132 -0
  122. package/dist/{types-CEQLnFMv.d.mts → types-gO696T_t.d.mts} +83 -3
  123. package/dist/{types-jKVgTI6_.d.mts → types-suaYwWWg.d.mts} +173 -2
  124. package/dist/{types-jKVgTI6_.d.ts → types-suaYwWWg.d.ts} +173 -2
  125. package/package.json +18 -2
  126. package/dist/types-B5Q0GVo0.d.mts +0 -646
  127. package/dist/types-DfPqwU-i.d.ts +0 -646
@@ -511,10 +511,7 @@ var DefaultNativeActionExecutor = class {
511
511
  };
512
512
  }
513
513
  if (request.waitOptions) {
514
- const waitResult = await this.waitForElementInternal(
515
- registered.id,
516
- request.waitOptions
517
- );
514
+ const waitResult = await this.waitForElementInternal(registered.id, request.waitOptions);
518
515
  waitDurationMs = waitResult.waitedMs;
519
516
  if (!waitResult.met) {
520
517
  return {
@@ -818,9 +815,7 @@ var DefaultNativeActionExecutor = class {
818
815
  filtered = filtered.filter((e) => request.types.includes(e.type));
819
816
  }
820
817
  if (request.testIdPattern) {
821
- const regex = new RegExp(
822
- request.testIdPattern.replace(/\*/g, ".*").replace(/\?/g, ".")
823
- );
818
+ const regex = new RegExp(request.testIdPattern.replace(/\*/g, ".*").replace(/\?/g, "."));
824
819
  filtered = filtered.filter((e) => {
825
820
  const identifier = e.getIdentifier();
826
821
  return identifier.testId && regex.test(identifier.testId);
@@ -940,9 +935,7 @@ function UIBridgeNativeProvider({
940
935
  console.warn("[ui-bridge-native] Server feature not enabled");
941
936
  return;
942
937
  }
943
- console.log(
944
- `[ui-bridge-native] Would start HTTP server on port ${config.serverPort || 9876}`
945
- );
938
+ console.log(`[ui-bridge-native] Would start HTTP server on port ${config.serverPort || 9876}`);
946
939
  setServerRunning(true);
947
940
  }, [features.server, config.serverPort]);
948
941
  const stopServer = useCallback(() => {
@@ -1062,30 +1055,28 @@ function useUIElement(options) {
1062
1055
  (event) => {
1063
1056
  const { x, y, width, height } = event.nativeEvent.layout;
1064
1057
  if (ref.current && "measureInWindow" in ref.current) {
1065
- ref.current.measureInWindow(
1066
- (pageX, pageY) => {
1067
- const newLayout = {
1068
- x,
1069
- y,
1070
- width,
1071
- height,
1072
- pageX,
1073
- pageY
1058
+ ref.current.measureInWindow((pageX, pageY) => {
1059
+ const newLayout = {
1060
+ x,
1061
+ y,
1062
+ width,
1063
+ height,
1064
+ pageX,
1065
+ pageY
1066
+ };
1067
+ setLayout(newLayout);
1068
+ if (bridge && registered) {
1069
+ const newState = {
1070
+ mounted: true,
1071
+ visible: width > 0 && height > 0,
1072
+ enabled: true,
1073
+ focused: false,
1074
+ layout: newLayout
1074
1075
  };
1075
- setLayout(newLayout);
1076
- if (bridge && registered) {
1077
- const newState = {
1078
- mounted: true,
1079
- visible: width > 0 && height > 0,
1080
- enabled: true,
1081
- focused: false,
1082
- layout: newLayout
1083
- };
1084
- bridge.registry.updateElementState(id, newState);
1085
- onStateChange?.(newState);
1086
- }
1076
+ bridge.registry.updateElementState(id, newState);
1077
+ onStateChange?.(newState);
1087
1078
  }
1088
- );
1079
+ });
1089
1080
  } else {
1090
1081
  const newLayout = {
1091
1082
  x,
@@ -1281,18 +1272,9 @@ function useUIBridge() {
1281
1272
  const bridge = useUIBridgeNativeOptional();
1282
1273
  const available = bridge !== null;
1283
1274
  const initialized = bridge?.initialized ?? false;
1284
- const elements = useMemo(
1285
- () => bridge ? bridge.getElements() : [],
1286
- [bridge]
1287
- );
1288
- const components = useMemo(
1289
- () => bridge ? bridge.getComponents() : [],
1290
- [bridge]
1291
- );
1292
- const workflows = useMemo(
1293
- () => bridge ? bridge.registry.getAllWorkflows() : [],
1294
- [bridge]
1295
- );
1275
+ const elements = useMemo(() => bridge ? bridge.getElements() : [], [bridge]);
1276
+ const components = useMemo(() => bridge ? bridge.getComponents() : [], [bridge]);
1277
+ const workflows = useMemo(() => bridge ? bridge.registry.getAllWorkflows() : [], [bridge]);
1296
1278
  const createSnapshot = useCallback(() => {
1297
1279
  if (!bridge) {
1298
1280
  return {
@@ -1346,14 +1328,8 @@ function useUIBridge() {
1346
1328
  },
1347
1329
  [bridge]
1348
1330
  );
1349
- const getElement = useCallback(
1350
- (id) => bridge?.registry.getElement(id),
1351
- [bridge]
1352
- );
1353
- const getComponent = useCallback(
1354
- (id) => bridge?.registry.getComponent(id),
1355
- [bridge]
1356
- );
1331
+ const getElement = useCallback((id) => bridge?.registry.getElement(id), [bridge]);
1332
+ const getComponent = useCallback((id) => bridge?.registry.getComponent(id), [bridge]);
1357
1333
  const getElementState = useCallback(
1358
1334
  (id) => {
1359
1335
  const element = bridge?.registry.getElement(id);
@@ -1459,6 +1435,27 @@ var UI_BRIDGE_NATIVE_ROUTES = {
1459
1435
  path: "/ui-bridge/control/workflow/:id/run",
1460
1436
  description: "Run a workflow"
1461
1437
  },
1438
+ // Page Navigation
1439
+ PAGE_REFRESH: {
1440
+ method: "POST",
1441
+ path: "/ui-bridge/control/page/refresh",
1442
+ description: "Refresh the current page"
1443
+ },
1444
+ PAGE_NAVIGATE: {
1445
+ method: "POST",
1446
+ path: "/ui-bridge/control/page/navigate",
1447
+ description: "Navigate to a URL"
1448
+ },
1449
+ PAGE_GO_BACK: {
1450
+ method: "POST",
1451
+ path: "/ui-bridge/control/page/back",
1452
+ description: "Go back in navigation history"
1453
+ },
1454
+ PAGE_GO_FORWARD: {
1455
+ method: "POST",
1456
+ path: "/ui-bridge/control/page/forward",
1457
+ description: "Go forward in navigation history"
1458
+ },
1462
1459
  // Health
1463
1460
  HEALTH: {
1464
1461
  method: "GET",
@@ -1620,6 +1617,19 @@ function createServerHandlers(registry, executor) {
1620
1617
  status: "pending"
1621
1618
  });
1622
1619
  },
1620
+ // Page Navigation (stubs — React Native apps should override with their navigation provider)
1621
+ pageRefresh: async () => {
1622
+ return error("Page refresh not supported on native platform", "NOT_SUPPORTED");
1623
+ },
1624
+ pageNavigate: async () => {
1625
+ return error("Page navigation not supported on native platform", "NOT_SUPPORTED");
1626
+ },
1627
+ pageGoBack: async () => {
1628
+ return error("Page go back not supported on native platform", "NOT_SUPPORTED");
1629
+ },
1630
+ pageGoForward: async () => {
1631
+ return error("Page go forward not supported on native platform", "NOT_SUPPORTED");
1632
+ },
1623
1633
  // Health
1624
1634
  health: async () => {
1625
1635
  const stats = registry.getStats();
@@ -1660,22 +1670,13 @@ var NativeUIBridgeServer = class {
1660
1670
  return;
1661
1671
  }
1662
1672
  if (!this.adapter) {
1663
- console.warn(
1664
- "[ui-bridge-native] No server adapter configured. Call setAdapter() first."
1665
- );
1666
- console.warn(
1667
- "[ui-bridge-native] See documentation for supported adapters."
1668
- );
1673
+ console.warn("[ui-bridge-native] No server adapter configured. Call setAdapter() first.");
1674
+ console.warn("[ui-bridge-native] See documentation for supported adapters.");
1669
1675
  return;
1670
1676
  }
1671
- await this.adapter.start(
1672
- this.config.serverPort,
1673
- this.handleRequest.bind(this)
1674
- );
1677
+ await this.adapter.start(this.config.serverPort, this.handleRequest.bind(this));
1675
1678
  this.running = true;
1676
- console.log(
1677
- `[ui-bridge-native] HTTP server started on port ${this.config.serverPort}`
1678
- );
1679
+ console.log(`[ui-bridge-native] HTTP server started on port ${this.config.serverPort}`);
1679
1680
  }
1680
1681
  /**
1681
1682
  * Stop the HTTP server
@@ -1810,41 +1811,26 @@ function ElementCard({
1810
1811
  }) {
1811
1812
  const state = element.getState();
1812
1813
  const identifier = element.getIdentifier();
1813
- return /* @__PURE__ */ jsxs(
1814
- TouchableOpacity,
1815
- {
1816
- style: styles.elementCard,
1817
- onPress: () => onPress(element),
1818
- children: [
1819
- /* @__PURE__ */ jsxs(View, { style: styles.elementHeader, children: [
1820
- /* @__PURE__ */ jsx(Text, { style: styles.elementId, children: element.id }),
1821
- /* @__PURE__ */ jsx(Text, { style: styles.elementType, children: element.type })
1822
- ] }),
1823
- element.label && /* @__PURE__ */ jsx(Text, { style: styles.elementLabel, children: element.label }),
1824
- /* @__PURE__ */ jsxs(View, { style: styles.stateRow, children: [
1825
- /* @__PURE__ */ jsx(StateIndicator, { label: "Mounted", value: state.mounted }),
1826
- /* @__PURE__ */ jsx(StateIndicator, { label: "Visible", value: state.visible }),
1827
- /* @__PURE__ */ jsx(StateIndicator, { label: "Enabled", value: state.enabled })
1828
- ] }),
1829
- identifier.testId && /* @__PURE__ */ jsxs(Text, { style: styles.testId, children: [
1830
- "testID: ",
1831
- identifier.testId
1832
- ] })
1833
- ]
1834
- }
1835
- );
1814
+ return /* @__PURE__ */ jsxs(TouchableOpacity, { style: styles.elementCard, onPress: () => onPress(element), children: [
1815
+ /* @__PURE__ */ jsxs(View, { style: styles.elementHeader, children: [
1816
+ /* @__PURE__ */ jsx(Text, { style: styles.elementId, children: element.id }),
1817
+ /* @__PURE__ */ jsx(Text, { style: styles.elementType, children: element.type })
1818
+ ] }),
1819
+ element.label && /* @__PURE__ */ jsx(Text, { style: styles.elementLabel, children: element.label }),
1820
+ /* @__PURE__ */ jsxs(View, { style: styles.stateRow, children: [
1821
+ /* @__PURE__ */ jsx(StateIndicator, { label: "Mounted", value: state.mounted }),
1822
+ /* @__PURE__ */ jsx(StateIndicator, { label: "Visible", value: state.visible }),
1823
+ /* @__PURE__ */ jsx(StateIndicator, { label: "Enabled", value: state.enabled })
1824
+ ] }),
1825
+ identifier.testId && /* @__PURE__ */ jsxs(Text, { style: styles.testId, children: [
1826
+ "testID: ",
1827
+ identifier.testId
1828
+ ] })
1829
+ ] });
1836
1830
  }
1837
1831
  function StateIndicator({ label, value }) {
1838
1832
  return /* @__PURE__ */ jsxs(View, { style: styles.stateIndicator, children: [
1839
- /* @__PURE__ */ jsx(
1840
- View,
1841
- {
1842
- style: [
1843
- styles.stateDot,
1844
- { backgroundColor: value ? "#4CAF50" : "#F44336" }
1845
- ]
1846
- }
1847
- ),
1833
+ /* @__PURE__ */ jsx(View, { style: [styles.stateDot, { backgroundColor: value ? "#4CAF50" : "#F44336" }] }),
1848
1834
  /* @__PURE__ */ jsx(Text, { style: styles.stateLabel, children: label })
1849
1835
  ] });
1850
1836
  }
@@ -1949,17 +1935,9 @@ function UIBridgeInspector({
1949
1935
  }) {
1950
1936
  const bridge = useUIBridgeNativeOptional();
1951
1937
  const [showInspector, setShowInspector] = useState(visible);
1952
- const [selectedElement, setSelectedElement] = useState(
1953
- null
1954
- );
1955
- const elements = useMemo(
1956
- () => bridge ? bridge.getElements() : [],
1957
- [bridge, showInspector]
1958
- );
1959
- const components = useMemo(
1960
- () => bridge ? bridge.getComponents() : [],
1961
- [bridge, showInspector]
1962
- );
1938
+ const [selectedElement, setSelectedElement] = useState(null);
1939
+ const elements = useMemo(() => bridge ? bridge.getElements() : [], [bridge, showInspector]);
1940
+ const components = useMemo(() => bridge ? bridge.getComponents() : [], [bridge, showInspector]);
1963
1941
  const handleToggle = useCallback(() => {
1964
1942
  setShowInspector((prev) => !prev);
1965
1943
  }, []);
@@ -1990,14 +1968,7 @@ function UIBridgeInspector({
1990
1968
  return null;
1991
1969
  }
1992
1970
  return /* @__PURE__ */ jsxs(Fragment, { children: [
1993
- /* @__PURE__ */ jsx(
1994
- TouchableOpacity,
1995
- {
1996
- style: [styles.toggleButton, toggleStyle],
1997
- onPress: handleToggle,
1998
- children: /* @__PURE__ */ jsx(Text, { style: styles.toggleText, children: "UI" })
1999
- }
2000
- ),
1971
+ /* @__PURE__ */ jsx(TouchableOpacity, { style: [styles.toggleButton, toggleStyle], onPress: handleToggle, children: /* @__PURE__ */ jsx(Text, { style: styles.toggleText, children: "UI" }) }),
2001
1972
  /* @__PURE__ */ jsx(
2002
1973
  Modal,
2003
1974
  {
@@ -2024,21 +1995,8 @@ function UIBridgeInspector({
2024
1995
  /* @__PURE__ */ jsx(Text, { style: styles.statLabel, children: "Server" })
2025
1996
  ] })
2026
1997
  ] }),
2027
- selectedElement ? /* @__PURE__ */ jsx(
2028
- ElementDetail,
2029
- {
2030
- element: selectedElement,
2031
- onClose: handleCloseDetail
2032
- }
2033
- ) : /* @__PURE__ */ jsxs(ScrollView, { style: styles.elementList, children: [
2034
- elements.map((element) => /* @__PURE__ */ jsx(
2035
- ElementCard,
2036
- {
2037
- element,
2038
- onPress: handleSelectElement
2039
- },
2040
- element.id
2041
- )),
1998
+ selectedElement ? /* @__PURE__ */ jsx(ElementDetail, { element: selectedElement, onClose: handleCloseDetail }) : /* @__PURE__ */ jsxs(ScrollView, { style: styles.elementList, children: [
1999
+ elements.map((element) => /* @__PURE__ */ jsx(ElementCard, { element, onPress: handleSelectElement }, element.id)),
2042
2000
  elements.length === 0 && /* @__PURE__ */ jsx(Text, { style: styles.emptyText, children: "No elements registered yet" })
2043
2001
  ] })
2044
2002
  ] }) })