@phystack/hub-client 4.4.53 → 4.4.55

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 (108) hide show
  1. package/dist/index.d.ts +18 -25
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +252 -188
  4. package/dist/index.js.map +1 -1
  5. package/dist/peripheral-twin.d.ts +10 -9
  6. package/dist/peripheral-twin.d.ts.map +1 -1
  7. package/dist/peripheral-twin.js +24 -54
  8. package/dist/peripheral-twin.js.map +1 -1
  9. package/dist/services/phyhub-connection.service.d.ts +1 -0
  10. package/dist/services/phyhub-connection.service.d.ts.map +1 -1
  11. package/dist/services/phyhub-connection.service.js +17 -0
  12. package/dist/services/phyhub-connection.service.js.map +1 -1
  13. package/dist/services/phyhub-direct-connection.service.d.ts +21 -0
  14. package/dist/services/phyhub-direct-connection.service.d.ts.map +1 -0
  15. package/dist/services/phyhub-direct-connection.service.js +101 -0
  16. package/dist/services/phyhub-direct-connection.service.js.map +1 -0
  17. package/dist/services/webrtc/data-channel-handler.d.ts +45 -0
  18. package/dist/services/webrtc/data-channel-handler.d.ts.map +1 -0
  19. package/dist/services/webrtc/data-channel-handler.js +260 -0
  20. package/dist/services/webrtc/data-channel-handler.js.map +1 -0
  21. package/dist/services/webrtc/index.d.ts +8 -0
  22. package/dist/services/webrtc/index.d.ts.map +1 -0
  23. package/dist/services/webrtc/index.js +18 -0
  24. package/dist/services/webrtc/index.js.map +1 -0
  25. package/dist/services/webrtc/media-stream-handler.d.ts +57 -0
  26. package/dist/services/webrtc/media-stream-handler.d.ts.map +1 -0
  27. package/dist/services/webrtc/media-stream-handler.js +367 -0
  28. package/dist/services/webrtc/media-stream-handler.js.map +1 -0
  29. package/dist/services/webrtc/peer-connection-manager.d.ts +40 -0
  30. package/dist/services/webrtc/peer-connection-manager.d.ts.map +1 -0
  31. package/dist/services/webrtc/peer-connection-manager.js +335 -0
  32. package/dist/services/webrtc/peer-connection-manager.js.map +1 -0
  33. package/dist/services/webrtc/types.d.ts +133 -0
  34. package/dist/services/webrtc/types.d.ts.map +1 -0
  35. package/dist/services/webrtc/types.js +12 -0
  36. package/dist/services/webrtc/types.js.map +1 -0
  37. package/dist/services/webrtc/webrtc-globals.d.ts +4 -0
  38. package/dist/services/webrtc/webrtc-globals.d.ts.map +1 -0
  39. package/dist/services/webrtc/webrtc-globals.js +72 -0
  40. package/dist/services/webrtc/webrtc-globals.js.map +1 -0
  41. package/dist/services/webrtc/webrtc-manager.d.ts +35 -0
  42. package/dist/services/webrtc/webrtc-manager.d.ts.map +1 -0
  43. package/dist/services/webrtc/webrtc-manager.js +274 -0
  44. package/dist/services/webrtc/webrtc-manager.js.map +1 -0
  45. package/dist/test/communication-comprehensive-test.d.ts +8 -0
  46. package/dist/test/communication-comprehensive-test.d.ts.map +1 -0
  47. package/dist/test/communication-comprehensive-test.js +356 -0
  48. package/dist/test/communication-comprehensive-test.js.map +1 -0
  49. package/dist/test/webrtc-channel-names-test.d.ts +2 -0
  50. package/dist/test/webrtc-channel-names-test.d.ts.map +1 -0
  51. package/dist/test/webrtc-channel-names-test.js +177 -0
  52. package/dist/test/webrtc-channel-names-test.js.map +1 -0
  53. package/dist/test/webrtc-comprehensive-test.d.ts +2 -0
  54. package/dist/test/webrtc-comprehensive-test.d.ts.map +1 -0
  55. package/dist/test/webrtc-comprehensive-test.js +328 -0
  56. package/dist/test/webrtc-comprehensive-test.js.map +1 -0
  57. package/dist/test/webrtc-reconnect-test.d.ts +4 -0
  58. package/dist/test/webrtc-reconnect-test.d.ts.map +1 -0
  59. package/dist/test/webrtc-reconnect-test.js +244 -0
  60. package/dist/test/webrtc-reconnect-test.js.map +1 -0
  61. package/dist/test/webrtc-test-harness.d.ts +4 -0
  62. package/dist/test/webrtc-test-harness.d.ts.map +1 -0
  63. package/dist/test/webrtc-test-harness.js +169 -0
  64. package/dist/test/webrtc-test-harness.js.map +1 -0
  65. package/dist/twin-messaging.d.ts +23 -0
  66. package/dist/twin-messaging.d.ts.map +1 -0
  67. package/dist/twin-messaging.js +96 -0
  68. package/dist/twin-messaging.js.map +1 -0
  69. package/dist/types/twin.types.d.ts +36 -20
  70. package/dist/types/twin.types.d.ts.map +1 -1
  71. package/dist/types/twin.types.js.map +1 -1
  72. package/docs/webrtc-howto.md +398 -0
  73. package/docs/webrtc-test.md +330 -0
  74. package/package.json +3 -3
  75. package/scripts/webrtc-test.sh +401 -0
  76. package/src/index.ts +370 -259
  77. package/src/peripheral-twin.ts +44 -67
  78. package/src/services/phyhub-connection.service.ts +24 -0
  79. package/src/services/phyhub-direct-connection.service.ts +159 -0
  80. package/src/services/webrtc/data-channel-handler.ts +362 -0
  81. package/src/services/webrtc/index.ts +36 -0
  82. package/src/services/webrtc/media-stream-handler.ts +515 -0
  83. package/src/services/webrtc/peer-connection-manager.ts +463 -0
  84. package/src/services/webrtc/types.ts +270 -0
  85. package/src/services/webrtc/webrtc-globals.ts +108 -0
  86. package/src/services/webrtc/webrtc-manager.ts +490 -0
  87. package/src/test/communication-comprehensive-test.ts +533 -0
  88. package/src/test/webrtc-channel-names-test.ts +266 -0
  89. package/src/test/webrtc-comprehensive-test.ts +494 -0
  90. package/src/test/webrtc-reconnect-test.ts +345 -0
  91. package/src/test/webrtc-test-harness.ts +254 -0
  92. package/src/twin-messaging.ts +193 -0
  93. package/src/types/twin.types.ts +59 -20
  94. package/dist/services/webrtc/datachannel.d.ts +0 -10
  95. package/dist/services/webrtc/datachannel.d.ts.map +0 -1
  96. package/dist/services/webrtc/datachannel.js +0 -290
  97. package/dist/services/webrtc/datachannel.js.map +0 -1
  98. package/dist/services/webrtc/mediastream.d.ts +0 -10
  99. package/dist/services/webrtc/mediastream.d.ts.map +0 -1
  100. package/dist/services/webrtc/mediastream.js +0 -396
  101. package/dist/services/webrtc/mediastream.js.map +0 -1
  102. package/dist/services/webrtc/peer-connection-ice.d.ts +0 -32
  103. package/dist/services/webrtc/peer-connection-ice.d.ts.map +0 -1
  104. package/dist/services/webrtc/peer-connection-ice.js +0 -483
  105. package/dist/services/webrtc/peer-connection-ice.js.map +0 -1
  106. package/src/services/webrtc/datachannel.ts +0 -421
  107. package/src/services/webrtc/mediastream.ts +0 -602
  108. package/src/services/webrtc/peer-connection-ice.ts +0 -689
@@ -0,0 +1,260 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DataChannelHandler = void 0;
4
+ const peer_connection_manager_1 = require("./peer-connection-manager");
5
+ const types_1 = require("./types");
6
+ class DataChannelHandler {
7
+ constructor(targetTwinId, isInitiator, twinMessaging, options = {}, channelName = 'default') {
8
+ var _a, _b, _c, _d, _e;
9
+ this.pcManager = null;
10
+ this.dataChannel = null;
11
+ this.isOpen = false;
12
+ this.isClosed = false;
13
+ this.isConnecting = false;
14
+ this.messageListeners = new Set();
15
+ this.closeListeners = new Set();
16
+ this.targetTwinId = targetTwinId;
17
+ this.channelName = channelName;
18
+ this.isInitiator = isInitiator;
19
+ this.twinMessaging = twinMessaging;
20
+ this.options = {
21
+ useStun: (_a = options.useStun) !== null && _a !== void 0 ? _a : types_1.DEFAULT_WEBRTC_OPTIONS.useStun,
22
+ stunServers: (_b = options.stunServers) !== null && _b !== void 0 ? _b : types_1.DEFAULT_WEBRTC_OPTIONS.stunServers,
23
+ connectionTimeout: (_c = options.connectionTimeout) !== null && _c !== void 0 ? _c : types_1.DEFAULT_WEBRTC_OPTIONS.connectionTimeout,
24
+ initialRetryDelay: (_d = options.initialRetryDelay) !== null && _d !== void 0 ? _d : types_1.DEFAULT_WEBRTC_OPTIONS.initialRetryDelay,
25
+ maxRetryDelay: (_e = options.maxRetryDelay) !== null && _e !== void 0 ? _e : types_1.DEFAULT_WEBRTC_OPTIONS.maxRetryDelay,
26
+ };
27
+ }
28
+ setCallbacks(callbacks) {
29
+ this.onConnectedCallback = callbacks.onConnected;
30
+ this.onDisconnectedCallback = callbacks.onDisconnected;
31
+ this.onErrorCallback = callbacks.onError;
32
+ this.onReconnectingCallback = callbacks.onReconnecting;
33
+ this.onReconnectedCallback = callbacks.onReconnected;
34
+ }
35
+ async connect() {
36
+ if (this.isClosed) {
37
+ throw new Error('DataChannelHandler has been closed');
38
+ }
39
+ this.isConnecting = true;
40
+ const channelId = `dc-${this.channelName}-${this.targetTwinId}`;
41
+ const channelPrefix = `dc-${this.channelName}`;
42
+ const pcConfig = {
43
+ targetTwinId: this.targetTwinId,
44
+ isInitiator: this.isInitiator,
45
+ connectionType: 'datachannel',
46
+ channelPrefix,
47
+ useStun: this.options.useStun,
48
+ stunServers: this.options.stunServers,
49
+ onConnected: () => this.handlePeerConnected(),
50
+ onDisconnected: () => this.handlePeerDisconnected(),
51
+ onError: (err) => this.handleError(err),
52
+ onReconnecting: (attempt) => {
53
+ var _a;
54
+ this.isConnecting = true;
55
+ this.isOpen = false;
56
+ this.dataChannel = null;
57
+ (_a = this.onReconnectingCallback) === null || _a === void 0 ? void 0 : _a.call(this, attempt);
58
+ },
59
+ onReconnected: (attempt) => this.handleReconnected(attempt),
60
+ onPeerConnectionCreated: (pc) => {
61
+ if (this.isInitiator) {
62
+ console.log('[DataChannelHandler] Creating data channel before offer');
63
+ this.dataChannel = pc.createDataChannel(channelId);
64
+ this.dataChannel.binaryType = 'arraybuffer';
65
+ }
66
+ else {
67
+ console.log('[DataChannelHandler] Setting up ondatachannel handler');
68
+ pc.ondatachannel = (event) => {
69
+ console.log('[DataChannelHandler] Received data channel from initiator');
70
+ this.dataChannel = event.channel;
71
+ this.dataChannel.binaryType = 'arraybuffer';
72
+ this.attachDataChannelHandlers(this.dataChannel, () => {
73
+ });
74
+ };
75
+ }
76
+ },
77
+ };
78
+ this.pcManager = new peer_connection_manager_1.PeerConnectionManager(pcConfig, this.twinMessaging, {
79
+ connectionTimeout: this.options.connectionTimeout,
80
+ initialRetryDelay: this.options.initialRetryDelay,
81
+ maxRetryDelay: this.options.maxRetryDelay,
82
+ });
83
+ const pc = await this.pcManager.connect();
84
+ await this.setupDataChannel(pc);
85
+ return this.createPhygridDataChannel();
86
+ }
87
+ close() {
88
+ if (this.isClosed)
89
+ return;
90
+ this.isClosed = true;
91
+ this.isOpen = false;
92
+ if (this.dataChannel) {
93
+ try {
94
+ this.dataChannel.close();
95
+ }
96
+ catch (err) {
97
+ console.error('[DataChannelHandler] Error closing data channel:', err);
98
+ }
99
+ this.dataChannel = null;
100
+ }
101
+ if (this.pcManager) {
102
+ this.pcManager.close();
103
+ this.pcManager = null;
104
+ }
105
+ this.notifyCloseListeners();
106
+ this.messageListeners.clear();
107
+ this.closeListeners.clear();
108
+ }
109
+ async setupDataChannel(pc) {
110
+ return new Promise((resolve) => {
111
+ if (this.dataChannel) {
112
+ this.attachDataChannelHandlers(this.dataChannel, resolve);
113
+ }
114
+ else if (this.isInitiator) {
115
+ const channelId = `channel-${this.targetTwinId}`;
116
+ this.dataChannel = pc.createDataChannel(channelId);
117
+ this.dataChannel.binaryType = 'arraybuffer';
118
+ this.attachDataChannelHandlers(this.dataChannel, resolve);
119
+ }
120
+ else {
121
+ const existingHandler = pc.ondatachannel;
122
+ pc.ondatachannel = (event) => {
123
+ existingHandler === null || existingHandler === void 0 ? void 0 : existingHandler.call(pc, event);
124
+ resolve();
125
+ };
126
+ }
127
+ });
128
+ }
129
+ attachDataChannelHandlers(dc, onReady) {
130
+ dc.onopen = () => {
131
+ var _a;
132
+ this.isOpen = true;
133
+ this.isConnecting = false;
134
+ (_a = this.onConnectedCallback) === null || _a === void 0 ? void 0 : _a.call(this);
135
+ onReady();
136
+ };
137
+ dc.onmessage = (event) => {
138
+ this.handleMessage(event.data);
139
+ };
140
+ dc.onclose = () => {
141
+ var _a;
142
+ this.isOpen = false;
143
+ if (!this.isClosed) {
144
+ (_a = this.onDisconnectedCallback) === null || _a === void 0 ? void 0 : _a.call(this);
145
+ }
146
+ };
147
+ dc.onerror = (event) => {
148
+ var _a;
149
+ const error = new Error(`DataChannel error: ${((_a = event.error) === null || _a === void 0 ? void 0 : _a.message) || 'Unknown error'}`);
150
+ this.handleError(error);
151
+ };
152
+ if (dc.readyState === 'open') {
153
+ this.isOpen = true;
154
+ this.isConnecting = false;
155
+ onReady();
156
+ }
157
+ }
158
+ handleMessage(data) {
159
+ let parsedData = data;
160
+ if (typeof data === 'string') {
161
+ try {
162
+ parsedData = JSON.parse(data);
163
+ }
164
+ catch (_a) {
165
+ }
166
+ }
167
+ this.messageListeners.forEach((listener) => {
168
+ try {
169
+ listener(parsedData);
170
+ }
171
+ catch (err) {
172
+ console.error('[DataChannelHandler] Error in message listener:', err);
173
+ }
174
+ });
175
+ }
176
+ handlePeerConnected() {
177
+ }
178
+ handlePeerDisconnected() {
179
+ var _a;
180
+ this.isOpen = false;
181
+ (_a = this.onDisconnectedCallback) === null || _a === void 0 ? void 0 : _a.call(this);
182
+ }
183
+ handleReconnected(attempt) {
184
+ var _a, _b;
185
+ const pc = (_a = this.pcManager) === null || _a === void 0 ? void 0 : _a.getPeerConnection();
186
+ if (pc) {
187
+ this.setupDataChannel(pc).catch((err) => {
188
+ console.error('[DataChannelHandler] Error re-setting up data channel:', err);
189
+ });
190
+ }
191
+ (_b = this.onReconnectedCallback) === null || _b === void 0 ? void 0 : _b.call(this, attempt);
192
+ }
193
+ handleError(error) {
194
+ var _a;
195
+ console.error('[DataChannelHandler] DataChannel error:', error);
196
+ (_a = this.onErrorCallback) === null || _a === void 0 ? void 0 : _a.call(this, error);
197
+ }
198
+ notifyCloseListeners() {
199
+ this.closeListeners.forEach((listener) => {
200
+ try {
201
+ listener();
202
+ }
203
+ catch (err) {
204
+ console.error('[DataChannelHandler] Error in close listener:', err);
205
+ }
206
+ });
207
+ }
208
+ createPhygridDataChannel() {
209
+ return {
210
+ send: (data) => {
211
+ var _a;
212
+ let messageToSend;
213
+ if (typeof data === 'object' && !(data instanceof ArrayBuffer)) {
214
+ messageToSend = JSON.stringify(data);
215
+ }
216
+ else {
217
+ messageToSend = data;
218
+ }
219
+ if (((_a = this.dataChannel) === null || _a === void 0 ? void 0 : _a.readyState) === 'open') {
220
+ try {
221
+ this.dataChannel.send(messageToSend);
222
+ }
223
+ catch (err) {
224
+ console.error('[DataChannelHandler] Error sending message:', err);
225
+ }
226
+ }
227
+ },
228
+ onMessage: (callback) => {
229
+ this.messageListeners.add(callback);
230
+ },
231
+ offMessage: (callback) => {
232
+ this.messageListeners.delete(callback);
233
+ },
234
+ onClose: (callback) => {
235
+ this.closeListeners.add(callback);
236
+ },
237
+ offClose: (callback) => {
238
+ this.closeListeners.delete(callback);
239
+ },
240
+ close: () => {
241
+ this.close();
242
+ },
243
+ isOpen: () => {
244
+ var _a;
245
+ return this.isOpen && ((_a = this.dataChannel) === null || _a === void 0 ? void 0 : _a.readyState) === 'open';
246
+ },
247
+ isConnecting: () => {
248
+ return this.isConnecting;
249
+ },
250
+ getTargetTwinId: () => {
251
+ return this.targetTwinId;
252
+ },
253
+ getChannelName: () => {
254
+ return this.channelName;
255
+ },
256
+ };
257
+ }
258
+ }
259
+ exports.DataChannelHandler = DataChannelHandler;
260
+ //# sourceMappingURL=data-channel-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-channel-handler.js","sourceRoot":"","sources":["../../../src/services/webrtc/data-channel-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export { WebRTCManager } from './webrtc-manager';
2
+ export { DataChannelHandler } from './data-channel-handler';
3
+ export { MediaStreamHandler } from './media-stream-handler';
4
+ export { PeerConnectionManager } from './peer-connection-manager';
5
+ export { ensureWebRTCGlobals, isWebRTCAvailable, isWebRTCInitialized } from './webrtc-globals';
6
+ export type { TwinMessagingInterface, WebRTCManagerOptions, WebRTCEvent, WebRTCStandardEvent, WebRTCVerboseEvent, WebRTCEventData, WebRTCEventCallback, PhygridDataChannel, PhygridMediaStream, MediaStreamOptions, ExtendedMediaStreamTrack, ConnectionType, ConnectionState, } from './types';
7
+ export { DEFAULT_WEBRTC_OPTIONS } from './types';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/webrtc/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAGlE,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAG/F,YAAY,EACV,sBAAsB,EACtB,oBAAoB,EACpB,WAAW,EACX,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,wBAAwB,EACxB,cAAc,EACd,eAAe,GAChB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_WEBRTC_OPTIONS = exports.isWebRTCInitialized = exports.isWebRTCAvailable = exports.ensureWebRTCGlobals = exports.PeerConnectionManager = exports.MediaStreamHandler = exports.DataChannelHandler = exports.WebRTCManager = void 0;
4
+ var webrtc_manager_1 = require("./webrtc-manager");
5
+ Object.defineProperty(exports, "WebRTCManager", { enumerable: true, get: function () { return webrtc_manager_1.WebRTCManager; } });
6
+ var data_channel_handler_1 = require("./data-channel-handler");
7
+ Object.defineProperty(exports, "DataChannelHandler", { enumerable: true, get: function () { return data_channel_handler_1.DataChannelHandler; } });
8
+ var media_stream_handler_1 = require("./media-stream-handler");
9
+ Object.defineProperty(exports, "MediaStreamHandler", { enumerable: true, get: function () { return media_stream_handler_1.MediaStreamHandler; } });
10
+ var peer_connection_manager_1 = require("./peer-connection-manager");
11
+ Object.defineProperty(exports, "PeerConnectionManager", { enumerable: true, get: function () { return peer_connection_manager_1.PeerConnectionManager; } });
12
+ var webrtc_globals_1 = require("./webrtc-globals");
13
+ Object.defineProperty(exports, "ensureWebRTCGlobals", { enumerable: true, get: function () { return webrtc_globals_1.ensureWebRTCGlobals; } });
14
+ Object.defineProperty(exports, "isWebRTCAvailable", { enumerable: true, get: function () { return webrtc_globals_1.isWebRTCAvailable; } });
15
+ Object.defineProperty(exports, "isWebRTCInitialized", { enumerable: true, get: function () { return webrtc_globals_1.isWebRTCInitialized; } });
16
+ var types_1 = require("./types");
17
+ Object.defineProperty(exports, "DEFAULT_WEBRTC_OPTIONS", { enumerable: true, get: function () { return types_1.DEFAULT_WEBRTC_OPTIONS; } });
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/webrtc/index.ts"],"names":[],"mappings":";;;AAQA,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AAGtB,+DAA4D;AAAnD,0HAAA,kBAAkB,OAAA;AAC3B,+DAA4D;AAAnD,0HAAA,kBAAkB,OAAA;AAC3B,qEAAkE;AAAzD,gIAAA,qBAAqB,OAAA;AAG9B,mDAA+F;AAAtF,qHAAA,mBAAmB,OAAA;AAAE,mHAAA,iBAAiB,OAAA;AAAE,qHAAA,mBAAmB,OAAA;AAmBpE,iCAAiD;AAAxC,+GAAA,sBAAsB,OAAA"}
@@ -0,0 +1,57 @@
1
+ import { PeerConnectionManagerOptions } from './peer-connection-manager';
2
+ import { TwinMessagingInterface, PhygridMediaStream, MediaStreamOptions } from './types';
3
+ export interface MediaStreamHandlerOptions extends Partial<PeerConnectionManagerOptions> {
4
+ useStun?: boolean;
5
+ stunServers?: string[];
6
+ mediaOptions?: MediaStreamOptions;
7
+ }
8
+ export declare class MediaStreamHandler {
9
+ private targetTwinId;
10
+ private channelName;
11
+ private isInitiator;
12
+ private twinMessaging;
13
+ private options;
14
+ private pcManager;
15
+ private remoteStream;
16
+ private localStream;
17
+ private isClosed;
18
+ private isReceiving;
19
+ private isConnecting;
20
+ private tracks;
21
+ private trackLastFrameTime;
22
+ private frameActivityInterval;
23
+ private trackListeners;
24
+ private frameListeners;
25
+ private closeListeners;
26
+ private onConnectedCallback?;
27
+ private onDisconnectedCallback?;
28
+ private onErrorCallback?;
29
+ private onReconnectingCallback?;
30
+ private onReconnectedCallback?;
31
+ constructor(targetTwinId: string, isInitiator: boolean, twinMessaging: TwinMessagingInterface, options?: MediaStreamHandlerOptions, channelName?: string);
32
+ setCallbacks(callbacks: {
33
+ onConnected?: () => void;
34
+ onDisconnected?: () => void;
35
+ onError?: (error: Error) => void;
36
+ onReconnecting?: (attempt: number) => void;
37
+ onReconnected?: (attempt: number) => void;
38
+ }): void;
39
+ connect(): Promise<PhygridMediaStream>;
40
+ close(): void;
41
+ private setupMediaStream;
42
+ private handleRemoteStream;
43
+ private addTrackToCollection;
44
+ private setupTrackFrameMonitoring;
45
+ private startFrameActivityMonitor;
46
+ private stopFrameActivityMonitor;
47
+ private checkFrameActivity;
48
+ private handlePeerConnected;
49
+ private handlePeerDisconnected;
50
+ private handleReconnected;
51
+ private handleError;
52
+ private notifyTrackListeners;
53
+ private notifyFrameListeners;
54
+ private notifyCloseListeners;
55
+ private createPhygridMediaStream;
56
+ }
57
+ //# sourceMappingURL=media-stream-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media-stream-handler.d.ts","sourceRoot":"","sources":["../../../src/services/webrtc/media-stream-handler.ts"],"names":[],"mappings":"AAUA,OAAO,EAAyB,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AAChG,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,EAInB,MAAM,SAAS,CAAC;AAIjB,MAAM,WAAW,yBAA0B,SAAQ,OAAO,CAAC,4BAA4B,CAAC;IAEtF,OAAO,CAAC,EAAE,OAAO,CAAC;IAGlB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAGvB,YAAY,CAAC,EAAE,kBAAkB,CAAC;CACnC;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,OAAO,CAEb;IAEF,OAAO,CAAC,SAAS,CAAsC;IACvD,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAAS;IAG7B,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,kBAAkB,CAAkC;IAC5D,OAAO,CAAC,qBAAqB,CAA+B;IAG5D,OAAO,CAAC,cAAc,CAAqD;IAC3E,OAAO,CAAC,cAAc,CAA4C;IAClE,OAAO,CAAC,cAAc,CAA8B;IAGpD,OAAO,CAAC,mBAAmB,CAAC,CAAa;IACzC,OAAO,CAAC,sBAAsB,CAAC,CAAa;IAC5C,OAAO,CAAC,eAAe,CAAC,CAAyB;IACjD,OAAO,CAAC,sBAAsB,CAAC,CAA4B;IAC3D,OAAO,CAAC,qBAAqB,CAAC,CAA4B;gBAGxD,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,OAAO,EACpB,aAAa,EAAE,sBAAsB,EACrC,OAAO,GAAE,yBAA8B,EACvC,WAAW,GAAE,MAAkB;IA8BjC,YAAY,CAAC,SAAS,EAAE;QACtB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;QACzB,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;QAC5B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;QACjC,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;QAC3C,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;KAC3C,GAAG,IAAI;IAWF,OAAO,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAiE5C,KAAK,IAAI,IAAI;YA4CC,gBAAgB;IAyC9B,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,oBAAoB;IAiB5B,OAAO,CAAC,yBAAyB;IA8BjC,OAAO,CAAC,yBAAyB;IAQjC,OAAO,CAAC,wBAAwB;IAOhC,OAAO,CAAC,kBAAkB;IAuB1B,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,sBAAsB;IAK9B,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,wBAAwB;CAmGjC"}