@luxonis/depthai-viewer-common 3.8.2 → 3.8.3

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 (123) hide show
  1. package/README.md +104 -11
  2. package/dist/components/CTASubLabel.d.ts +10 -2
  3. package/dist/components/CTASubLabel.d.ts.map +1 -1
  4. package/dist/components/CTASubLabel.js +3 -0
  5. package/dist/components/CTASubLabel.js.map +1 -1
  6. package/dist/components/DepthAIContext.d.ts +25 -2
  7. package/dist/components/DepthAIContext.d.ts.map +1 -1
  8. package/dist/components/DepthAIContext.js +3 -0
  9. package/dist/components/DepthAIContext.js.map +1 -1
  10. package/dist/components/Pipeline.d.ts +19 -2
  11. package/dist/components/Pipeline.d.ts.map +1 -1
  12. package/dist/components/Pipeline.js +12 -0
  13. package/dist/components/Pipeline.js.map +1 -1
  14. package/dist/components/Resizable.d.ts +20 -0
  15. package/dist/components/Resizable.d.ts.map +1 -1
  16. package/dist/components/Resizable.js +8 -0
  17. package/dist/components/Resizable.js.map +1 -1
  18. package/dist/components/Streams.d.ts +98 -4
  19. package/dist/components/Streams.d.ts.map +1 -1
  20. package/dist/components/Streams.js +8 -0
  21. package/dist/components/Streams.js.map +1 -1
  22. package/dist/components/ThemeToggle.d.ts +8 -0
  23. package/dist/components/ThemeToggle.d.ts.map +1 -1
  24. package/dist/components/ThemeToggle.js +8 -0
  25. package/dist/components/ThemeToggle.js.map +1 -1
  26. package/dist/constants/connection.d.ts +27 -0
  27. package/dist/constants/connection.d.ts.map +1 -1
  28. package/dist/constants/connection.js +12 -0
  29. package/dist/constants/connection.js.map +1 -1
  30. package/dist/constants/streams.d.ts +9 -0
  31. package/dist/constants/streams.d.ts.map +1 -1
  32. package/dist/constants/streams.js +6 -0
  33. package/dist/constants/streams.js.map +1 -1
  34. package/dist/constants/url.d.ts +12 -0
  35. package/dist/constants/url.d.ts.map +1 -1
  36. package/dist/constants/url.js +12 -0
  37. package/dist/constants/url.js.map +1 -1
  38. package/dist/dai-connection/connection.d.ts +189 -2
  39. package/dist/dai-connection/connection.d.ts.map +1 -1
  40. package/dist/dai-connection/connection.js +121 -5
  41. package/dist/dai-connection/connection.js.map +1 -1
  42. package/dist/dai-connection/decoder.worker.d.ts +21 -0
  43. package/dist/dai-connection/decoder.worker.d.ts.map +1 -1
  44. package/dist/dai-connection/decoder.worker.js +6 -0
  45. package/dist/dai-connection/decoder.worker.js.map +1 -1
  46. package/dist/hooks/connection.d.ts +206 -0
  47. package/dist/hooks/connection.d.ts.map +1 -1
  48. package/dist/hooks/connection.js +22 -0
  49. package/dist/hooks/connection.js.map +1 -1
  50. package/dist/hooks/navigation.d.ts +5 -0
  51. package/dist/hooks/navigation.d.ts.map +1 -1
  52. package/dist/hooks/navigation.js +5 -0
  53. package/dist/hooks/navigation.js.map +1 -1
  54. package/dist/hooks/search.d.ts +12 -0
  55. package/dist/hooks/search.d.ts.map +1 -1
  56. package/dist/hooks/search.js +3 -0
  57. package/dist/hooks/search.js.map +1 -1
  58. package/dist/hooks/useFullScreen.d.ts +8 -0
  59. package/dist/hooks/useFullScreen.d.ts.map +1 -1
  60. package/dist/hooks/useFullScreen.js +8 -0
  61. package/dist/hooks/useFullScreen.js.map +1 -1
  62. package/dist/index.d.ts +5 -2
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.js +5 -2
  65. package/dist/index.js.map +1 -1
  66. package/dist/models/device-configuration.d.ts +69 -0
  67. package/dist/models/device-configuration.d.ts.map +1 -1
  68. package/dist/models/device-configuration.js +21 -0
  69. package/dist/models/device-configuration.js.map +1 -1
  70. package/dist/providers/ConnectionProvider.d.ts +56 -2
  71. package/dist/providers/ConnectionProvider.d.ts.map +1 -1
  72. package/dist/providers/ConnectionProvider.js +26 -0
  73. package/dist/providers/ConnectionProvider.js.map +1 -1
  74. package/dist/providers/DataProvider.d.ts +129 -0
  75. package/dist/providers/DataProvider.d.ts.map +1 -1
  76. package/dist/providers/DataProvider.js +21 -0
  77. package/dist/providers/DataProvider.js.map +1 -1
  78. package/dist/providers/ThemeProvider.d.ts +67 -7
  79. package/dist/providers/ThemeProvider.d.ts.map +1 -1
  80. package/dist/providers/ThemeProvider.js +39 -2
  81. package/dist/providers/ThemeProvider.js.map +1 -1
  82. package/dist/providers/VisualizerRuntimeConfigProvider.d.ts +43 -3
  83. package/dist/providers/VisualizerRuntimeConfigProvider.d.ts.map +1 -1
  84. package/dist/providers/VisualizerRuntimeConfigProvider.js +20 -3
  85. package/dist/providers/VisualizerRuntimeConfigProvider.js.map +1 -1
  86. package/dist/utils/arrays.d.ts +7 -0
  87. package/dist/utils/arrays.d.ts.map +1 -1
  88. package/dist/utils/arrays.js +7 -0
  89. package/dist/utils/arrays.js.map +1 -1
  90. package/dist/utils/functions.d.ts +3 -0
  91. package/dist/utils/functions.d.ts.map +1 -1
  92. package/dist/utils/functions.js +3 -0
  93. package/dist/utils/functions.js.map +1 -1
  94. package/dist/utils/local-storage.d.ts +20 -0
  95. package/dist/utils/local-storage.d.ts.map +1 -1
  96. package/dist/utils/local-storage.js +17 -0
  97. package/dist/utils/local-storage.js.map +1 -1
  98. package/dist/utils/logger.d.ts +31 -0
  99. package/dist/utils/logger.d.ts.map +1 -1
  100. package/dist/utils/logger.js +36 -7
  101. package/dist/utils/logger.js.map +1 -1
  102. package/dist/utils/sorting.d.ts +6 -0
  103. package/dist/utils/sorting.d.ts.map +1 -1
  104. package/dist/utils/sorting.js +6 -0
  105. package/dist/utils/sorting.js.map +1 -1
  106. package/dist/utils/topic.d.ts +6 -0
  107. package/dist/utils/topic.d.ts.map +1 -1
  108. package/dist/utils/topic.js +3 -0
  109. package/dist/utils/topic.js.map +1 -1
  110. package/dist/utils/units.d.ts +24 -0
  111. package/dist/utils/units.d.ts.map +1 -1
  112. package/dist/utils/units.js +24 -0
  113. package/dist/utils/units.js.map +1 -1
  114. package/dist/utils/url.d.ts +9 -0
  115. package/dist/utils/url.d.ts.map +1 -1
  116. package/dist/utils/url.js +10 -1
  117. package/dist/utils/url.js.map +1 -1
  118. package/dist/utils/vite-dev-fix.d.ts +13 -0
  119. package/dist/utils/vite-dev-fix.d.ts.map +1 -1
  120. package/dist/utils/vite-dev-fix.js +13 -0
  121. package/dist/utils/vite-dev-fix.js.map +1 -1
  122. package/package.json +2 -2
  123. package/protobuf-gen.sh +60 -3
@@ -1,5 +1,8 @@
1
1
  import type { IconType } from 'react-icons';
2
2
  import type { ThemePreference } from '../providers/ThemeProvider.js';
3
+ /**
4
+ * Theme options displayed by {@link ThemeToggle}.
5
+ */
3
6
  export declare const THEME_OPTIONS: {
4
7
  value: ThemePreference;
5
8
  label: string;
@@ -8,6 +11,11 @@ export declare const THEME_OPTIONS: {
8
11
  /**
9
12
  * Toolbar control for picking the theme. Shows the theme that is actually rendered,
10
13
  * so `system` still reads as sun or moon rather than as a third, ambiguous state.
14
+ *
15
+ * @example
16
+ * ```tsx
17
+ * <ThemeToggle />
18
+ * ```
11
19
  */
12
20
  export declare const ThemeToggle: () => import("react/jsx-runtime").JSX.Element;
13
21
  //# sourceMappingURL=ThemeToggle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeToggle.d.ts","sourceRoot":"","sources":["../../src/components/ThemeToggle.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAGrE,eAAO,MAAM,aAAa,EAAE;IAAE,KAAK,EAAE,eAAe,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,EAIpF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,WAAW,+CA+BvB,CAAC"}
1
+ {"version":3,"file":"ThemeToggle.d.ts","sourceRoot":"","sources":["../../src/components/ThemeToggle.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAGrE;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE;IAAE,KAAK,EAAE,eAAe,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,EAIpF,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW,+CA+BvB,CAAC"}
@@ -2,6 +2,9 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Button, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuTrigger, Tooltip, } from '@luxonis/ui-components';
3
3
  import { LuMonitor, LuMoon, LuSun } from 'react-icons/lu';
4
4
  import { useTheme } from '../providers/ThemeProvider.js';
5
+ /**
6
+ * Theme options displayed by {@link ThemeToggle}.
7
+ */
5
8
  export const THEME_OPTIONS = [
6
9
  { value: 'light', label: 'Light', icon: LuSun },
7
10
  { value: 'dark', label: 'Dark', icon: LuMoon },
@@ -10,6 +13,11 @@ export const THEME_OPTIONS = [
10
13
  /**
11
14
  * Toolbar control for picking the theme. Shows the theme that is actually rendered,
12
15
  * so `system` still reads as sun or moon rather than as a third, ambiguous state.
16
+ *
17
+ * @example
18
+ * ```tsx
19
+ * <ThemeToggle />
20
+ * ```
13
21
  */
14
22
  export const ThemeToggle = () => {
15
23
  const { theme, resolvedTheme, setTheme } = useTheme();
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeToggle.js","sourceRoot":"","sources":["../../src/components/ThemeToggle.tsx"],"names":[],"mappings":";AAAA,OAAO,EACN,MAAM,EACN,YAAY,EACZ,wBAAwB,EACxB,mBAAmB,EACnB,mBAAmB,EACnB,OAAO,GACP,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAE1D,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAEzD,MAAM,CAAC,MAAM,aAAa,GAAgE;IACzF,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE;IAC/C,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;IAC9C,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;CACrD,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,EAAE;IAC/B,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAAC;IAEtD,OAAO,CACN,MAAC,YAAY,eACZ,KAAC,OAAO,IAAC,OAAO,EAAC,OAAO,EAAC,IAAI,EAAC,MAAM,YACnC,KAAC,mBAAmB,IAAC,OAAO,kBAC3B,KAAC,MAAM,mBACM,sBAAsB,gBACvB,OAAO,EAClB,IAAI,EAAE,aAAa,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAC/C,OAAO,EAAC,SAAS,EACjB,MAAM,EAAC,OAAO,GACb,GACmB,GACb,EAEV,KAAC,mBAAmB,cAClB,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAC9B,KAAC,wBAAwB,mBAEX,gBAAgB,MAAM,CAAC,KAAK,EAAE,EAC3C,OAAO,EAAE,KAAK,KAAK,MAAM,CAAC,KAAK,EAC/B,eAAe,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,YAE5C,MAAM,CAAC,KAAK,IALR,MAAM,CAAC,KAAK,CAMS,CAC3B,CAAC,GACmB,IACR,CACf,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"ThemeToggle.js","sourceRoot":"","sources":["../../src/components/ThemeToggle.tsx"],"names":[],"mappings":";AAAA,OAAO,EACN,MAAM,EACN,YAAY,EACZ,wBAAwB,EACxB,mBAAmB,EACnB,mBAAmB,EACnB,OAAO,GACP,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAE1D,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAEzD;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAgE;IACzF,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE;IAC/C,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;IAC9C,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;CACrD,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,EAAE;IAC/B,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAAC;IAEtD,OAAO,CACN,MAAC,YAAY,eACZ,KAAC,OAAO,IAAC,OAAO,EAAC,OAAO,EAAC,IAAI,EAAC,MAAM,YACnC,KAAC,mBAAmB,IAAC,OAAO,kBAC3B,KAAC,MAAM,mBACM,sBAAsB,gBACvB,OAAO,EAClB,IAAI,EAAE,aAAa,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAC/C,OAAO,EAAC,SAAS,EACjB,MAAM,EAAC,OAAO,GACb,GACmB,GACb,EAEV,KAAC,mBAAmB,cAClB,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAC9B,KAAC,wBAAwB,mBAEX,gBAAgB,MAAM,CAAC,KAAK,EAAE,EAC3C,OAAO,EAAE,KAAK,KAAK,MAAM,CAAC,KAAK,EAC/B,eAAe,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,YAE5C,MAAM,CAAC,KAAK,IALR,MAAM,CAAC,KAAK,CAMS,CAC3B,CAAC,GACmB,IACR,CACf,CAAC;AACH,CAAC,CAAC"}
@@ -1,9 +1,27 @@
1
+ /**
2
+ * Standard response envelope returned by DepthAI backend service calls.
3
+ */
1
4
  export type DAIResponse<T = any> = {
5
+ /**
6
+ * Service-specific response payload.
7
+ */
2
8
  data: T;
9
+ /**
10
+ * Error object or message returned by the backend, or `null` for successful responses.
11
+ */
3
12
  error: Error | string | null;
13
+ /**
14
+ * Optional human-readable response message.
15
+ */
4
16
  message: string | null;
17
+ /**
18
+ * Numeric response status returned by the service.
19
+ */
5
20
  status: number;
6
21
  };
22
+ /**
23
+ * Canonical DepthAI backend service names used by the viewer connection layer.
24
+ */
7
25
  export declare const DAI_SERVICE_NAME: {
8
26
  topicGroups: string;
9
27
  pipelineSchema: string;
@@ -59,7 +77,16 @@ export declare const DAI_SERVICE_NAME: {
59
77
  swapStereoDepthCalibration: string;
60
78
  getIMUReportRates: string;
61
79
  };
80
+ /**
81
+ * Default Luxonis signaling server used for WebRTC sessions.
82
+ */
62
83
  export declare const SIGNALING_SERVER_URL = "wss://signal.cloud.luxonis.com/session/";
84
+ /**
85
+ * API endpoint used to request Luxonis TURN server credentials.
86
+ */
63
87
  export declare const ICE_SERVERS_API_ENDPOINT = "https://signal.cloud-stg.luxonis.com/api/v1/turn-credentials";
88
+ /**
89
+ * Fallback STUN servers used when no Luxonis ICE server configuration is available.
90
+ */
64
91
  export declare const DEFAULT_ICE_SERVERS: RTCIceServer[];
65
92
  //# sourceMappingURL=connection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/constants/connection.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,GAAG,IAAI;IAClC,IAAI,EAAE,CAAC,CAAC;IACR,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC;IAC7B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4D5B,CAAC;AAEF,eAAO,MAAM,oBAAoB,4CAA4C,CAAC;AAC9E,eAAO,MAAM,wBAAwB,iEAC0B,CAAC;AAEhE,eAAO,MAAM,mBAAmB,EAAE,YAAY,EAE7C,CAAC"}
1
+ {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/constants/connection.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,GAAG,IAAI;IAClC;;OAEG;IACH,IAAI,EAAE,CAAC,CAAC;IACR;;OAEG;IACH,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC;IAC7B;;OAEG;IACH,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4D5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,4CAA4C,CAAC;AAE9E;;GAEG;AACH,eAAO,MAAM,wBAAwB,iEAC0B,CAAC;AAEhE;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,YAAY,EAE7C,CAAC"}
@@ -1,3 +1,6 @@
1
+ /**
2
+ * Canonical DepthAI backend service names used by the viewer connection layer.
3
+ */
1
4
  export const DAI_SERVICE_NAME = {
2
5
  topicGroups: 'topicGroups',
3
6
  pipelineSchema: 'pipelineSchema',
@@ -59,8 +62,17 @@ export const DAI_SERVICE_NAME = {
59
62
  swapStereoDepthCalibration: 'swapStereoDepthCalibration',
60
63
  getIMUReportRates: 'getIMUReportRates',
61
64
  };
65
+ /**
66
+ * Default Luxonis signaling server used for WebRTC sessions.
67
+ */
62
68
  export const SIGNALING_SERVER_URL = 'wss://signal.cloud.luxonis.com/session/';
69
+ /**
70
+ * API endpoint used to request Luxonis TURN server credentials.
71
+ */
63
72
  export const ICE_SERVERS_API_ENDPOINT = 'https://signal.cloud-stg.luxonis.com/api/v1/turn-credentials';
73
+ /**
74
+ * Fallback STUN servers used when no Luxonis ICE server configuration is available.
75
+ */
64
76
  export const DEFAULT_ICE_SERVERS = [
65
77
  { urls: ['stun:stun.l.google.com:19302', 'stun:stun1.l.google.com:19302'] },
66
78
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/constants/connection.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC/B,WAAW,EAAE,aAAa;IAC1B,cAAc,EAAE,gBAAgB;IAChC,kBAAkB,EAAE,oBAAoB;IACxC,aAAa,EAAE,eAAe;IAC9B,UAAU,EAAE,YAAY;IACxB,gBAAgB,EAAE,kBAAkB;IACpC,YAAY,EAAE,cAAc;IAC5B,UAAU;IACV,UAAU,EAAE,YAAY;IACxB,gBAAgB,EAAE,kBAAkB;IACpC,WAAW,EAAE,aAAa;IAC1B,UAAU,EAAE,YAAY;IACxB,gBAAgB,EAAE,kBAAkB;IACpC,WAAW,EAAE,aAAa;IAC1B,UAAU;IACV,UAAU,EAAE,YAAY;IACxB,UAAU,EAAE,YAAY;IACxB,kBAAkB,EAAE,oBAAoB;IACxC,kBAAkB,EAAE,oBAAoB;IACxC,kBAAkB,EAAE,oBAAoB;IACxC,kBAAkB,EAAE,oBAAoB;IACxC,oBAAoB,EAAE,sBAAsB;IAC5C,oBAAoB,EAAE,sBAAsB;IAC5C,yBAAyB,EAAE,2BAA2B;IACtD,yBAAyB,EAAE,2BAA2B;IACtD,4BAA4B,EAAE,8BAA8B;IAC5D,mBAAmB,EAAE,qBAAqB;IAC1C,mBAAmB,EAAE,qBAAqB;IAC1C,kBAAkB,EAAE,oBAAoB;IACxC,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,aAAa,EAAE,eAAe;IAC9B,UAAU,EAAE,YAAY;IACxB,sBAAsB,EAAE,wBAAwB;IAChD,kBAAkB;IAClB,iBAAiB,EAAE,mBAAmB;IACtC,gBAAgB,EAAE,kBAAkB;IACpC,6BAA6B,EAAE,+BAA+B;IAC9D,6BAA6B,EAAE,+BAA+B;IAC9D,OAAO,EAAE,SAAS;IAClB,mBAAmB,EAAE,qBAAqB;IAC1C,mBAAmB,EAAE,qBAAqB;IAC1C,oBAAoB,EAAE,sBAAsB;IAC5C,oBAAoB,EAAE,sBAAsB;IAC5C,oBAAoB,EAAE,sBAAsB;IAC5C,WAAW;IACX,kBAAkB,EAAE,oBAAoB;IACxC,iBAAiB,EAAE,mBAAmB;IACtC,iBAAiB;IACjB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,WAAW;IACtB,YAAY,EAAE,cAAc;IAC5B,cAAc;IACd,qBAAqB,EAAE,uBAAuB;IAC9C,WAAW,EAAE,aAAa;IAC1B,uBAAuB,EAAE,yBAAyB;IAClD,qBAAqB,EAAE,uBAAuB;IAC9C,0BAA0B,EAAE,4BAA4B;IACxD,iBAAiB,EAAE,mBAAmB;CACtC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,yCAAyC,CAAC;AAC9E,MAAM,CAAC,MAAM,wBAAwB,GACpC,8DAA8D,CAAC;AAEhE,MAAM,CAAC,MAAM,mBAAmB,GAAmB;IAClD,EAAE,IAAI,EAAE,CAAC,8BAA8B,EAAE,+BAA+B,CAAC,EAAE;CAC3E,CAAC"}
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/constants/connection.ts"],"names":[],"mappings":"AAuBA;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC/B,WAAW,EAAE,aAAa;IAC1B,cAAc,EAAE,gBAAgB;IAChC,kBAAkB,EAAE,oBAAoB;IACxC,aAAa,EAAE,eAAe;IAC9B,UAAU,EAAE,YAAY;IACxB,gBAAgB,EAAE,kBAAkB;IACpC,YAAY,EAAE,cAAc;IAC5B,UAAU;IACV,UAAU,EAAE,YAAY;IACxB,gBAAgB,EAAE,kBAAkB;IACpC,WAAW,EAAE,aAAa;IAC1B,UAAU,EAAE,YAAY;IACxB,gBAAgB,EAAE,kBAAkB;IACpC,WAAW,EAAE,aAAa;IAC1B,UAAU;IACV,UAAU,EAAE,YAAY;IACxB,UAAU,EAAE,YAAY;IACxB,kBAAkB,EAAE,oBAAoB;IACxC,kBAAkB,EAAE,oBAAoB;IACxC,kBAAkB,EAAE,oBAAoB;IACxC,kBAAkB,EAAE,oBAAoB;IACxC,oBAAoB,EAAE,sBAAsB;IAC5C,oBAAoB,EAAE,sBAAsB;IAC5C,yBAAyB,EAAE,2BAA2B;IACtD,yBAAyB,EAAE,2BAA2B;IACtD,4BAA4B,EAAE,8BAA8B;IAC5D,mBAAmB,EAAE,qBAAqB;IAC1C,mBAAmB,EAAE,qBAAqB;IAC1C,kBAAkB,EAAE,oBAAoB;IACxC,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,aAAa,EAAE,eAAe;IAC9B,UAAU,EAAE,YAAY;IACxB,sBAAsB,EAAE,wBAAwB;IAChD,kBAAkB;IAClB,iBAAiB,EAAE,mBAAmB;IACtC,gBAAgB,EAAE,kBAAkB;IACpC,6BAA6B,EAAE,+BAA+B;IAC9D,6BAA6B,EAAE,+BAA+B;IAC9D,OAAO,EAAE,SAAS;IAClB,mBAAmB,EAAE,qBAAqB;IAC1C,mBAAmB,EAAE,qBAAqB;IAC1C,oBAAoB,EAAE,sBAAsB;IAC5C,oBAAoB,EAAE,sBAAsB;IAC5C,oBAAoB,EAAE,sBAAsB;IAC5C,WAAW;IACX,kBAAkB,EAAE,oBAAoB;IACxC,iBAAiB,EAAE,mBAAmB;IACtC,iBAAiB;IACjB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,WAAW;IACtB,YAAY,EAAE,cAAc;IAC5B,cAAc;IACd,qBAAqB,EAAE,uBAAuB;IAC9C,WAAW,EAAE,aAAa;IAC1B,uBAAuB,EAAE,yBAAyB;IAClD,qBAAqB,EAAE,uBAAuB;IAC9C,0BAA0B,EAAE,4BAA4B;IACxD,iBAAiB,EAAE,mBAAmB;CACtC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,yCAAyC,CAAC;AAE9E;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GACpC,8DAA8D,CAAC;AAEhE;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAmB;IAClD,EAAE,IAAI,EAAE,CAAC,8BAA8B,EAAE,+BAA+B,CAAC,EAAE;CAC3E,CAAC"}
@@ -1,3 +1,6 @@
1
+ /**
2
+ * Display names for stream topics emitted by DepthAI pipelines.
3
+ */
1
4
  export declare const StreamTypes: {
2
5
  readonly Encoded: "H.264 Stream";
3
6
  readonly LeftEncoded: "Left H.264 Stream";
@@ -13,6 +16,12 @@ export declare const StreamTypes: {
13
16
  readonly PointCloudColor: "Point Cloud Color";
14
17
  readonly IMU: "IMU";
15
18
  };
19
+ /**
20
+ * Union of known DepthAI stream display names.
21
+ */
16
22
  export type StreamType = (typeof StreamTypes)[keyof typeof StreamTypes];
23
+ /**
24
+ * Streams that are managed implicitly and hidden from the normal stream picker.
25
+ */
17
26
  export declare const HIDDEN_STREAMS: readonly ["Point Cloud", "_Point Cloud Color", "Point Cloud Color", "IMU"];
18
27
  //# sourceMappingURL=streams.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"streams.d.ts","sourceRoot":"","sources":["../../src/constants/streams.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW;;;;;;;;;;;;;;CAcd,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,OAAO,WAAW,CAAC,CAAC;AAExE,eAAO,MAAM,cAAc,4EAKjB,CAAC"}
1
+ {"version":3,"file":"streams.d.ts","sourceRoot":"","sources":["../../src/constants/streams.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;CAcd,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,OAAO,WAAW,CAAC,CAAC;AAExE;;GAEG;AACH,eAAO,MAAM,cAAc,4EAKjB,CAAC"}
@@ -1,3 +1,6 @@
1
+ /**
2
+ * Display names for stream topics emitted by DepthAI pipelines.
3
+ */
1
4
  export const StreamTypes = {
2
5
  Encoded: 'H.264 Stream',
3
6
  LeftEncoded: 'Left H.264 Stream',
@@ -13,6 +16,9 @@ export const StreamTypes = {
13
16
  PointCloudColor: 'Point Cloud Color',
14
17
  IMU: 'IMU',
15
18
  };
19
+ /**
20
+ * Streams that are managed implicitly and hidden from the normal stream picker.
21
+ */
16
22
  export const HIDDEN_STREAMS = [
17
23
  StreamTypes.PointCloud,
18
24
  StreamTypes._PointCloudColor,
@@ -1 +1 @@
1
- {"version":3,"file":"streams.js","sourceRoot":"","sources":["../../src/constants/streams.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG;IAC1B,OAAO,EAAE,cAAc;IACvB,WAAW,EAAE,mBAAmB;IAChC,YAAY,EAAE,oBAAoB;IAClC,KAAK,EAAE,cAAc;IACrB,SAAS,EAAE,kBAAkB;IAC7B,GAAG,EAAE,YAAY;IACjB,OAAO,EAAE,iBAAiB;IAC1B,QAAQ,EAAE,kBAAkB;IAC5B,UAAU,EAAE,aAAa;IACzB,aAAa,EAAE,uBAAuB;IACtC,gBAAgB,EAAE,oBAAoB;IACtC,eAAe,EAAE,mBAAmB;IACpC,GAAG,EAAE,KAAK;CACD,CAAC;AAIX,MAAM,CAAC,MAAM,cAAc,GAAG;IAC7B,WAAW,CAAC,UAAU;IACtB,WAAW,CAAC,gBAAgB;IAC5B,WAAW,CAAC,eAAe;IAC3B,WAAW,CAAC,GAAG;CACN,CAAC"}
1
+ {"version":3,"file":"streams.js","sourceRoot":"","sources":["../../src/constants/streams.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IAC1B,OAAO,EAAE,cAAc;IACvB,WAAW,EAAE,mBAAmB;IAChC,YAAY,EAAE,oBAAoB;IAClC,KAAK,EAAE,cAAc;IACrB,SAAS,EAAE,kBAAkB;IAC7B,GAAG,EAAE,YAAY;IACjB,OAAO,EAAE,iBAAiB;IAC1B,QAAQ,EAAE,kBAAkB;IAC5B,UAAU,EAAE,aAAa;IACzB,aAAa,EAAE,uBAAuB;IACtC,gBAAgB,EAAE,oBAAoB;IACtC,eAAe,EAAE,mBAAmB;IACpC,GAAG,EAAE,KAAK;CACD,CAAC;AAOX;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC7B,WAAW,CAAC,UAAU;IACtB,WAAW,CAAC,gBAAgB;IAC5B,WAAW,CAAC,eAAe;IAC3B,WAAW,CAAC,GAAG;CACN,CAAC"}
@@ -1,5 +1,17 @@
1
+ /**
2
+ * Default WebSocket URL inferred from the current browser location.
3
+ */
1
4
  export declare const DEFAULT_WS_URL: string;
5
+ /**
6
+ * Local WebSocket URL used by development and Electron environments.
7
+ */
2
8
  export declare const LOCALHOST_WS_URL = "ws://localhost:8765";
9
+ /**
10
+ * Whether the current page is served from a localhost origin.
11
+ */
3
12
  export declare const IS_LOCALHOST: boolean;
13
+ /**
14
+ * Whether the current runtime appears to be an Electron renderer.
15
+ */
4
16
  export declare const IS_ELECTRON: boolean;
5
17
  //# sourceMappingURL=url.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../src/constants/url.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,QAGwC,CAAC;AAEpE,eAAO,MAAM,gBAAgB,wBAAwB,CAAC;AAEtD,eAAO,MAAM,YAAY,SACkD,CAAC;AAE5E,eAAO,MAAM,WAAW,SAGqB,CAAC"}
1
+ {"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../src/constants/url.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,cAAc,QAGwC,CAAC;AAEpE;;GAEG;AACH,eAAO,MAAM,gBAAgB,wBAAwB,CAAC;AAEtD;;GAEG;AACH,eAAO,MAAM,YAAY,SACkD,CAAC;AAE5E;;GAEG;AACH,eAAO,MAAM,WAAW,SAGqB,CAAC"}
@@ -1,8 +1,20 @@
1
+ /**
2
+ * Default WebSocket URL inferred from the current browser location.
3
+ */
1
4
  export const DEFAULT_WS_URL = window.origin.startsWith('http:') && window.origin.includes(':8082')
2
5
  ? `ws://${window.location.hostname}:8765`
3
6
  : `wss://${window.location.hostname}:${window.location.port}/dai`;
7
+ /**
8
+ * Local WebSocket URL used by development and Electron environments.
9
+ */
4
10
  export const LOCALHOST_WS_URL = 'ws://localhost:8765';
11
+ /**
12
+ * Whether the current page is served from a localhost origin.
13
+ */
5
14
  export const IS_LOCALHOST = window.origin.includes('localhost') || window.origin.includes('127.0.0.1');
15
+ /**
16
+ * Whether the current runtime appears to be an Electron renderer.
17
+ */
6
18
  export const IS_ELECTRON = typeof navigator === 'object' &&
7
19
  typeof navigator.userAgent === 'string' &&
8
20
  navigator.userAgent.indexOf('Electron') >= 0;
@@ -1 +1 @@
1
- {"version":3,"file":"url.js","sourceRoot":"","sources":["../../src/constants/url.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAC1B,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;IACnE,CAAC,CAAC,QAAQ,MAAM,CAAC,QAAQ,CAAC,QAAQ,OAAO;IACzC,CAAC,CAAC,SAAS,MAAM,CAAC,QAAQ,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC;AAEpE,MAAM,CAAC,MAAM,gBAAgB,GAAG,qBAAqB,CAAC;AAEtD,MAAM,CAAC,MAAM,YAAY,GACxB,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAE5E,MAAM,CAAC,MAAM,WAAW,GACvB,OAAO,SAAS,KAAK,QAAQ;IAC7B,OAAO,SAAS,CAAC,SAAS,KAAK,QAAQ;IACvC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC"}
1
+ {"version":3,"file":"url.js","sourceRoot":"","sources":["../../src/constants/url.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAC1B,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;IACnE,CAAC,CAAC,QAAQ,MAAM,CAAC,QAAQ,CAAC,QAAQ,OAAO;IACzC,CAAC,CAAC,SAAS,MAAM,CAAC,QAAQ,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC;AAEpE;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,qBAAqB,CAAC;AAEtD;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GACxB,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAE5E;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GACvB,OAAO,SAAS,KAAK,QAAQ;IAC7B,OAAO,SAAS,CAAC,SAAS,KAAK,QAAQ;IACvC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC"}
@@ -4,35 +4,121 @@ import { DAI_SERVICE_NAME, type DAIResponse } from '../constants/connection.js';
4
4
  import type { Topic } from '../hooks/connection.js';
5
5
  import { type PublicChannelData, VisualizerConnection } from '../visualizer/index.js';
6
6
  import type { DeserializationErrorCallback } from '../visualizer/messaging/deserialization.worker.js';
7
+ /**
8
+ * Backend message handling protocol version used by the visualizer connection.
9
+ */
7
10
  export type MessageHandlerVersion = 'v1' | 'v2';
11
+ /**
12
+ * Initialization parameters for a DepthAI connection.
13
+ */
8
14
  export type DAIConnectionInitArgs = {
15
+ /**
16
+ * Transport used to connect to the DepthAI backend.
17
+ */
9
18
  type: 'ws' | 'webrtc';
19
+ /**
20
+ * WebSocket URL or signaling endpoint used by the selected transport.
21
+ */
10
22
  connectionUrl: string;
23
+ /**
24
+ * WebRTC client id.
25
+ */
11
26
  clientId: string;
27
+ /**
28
+ * WebRTC auth token.
29
+ */
12
30
  token: string;
31
+ /**
32
+ * Stream topics that should be subscribed immediately after channel discovery.
33
+ */
13
34
  enabledStreams: string[];
35
+ /**
36
+ * Callback invoked when a refreshed WebRTC token is available.
37
+ */
14
38
  automaticTokenRefresh?: (token: string) => void;
39
+ /**
40
+ * WebRTC session recovery behavior forwarded to the remote connection layer.
41
+ */
15
42
  sessionRecovery?: WebRtcConfig['sessionRecovery'];
43
+ /**
44
+ * Enables verbose connection logging.
45
+ */
16
46
  debugLogs?: boolean;
47
+ /**
48
+ * Stream topics opened by default when no explicit stream selection exists.
49
+ */
17
50
  defaultTopics?: string[];
51
+ /**
52
+ * Enables Viewer-specific default stream behavior.
53
+ */
18
54
  isViewer?: boolean;
55
+ /**
56
+ * Backend message handling protocol expected by the connection.
57
+ */
19
58
  messageHandlerVersion?: MessageHandlerVersion;
20
59
  };
21
- type DaiConnectionEventMap = {
60
+ /**
61
+ * Event callbacks emitted by `DAIConnection`.
62
+ */
63
+ export type DaiConnectionEventMap = {
64
+ /**
65
+ * Fired when the underlying visualizer connection opens.
66
+ */
22
67
  open: () => void;
68
+ /**
69
+ * Fired when the underlying connection begins reconnecting.
70
+ */
23
71
  reconnect: () => void;
72
+ /**
73
+ * Fired when stream message decoding reports an error.
74
+ */
24
75
  error: DeserializationErrorCallback;
76
+ /**
77
+ * Fired after the connection is disposed or closed.
78
+ */
25
79
  close: () => void;
80
+ /**
81
+ * Fired when the default parsed pipeline changes.
82
+ */
26
83
  pipeline: (pipeline: Pipeline | null) => void;
84
+ /**
85
+ * Fired when the full parsed pipeline changes.
86
+ */
27
87
  fullPipeline: (pipeline: Pipeline | null) => void;
88
+ /**
89
+ * Fired when live pipeline node state changes.
90
+ */
28
91
  pipelineState: (pipelineState: PipelineState[] | null) => void;
92
+ /**
93
+ * Fired when the advertised stream topic list changes.
94
+ */
29
95
  topics: (topics: Topic[]) => void;
96
+ /**
97
+ * Fired when the backend disconnects with an error event.
98
+ */
30
99
  disconnect: (error: ErrorEvent) => void;
31
100
  };
101
+ /**
102
+ * Supported DepthAI backend service key.
103
+ */
32
104
  export type DAIService = keyof typeof DAI_SERVICE_NAME;
105
+ /**
106
+ * Manages a DepthAI backend connection, stream subscriptions, service polling, and pipeline decoding.
107
+ */
33
108
  export declare class DAIConnection {
109
+ /**
110
+ * Whether this connection instance should continue processing events and service responses.
111
+ */
34
112
  alive: boolean;
113
+ /**
114
+ * Underlying visualizer connection used by Foxglove-derived panels.
115
+ */
35
116
  connection?: VisualizerConnection;
117
+ /**
118
+ * Creates a connection manager with optional synthetic topics.
119
+ *
120
+ * @param fakeTopics - Topics to merge into the backend topic list for host-controlled streams.
121
+ */
36
122
  constructor(fakeTopics?: Topic[]);
37
123
  protected listeners: Partial<Record<keyof DaiConnectionEventMap, any[]>>;
38
124
  protected serviceListeners: Record<string, (data: any, connection: DAIConnection) => void>;
@@ -45,6 +131,9 @@ export declare class DAIConnection {
45
131
  protected activeServices: Set<DAIService>;
46
132
  protected serviceInterval: NodeJS.Timeout | null;
47
133
  protected _pendingDecodeCleanups: Array<() => void>;
134
+ /**
135
+ * Whether topic subscription state was changed explicitly by the user.
136
+ */
48
137
  topicsTouched: boolean;
49
138
  protected channels: PublicChannelData[];
50
139
  protected groups: Record<string, string>;
@@ -58,27 +147,125 @@ export declare class DAIConnection {
58
147
  protected fakeTopicsEnabled: Set<string>;
59
148
  protected shouldRestoreDefaultFakeTopics: boolean;
60
149
  protected isFakeTopic(name: string): boolean;
150
+ /**
151
+ * Returns synthetic topics currently merged into the topic list.
152
+ */
61
153
  getFakeTopics(): Topic[];
154
+ /**
155
+ * Replaces synthetic topics and enables the ones marked as enabled.
156
+ *
157
+ * @param fakeTopics - Synthetic topics to expose through the topic list.
158
+ */
62
159
  setFakeTopics(fakeTopics: Topic[]): void;
63
160
  protected recreateDecoderWorker(): void;
64
161
  protected reportTopics(type?: 'ws' | 'webrtc'): void;
65
162
  protected pollServices(): void;
163
+ /**
164
+ * Initializes the decoder worker and opens the underlying connection.
165
+ *
166
+ * @param args - Connection and stream initialization parameters.
167
+ */
66
168
  init({ enabledStreams, defaultTopics, isViewer, ...args }: DAIConnectionInitArgs): void;
169
+ /**
170
+ * Creates the underlying WebSocket or WebRTC visualizer connection and attaches event handlers.
171
+ *
172
+ * @param args - Transport-specific connection parameters.
173
+ */
67
174
  setupConnection({ type, connectionUrl, clientId, token, automaticTokenRefresh, sessionRecovery, debugLogs, messageHandlerVersion, }: Pick<DAIConnectionInitArgs, 'type' | 'clientId' | 'connectionUrl' | 'token' | 'automaticTokenRefresh' | 'sessionRecovery' | 'debugLogs' | 'messageHandlerVersion'>): void;
175
+ /**
176
+ * Maps a DepthAI service to the decoder payload kind expected by the worker.
177
+ *
178
+ * @param service - Service key to classify.
179
+ * @returns Decoder payload kind used for the service response.
180
+ */
68
181
  serviceToKind(service: DAIService): 'pipeline' | 'json';
182
+ /**
183
+ * Requests a service response and forwards it through the decoder worker asynchronously.
184
+ *
185
+ * @param service - Service key to request.
186
+ * @param body - Optional request body passed to the backend service.
187
+ */
69
188
  fetchService(service: DAIService, body?: Record<string, any> | string | number): Promise<void>;
189
+ /**
190
+ * Returns whether a service is currently advertised by the backend and can be polled.
191
+ *
192
+ * @param service - Service key to check.
193
+ */
70
194
  canPollService(service: DAIService): boolean;
195
+ /**
196
+ * Requests and decodes one service response before resolving.
197
+ *
198
+ * @param service - Service key to request.
199
+ * @param body - Optional request body passed to the backend service.
200
+ * @returns Decoded service payload, or `null` when the service cannot be polled or decoding fails.
201
+ */
71
202
  fetchServiceBlocking<T = unknown>(service: DAIService, body?: Record<string, any> | string | number): Promise<T | null>;
203
+ /**
204
+ * Sends a request to a backend service and decodes the standard JSON response envelope.
205
+ *
206
+ * @param service - Service key to request.
207
+ * @param body - Request body passed to the backend service.
208
+ * @param onResponse - Callback invoked with the decoded response envelope.
209
+ * @param onError - Optional callback invoked when the response envelope contains an error.
210
+ * @param responseTimeout - Request timeout in milliseconds.
211
+ */
72
212
  postToService(service: DAIService, body: Record<string, unknown> | string | number, onResponse: (data: DAIResponse) => void, onError?: (response: DAIResponse | null) => void, responseTimeout?: number): Promise<void>;
213
+ /**
214
+ * Sends a request to a backend service and returns the raw binary response.
215
+ *
216
+ * @param service - Service key to request.
217
+ * @param body - Request body passed to the backend service.
218
+ * @param onResponse - Callback invoked with the raw response data.
219
+ * @param responseTimeout - Request timeout in milliseconds.
220
+ */
73
221
  postToServiceRaw(service: DAIService, body: Record<string, unknown> | string | number, onResponse: (data: DataView | null | undefined) => void, responseTimeout?: number): Promise<void>;
222
+ /**
223
+ * Replaces the set of services polled by the connection.
224
+ *
225
+ * @param services - Service keys to poll.
226
+ */
74
227
  setActiveServices(services: DAIService[]): void;
228
+ /**
229
+ * Closes the connection, stops polling, terminates the decoder worker, and emits `close`.
230
+ */
75
231
  dispose(): void;
232
+ /**
233
+ * Sends a key press event to the backend.
234
+ *
235
+ * @param key - Keyboard key identifier to forward.
236
+ */
76
237
  handleKeyPress(key: string): void;
238
+ /**
239
+ * Toggles subscription state for a stream topic.
240
+ *
241
+ * @param topic - Topic name to toggle.
242
+ */
77
243
  toggleTopic(topic: string): void;
244
+ /**
245
+ * Temporarily stops topic subscriptions while preserving previous selection state.
246
+ *
247
+ * @param topicsFilter - Optional topic allow-list to keep enabled.
248
+ */
78
249
  stopTopics(topicsFilter?: string[]): void;
250
+ /**
251
+ * Restores topic subscriptions saved by `stopTopics`.
252
+ *
253
+ * @param defaultTopics - Optional default topics to use after restart.
254
+ */
79
255
  restartTopics(defaultTopics?: string[]): void;
256
+ /**
257
+ * Registers an event listener.
258
+ *
259
+ * @param event - Event name to subscribe to.
260
+ * @param callback - Callback invoked when the event fires.
261
+ */
80
262
  on<T extends keyof DaiConnectionEventMap>(event: T, callback: DaiConnectionEventMap[T]): void;
263
+ /**
264
+ * Registers a decoded service response listener.
265
+ *
266
+ * @param service - Service name to listen for.
267
+ * @param callback - Callback invoked with decoded service data.
268
+ */
81
269
  setOnService<T>(service: string, callback: (data: T, connection: DAIConnection) => void): void;
82
270
  }
83
- export {};
84
271
  //# sourceMappingURL=connection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/dai-connection/connection.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,QAAQ,EACb,KAAK,aAAa,EAKlB,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,OAAO,EAAE,gBAAgB,EAAE,KAAK,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEhF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAIpD,OAAO,EAAE,KAAK,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACtF,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,mDAAmD,CAAC;AAetG,MAAM,MAAM,qBAAqB,GAAG,IAAI,GAAG,IAAI,CAAC;AAEhD,MAAM,MAAM,qBAAqB,GAAG;IACnC,IAAI,EAAE,IAAI,GAAG,QAAQ,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,qBAAqB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,eAAe,CAAC,EAAE,YAAY,CAAC,iBAAiB,CAAC,CAAC;IAClD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;CAC9C,CAAC;AAEF,KAAK,qBAAqB,GAAG;IAC5B,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,KAAK,EAAE,4BAA4B,CAAC;IACpC,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,KAAK,IAAI,CAAC;IAC9C,YAAY,EAAE,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,KAAK,IAAI,CAAC;IAClD,aAAa,EAAE,CAAC,aAAa,EAAE,aAAa,EAAE,GAAG,IAAI,KAAK,IAAI,CAAC;IAC/D,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC;IAClC,UAAU,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,gBAAgB,CAAC;AAEvD,qBAAa,aAAa;IACzB,KAAK,UAAQ;IACb,UAAU,CAAC,EAAE,oBAAoB,CAAC;gBACtB,UAAU,CAAC,EAAE,KAAK,EAAE;IAKhC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,qBAAqB,EAAE,GAAG,EAAE,CAAC,CAAC,CAAM;IAE9E,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,aAAa,KAAK,IAAI,CAAC,CAAM;IAEhG,SAAS,CAAC,aAAa,EAAE,MAAM,EAAE,CAAM;IACvC,SAAS,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACnC,SAAS,CAAC,uBAAuB,EAAE,MAAM,EAAE,CAAM;IACjD,SAAS,CAAC,2BAA2B,EAAE,GAAG,CAAC,MAAM,CAAC,CAAa;IAE/D,SAAS,CAAC,aAAa,EAAG,MAAM,CAAC;IACjC,SAAS,CAAC,eAAe,EAAE,GAAG,CAAC,UAAU,CAAC,CAAa;IACvD,SAAS,CAAC,cAAc,EAAE,GAAG,CAAC,UAAU,CAAC,CAAe;IACxD,SAAS,CAAC,eAAe,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAQ;IACxD,SAAS,CAAC,sBAAsB,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,CAAM;IAElD,aAAa,UAAS;IAC7B,SAAS,CAAC,QAAQ,EAAE,iBAAiB,EAAE,CAAM;IAC7C,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM;IAC9C,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,CAAM;IAC/B,SAAS,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAQ;IAC3C,SAAS,CAAC,YAAY,EAAE,QAAQ,GAAG,IAAI,CAAQ;IAC/C,SAAS,CAAC,aAAa,EAAE,aAAa,EAAE,GAAG,IAAI,CAAQ;IAEvD,SAAS,CAAC,cAAc,EAAE,IAAI,GAAG,QAAQ,GAAG,IAAI,CAAQ;IACxD,SAAS,CAAC,QAAQ,UAAS;IAC3B,SAAS,CAAC,UAAU,EAAE,KAAK,EAAE,CAAM;IACnC,SAAS,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAa;IACrD,SAAS,CAAC,8BAA8B,UAAS;IACjD,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAGrC,aAAa;IAGb,aAAa,CAAC,UAAU,EAAE,KAAK,EAAE;IAyBxC,SAAS,CAAC,qBAAqB;IAmE/B,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,QAAQ;IAwK7C,SAAS,CAAC,YAAY;IAYtB,IAAI,CAAC,EAAE,cAAc,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,qBAAqB;IAehF,eAAe,CAAC,EACf,IAAI,EACJ,aAAa,EACb,QAAQ,EACR,KAAK,EACL,qBAAqB,EACrB,eAAe,EACf,SAAS,EACT,qBAAqB,GACrB,EAAE,IAAI,CACN,qBAAqB,EACnB,MAAM,GACN,UAAU,GACV,eAAe,GACf,OAAO,GACP,uBAAuB,GACvB,iBAAiB,GACjB,WAAW,GACX,uBAAuB,CACzB;IAuFD,aAAa,CAAC,OAAO,EAAE,UAAU,GAAG,UAAU,GAAG,MAAM;IAQjD,YAAY,CACjB,OAAO,EAAE,UAAU,EAEnB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,GAAG,MAAM;IAkC7C,cAAc,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO;IAItC,oBAAoB,CAAC,CAAC,GAAG,OAAO,EACrC,OAAO,EAAE,UAAU,EAEnB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,GAAG,MAAM,GAC1C,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAmFd,aAAa,CAClB,OAAO,EAAE,UAAU,EACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,MAAM,EAC/C,UAAU,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,EACvC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,EAChD,eAAe,SAAS;IA2BnB,gBAAgB,CACrB,OAAO,EAAE,UAAU,EACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,MAAM,EAC/C,UAAU,EAAE,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,KAAK,IAAI,EACvD,eAAe,SAAS;IAiBzB,iBAAiB,CAAC,QAAQ,EAAE,UAAU,EAAE;IAIxC,OAAO;IAgBP,cAAc,CAAC,GAAG,EAAE,MAAM;IAQ1B,WAAW,CAAC,KAAK,EAAE,MAAM;IAsBzB,UAAU,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE;IAalC,aAAa,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE;IAetC,EAAE,CAAC,CAAC,SAAS,MAAM,qBAAqB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,qBAAqB,CAAC,CAAC,CAAC;IAKtF,YAAY,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,aAAa,KAAK,IAAI;CAGvF"}
1
+ {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/dai-connection/connection.ts"],"names":[],"mappings":"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"}