vani-meeting-client 0.7.4 → 0.7.8

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.
@@ -42,6 +42,7 @@ export declare class MeetingHandler {
42
42
  checkSocket(): Promise<void>;
43
43
  startMeeting(): Promise<void>;
44
44
  getMeetingStartTime(): Promise<void>;
45
+ startRTMPStream(urls: string[]): Promise<void>;
45
46
  getEventEmitter(): VaniEventListener | undefined;
46
47
  private emitMessageToSource;
47
48
  private cleanup;
@@ -34,10 +34,10 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
34
34
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
35
  }
36
36
  };
37
- import { VaniEvent, MeetingStartRequest, ChatSendVia } from ".";
37
+ import { VaniEvent, MeetingStartRequest, ChatSendVia, MeetingType } from ".";
38
38
  import { DynamicLibHelper } from "./utility/DynamicLibHelper";
39
39
  import * as log from 'loglevel';
40
- import { WebSocketBasicEvents, WebsocketHandler } from "./websocket-handler/WebsocketHandler";
40
+ import { SFUMessageType, WebSocketBasicEvents, WebsocketHandler } from "./websocket-handler/WebsocketHandler";
41
41
  import { CommunicationHandler } from "./inter-communication-handler/CommunicationHandler";
42
42
  import { UserMediaHandler } from "./user-media-handler/UserMediaHandler";
43
43
  // import Analytics from 'analytics'
@@ -61,7 +61,7 @@ var MeetingHandler = /** @class */ (function () {
61
61
  MeetingHandler.prototype.init = function () {
62
62
  var _a, _b, _c;
63
63
  return __awaiter(this, void 0, void 0, function () {
64
- var _d, _e, err_1;
64
+ var _d, _e;
65
65
  return __generator(this, function (_f) {
66
66
  switch (_f.label) {
67
67
  case 0:
@@ -79,26 +79,15 @@ var MeetingHandler = /** @class */ (function () {
79
79
  this.reactNativeWebrtcPlugin.registerGlobals();
80
80
  _f.label = 2;
81
81
  case 2:
82
- _f.trys.push([2, 5, , 6]);
83
82
  if (!!this.videoCallHandler) return [3 /*break*/, 4];
84
83
  _e = this;
85
84
  return [4 /*yield*/, new DynamicLibHelper().getVideoCallClassHandler((_c = this.meetingStartRequest) === null || _c === void 0 ? void 0 : _c.meetingType, this.meetingStartRequest, this.communicationHandler)];
86
85
  case 3:
87
86
  _e.videoCallHandler = _f.sent();
88
87
  _f.label = 4;
89
- case 4: return [3 /*break*/, 6];
90
- case 5:
91
- err_1 = _f.sent();
92
- console.log("his.videoCallHandler error", err_1);
93
- return [3 /*break*/, 6];
94
- case 6:
95
- try {
96
- if (!this.websocketCallHandler) {
97
- this.websocketCallHandler = new WebsocketHandler(this.meetingStartRequest, this.communicationHandler);
98
- }
99
- }
100
- catch (err) {
101
- console.log("his.websocketCallHandler error", err);
88
+ case 4:
89
+ if (!this.websocketCallHandler) {
90
+ this.websocketCallHandler = new WebsocketHandler(this.meetingStartRequest, this.communicationHandler);
102
91
  }
103
92
  // this.handleGA();
104
93
  this.emitMessageToSource(VaniEvent.OnInitDone, {});
@@ -422,6 +411,19 @@ var MeetingHandler = /** @class */ (function () {
422
411
  });
423
412
  });
424
413
  };
414
+ MeetingHandler.prototype.startRTMPStream = function (urls) {
415
+ var _a, _b;
416
+ return __awaiter(this, void 0, void 0, function () {
417
+ var messageJson;
418
+ return __generator(this, function (_c) {
419
+ if (((_a = this.meetingStartRequest) === null || _a === void 0 ? void 0 : _a.meetingType) === MeetingType.SFU) {
420
+ messageJson = { to: "self", type: SFUMessageType.OnStartRTMP, message: { urls: urls } };
421
+ (_b = this.communicationHandler) === null || _b === void 0 ? void 0 : _b.sendWebSocketMessage(SFUMessageType.SFUMessage, messageJson);
422
+ }
423
+ return [2 /*return*/];
424
+ });
425
+ });
426
+ };
425
427
  MeetingHandler.prototype.getEventEmitter = function () {
426
428
  var _a;
427
429
  return (_a = this.communicationHandler) === null || _a === void 0 ? void 0 : _a.getEventEmitter();
@@ -1,6 +1,6 @@
1
1
  import { MessagePayload } from "..";
2
2
  import { Participant } from "./Participant";
3
- import { Track } from "./Track";
3
+ import { Track, TrackKind } from "./Track";
4
4
  export declare enum VaniEvent {
5
5
  OnInitDone = "onInitDone",
6
6
  OnSocketError = "onSocketError",
@@ -39,7 +39,7 @@ interface VaniConnectionEvents {
39
39
  [VaniEvent.OnConnected]: () => any;
40
40
  [VaniEvent.OnConnectionBack]: () => any;
41
41
  [VaniEvent.OnPermissionError]: (error: DOMException) => any;
42
- [VaniEvent.OnPermissionApproved]: () => any;
42
+ [VaniEvent.OnPermissionApproved]: (forTrackKinds: TrackKind[]) => any;
43
43
  [VaniEvent.OnDevicesChanged]: () => any;
44
44
  [VaniEvent.OnUserJoined]: (participant: Participant) => any;
45
45
  [VaniEvent.OnAudioVideoStatusUpdated]: (participant: Participant) => any;
@@ -34,6 +34,7 @@ export declare class MeetingStartRequest {
34
34
  defaultAudioBlocked: boolean;
35
35
  defaultVideoBlocked: boolean;
36
36
  defaultScreenShareBlocked: boolean;
37
+ mediasoupDeviceHandlerName?: String;
37
38
  defaultCameraFacingMode: CameraFacingMode;
38
39
  simulcastEncodings: RTCRtpEncodingParameters[];
39
40
  isDataChannelRequired: boolean;
@@ -29,6 +29,7 @@ var MeetingStartRequest = /** @class */ (function () {
29
29
  this.defaultAudioBlocked = false;
30
30
  this.defaultVideoBlocked = false;
31
31
  this.defaultScreenShareBlocked = false;
32
+ this.mediasoupDeviceHandlerName = undefined;
32
33
  this.defaultCameraFacingMode = CameraFacingMode.Front;
33
34
  this.simulcastEncodings = [{ maxBitrate: 40000, scaleResolutionDownBy: 2.0 }, { maxBitrate: 620000, scaleResolutionDownBy: 1.0 },];
34
35
  this.isDataChannelRequired = false;
@@ -253,12 +253,13 @@ var UserMediaHandler = /** @class */ (function (_super) {
253
253
  UserMediaHandler.prototype.onStreamGot = function (stream, isForAudio, isForVideo, shouldAddTrackImmediately) {
254
254
  var _a, _b, _c, _d, _e;
255
255
  return __awaiter(this, void 0, void 0, function () {
256
- var data, audioPause, data, audioPause;
256
+ var permissionApprovedFor, data, audioPause, data, audioPause;
257
257
  return __generator(this, function (_f) {
258
258
  if (!stream || (isForAudio === false && isForVideo === false)) {
259
259
  this.isVideoAudioFetchInProgress = false;
260
260
  return [2 /*return*/];
261
261
  }
262
+ permissionApprovedFor = [];
262
263
  if (isForAudio && stream.getAudioTracks().length > 0) {
263
264
  this.onTrack(stream.getAudioTracks()[0], TrackKind.Audio, shouldAddTrackImmediately);
264
265
  // removeAndStreamInLocalStream(stream.getAudioTracks()[0])
@@ -279,6 +280,7 @@ var UserMediaHandler = /** @class */ (function (_super) {
279
280
  && stream.getAudioTracks()[0].getConstraints() && stream.getAudioTracks()[0].getConstraints().deviceId) {
280
281
  this.meetingStartRequest.audioInDevice = (_b = stream.getAudioTracks()[0].getConstraints().deviceId) === null || _b === void 0 ? void 0 : _b.toString();
281
282
  }
283
+ permissionApprovedFor.push(TrackKind.Audio);
282
284
  }
283
285
  if (isForVideo && stream.getVideoTracks().length > 0) {
284
286
  this.onTrack(stream.getVideoTracks()[0], TrackKind.Video, shouldAddTrackImmediately);
@@ -300,24 +302,31 @@ var UserMediaHandler = /** @class */ (function (_super) {
300
302
  && stream.getVideoTracks()[0].getConstraints() && stream.getVideoTracks()[0].getConstraints().deviceId) {
301
303
  this.meetingStartRequest.cameraDevice = (_d = stream.getVideoTracks()[0].getConstraints().deviceId) === null || _d === void 0 ? void 0 : _d.toString();
302
304
  }
305
+ permissionApprovedFor.push(TrackKind.Video);
303
306
  }
304
307
  this.isVideoAudioFetchInProgress = false;
305
- (_e = this.communicationHandler) === null || _e === void 0 ? void 0 : _e.emitMessageToSource(VaniEvent.OnPermissionApproved, {});
308
+ (_e = this.communicationHandler) === null || _e === void 0 ? void 0 : _e.emitMessageToSource(VaniEvent.OnPermissionApproved, permissionApprovedFor);
306
309
  this.registerForDeviceChange();
307
310
  return [2 /*return*/];
308
311
  });
309
312
  });
310
313
  };
311
314
  UserMediaHandler.prototype.onScreenShareStreamGot = function (stream, shouldAddTrackImmediately) {
315
+ var _a;
312
316
  return __awaiter(this, void 0, void 0, function () {
313
- return __generator(this, function (_a) {
317
+ var permissionApprovedFor;
318
+ return __generator(this, function (_b) {
319
+ permissionApprovedFor = [];
314
320
  if (stream.getVideoTracks().length > 0) {
315
321
  this.onTrack(stream.getVideoTracks()[0], TrackKind.ScreenshareVideo, shouldAddTrackImmediately);
322
+ permissionApprovedFor.push(TrackKind.ScreenshareVideo);
316
323
  }
317
324
  if (stream.getAudioTracks().length > 0) {
318
325
  this.onTrack(stream.getAudioTracks()[0], TrackKind.ScreenshareAudio, shouldAddTrackImmediately);
326
+ permissionApprovedFor.push(TrackKind.ScreenshareAudio);
319
327
  }
320
328
  this.isScreenShareFetchInProgress = false;
329
+ (_a = this.communicationHandler) === null || _a === void 0 ? void 0 : _a.emitMessageToSource(VaniEvent.OnPermissionApproved, permissionApprovedFor);
321
330
  return [2 /*return*/];
322
331
  });
323
332
  });
@@ -1,9 +1,8 @@
1
1
  import { MeetingStartRequest, MeetingType } from '..';
2
2
  import { CommunicationHandler } from '../inter-communication-handler/CommunicationHandler';
3
- import { SFUHandler } from '../video-call-handler/SFUHandler';
4
3
  export declare class DynamicLibHelper {
5
4
  getReactNativeWebrtcPlugin(meetingStartRequest: MeetingStartRequest): Promise<any>;
6
- getVideoCallClassHandler(meetingType: MeetingType, meetingStartRequest: MeetingStartRequest, _communicationHandler: CommunicationHandler): Promise<SFUHandler | import("../video-call-handler/WebrtcHandler").WebrtcHandler | undefined>;
5
+ getVideoCallClassHandler(meetingType: MeetingType, meetingStartRequest: MeetingStartRequest, _communicationHandler: CommunicationHandler): Promise<import("../video-call-handler/SFUHandler").SFUHandler | import("../video-call-handler/WebrtcHandler").WebrtcHandler | undefined>;
7
6
  getMediaDevicesVariable(meetingStartRequest: MeetingStartRequest): any;
8
7
  getMediaStreamVariable(meetingStartRequest: MeetingStartRequest): any;
9
8
  }
@@ -36,7 +36,6 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
36
36
  };
37
37
  import { MeetingType } from '..';
38
38
  import * as log from 'loglevel';
39
- import { SFUHandler } from '../video-call-handler/SFUHandler';
40
39
  var DynamicLibHelper = /** @class */ (function () {
41
40
  function DynamicLibHelper() {
42
41
  }
@@ -62,18 +61,21 @@ var DynamicLibHelper = /** @class */ (function () {
62
61
  return __generator(this, function (_a) {
63
62
  switch (_a.label) {
64
63
  case 0:
65
- if (meetingType === MeetingType.SFU) {
66
- baseVideoCallHandler = SFUHandler;
67
- if (baseVideoCallHandler) {
68
- return [2 /*return*/, new baseVideoCallHandler(meetingStartRequest, _communicationHandler)];
69
- }
64
+ if (!(meetingType === MeetingType.SFU)) return [3 /*break*/, 2];
65
+ return [4 /*yield*/, import("../video-call-handler/SFUHandler")];
66
+ case 1:
67
+ baseVideoCallHandler = _a.sent();
68
+ if (baseVideoCallHandler) {
69
+ return [2 /*return*/, new baseVideoCallHandler.SFUHandler(meetingStartRequest, _communicationHandler)];
70
70
  }
71
- if (!(meetingType === MeetingType.WEBRTC)) return [3 /*break*/, 2];
71
+ _a.label = 2;
72
+ case 2:
73
+ if (!(meetingType === MeetingType.WEBRTC)) return [3 /*break*/, 4];
72
74
  baseVideoCallHandler = import("../video-call-handler/WebrtcHandler");
73
- if (!baseVideoCallHandler) return [3 /*break*/, 2];
75
+ if (!baseVideoCallHandler) return [3 /*break*/, 4];
74
76
  return [4 /*yield*/, baseVideoCallHandler];
75
- case 1: return [2 /*return*/, new (_a.sent()).WebrtcHandler(meetingStartRequest, _communicationHandler)];
76
- case 2: return [2 /*return*/, undefined];
77
+ case 3: return [2 /*return*/, new (_a.sent()).WebrtcHandler(meetingStartRequest, _communicationHandler)];
78
+ case 4: return [2 /*return*/, undefined];
77
79
  }
78
80
  });
79
81
  });
@@ -79,16 +79,15 @@ var SFUHandler = /** @class */ (function (_super) {
79
79
  _this.dataConsumer = [];
80
80
  var handlerName = detectDevice();
81
81
  if (handlerName) {
82
+ _this.device = new Device();
82
83
  console.log("detected handler: %s", handlerName);
83
84
  }
84
85
  else {
86
+ if (_this.meetingStartRequest && _this.meetingStartRequest.mediasoupDeviceHandlerName) {
87
+ _this.device = new Device({ handlerName: _this.meetingStartRequest.mediasoupDeviceHandlerName });
88
+ }
85
89
  console.warn("no suitable handler found for current browser/device");
86
90
  }
87
- try {
88
- _this.device = new Device({ handlerName: "Safari12" });
89
- }
90
- catch (err) {
91
- }
92
91
  return _this;
93
92
  }
94
93
  SFUHandler.prototype.onReconnect = function () {
@@ -38,6 +38,7 @@ export declare enum SFUMessageType {
38
38
  OnTransportProduceSyncRequest = "transportProduceSync",
39
39
  OnTransportDataProduceSyncRequest = "dataTransportProduceSync",
40
40
  OnReadyToConsume = "readyToConsume",
41
+ OnStartRTMP = "startRtmp",
41
42
  OnProducerClosed = "producerClosed",
42
43
  OnPauseProducer = "pauseProducer",
43
44
  OnResumeProducer = "resumeProducer",
@@ -94,6 +94,7 @@ export var SFUMessageType;
94
94
  SFUMessageType["OnTransportProduceSyncRequest"] = "transportProduceSync";
95
95
  SFUMessageType["OnTransportDataProduceSyncRequest"] = "dataTransportProduceSync";
96
96
  SFUMessageType["OnReadyToConsume"] = "readyToConsume";
97
+ SFUMessageType["OnStartRTMP"] = "startRtmp";
97
98
  SFUMessageType["OnProducerClosed"] = "producerClosed";
98
99
  SFUMessageType["OnPauseProducer"] = "pauseProducer";
99
100
  SFUMessageType["OnResumeProducer"] = "resumeProducer";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vani-meeting-client",
3
- "version": "0.7.4",
3
+ "version": "0.7.8",
4
4
  "description": "Vani Meeting Clinet SDK",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",