@luxonis/visualizer-protobuf 2.1.1 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/dist/{communicator-ZAqNuwq6.js → FoxgloveServer-tJZcJH5-.js} +1216 -184
  2. package/dist/apps/depthai-visualizer/src/components/Panel.d.ts.map +1 -1
  3. package/dist/apps/depthai-visualizer/src/components/Panel.js +13 -4
  4. package/dist/apps/depthai-visualizer/src/components/Panel.js.map +1 -1
  5. package/dist/apps/depthai-visualizer/src/components/PanelToolbar.d.ts.map +1 -1
  6. package/dist/apps/depthai-visualizer/src/components/PanelToolbar.js +12 -12
  7. package/dist/apps/depthai-visualizer/src/components/PanelToolbar.js.map +1 -1
  8. package/dist/apps/depthai-visualizer/src/connection/adapter.d.ts +10 -7
  9. package/dist/apps/depthai-visualizer/src/connection/adapter.d.ts.map +1 -1
  10. package/dist/apps/depthai-visualizer/src/connection/adapter.js +11 -5
  11. package/dist/apps/depthai-visualizer/src/connection/adapter.js.map +1 -1
  12. package/dist/apps/depthai-visualizer/src/connection/communicator.d.ts +17 -13
  13. package/dist/apps/depthai-visualizer/src/connection/communicator.d.ts.map +1 -1
  14. package/dist/apps/depthai-visualizer/src/connection/communicator.js +17 -24
  15. package/dist/apps/depthai-visualizer/src/connection/communicator.js.map +1 -1
  16. package/dist/apps/depthai-visualizer/src/connection/connection.d.ts +14 -13
  17. package/dist/apps/depthai-visualizer/src/connection/connection.d.ts.map +1 -1
  18. package/dist/apps/depthai-visualizer/src/connection/connection.js +25 -22
  19. package/dist/apps/depthai-visualizer/src/connection/connection.js.map +1 -1
  20. package/dist/apps/depthai-visualizer/src/connection/foxglove-protocol.d.ts +6 -0
  21. package/dist/apps/depthai-visualizer/src/connection/foxglove-protocol.d.ts.map +1 -0
  22. package/dist/apps/depthai-visualizer/src/connection/foxglove-protocol.js +63 -0
  23. package/dist/apps/depthai-visualizer/src/connection/foxglove-protocol.js.map +1 -0
  24. package/dist/apps/depthai-visualizer/src/connection/webrtc/bridge.d.ts +2 -2
  25. package/dist/apps/depthai-visualizer/src/connection/webrtc/bridge.d.ts.map +1 -1
  26. package/dist/apps/depthai-visualizer/src/connection/webrtc/bridge.js +76 -45
  27. package/dist/apps/depthai-visualizer/src/connection/webrtc/bridge.js.map +1 -1
  28. package/dist/apps/depthai-visualizer/src/connection/webrtc/worker-utils.d.ts +50 -15
  29. package/dist/apps/depthai-visualizer/src/connection/webrtc/worker-utils.d.ts.map +1 -1
  30. package/dist/apps/depthai-visualizer/src/connection/webrtc/worker-utils.js +71 -26
  31. package/dist/apps/depthai-visualizer/src/connection/webrtc/worker-utils.js.map +1 -1
  32. package/dist/apps/depthai-visualizer/src/connection/webrtc/worker.js +15 -0
  33. package/dist/apps/depthai-visualizer/src/connection/webrtc/worker.js.map +1 -1
  34. package/dist/apps/depthai-visualizer/src/connection/ws/worker.d.ts +16 -1
  35. package/dist/apps/depthai-visualizer/src/connection/ws/worker.d.ts.map +1 -1
  36. package/dist/apps/depthai-visualizer/src/connection/ws/worker.js +114 -2
  37. package/dist/apps/depthai-visualizer/src/connection/ws/worker.js.map +1 -1
  38. package/dist/apps/depthai-visualizer/src/context/ConnectionsProvider.d.ts +1 -1
  39. package/dist/apps/depthai-visualizer/src/context/ConnectionsProvider.d.ts.map +1 -1
  40. package/dist/apps/depthai-visualizer/src/index.d.ts +1 -2
  41. package/dist/apps/depthai-visualizer/src/index.d.ts.map +1 -1
  42. package/dist/apps/depthai-visualizer/src/index.js +0 -1
  43. package/dist/apps/depthai-visualizer/src/index.js.map +1 -1
  44. package/dist/apps/depthai-visualizer/src/messaging/deserialization/detections/detection.js +2 -2
  45. package/dist/apps/depthai-visualizer/src/messaging/deserialization/detections/detection.js.map +1 -1
  46. package/dist/apps/depthai-visualizer/src/messaging/deserialization/detections/utils.d.ts.map +1 -1
  47. package/dist/apps/depthai-visualizer/src/messaging/deserialization/detections/utils.js.map +1 -1
  48. package/dist/apps/depthai-visualizer/src/messaging/deserialization.js +5 -5
  49. package/dist/apps/depthai-visualizer/src/messaging/deserialization.js.map +1 -1
  50. package/dist/apps/depthai-visualizer/src/messaging/utils.d.ts +7 -6
  51. package/dist/apps/depthai-visualizer/src/messaging/utils.d.ts.map +1 -1
  52. package/dist/apps/depthai-visualizer/src/messaging/utils.js +2 -2
  53. package/dist/apps/depthai-visualizer/src/messaging/utils.js.map +1 -1
  54. package/dist/apps/depthai-visualizer/src/protobuf.generated/EncodedFrame.d.ts.map +1 -1
  55. package/dist/apps/depthai-visualizer/src/protobuf.generated/EncodedFrame.js +3 -0
  56. package/dist/apps/depthai-visualizer/src/protobuf.generated/EncodedFrame.js.map +1 -1
  57. package/dist/apps/depthai-visualizer/src/protobuf.generated/ImageAnnotations.d.ts.map +1 -1
  58. package/dist/apps/depthai-visualizer/src/protobuf.generated/ImageAnnotations.js +3 -0
  59. package/dist/apps/depthai-visualizer/src/protobuf.generated/ImageAnnotations.js.map +1 -1
  60. package/dist/apps/depthai-visualizer/src/protobuf.generated/ImgDetections.d.ts.map +1 -1
  61. package/dist/apps/depthai-visualizer/src/protobuf.generated/ImgDetections.js +3 -0
  62. package/dist/apps/depthai-visualizer/src/protobuf.generated/ImgDetections.js.map +1 -1
  63. package/dist/apps/depthai-visualizer/src/protobuf.generated/ImgFrame.d.ts.map +1 -1
  64. package/dist/apps/depthai-visualizer/src/protobuf.generated/ImgFrame.js +3 -0
  65. package/dist/apps/depthai-visualizer/src/protobuf.generated/ImgFrame.js.map +1 -1
  66. package/dist/apps/depthai-visualizer/src/protobuf.generated/PointCloudData.d.ts.map +1 -1
  67. package/dist/apps/depthai-visualizer/src/protobuf.generated/PointCloudData.js +3 -0
  68. package/dist/apps/depthai-visualizer/src/protobuf.generated/PointCloudData.js.map +1 -1
  69. package/dist/apps/depthai-visualizer/src/protobuf.generated/SpatialImgDetections.d.ts.map +1 -1
  70. package/dist/apps/depthai-visualizer/src/protobuf.generated/SpatialImgDetections.js +3 -0
  71. package/dist/apps/depthai-visualizer/src/protobuf.generated/SpatialImgDetections.js.map +1 -1
  72. package/dist/apps/depthai-visualizer/src/protobuf.generated/common.d.ts.map +1 -1
  73. package/dist/apps/depthai-visualizer/src/protobuf.generated/common.js +3 -0
  74. package/dist/apps/depthai-visualizer/src/protobuf.generated/common.js.map +1 -1
  75. package/dist/apps/depthai-visualizer/src/utils/artificial-worker.d.ts +7 -4
  76. package/dist/apps/depthai-visualizer/src/utils/artificial-worker.d.ts.map +1 -1
  77. package/dist/apps/depthai-visualizer/src/utils/artificial-worker.js +15 -2
  78. package/dist/apps/depthai-visualizer/src/utils/artificial-worker.js.map +1 -1
  79. package/dist/apps/depthai-visualizer/src/utils/callback-manager.d.ts +1 -1
  80. package/dist/apps/depthai-visualizer/src/utils/callback-manager.d.ts.map +1 -1
  81. package/dist/apps/depthai-visualizer/src/utils/callback-manager.js +5 -5
  82. package/dist/apps/depthai-visualizer/src/utils/callback-manager.js.map +1 -1
  83. package/dist/apps/depthai-visualizer/src/utils/compatibility.d.ts.map +1 -1
  84. package/dist/apps/depthai-visualizer/src/utils/metrics-manager.d.ts.map +1 -1
  85. package/dist/apps/depthai-visualizer/src/utils/metrics-manager.js +1 -0
  86. package/dist/apps/depthai-visualizer/src/utils/metrics-manager.js.map +1 -1
  87. package/dist/communicator-D9LSiWws.js +147 -0
  88. package/dist/foxglove-protocol-RBwoTi12.js +76 -0
  89. package/dist/{index-DvdDp1CU.js → index-BatOjqHR.js} +4 -5
  90. package/dist/{index-fkPdppby.js → index-BeMujwTx.js} +4 -5
  91. package/dist/{index-yfE-EHjv.js → index-Bmv-vCsr.js} +4 -5
  92. package/dist/{index-BNmANBei.js → index-Bpb1nLXX.js} +4 -5
  93. package/dist/{index-Cv9FekAD.js → index-C38MwKQ5.js} +4 -5
  94. package/dist/{index-DszVVt5Z.js → index-C4Xw5gJf.js} +4 -5
  95. package/dist/{index-r3QAVuN1.js → index-CCjTYhIj.js} +4 -5
  96. package/dist/{index-Bk2FsKKi.js → index-CRzS8jhh.js} +4 -5
  97. package/dist/{index-2U-xZM02.js → index-CTV8k4Ur.js} +4 -5
  98. package/dist/{index-BEeIqwPz.js → index-Cjzn2Mk3.js} +4 -5
  99. package/dist/{index-sbw9t8iK.js → index-CzJG5yoW.js} +4 -5
  100. package/dist/{index-FWvVjhSv.js → index-D2tE4ai8.js} +5 -6
  101. package/dist/{index-lPEkwJ-1.js → index-D8PL1mUz.js} +4 -5
  102. package/dist/{index-CKhCc5vm.js → index-Dx5rKk7S.js} +252 -156
  103. package/dist/{index-nxmrq-HQ.js → index-JdSlhtdz.js} +4 -5
  104. package/dist/{index-Djz0avqZ.js → index-LBWmbzab.js} +4 -5
  105. package/dist/{index-TgQ8-Lib.js → index-fDKFJqYA.js} +4 -5
  106. package/dist/{index-DakMDXW9.js → index-kO40p_fI.js} +4 -5
  107. package/dist/{index-QYS2yYV7.js → index-lcxcWrBB.js} +4 -5
  108. package/dist/index.js +4 -5
  109. package/dist/worker-BX0SIDt0.js +163 -0
  110. package/dist/worker-C6ruK-iB.js +150 -0
  111. package/package.json +2 -2
  112. package/dist/apps/depthai-visualizer/src/connection/ws/worker-utils.d.ts +0 -18
  113. package/dist/apps/depthai-visualizer/src/connection/ws/worker-utils.d.ts.map +0 -1
  114. package/dist/apps/depthai-visualizer/src/connection/ws/worker-utils.js +0 -103
  115. package/dist/apps/depthai-visualizer/src/connection/ws/worker-utils.js.map +0 -1
  116. package/dist/apps/depthai-visualizer/src/panels/CanvasPanel.d.ts +0 -12
  117. package/dist/apps/depthai-visualizer/src/panels/CanvasPanel.d.ts.map +0 -1
  118. package/dist/apps/depthai-visualizer/src/panels/CanvasPanel.js +0 -52
  119. package/dist/apps/depthai-visualizer/src/panels/CanvasPanel.js.map +0 -1
  120. package/dist/worker-ByVSTHSI.js +0 -102
  121. package/dist/worker-DlZ2xp8p.js +0 -11
  122. package/dist/worker-utils-BNThsbdN.js +0 -1332
@@ -1 +1 @@
1
- {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../../../../src/connection/connection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../../../../src/connection/connection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { ServiceCallPayload, ServiceCallResponse, MessageData } from '@foxglove/ws-protocol';
2
+ export declare function makeServiceCallRequest(request: ServiceCallPayload): DataView;
3
+ export declare function parseMessage(view: DataView): MessageData;
4
+ export declare function parseServiceCallResponse(view: DataView): ServiceCallResponse;
5
+ export declare function parseFoxgloveMessage(view: DataView): MessageData | ServiceCallResponse | null;
6
+ //# sourceMappingURL=foxglove-protocol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"foxglove-protocol.d.ts","sourceRoot":"","sources":["../../../../../src/connection/foxglove-protocol.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAMlG,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,kBAAkB,GAAG,QAAQ,CAsB5E;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,WAAW,CAUxD;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,QAAQ,GAAG,mBAAmB,CAe5E;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,QAAQ,GAAG,WAAW,GAAG,mBAAmB,GAAG,IAAI,CAQ7F"}
@@ -0,0 +1,63 @@
1
+ // This Source Code Form is subject to the terms of the Mozilla Public
2
+ // License, v2.0. If a copy of the MPL was not distributed with this
3
+ // file, You can obtain one at http://mozilla.org/MPL/2.0/
4
+ import { ClientBinaryOpcode, BinaryOpcode } from '@foxglove/ws-protocol';
5
+ const textEncoder = new TextEncoder();
6
+ const textDecoder = new TextDecoder();
7
+ export function makeServiceCallRequest(request) {
8
+ const encoding = textEncoder.encode(request.encoding);
9
+ const payload = new Uint8Array(1 + 4 + 4 + 4 + encoding.length + request.data.byteLength);
10
+ const view = new DataView(payload.buffer, payload.byteOffset, payload.byteLength);
11
+ let offset = 0;
12
+ view.setUint8(offset, ClientBinaryOpcode.SERVICE_CALL_REQUEST);
13
+ offset += 1;
14
+ view.setUint32(offset, request.serviceId, true);
15
+ offset += 4;
16
+ view.setUint32(offset, request.callId, true);
17
+ offset += 4;
18
+ view.setUint32(offset, request.encoding.length, true);
19
+ offset += 4;
20
+ payload.set(encoding, offset);
21
+ offset += encoding.length;
22
+ const data = new Uint8Array(request.data.buffer, request.data.byteOffset, request.data.byteLength);
23
+ payload.set(data, offset);
24
+ return new DataView(payload.buffer);
25
+ }
26
+ export function parseMessage(view) {
27
+ let offset = 0;
28
+ const op = view.getUint8(offset);
29
+ offset += 1;
30
+ const subscriptionId = view.getUint32(offset, true);
31
+ offset += 4;
32
+ const timestamp = view.getBigUint64(offset, true);
33
+ offset += 8;
34
+ const data = new DataView(view.buffer, offset);
35
+ return { op, subscriptionId, timestamp, data };
36
+ }
37
+ export function parseServiceCallResponse(view) {
38
+ let offset = 0;
39
+ const op = view.getUint8(offset);
40
+ offset += 1;
41
+ const serviceId = view.getUint32(offset, true);
42
+ offset += 4;
43
+ const callId = view.getUint32(offset, true);
44
+ offset += 4;
45
+ const encodingLength = view.getUint32(offset, true);
46
+ offset += 4;
47
+ const encodingBytes = new DataView(view.buffer, offset, encodingLength);
48
+ const encoding = textDecoder.decode(encodingBytes);
49
+ offset += encodingLength;
50
+ const data = new DataView(view.buffer, offset, view.buffer.byteLength - offset);
51
+ return { op, serviceId, callId, encoding, data };
52
+ }
53
+ export function parseFoxgloveMessage(view) {
54
+ const op = view.getUint8(0);
55
+ if (op === BinaryOpcode.MESSAGE_DATA) {
56
+ return parseMessage(view);
57
+ }
58
+ else if (op === BinaryOpcode.SERVICE_CALL_RESPONSE) {
59
+ return parseServiceCallResponse(view);
60
+ }
61
+ return null;
62
+ }
63
+ //# sourceMappingURL=foxglove-protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"foxglove-protocol.js","sourceRoot":"","sources":["../../../../../src/connection/foxglove-protocol.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { ArtificialWorker } from "../../utils/artificial-worker.js";
2
- import type { FoxgloveAdapterOutputMessage } from "../communicator.js";
3
- export declare class WebRtcBridge extends ArtificialWorker<FoxgloveAdapterOutputMessage, WorkerEventMap> {
2
+ import type { WorkerInputMessage, WorkerOutputMessage } from "../communicator.js";
3
+ export declare class WebRtcBridge extends ArtificialWorker<WorkerInputMessage, WorkerOutputMessage> {
4
4
  #private;
5
5
  constructor();
6
6
  terminate(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../../../../../src/connection/webrtc/bridge.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,KAAK,EAA+B,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAKpG,qBAAa,YAAa,SAAQ,gBAAgB,CAAC,4BAA4B,EAAE,cAAc,CAAC;;;IAa9E,SAAS,IAAI,IAAI;CA8HlC"}
1
+ {"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../../../../../src/connection/webrtc/bridge.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,oBAAoB,CAAC;AAM5B,qBAAa,YAAa,SAAQ,gBAAgB,CAAC,kBAAkB,EAAE,mBAAmB,CAAC;;;IAezE,SAAS,IAAI,IAAI;CAmKlC"}
@@ -1,8 +1,10 @@
1
1
  // This Source Code Form is subject to the terms of the Mozilla Public
2
2
  // License, v2.0. If a copy of the MPL was not distributed with this
3
3
  // file, You can obtain one at http://mozilla.org/MPL/2.0/
4
- import { WebRtcClient } from "@luxonis/remote-connection";
4
+ import { WebRtcClient, } from "@luxonis/remote-connection";
5
+ import { BinaryOpcode } from '@foxglove/ws-protocol';
5
6
  import { ArtificialWorker } from "../../utils/artificial-worker.js";
7
+ import { parseFoxgloveMessage } from "../foxglove-protocol.js";
6
8
  const MESSAGE_CHANNEL_NAME = "message";
7
9
  const SYSTEM_CHANNEL_NAME = "system";
8
10
  export class WebRtcBridge extends ArtificialWorker {
@@ -12,28 +14,46 @@ export class WebRtcBridge extends ArtificialWorker {
12
14
  #systemChannel = null;
13
15
  constructor() {
14
16
  super();
15
- this.#worker = new Worker(new URL("./worker", import.meta.url), { type: "module" });
17
+ this.#worker = new Worker(new URL("./worker", import.meta.url), {
18
+ type: "module",
19
+ });
16
20
  this.#setupArtificialWorker();
17
21
  }
18
22
  terminate() {
19
23
  this.#worker.terminate();
20
24
  }
21
25
  #setupArtificialWorker() {
22
- this.addEventListener('message', (event) => {
26
+ this.addEventListenerFromMain("message", (event) => {
23
27
  switch (event.data.type) {
24
- case 'open': {
25
- if ('config' in event.data.data) {
26
- this.#createWebRtc(event.data.data.config);
28
+ case "open": {
29
+ if ("config" in event.data.data) {
30
+ this.#createWebRtc({
31
+ withFragmentation: true,
32
+ ...event.data.data.config,
33
+ });
27
34
  }
28
35
  break;
29
36
  }
30
- case 'close': {
37
+ case "close": {
38
+ this.#webrtc?.dispose("Client requested connection close");
39
+ this.terminate();
31
40
  break;
32
41
  }
33
- case 'send': {
42
+ case "call_service": {
43
+ this.#worker.postMessage({
44
+ kind: "serviceCall",
45
+ data: {
46
+ message: event.data.data,
47
+ },
48
+ });
34
49
  break;
35
50
  }
36
- case 'call_service': {
51
+ case "unsubscribe":
52
+ case "subscribe": {
53
+ this.#worker.postMessage({
54
+ kind: event.data.type,
55
+ data: { message: { topics: event.data.data } },
56
+ });
37
57
  break;
38
58
  }
39
59
  }
@@ -45,49 +65,49 @@ export class WebRtcBridge extends ArtificialWorker {
45
65
  this.#handleMessages();
46
66
  }
47
67
  #handleWebRtc(client) {
68
+ client.on("error", (error) => { console.error("WebRtc Client Failed", error); });
48
69
  client.on("connection_established", (connection) => {
49
70
  connection.on("data_channel", (channel) => {
50
- channel.on('close', () => {
51
- if (channel.label !== MESSAGE_CHANNEL_NAME && channel.label !== SYSTEM_CHANNEL_NAME) {
71
+ channel.on("close", () => {
72
+ if (channel.label !== MESSAGE_CHANNEL_NAME &&
73
+ channel.label !== SYSTEM_CHANNEL_NAME) {
52
74
  return;
53
75
  }
54
76
  this.#worker.postMessage({
55
77
  kind: "connection",
56
78
  data: {
57
- channel: channel.label === MESSAGE_CHANNEL_NAME ? 'message' : 'system',
58
- ready: false
59
- }
79
+ channel: channel.label === MESSAGE_CHANNEL_NAME
80
+ ? "message"
81
+ : "system",
82
+ ready: false,
83
+ },
60
84
  });
85
+ this.postMessageToMain({ type: "close", });
61
86
  });
62
87
  if (channel.label === MESSAGE_CHANNEL_NAME) {
63
88
  this.#messageChannel = channel;
64
89
  channel.on("message:binary", async (view) => {
65
- const operation = view.getUint8(0);
66
- const action = operation === 0x01 ? 'message' : operation === 0x03 ? 'service_response' : 'other';
67
- if (action === 'message') {
68
- const subscriptionId = view.getUint32(1);
69
- const payload = new DataView(view.buffer, view.byteOffset + 1 + 4 + 8);
90
+ const message = parseFoxgloveMessage(view);
91
+ if (!message) {
92
+ return;
93
+ }
94
+ if (message.op === BinaryOpcode.MESSAGE_DATA) {
70
95
  this.#worker.postMessage({
71
96
  kind: "genericMessage",
72
- data: {
73
- message: { subscriptionId, data: payload }
74
- }
75
- }, [payload.buffer]);
97
+ data: { message },
98
+ }, [message.data.buffer]);
76
99
  }
77
100
  else {
78
- const callId = view.getUint32(1 + 4); // op-code + service-id
79
- const encodingLength = view.getUint32(1 + 4 + 4); // op-code + service-id + call-id
80
- const payload = new DataView(view.buffer, view.byteOffset + 1 + 4 + 4 + 4 + encodingLength); // op-code + service-id + call-id + encoding-length
81
101
  this.#worker.postMessage({
82
102
  kind: "systemMessage",
83
103
  data: {
84
104
  message: {
85
- op: 'serviceResponse',
86
- callId,
87
- data: payload
88
- }
89
- }
90
- }, [payload.buffer]);
105
+ op: "serviceResponse",
106
+ callId: message.callId,
107
+ data: message.data,
108
+ },
109
+ },
110
+ }, [message.data.buffer]);
91
111
  }
92
112
  });
93
113
  }
@@ -96,38 +116,49 @@ export class WebRtcBridge extends ArtificialWorker {
96
116
  channel.on("message:json", async (data) => {
97
117
  this.#worker.postMessage({
98
118
  kind: "systemMessage",
99
- data: { message: data }
119
+ data: { message: data },
100
120
  });
101
121
  });
102
122
  }
103
- this.#worker.postMessage({
104
- kind: "connection",
105
- data: {
106
- channel: channel.label === MESSAGE_CHANNEL_NAME ? 'message' : 'system',
107
- ready: true
108
- }
109
- });
123
+ if (channel.label === MESSAGE_CHANNEL_NAME || channel.label === SYSTEM_CHANNEL_NAME) {
124
+ this.#worker.postMessage({
125
+ kind: "connection",
126
+ data: {
127
+ channel: channel.label === MESSAGE_CHANNEL_NAME
128
+ ? "message"
129
+ : "system",
130
+ ready: true,
131
+ },
132
+ });
133
+ }
134
+ if (this.#systemChannel?.raw.readyState === "open" &&
135
+ this.#messageChannel?.raw.readyState === "open") {
136
+ this.postMessageToMain({ type: "open", });
137
+ }
110
138
  });
111
139
  connection.on("connection_closed", () => {
112
140
  this.#worker.postMessage({
113
141
  kind: "connection",
114
- data: { channel: null, ready: false }
142
+ data: { channel: null, ready: false },
115
143
  });
144
+ this.postMessageToMain({ type: "close", });
116
145
  });
117
146
  });
118
147
  }
119
148
  #handleMessages() {
120
- this.#worker.addEventListener('message', (event) => {
149
+ this.#worker.addEventListener("message", (event) => {
121
150
  switch (event.data.type) {
122
- case 'send': {
123
- const channel = event.data.data.channel === 'message' ? this.#messageChannel : this.#systemChannel;
151
+ case "send": {
152
+ const channel = event.data.data.channel === "message"
153
+ ? this.#messageChannel
154
+ : this.#systemChannel;
124
155
  if (channel) {
125
156
  channel.sendMessage(event.data.data.data);
126
157
  }
127
158
  break;
128
159
  }
129
160
  default: {
130
- this.postMessage(event.data);
161
+ this.postMessageToMain(event.data);
131
162
  }
132
163
  }
133
164
  });
@@ -1 +1 @@
1
- {"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../../../../../src/connection/webrtc/bridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../../../../../src/connection/webrtc/bridge.ts"],"names":[],"mappings":"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"}
@@ -1,49 +1,84 @@
1
- import type { Advertise, Unadvertise, AdvertiseServices, UnadvertiseServices, ServiceCallPayload } from "@foxglove/ws-protocol";
2
- import { FoxgloveAdapterOutputMessage, FoxgloveCommunicator } from "../communicator";
1
+ import type { Advertise, AdvertiseServices, ServiceCallPayload, Unadvertise, UnadvertiseServices } from "@foxglove/ws-protocol";
2
+ import { FoxgloveCommunicator, WorkerOutputMessage } from "../communicator";
3
3
  type GenericMessage = {
4
4
  subscriptionId: number;
5
5
  data: DataView;
6
6
  };
7
7
  export type SystemMessage = Advertise | Unadvertise | AdvertiseServices | UnadvertiseServices | {
8
- op: 'serviceResponse';
8
+ op: "serviceResponse";
9
9
  callId: number;
10
10
  data: DataView;
11
11
  };
12
+ type ServiceCallMessage = {
13
+ name: string;
14
+ serviceCallId: number;
15
+ body?: Record<string, any>;
16
+ };
12
17
  export type WebRtcWorkerInputMessage = {
13
- kind: 'genericMessage';
18
+ kind: "genericMessage";
14
19
  data: {
15
20
  message: GenericMessage;
16
21
  };
17
22
  } | {
18
- kind: 'systemMessage';
23
+ kind: "systemMessage";
19
24
  data: {
20
25
  message: SystemMessage;
21
26
  };
22
27
  } | {
23
- kind: 'connection';
28
+ kind: "connection";
24
29
  data: {
25
- channel: 'message' | 'system' | null;
30
+ channel: "message" | "system" | null;
26
31
  ready: boolean;
27
32
  };
33
+ } | {
34
+ kind: "serviceCall";
35
+ data: {
36
+ message: ServiceCallMessage;
37
+ };
38
+ } | {
39
+ kind: "rawSend";
40
+ data: {
41
+ message: {
42
+ channel: "system" | "message";
43
+ message: string | DataView;
44
+ };
45
+ };
46
+ } | {
47
+ kind: "subscribe";
48
+ data: {
49
+ message: {
50
+ topics: string[];
51
+ };
52
+ };
53
+ } | {
54
+ kind: "unsubscribe";
55
+ data: {
56
+ message: {
57
+ topics: string[];
58
+ };
59
+ };
28
60
  };
29
61
  export type WebRtcWorkerOutputMessage = {
30
- type: 'send';
62
+ type: "send";
31
63
  data: {
32
- channel: 'message' | 'system';
64
+ channel: "message" | "system";
33
65
  data: string | DataView;
34
66
  };
35
67
  };
36
68
  export declare class WebRtcHandler extends FoxgloveCommunicator {
37
69
  #private;
38
70
  protected isReady(): boolean;
39
- protected send(message: FoxgloveAdapterOutputMessage): void;
40
- protected sendWithTransfer(message: FoxgloveAdapterOutputMessage, transfer: ArrayBuffer[]): void;
41
- protected subscribe(channel: number): number;
42
- sendServiceCallRequest(request: ServiceCallPayload): void;
71
+ send(message: WorkerOutputMessage): void;
72
+ sendWithTransfer(message: WorkerOutputMessage, transfer: ArrayBuffer[]): void;
73
+ subscribe(topics: string[]): void;
74
+ unsubscribe(topics: string[]): void;
75
+ sendServiceCallRequest(args: ServiceCallPayload): void;
76
+ handleRawSend(data: WebRtcWorkerOutputMessage["data"]): void;
43
77
  handleConnection(data: (WebRtcWorkerInputMessage & {
44
- kind: 'connection';
45
- })['data']): void;
78
+ kind: "connection";
79
+ })["data"]): void;
46
80
  handleGeneric(message: GenericMessage): void;
81
+ handleServiceCall(message: ServiceCallMessage): void;
47
82
  handleSystem(message: SystemMessage): void;
48
83
  }
49
84
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"worker-utils.d.ts","sourceRoot":"","sources":["../../../../../../src/connection/webrtc/worker-utils.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,kBAAkB,EAAa,MAAM,uBAAuB,CAAC;AAG3I,OAAO,EAAE,4BAA4B,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAErF,KAAK,cAAc,GAAG;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,QAAQ,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,WAAW,GAAG,iBAAiB,GAAG,mBAAmB,GAAG;IAC9F,EAAE,EAAE,iBAAiB,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,QAAQ,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,EAAE,gBAAgB,CAAC;IACvB,IAAI,EAAE;QACJ,OAAO,EAAE,cAAc,CAAA;KACxB,CAAA;CACF,GAAG;IACF,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,EAAE;QACJ,OAAO,EAAE,aAAa,CAAA;KACvB,CAAA;CACF,GAAG;IACF,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE;QACJ,OAAO,EAAE,SAAS,GAAG,QAAQ,GAAG,IAAI,CAAC;QACrC,KAAK,EAAE,OAAO,CAAA;KACf,CAAA;CACF,CAAA;AAED,MAAM,MAAM,yBAAyB,GAAG;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE;QACJ,OAAO,EAAE,SAAS,GAAG,QAAQ,CAAC;QAC9B,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAA;KACxB,CAAA;CACF,CAAA;AAED,qBAAa,aAAc,SAAQ,oBAAoB;;cAKlC,OAAO,IAAI,OAAO;cAIlB,IAAI,CAAC,OAAO,EAAE,4BAA4B,GAAG,IAAI;cAIjD,gBAAgB,CAAC,OAAO,EAAE,4BAA4B,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI;cAItF,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAoBrC,sBAAsB,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAUlE,gBAAgB,CAAC,IAAI,EAAE,CAAC,wBAAwB,GAAG;QAAE,IAAI,EAAE,YAAY,CAAA;KAAE,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI;IASzF,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAI5C,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;CAwBlD"}
1
+ {"version":3,"file":"worker-utils.d.ts","sourceRoot":"","sources":["../../../../../../src/connection/webrtc/worker-utils.ts"],"names":[],"mappings":"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"}
@@ -2,11 +2,13 @@
2
2
  // License, v2.0. If a copy of the MPL was not distributed with this
3
3
  // file, You can obtain one at http://mozilla.org/MPL/2.0/
4
4
  import { recordToDataView } from "../../utils/encoding";
5
- import { FoxgloveCommunicator } from "../communicator";
5
+ import { FoxgloveCommunicator, } from "../communicator";
6
+ import { makeServiceCallRequest } from "../foxglove-protocol";
6
7
  export class WebRtcHandler extends FoxgloveCommunicator {
7
8
  #subscriptionId = 0;
8
9
  #messageReady = false;
9
10
  #systemReady = false;
11
+ #subscriptions = new Map();
10
12
  isReady() {
11
13
  return this.#messageReady && this.#systemReady;
12
14
  }
@@ -16,62 +18,105 @@ export class WebRtcHandler extends FoxgloveCommunicator {
16
18
  sendWithTransfer(message, transfer) {
17
19
  self.postMessage(message, transfer);
18
20
  }
19
- subscribe(channel) {
20
- this.#subscriptionId += 1;
21
+ #rawSubscribe(channelIds) {
22
+ const subscriptions = channelIds.map((channelId) => ({
23
+ id: ++this.#subscriptionId,
24
+ channelId,
25
+ }));
21
26
  self.postMessage({
22
- type: 'send',
27
+ type: "send",
23
28
  data: {
24
- channel: 'system',
29
+ channel: "system",
25
30
  data: recordToDataView({
26
- op: 'subscribe',
27
- subscriptions: [{
28
- id: this.#subscriptionId,
29
- channelId: channel
30
- }]
31
- })
32
- }
31
+ op: "subscribe",
32
+ subscriptions,
33
+ }),
34
+ },
33
35
  });
34
- return this.#subscriptionId;
36
+ return subscriptions;
37
+ }
38
+ subscribe(topics) {
39
+ const channelIds = this.getPublicChannels().filter((publicChannel) => topics.includes(publicChannel.topic)).map((channel) => channel.id);
40
+ const subscriptions = this.#rawSubscribe(channelIds);
41
+ for (const subscription of subscriptions) {
42
+ const channel = this.getPublicChannels().find((publicChannel) => publicChannel.id === subscription.channelId);
43
+ if (channel) {
44
+ this.#subscriptions.set(subscription.id, {
45
+ topic: channel.topic,
46
+ schema: channel.schemaName,
47
+ kind: channel.kind,
48
+ });
49
+ }
50
+ }
35
51
  }
36
- sendServiceCallRequest(request) {
52
+ #rawUnsubscribe(subscriptionIds) {
37
53
  self.postMessage({
38
- type: 'send',
54
+ type: "send",
39
55
  data: {
40
- channel: 'message',
41
- data: recordToDataView(request)
42
- }
56
+ channel: "system",
57
+ data: recordToDataView({
58
+ op: "unsubscribe",
59
+ subscriptionIds,
60
+ }),
61
+ },
62
+ });
63
+ }
64
+ unsubscribe(topics) {
65
+ const subscriptionIds = [...this.#subscriptions.entries()].filter(([_id, data]) => topics.includes(data.topic)).map((subscription) => subscription[0]);
66
+ this.#rawUnsubscribe(subscriptionIds);
67
+ for (const subscriptionId of subscriptionIds) {
68
+ this.#subscriptions.delete(subscriptionId);
69
+ }
70
+ }
71
+ sendServiceCallRequest(args) {
72
+ const data = makeServiceCallRequest(args);
73
+ self.postMessage({
74
+ type: "send",
75
+ data: { channel: "message", data },
76
+ }, [data.buffer]);
77
+ }
78
+ handleRawSend(data) {
79
+ self.postMessage({
80
+ type: "send",
81
+ data,
43
82
  });
44
83
  }
45
84
  handleConnection(data) {
46
- if (!data.channel || data.channel === 'message') {
85
+ if (!data.channel || data.channel === "message") {
47
86
  this.#messageReady = data.ready;
48
87
  }
49
- if (!data.channel || data.channel === 'system') {
88
+ if (!data.channel || data.channel === "system") {
50
89
  this.#systemReady = data.ready;
51
90
  }
52
91
  }
53
92
  handleGeneric(message) {
54
- this.handleGenericMessage(message.subscriptionId, message.data);
93
+ const subscription = this.#subscriptions.get(message.subscriptionId);
94
+ if (subscription) {
95
+ this.handleGenericMessage(subscription.topic, subscription.schema, message.data);
96
+ }
97
+ }
98
+ handleServiceCall(message) {
99
+ this.callService(message);
55
100
  }
56
101
  handleSystem(message) {
57
102
  switch (message.op) {
58
- case 'advertise': {
103
+ case "advertise": {
59
104
  this.handleChannelsAdvertisement(message.channels);
60
105
  break;
61
106
  }
62
- case 'unadvertise': {
107
+ case "unadvertise": {
63
108
  this.handleChannelsUnadvertisement(message.channelIds);
64
109
  break;
65
110
  }
66
- case 'advertiseServices': {
111
+ case "advertiseServices": {
67
112
  this.handleServicesAdvertisement(message.services);
68
113
  break;
69
114
  }
70
- case 'unadvertiseServices': {
115
+ case "unadvertiseServices": {
71
116
  this.handleServicesUnadvertisement(message.serviceIds);
72
117
  break;
73
118
  }
74
- case 'serviceResponse': {
119
+ case "serviceResponse": {
75
120
  this.handleServiceResponse(message);
76
121
  break;
77
122
  }
@@ -1 +1 @@
1
- {"version":3,"file":"worker-utils.js","sourceRoot":"","sources":["../../../../../../src/connection/webrtc/worker-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worker-utils.js","sourceRoot":"","sources":["../../../../../../src/connection/webrtc/worker-utils.ts"],"names":[],"mappings":"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"}