@techsee/techsee-nway-media-service-client 1.0.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.
- package/README.md +1 -0
- package/lib/assets/img/avatar.png +0 -0
- package/lib/assets/img/camera-button.png +0 -0
- package/lib/assets/img/exclamation-mark.png +0 -0
- package/lib/assets/img/media-rejected/chrome1.png +0 -0
- package/lib/assets/img/media-rejected/chrome2.png +0 -0
- package/lib/assets/img/media-rejected/chrome3.png +0 -0
- package/lib/assets/img/media-rejected/chrome4.png +0 -0
- package/lib/assets/img/media-rejected/close_button.png +0 -0
- package/lib/assets/img/media-rejected/ios1.png +0 -0
- package/lib/assets/img/media-rejected/ios2.png +0 -0
- package/lib/components/Avatar/Avatar.scss +45 -0
- package/lib/components/ButtonPanels/MediaButtonsPanel/MediaButtonsPanel.scss +31 -0
- package/lib/components/ButtonPanels/SnapshotButtonPanel/SnapshotButtonPanel.scss +6 -0
- package/lib/components/LoaderSpinner/LoaderSpinner.scss +69 -0
- package/lib/components/MagicMarker/MagicMarker.scss +18 -0
- package/lib/components/MediaRejectedModal/MediaRejectedModal.scss +75 -0
- package/lib/components/Multiparty.scss +8 -0
- package/lib/components/Video/Video.scss +10 -0
- package/lib/components/VideoLayouts/AgentPinnedLayout/AgentPinnedLayout.scss +49 -0
- package/lib/components/VideoLayouts/BigMainVideoLayout/BigAreaLayout.scss +128 -0
- package/lib/components/VideoPlaceholders/BigAreaMediaPermissionDeniedPlaceholder.scss +34 -0
- package/lib/components/VideoPlaceholders/SmallAreaMediaPermissionDeniedPlaceholder.scss +15 -0
- package/lib/components/VideoPlaceholders/Tooltip.scss +65 -0
- package/lib/src/components/Avatar/Avatar.d.ts +8 -0
- package/lib/src/components/Avatar/Avatar.d.ts.map +1 -0
- package/lib/src/components/Avatar/Avatar.js +26 -0
- package/lib/src/components/Avatar/Avatar.js.map +1 -0
- package/lib/src/components/ButtonPanels/EndMeetingButtonPanel/EndMeetingButtonPanel.d.ts +7 -0
- package/lib/src/components/ButtonPanels/EndMeetingButtonPanel/EndMeetingButtonPanel.d.ts.map +1 -0
- package/lib/src/components/ButtonPanels/EndMeetingButtonPanel/EndMeetingButtonPanel.js +11 -0
- package/lib/src/components/ButtonPanels/EndMeetingButtonPanel/EndMeetingButtonPanel.js.map +1 -0
- package/lib/src/components/ButtonPanels/MediaButtonsPanel/MediaButtonsPanel.d.ts +21 -0
- package/lib/src/components/ButtonPanels/MediaButtonsPanel/MediaButtonsPanel.d.ts.map +1 -0
- package/lib/src/components/ButtonPanels/MediaButtonsPanel/MediaButtonsPanel.js +36 -0
- package/lib/src/components/ButtonPanels/MediaButtonsPanel/MediaButtonsPanel.js.map +1 -0
- package/lib/src/components/ButtonPanels/MultipartyButton/MultipartyButton.d.ts +18 -0
- package/lib/src/components/ButtonPanels/MultipartyButton/MultipartyButton.d.ts.map +1 -0
- package/lib/src/components/ButtonPanels/MultipartyButton/MultipartyButton.js +35 -0
- package/lib/src/components/ButtonPanels/MultipartyButton/MultipartyButton.js.map +1 -0
- package/lib/src/components/ButtonPanels/PinButtonPanel/PinButtonPanel.d.ts +10 -0
- package/lib/src/components/ButtonPanels/PinButtonPanel/PinButtonPanel.d.ts.map +1 -0
- package/lib/src/components/ButtonPanels/PinButtonPanel/PinButtonPanel.js +22 -0
- package/lib/src/components/ButtonPanels/PinButtonPanel/PinButtonPanel.js.map +1 -0
- package/lib/src/components/ButtonPanels/SnapshotButtonPanel/SnapshotButtonPanel.d.ts +9 -0
- package/lib/src/components/ButtonPanels/SnapshotButtonPanel/SnapshotButtonPanel.d.ts.map +1 -0
- package/lib/src/components/ButtonPanels/SnapshotButtonPanel/SnapshotButtonPanel.js +15 -0
- package/lib/src/components/ButtonPanels/SnapshotButtonPanel/SnapshotButtonPanel.js.map +1 -0
- package/lib/src/components/ButtonPanels/index.d.ts +6 -0
- package/lib/src/components/ButtonPanels/index.d.ts.map +1 -0
- package/lib/src/components/ButtonPanels/index.js +14 -0
- package/lib/src/components/ButtonPanels/index.js.map +1 -0
- package/lib/src/components/LoaderSpinner/LoaderSpinner.d.ts +8 -0
- package/lib/src/components/LoaderSpinner/LoaderSpinner.d.ts.map +1 -0
- package/lib/src/components/LoaderSpinner/LoaderSpinner.js +22 -0
- package/lib/src/components/LoaderSpinner/LoaderSpinner.js.map +1 -0
- package/lib/src/components/MagicMarker/MagicMarkerComponent.d.ts +36 -0
- package/lib/src/components/MagicMarker/MagicMarkerComponent.d.ts.map +1 -0
- package/lib/src/components/MagicMarker/MagicMarkerComponent.js +112 -0
- package/lib/src/components/MagicMarker/MagicMarkerComponent.js.map +1 -0
- package/lib/src/components/MagicMarker/index.d.ts +2 -0
- package/lib/src/components/MagicMarker/index.d.ts.map +1 -0
- package/lib/src/components/MagicMarker/index.js +6 -0
- package/lib/src/components/MagicMarker/index.js.map +1 -0
- package/lib/src/components/MediaRejectedModal/MediaRejectedModal.d.ts +24 -0
- package/lib/src/components/MediaRejectedModal/MediaRejectedModal.d.ts.map +1 -0
- package/lib/src/components/MediaRejectedModal/MediaRejectedModal.js +45 -0
- package/lib/src/components/MediaRejectedModal/MediaRejectedModal.js.map +1 -0
- package/lib/src/components/Multiparty.d.ts +23 -0
- package/lib/src/components/Multiparty.d.ts.map +1 -0
- package/lib/src/components/Multiparty.js +163 -0
- package/lib/src/components/Multiparty.js.map +1 -0
- package/lib/src/components/Multiparty.types.d.ts +11 -0
- package/lib/src/components/Multiparty.types.d.ts.map +1 -0
- package/lib/src/components/Multiparty.types.js +9 -0
- package/lib/src/components/Multiparty.types.js.map +1 -0
- package/lib/src/components/Video/Video.d.ts +22 -0
- package/lib/src/components/Video/Video.d.ts.map +1 -0
- package/lib/src/components/Video/Video.js +23 -0
- package/lib/src/components/Video/Video.js.map +1 -0
- package/lib/src/components/Video/VideoPlaceholder.d.ts +23 -0
- package/lib/src/components/Video/VideoPlaceholder.d.ts.map +1 -0
- package/lib/src/components/Video/VideoPlaceholder.js +30 -0
- package/lib/src/components/Video/VideoPlaceholder.js.map +1 -0
- package/lib/src/components/VideoLayouts/AgentPinnedLayout/AgentPinnedLayout.d.ts +23 -0
- package/lib/src/components/VideoLayouts/AgentPinnedLayout/AgentPinnedLayout.d.ts.map +1 -0
- package/lib/src/components/VideoLayouts/AgentPinnedLayout/AgentPinnedLayout.js +35 -0
- package/lib/src/components/VideoLayouts/AgentPinnedLayout/AgentPinnedLayout.js.map +1 -0
- package/lib/src/components/VideoLayouts/BigMainVideoLayout/BigAreaLayout.d.ts +34 -0
- package/lib/src/components/VideoLayouts/BigMainVideoLayout/BigAreaLayout.d.ts.map +1 -0
- package/lib/src/components/VideoLayouts/BigMainVideoLayout/BigAreaLayout.js +65 -0
- package/lib/src/components/VideoLayouts/BigMainVideoLayout/BigAreaLayout.js.map +1 -0
- package/lib/src/components/VideoLayouts/VideoLayoutManager.d.ts +29 -0
- package/lib/src/components/VideoLayouts/VideoLayoutManager.d.ts.map +1 -0
- package/lib/src/components/VideoLayouts/VideoLayoutManager.js +23 -0
- package/lib/src/components/VideoLayouts/VideoLayoutManager.js.map +1 -0
- package/lib/src/components/VideoLayouts/index.d.ts +2 -0
- package/lib/src/components/VideoLayouts/index.d.ts.map +1 -0
- package/lib/src/components/VideoLayouts/index.js +6 -0
- package/lib/src/components/VideoLayouts/index.js.map +1 -0
- package/lib/src/components/VideoPlaceholders/BigAreaMediaPermissionDeniedPlaceholder.d.ts +12 -0
- package/lib/src/components/VideoPlaceholders/BigAreaMediaPermissionDeniedPlaceholder.d.ts.map +1 -0
- package/lib/src/components/VideoPlaceholders/BigAreaMediaPermissionDeniedPlaceholder.js +36 -0
- package/lib/src/components/VideoPlaceholders/BigAreaMediaPermissionDeniedPlaceholder.js.map +1 -0
- package/lib/src/components/VideoPlaceholders/CameraOffButton.d.ts +4 -0
- package/lib/src/components/VideoPlaceholders/CameraOffButton.d.ts.map +1 -0
- package/lib/src/components/VideoPlaceholders/CameraOffButton.js +9 -0
- package/lib/src/components/VideoPlaceholders/CameraOffButton.js.map +1 -0
- package/lib/src/components/VideoPlaceholders/SmallAreaMediaPermissionDeniedPlaceholder.d.ts +12 -0
- package/lib/src/components/VideoPlaceholders/SmallAreaMediaPermissionDeniedPlaceholder.d.ts.map +1 -0
- package/lib/src/components/VideoPlaceholders/SmallAreaMediaPermissionDeniedPlaceholder.js +40 -0
- package/lib/src/components/VideoPlaceholders/SmallAreaMediaPermissionDeniedPlaceholder.js.map +1 -0
- package/lib/src/index.d.ts +7 -0
- package/lib/src/index.d.ts.map +1 -0
- package/lib/src/index.js +30 -0
- package/lib/src/index.js.map +1 -0
- package/lib/src/services/ConnectionManager.d.ts +27 -0
- package/lib/src/services/ConnectionManager.d.ts.map +1 -0
- package/lib/src/services/ConnectionManager.js +123 -0
- package/lib/src/services/ConnectionManager.js.map +1 -0
- package/lib/src/services/MediaStateService.d.ts +25 -0
- package/lib/src/services/MediaStateService.d.ts.map +1 -0
- package/lib/src/services/MediaStateService.js +84 -0
- package/lib/src/services/MediaStateService.js.map +1 -0
- package/lib/src/services/MultipartyController.d.ts +29 -0
- package/lib/src/services/MultipartyController.d.ts.map +1 -0
- package/lib/src/services/MultipartyController.js +300 -0
- package/lib/src/services/MultipartyController.js.map +1 -0
- package/lib/src/services/MultipartyEventTypes.d.ts +92 -0
- package/lib/src/services/MultipartyEventTypes.d.ts.map +1 -0
- package/lib/src/services/MultipartyEventTypes.js +19 -0
- package/lib/src/services/MultipartyEventTypes.js.map +1 -0
- package/lib/src/services/trafficLogManager.d.ts +21 -0
- package/lib/src/services/trafficLogManager.d.ts.map +1 -0
- package/lib/src/services/trafficLogManager.js +130 -0
- package/lib/src/services/trafficLogManager.js.map +1 -0
- package/lib/src/services/types.d.ts +39 -0
- package/lib/src/services/types.d.ts.map +1 -0
- package/lib/src/services/types.js +47 -0
- package/lib/src/services/types.js.map +1 -0
- package/lib/src/utils/ClientConstants.d.ts +3 -0
- package/lib/src/utils/ClientConstants.d.ts.map +1 -0
- package/lib/src/utils/ClientConstants.js +6 -0
- package/lib/src/utils/ClientConstants.js.map +1 -0
- package/lib/src/utils/MergingStore.d.ts +9 -0
- package/lib/src/utils/MergingStore.d.ts.map +1 -0
- package/lib/src/utils/MergingStore.js +85 -0
- package/lib/src/utils/MergingStore.js.map +1 -0
- package/lib/src/utils/detectOsType.d.ts +8 -0
- package/lib/src/utils/detectOsType.d.ts.map +1 -0
- package/lib/src/utils/detectOsType.js +23 -0
- package/lib/src/utils/detectOsType.js.map +1 -0
- package/lib/src/utils/index.d.ts +5 -0
- package/lib/src/utils/index.d.ts.map +1 -0
- package/lib/src/utils/index.js +14 -0
- package/lib/src/utils/index.js.map +1 -0
- package/lib/src/utils/useEvent.d.ts +8 -0
- package/lib/src/utils/useEvent.d.ts.map +1 -0
- package/lib/src/utils/useEvent.js +24 -0
- package/lib/src/utils/useEvent.js.map +1 -0
- package/lib/test/services/ConnectionManager.unit.d.ts +2 -0
- package/lib/test/services/ConnectionManager.unit.d.ts.map +1 -0
- package/lib/test/services/ConnectionManager.unit.js +207 -0
- package/lib/test/services/ConnectionManager.unit.js.map +1 -0
- package/package.json +108 -0
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __extends = (this && this.__extends) || (function () {
|
|
3
|
+
var extendStatics = function (d, b) {
|
|
4
|
+
extendStatics = Object.setPrototypeOf ||
|
|
5
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
+
return extendStatics(d, b);
|
|
8
|
+
};
|
|
9
|
+
return function (d, b) {
|
|
10
|
+
if (typeof b !== "function" && b !== null)
|
|
11
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
+
extendStatics(d, b);
|
|
13
|
+
function __() { this.constructor = d; }
|
|
14
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
+
};
|
|
16
|
+
})();
|
|
17
|
+
var __assign = (this && this.__assign) || function () {
|
|
18
|
+
__assign = Object.assign || function(t) {
|
|
19
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
20
|
+
s = arguments[i];
|
|
21
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
22
|
+
t[p] = s[p];
|
|
23
|
+
}
|
|
24
|
+
return t;
|
|
25
|
+
};
|
|
26
|
+
return __assign.apply(this, arguments);
|
|
27
|
+
};
|
|
28
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
29
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
30
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
31
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
32
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
33
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
34
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
38
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
39
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
40
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
41
|
+
function step(op) {
|
|
42
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
43
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
44
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
45
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
46
|
+
switch (op[0]) {
|
|
47
|
+
case 0: case 1: t = op; break;
|
|
48
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
49
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
50
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
51
|
+
default:
|
|
52
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
53
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
54
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
55
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
56
|
+
if (t[2]) _.ops.pop();
|
|
57
|
+
_.trys.pop(); continue;
|
|
58
|
+
}
|
|
59
|
+
op = body.call(thisArg, _);
|
|
60
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
61
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
65
|
+
exports.createMultipartyController = exports.MultipartyEventsInternal = void 0;
|
|
66
|
+
var TypedEventEmitter_1 = require("@techsee/techsee-common/lib/helpers/TypedEventEmitter");
|
|
67
|
+
var Tracer_1 = require("@techsee/techsee-common/lib/core/Tracer");
|
|
68
|
+
var MediaConstants_1 = require("@techsee/techsee-nway-media-service/lib/MediaConstants");
|
|
69
|
+
var MultiParty_1 = require("@techsee/techsee-nway-media-service/lib/MultiParty");
|
|
70
|
+
var utils_1 = require("../utils");
|
|
71
|
+
var ConnectionManager_1 = require("./ConnectionManager");
|
|
72
|
+
var MediaStateService_1 = require("./MediaStateService");
|
|
73
|
+
var trafficLogManager_1 = require("./trafficLogManager");
|
|
74
|
+
var types_1 = require("./types");
|
|
75
|
+
var MultipartyEventTypes_1 = require("./MultipartyEventTypes");
|
|
76
|
+
var trace = (0, Tracer_1.getTracer)('MediaTracer', 'Multiparty');
|
|
77
|
+
var MultipartyEventsInternal;
|
|
78
|
+
(function (MultipartyEventsInternal) {
|
|
79
|
+
MultipartyEventsInternal["setPinnedUser"] = "setPinnedUser";
|
|
80
|
+
})(MultipartyEventsInternal = exports.MultipartyEventsInternal || (exports.MultipartyEventsInternal = {}));
|
|
81
|
+
var MultipartyController = /** @class */ (function (_super) {
|
|
82
|
+
__extends(MultipartyController, _super);
|
|
83
|
+
function MultipartyController(credentials, sessionSettings, ownUserRole, mediaStateService) {
|
|
84
|
+
if (mediaStateService === void 0) { mediaStateService = (0, MediaStateService_1.createMediaStateService)(); }
|
|
85
|
+
var _this = _super.call(this) || this;
|
|
86
|
+
_this.credentials = credentials;
|
|
87
|
+
_this.sessionSettings = sessionSettings;
|
|
88
|
+
_this.mediaStateService = mediaStateService;
|
|
89
|
+
_this.pinnedUserType = types_1.PinnedUserType.NONE;
|
|
90
|
+
_this.connected = false;
|
|
91
|
+
_this.canTakeSnapshot = false;
|
|
92
|
+
_this.isMainVideoPinnedAndStreaming = false;
|
|
93
|
+
_this.isMainVideoMirrored = false;
|
|
94
|
+
_this.cameraSource = undefined;
|
|
95
|
+
_this.setPinnedUser = function (userType) {
|
|
96
|
+
if (userType !== _this.pinnedUserType) {
|
|
97
|
+
var settings = _this.getSessionSettings();
|
|
98
|
+
_this.pinnedUserType = userType;
|
|
99
|
+
_this.multiPartyService.reinitializeStreams(settings);
|
|
100
|
+
_this.emit(MultipartyEventsInternal.setPinnedUser, userType);
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
_this.connect = function () {
|
|
104
|
+
_this.multiPartyService.connect(_this.getSessionSettings(), _this.credentials);
|
|
105
|
+
_this.connected = true;
|
|
106
|
+
};
|
|
107
|
+
_this.disconnect = function () {
|
|
108
|
+
_this.multiPartyService.disconnect();
|
|
109
|
+
_this.trafficLogManager.stop();
|
|
110
|
+
_this.connected = false;
|
|
111
|
+
};
|
|
112
|
+
_this.toggleAudio = function (isMuted) { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
113
|
+
return [2 /*return*/, this.multiPartyService.publishAudio(isMuted)];
|
|
114
|
+
}); }); };
|
|
115
|
+
_this.switchCamera = function () { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
116
|
+
return [2 /*return*/, this.multiPartyService.switchCamera()];
|
|
117
|
+
}); }); };
|
|
118
|
+
_this.toggleVideo = function (shouldToggleVideoOff) { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
119
|
+
return [2 /*return*/, this.multiPartyService.publishVideo(shouldToggleVideoOff)];
|
|
120
|
+
}); }); };
|
|
121
|
+
_this.takeSnapshot = function () {
|
|
122
|
+
var _a;
|
|
123
|
+
var connectionId = (_a = _this.connectionManager.find('userRole', (0, types_1.toSessionClientRole)(_this.pinnedUserType) || MediaConstants_1.SessionClientRole.USER)) === null || _a === void 0 ? void 0 : _a.connectionId;
|
|
124
|
+
if (connectionId && _this.canTakeSnapshot) {
|
|
125
|
+
return _this.multiPartyService.takeSnapshot(connectionId);
|
|
126
|
+
}
|
|
127
|
+
return null;
|
|
128
|
+
};
|
|
129
|
+
_this.getParticipantDomId = function (connectionId) { var _a; return ((_a = _this.connections.find('connectionId', connectionId)) === null || _a === void 0 ? void 0 : _a.videoStreamId) || ''; };
|
|
130
|
+
_this.emitTrafficLogsEvent = function (trafficLogs) {
|
|
131
|
+
_this.emit(MultipartyEventTypes_1.MultipartyEvents.updateTrafficLogs, trafficLogs);
|
|
132
|
+
};
|
|
133
|
+
_this.getSessionSettings = function () {
|
|
134
|
+
var _a = _this.mediaStateService.getSessionState(_this.sessionSettings), selectedCamera = _a.selectedCamera, audioState = _a.audioState, cameraEnabled = _a.cameraEnabled;
|
|
135
|
+
return __assign(__assign({}, _this.sessionSettings), { selectedCamera: selectedCamera, startWithAudioMuted: audioState !== types_1.AudioState.ENABLED, cameraEnabled: cameraEnabled });
|
|
136
|
+
};
|
|
137
|
+
_this.initEventHandlers = function () {
|
|
138
|
+
_this.multiPartyService.on(MultiParty_1.MultiPartyServiceEventTypes.connectFailed, function (event) {
|
|
139
|
+
_this.emit(MultipartyEventTypes_1.MultipartyEvents.connectFailed, event);
|
|
140
|
+
});
|
|
141
|
+
_this.multiPartyService.on(MultiParty_1.MultiPartyServiceEventTypes.connectionCreated, function (event) {
|
|
142
|
+
_this.connectionManager.connectionCreated(event);
|
|
143
|
+
_this.emit(MultipartyEventTypes_1.MultipartyEvents.connectionCreated, event);
|
|
144
|
+
});
|
|
145
|
+
_this.multiPartyService.on(MultiParty_1.MultiPartyServiceEventTypes.connectionDestroyed, function (event) {
|
|
146
|
+
_this.connectionManager.connectionDestroyed(event);
|
|
147
|
+
_this.emit(MultipartyEventTypes_1.MultipartyEvents.connectionDestroyed, event);
|
|
148
|
+
});
|
|
149
|
+
_this.multiPartyService.on(MultiParty_1.MultiPartyServiceEventTypes.streamCreated, function (event) {
|
|
150
|
+
if (event.isOwnConnection) {
|
|
151
|
+
_this.isMainVideoMirrored = event.mirror;
|
|
152
|
+
}
|
|
153
|
+
_this.connectionManager.streamCreated(event);
|
|
154
|
+
_this.emit(MultipartyEventTypes_1.MultipartyEvents.streamCreated, event);
|
|
155
|
+
});
|
|
156
|
+
_this.multiPartyService.on(MultiParty_1.MultiPartyServiceEventTypes.streamDestroyed, function (event) {
|
|
157
|
+
_this.connectionManager.streamDestroyed(event);
|
|
158
|
+
_this.emit(MultipartyEventTypes_1.MultipartyEvents.streamDestroyed, event);
|
|
159
|
+
});
|
|
160
|
+
_this.multiPartyService.on(MultiParty_1.MultiPartyServiceEventTypes.streamPropertyChanged, function (event) {
|
|
161
|
+
if (event.isOwnConnection && event.hasAudio !== undefined) {
|
|
162
|
+
_this.mediaStateService.updateAudioMuted(!event.hasAudio);
|
|
163
|
+
}
|
|
164
|
+
if (event.isOwnConnection && event.hasVideo !== undefined) {
|
|
165
|
+
_this.mediaStateService.updateCameraEnabledState(event.hasVideo);
|
|
166
|
+
}
|
|
167
|
+
_this.connectionManager.streamPropertyChanged(event);
|
|
168
|
+
_this.emit(MultipartyEventTypes_1.MultipartyEvents.streamPropertyChanged, event);
|
|
169
|
+
});
|
|
170
|
+
_this.multiPartyService.on(MultiParty_1.MultiPartyServiceEventTypes.mediaDeviceAccessDenied, function (event) {
|
|
171
|
+
_this.connectionManager.setOwnMediaPermissionsRejected(true);
|
|
172
|
+
_this.emit(MultipartyEventTypes_1.MultipartyEvents.mediaDeviceAccessDenied, event);
|
|
173
|
+
});
|
|
174
|
+
_this.multiPartyService.on(MultiParty_1.MultiPartyServiceEventTypes.cameraSourceChanged, function (_a) {
|
|
175
|
+
var cameraSource = _a.cameraSource, mirror = _a.mirror;
|
|
176
|
+
if (_this.cameraSource !== cameraSource) {
|
|
177
|
+
_this.cameraSource = cameraSource;
|
|
178
|
+
_this.mediaStateService.updateSelectedCamera(cameraSource);
|
|
179
|
+
}
|
|
180
|
+
if (_this.isMainVideoMirrored !== mirror) {
|
|
181
|
+
_this.isMainVideoMirrored = mirror;
|
|
182
|
+
_this.emit(MultipartyEventTypes_1.MultipartyEvents.mainVideoMirrorStateChanged, {
|
|
183
|
+
mirror: mirror
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
});
|
|
187
|
+
};
|
|
188
|
+
_this.updateCanTakeSnapshot = function (updatedConnections) {
|
|
189
|
+
var mainVideoUserRole = _this.pinnedUserType === types_1.PinnedUserType.AGENT ? MediaConstants_1.SessionClientRole.AGENT : MediaConstants_1.SessionClientRole.USER;
|
|
190
|
+
var connection = updatedConnections.find(function (_a) {
|
|
191
|
+
var userRole = _a.userRole;
|
|
192
|
+
return userRole === mainVideoUserRole;
|
|
193
|
+
});
|
|
194
|
+
if (!connection) {
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
var snapshotAllowed = connection.connectionState === types_1.ConnectionState.ConnectedPublishingVideo;
|
|
198
|
+
if (_this.canTakeSnapshot !== snapshotAllowed) {
|
|
199
|
+
_this.canTakeSnapshot = snapshotAllowed;
|
|
200
|
+
_this.emit(MultipartyEventTypes_1.MultipartyEvents.snapshotAllowedChanged, {
|
|
201
|
+
snapshotAllowed: snapshotAllowed
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
};
|
|
205
|
+
_this.updatePinnedVideoIsStreaming = function (updatedConnections) {
|
|
206
|
+
var mainVideoUserRoleWhenPinned = (0, types_1.toSessionClientRole)(_this.pinnedUserType);
|
|
207
|
+
var connection = updatedConnections.find(function (_a) {
|
|
208
|
+
var userRole = _a.userRole;
|
|
209
|
+
return userRole === mainVideoUserRoleWhenPinned;
|
|
210
|
+
});
|
|
211
|
+
if (!connection) {
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
214
|
+
var hasVideo = connection.connectionState === types_1.ConnectionState.ConnectedPublishingVideo;
|
|
215
|
+
var mainVideoPinned = _this.pinnedUser !== types_1.PinnedUserType.NONE;
|
|
216
|
+
var isPinnedAndStreaming = mainVideoPinned && hasVideo;
|
|
217
|
+
if (_this.isMainVideoPinnedAndStreaming !== isPinnedAndStreaming) {
|
|
218
|
+
_this.isMainVideoPinnedAndStreaming = isPinnedAndStreaming;
|
|
219
|
+
_this.emit(MultipartyEventTypes_1.MultipartyEvents.mainVideoPinnedAndStreamingStateChanged, { isPinnedAndStreaming: isPinnedAndStreaming });
|
|
220
|
+
}
|
|
221
|
+
};
|
|
222
|
+
_this.connectionManager = new ConnectionManager_1.ConnectionManager(ownUserRole);
|
|
223
|
+
_this.connectionManager.on(ConnectionManager_1.ConnectionManagerEvents.ConnectionsUpdatedEvent, _this.updateCanTakeSnapshot);
|
|
224
|
+
_this.connectionManager.on(ConnectionManager_1.ConnectionManagerEvents.ConnectionsUpdatedEvent, _this.updatePinnedVideoIsStreaming);
|
|
225
|
+
_this.multiPartyService = (0, MultiParty_1.createMultiPartyService)(_this.getSessionSettings(), _this.getParticipantDomId);
|
|
226
|
+
_this.connectionManager.initWith({
|
|
227
|
+
userRole: ownUserRole,
|
|
228
|
+
isOwnConnection: true,
|
|
229
|
+
isMediaPermissionsRejected: false,
|
|
230
|
+
connectionState: types_1.ConnectionState.WaitingForConnection,
|
|
231
|
+
videoStreamId: utils_1.ownVideoDomId
|
|
232
|
+
});
|
|
233
|
+
_this.trafficLogManager = new trafficLogManager_1.TrafficLogManager(_this.multiPartyService, _this.emitTrafficLogsEvent);
|
|
234
|
+
_this.initEventHandlers();
|
|
235
|
+
return _this;
|
|
236
|
+
}
|
|
237
|
+
Object.defineProperty(MultipartyController.prototype, "connections", {
|
|
238
|
+
get: function () {
|
|
239
|
+
return this.connectionManager;
|
|
240
|
+
},
|
|
241
|
+
enumerable: false,
|
|
242
|
+
configurable: true
|
|
243
|
+
});
|
|
244
|
+
Object.defineProperty(MultipartyController.prototype, "userRole", {
|
|
245
|
+
get: function () {
|
|
246
|
+
return this.connectionManager.userRole;
|
|
247
|
+
},
|
|
248
|
+
enumerable: false,
|
|
249
|
+
configurable: true
|
|
250
|
+
});
|
|
251
|
+
Object.defineProperty(MultipartyController.prototype, "ownConnectionId", {
|
|
252
|
+
get: function () {
|
|
253
|
+
return this.multiPartyService.ownConnectionId;
|
|
254
|
+
},
|
|
255
|
+
enumerable: false,
|
|
256
|
+
configurable: true
|
|
257
|
+
});
|
|
258
|
+
Object.defineProperty(MultipartyController.prototype, "isAudioDisabled", {
|
|
259
|
+
get: function () {
|
|
260
|
+
return this.sessionSettings.audioState === types_1.AudioState.DISABLED;
|
|
261
|
+
},
|
|
262
|
+
enumerable: false,
|
|
263
|
+
configurable: true
|
|
264
|
+
});
|
|
265
|
+
Object.defineProperty(MultipartyController.prototype, "isConnected", {
|
|
266
|
+
get: function () {
|
|
267
|
+
return this.connected;
|
|
268
|
+
},
|
|
269
|
+
enumerable: false,
|
|
270
|
+
configurable: true
|
|
271
|
+
});
|
|
272
|
+
Object.defineProperty(MultipartyController.prototype, "pinnedUser", {
|
|
273
|
+
get: function () {
|
|
274
|
+
return this.pinnedUserType;
|
|
275
|
+
},
|
|
276
|
+
enumerable: false,
|
|
277
|
+
configurable: true
|
|
278
|
+
});
|
|
279
|
+
return MultipartyController;
|
|
280
|
+
}(TypedEventEmitter_1.TypedEventEmitter));
|
|
281
|
+
function createMultipartyController(credentials, sessionSettings, ownUserRole, mediaStateService) {
|
|
282
|
+
if (mediaStateService === void 0) { mediaStateService = (0, MediaStateService_1.createMediaStateService)(); }
|
|
283
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
284
|
+
var mediaCapabilitiesSupport;
|
|
285
|
+
return __generator(this, function (_a) {
|
|
286
|
+
switch (_a.label) {
|
|
287
|
+
case 0: return [4 /*yield*/, (0, MultiParty_1.checkWebRtc)()];
|
|
288
|
+
case 1:
|
|
289
|
+
mediaCapabilitiesSupport = _a.sent();
|
|
290
|
+
trace.info('Media Capabilities support', mediaCapabilitiesSupport);
|
|
291
|
+
if (mediaCapabilitiesSupport) {
|
|
292
|
+
return [2 /*return*/, new MultipartyController(credentials, sessionSettings, ownUserRole, mediaStateService)];
|
|
293
|
+
}
|
|
294
|
+
throw new Error('No WebRtc support');
|
|
295
|
+
}
|
|
296
|
+
});
|
|
297
|
+
});
|
|
298
|
+
}
|
|
299
|
+
exports.createMultipartyController = createMultipartyController;
|
|
300
|
+
//# sourceMappingURL=MultipartyController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MultipartyController.js","sourceRoot":"","sources":["../../../src/services/MultipartyController.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { SessionClientRole } from '@techsee/techsee-nway-media-service/lib/MediaConstants';
|
|
2
|
+
import { ITrafficLogs } from './trafficLogManager';
|
|
3
|
+
import { PinnedUserType } from './types';
|
|
4
|
+
export declare enum MultipartyEvents {
|
|
5
|
+
mediaCapabilitiesSupport = "mediaCapabilitiesSupport",
|
|
6
|
+
connectFailed = "connectFailed",
|
|
7
|
+
streamDestroyed = "streamDestroyed",
|
|
8
|
+
connectionCreated = "connectionCreated",
|
|
9
|
+
connectionDestroyed = "connectionDestroyed",
|
|
10
|
+
streamCreated = "streamCreated",
|
|
11
|
+
streamPropertyChanged = "streamPropertyChanged",
|
|
12
|
+
mediaDeviceAccessDenied = "mediaDeviceAccessDenied",
|
|
13
|
+
updateTrafficLogs = "updateTrafficLogs",
|
|
14
|
+
snapshotAllowedChanged = "snapshotAllowedChanged",
|
|
15
|
+
mainVideoMirrorStateChanged = "mainVideoMirrorStateChanged",
|
|
16
|
+
mainVideoPinnedAndStreamingStateChanged = "mainVideoPinnedAndStreamingStateChanged"
|
|
17
|
+
}
|
|
18
|
+
export type MultipartyConnectFailedEvent = {
|
|
19
|
+
meta: {
|
|
20
|
+
err: string;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
export type MultipartyConnectionCreatedEvent = {
|
|
24
|
+
isOwnConnection: boolean;
|
|
25
|
+
connectionId: string;
|
|
26
|
+
participantId: string;
|
|
27
|
+
clientRole: SessionClientRole;
|
|
28
|
+
};
|
|
29
|
+
export type MultipartyConnectionDestroyedEvent = {
|
|
30
|
+
isOwnConnection: boolean;
|
|
31
|
+
connectionId: string;
|
|
32
|
+
participantId: string;
|
|
33
|
+
clientRole: SessionClientRole;
|
|
34
|
+
};
|
|
35
|
+
export type MultipartyStreamCreatedEvent = {
|
|
36
|
+
isOwnConnection: boolean;
|
|
37
|
+
connectionId: string;
|
|
38
|
+
participantId: string;
|
|
39
|
+
clientRole: SessionClientRole;
|
|
40
|
+
hasVideo: boolean;
|
|
41
|
+
hasAudio: boolean;
|
|
42
|
+
mirror: boolean;
|
|
43
|
+
videoDimensions: {
|
|
44
|
+
width: number;
|
|
45
|
+
height: number;
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
export type MultipartyStreamDestroyedEvent = {
|
|
49
|
+
isOwnConnection: boolean;
|
|
50
|
+
connectionId: string;
|
|
51
|
+
participantId: string;
|
|
52
|
+
clientRole: SessionClientRole;
|
|
53
|
+
};
|
|
54
|
+
export type MultipartyStreamPropertyChangedEvent = {
|
|
55
|
+
isOwnConnection: boolean;
|
|
56
|
+
connectionId: string;
|
|
57
|
+
participantId: string;
|
|
58
|
+
clientRole: SessionClientRole;
|
|
59
|
+
hasVideo: boolean;
|
|
60
|
+
hasAudio: boolean;
|
|
61
|
+
videoDimensions: {
|
|
62
|
+
width: number;
|
|
63
|
+
height: number;
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
export type MultipartySnapshotAllowedChangedEvent = {
|
|
67
|
+
snapshotAllowed: boolean;
|
|
68
|
+
};
|
|
69
|
+
export type MultipartyMainVideoMirrorStateChangedEvent = {
|
|
70
|
+
mirror: boolean;
|
|
71
|
+
};
|
|
72
|
+
export type MultipartyMainVideoPinnedAndStreamingStateChangedEvent = {
|
|
73
|
+
isPinnedAndStreaming: boolean;
|
|
74
|
+
};
|
|
75
|
+
export type MultipartyMediaAccessDeniedEvent = {
|
|
76
|
+
isOwnConnection: boolean;
|
|
77
|
+
};
|
|
78
|
+
export interface MultipartyEventTypesMap {
|
|
79
|
+
connectFailed: MultipartyConnectFailedEvent;
|
|
80
|
+
connectionCreated: MultipartyConnectionCreatedEvent;
|
|
81
|
+
connectionDestroyed: MultipartyConnectionDestroyedEvent;
|
|
82
|
+
streamCreated: MultipartyStreamCreatedEvent;
|
|
83
|
+
streamDestroyed: MultipartyStreamDestroyedEvent;
|
|
84
|
+
streamPropertyChanged: MultipartyStreamPropertyChangedEvent;
|
|
85
|
+
mediaDeviceAccessDenied: MultipartyMediaAccessDeniedEvent;
|
|
86
|
+
updateTrafficLogs: ITrafficLogs;
|
|
87
|
+
snapshotAllowedChanged: MultipartySnapshotAllowedChangedEvent;
|
|
88
|
+
mainVideoMirrorStateChanged: MultipartyMainVideoMirrorStateChangedEvent;
|
|
89
|
+
mainVideoPinnedAndStreamingStateChanged: MultipartyMainVideoPinnedAndStreamingStateChangedEvent;
|
|
90
|
+
setPinnedUser: PinnedUserType;
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=MultipartyEventTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MultipartyEventTypes.d.ts","sourceRoot":"","sources":["../../../src/services/MultipartyEventTypes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MultipartyEvents = void 0;
|
|
4
|
+
var MultipartyEvents;
|
|
5
|
+
(function (MultipartyEvents) {
|
|
6
|
+
MultipartyEvents["mediaCapabilitiesSupport"] = "mediaCapabilitiesSupport";
|
|
7
|
+
MultipartyEvents["connectFailed"] = "connectFailed";
|
|
8
|
+
MultipartyEvents["streamDestroyed"] = "streamDestroyed";
|
|
9
|
+
MultipartyEvents["connectionCreated"] = "connectionCreated";
|
|
10
|
+
MultipartyEvents["connectionDestroyed"] = "connectionDestroyed";
|
|
11
|
+
MultipartyEvents["streamCreated"] = "streamCreated";
|
|
12
|
+
MultipartyEvents["streamPropertyChanged"] = "streamPropertyChanged";
|
|
13
|
+
MultipartyEvents["mediaDeviceAccessDenied"] = "mediaDeviceAccessDenied";
|
|
14
|
+
MultipartyEvents["updateTrafficLogs"] = "updateTrafficLogs";
|
|
15
|
+
MultipartyEvents["snapshotAllowedChanged"] = "snapshotAllowedChanged";
|
|
16
|
+
MultipartyEvents["mainVideoMirrorStateChanged"] = "mainVideoMirrorStateChanged";
|
|
17
|
+
MultipartyEvents["mainVideoPinnedAndStreamingStateChanged"] = "mainVideoPinnedAndStreamingStateChanged";
|
|
18
|
+
})(MultipartyEvents = exports.MultipartyEvents || (exports.MultipartyEvents = {}));
|
|
19
|
+
//# sourceMappingURL=MultipartyEventTypes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MultipartyEventTypes.js","sourceRoot":"","sources":["../../../src/services/MultipartyEventTypes.ts"],"names":[],"mappings":";;;AAIA,IAAY,gBAaX;AAbD,WAAY,gBAAgB;IACxB,yEAAqD,CAAA;IACrD,mDAA+B,CAAA;IAC/B,uDAAmC,CAAA;IACnC,2DAAuC,CAAA;IACvC,+DAA2C,CAAA;IAC3C,mDAA+B,CAAA;IAC/B,mEAA+C,CAAA;IAC/C,uEAAmD,CAAA;IACnD,2DAAuC,CAAA;IACvC,qEAAiD,CAAA;IACjD,+EAA2D,CAAA;IAC3D,uGAAmF,CAAA;AACvF,CAAC,EAbW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAa3B"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Moment } from 'moment';
|
|
2
|
+
import { MultiPartyService } from '@techsee/techsee-nway-media-service/lib/MultiParty';
|
|
3
|
+
export interface ITrafficLogs {
|
|
4
|
+
videoTrafficDelta: number;
|
|
5
|
+
videoDurationDelta: Moment | number;
|
|
6
|
+
}
|
|
7
|
+
export declare class TrafficLogManager {
|
|
8
|
+
private readonly multiPartyService;
|
|
9
|
+
private readonly emitTrafficLogsEvent;
|
|
10
|
+
private updatedInProgressPromise;
|
|
11
|
+
private trafficLogger?;
|
|
12
|
+
private videoDurationLastCheck;
|
|
13
|
+
private previousTraffic;
|
|
14
|
+
constructor(multiPartyService: MultiPartyService, emitTrafficLogsEvent: (trafficLogs: ITrafficLogs) => void);
|
|
15
|
+
private start;
|
|
16
|
+
stop: () => Promise<void>;
|
|
17
|
+
private updateTrafficLogs;
|
|
18
|
+
private updateTrafficLogsInternal;
|
|
19
|
+
private calculateDeltas;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=trafficLogManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trafficLogManager.d.ts","sourceRoot":"","sources":["../../../src/services/trafficLogManager.ts"],"names":[],"mappings":"AAAA,OAAe,EAAC,MAAM,EAAC,MAAM,QAAQ,CAAC;AACtC,OAAO,EACH,iBAAiB,EAKpB,MAAM,oDAAoD,CAAC;AAI5D,MAAM,WAAW,YAAY;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,GAAG,MAAM,CAAC;CACvC;AAQD,qBAAa,iBAAiB;IAQtB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IARzC,OAAO,CAAC,wBAAwB,CAAoC;IAEpE,OAAO,CAAC,aAAa,CAAC,CAAiC;IACvD,OAAO,CAAC,sBAAsB,CAAwB;IACtD,OAAO,CAAC,eAAe,CAAK;gBAGP,iBAAiB,EAAE,iBAAiB,EACpC,oBAAoB,EAAE,CAAC,WAAW,EAAE,YAAY,KAAK,IAAI;IAM9E,OAAO,CAAC,KAAK,CAOX;IAEK,IAAI,QAAa,QAAQ,IAAI,CAAC,CAQnC;IAGF,OAAO,CAAC,iBAAiB,CAKvB;IAEF,OAAO,CAAC,yBAAyB,CAa/B;IAEF,OAAO,CAAC,eAAe,CASrB;CACL"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
39
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
|
+
};
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
exports.TrafficLogManager = void 0;
|
|
43
|
+
var moment_1 = __importDefault(require("moment"));
|
|
44
|
+
var MultiParty_1 = require("@techsee/techsee-nway-media-service/lib/MultiParty");
|
|
45
|
+
var VIDEO_TRAFFIC_LOG_INTERVAL = 5;
|
|
46
|
+
function getStats(subscriber) {
|
|
47
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
48
|
+
return __generator(this, function (_a) {
|
|
49
|
+
return [2 /*return*/, new Promise(function (resolve) {
|
|
50
|
+
subscriber.getStats(function (error, stats) { return resolve(stats); });
|
|
51
|
+
})];
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
var TrafficLogManager = /** @class */ (function () {
|
|
56
|
+
function TrafficLogManager(multiPartyService, emitTrafficLogsEvent) {
|
|
57
|
+
var _this = this;
|
|
58
|
+
this.multiPartyService = multiPartyService;
|
|
59
|
+
this.emitTrafficLogsEvent = emitTrafficLogsEvent;
|
|
60
|
+
this.updatedInProgressPromise = Promise.resolve();
|
|
61
|
+
this.videoDurationLastCheck = moment_1.default.utc();
|
|
62
|
+
this.previousTraffic = 0;
|
|
63
|
+
this.start = function () {
|
|
64
|
+
if (!_this.trafficLogger && _this.multiPartyService.subscribers.length > 0) {
|
|
65
|
+
_this.trafficLogger = setInterval(function () { return _this.updateTrafficLogs(); }, VIDEO_TRAFFIC_LOG_INTERVAL * 1000);
|
|
66
|
+
_this.previousTraffic = 0;
|
|
67
|
+
_this.videoDurationLastCheck = moment_1.default.utc();
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
this.stop = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
71
|
+
return __generator(this, function (_a) {
|
|
72
|
+
if (this.trafficLogger && this.multiPartyService.subscribers.length === 0) {
|
|
73
|
+
clearInterval(this.trafficLogger);
|
|
74
|
+
this.trafficLogger = undefined;
|
|
75
|
+
// Last update will not work because the subscriber is gone already
|
|
76
|
+
// this.updateTrafficLogs();
|
|
77
|
+
}
|
|
78
|
+
return [2 /*return*/];
|
|
79
|
+
});
|
|
80
|
+
}); };
|
|
81
|
+
//TODO right now this mechanism can only handle 2 participants if we want more we need to refactor this mechanism
|
|
82
|
+
this.updateTrafficLogs = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
83
|
+
return __generator(this, function (_a) {
|
|
84
|
+
switch (_a.label) {
|
|
85
|
+
case 0:
|
|
86
|
+
if (!this.trafficLogger) return [3 /*break*/, 2];
|
|
87
|
+
return [4 /*yield*/, this.updatedInProgressPromise];
|
|
88
|
+
case 1:
|
|
89
|
+
_a.sent();
|
|
90
|
+
this.updatedInProgressPromise = this.updateTrafficLogsInternal();
|
|
91
|
+
_a.label = 2;
|
|
92
|
+
case 2: return [2 /*return*/];
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
}); };
|
|
96
|
+
this.updateTrafficLogsInternal = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
97
|
+
var stats, timestamp, bytesReceived;
|
|
98
|
+
return __generator(this, function (_a) {
|
|
99
|
+
switch (_a.label) {
|
|
100
|
+
case 0:
|
|
101
|
+
if (this.multiPartyService.subscribers.length === 0) {
|
|
102
|
+
return [2 /*return*/];
|
|
103
|
+
}
|
|
104
|
+
return [4 /*yield*/, getStats(this.multiPartyService.subscribers[0].subscriber)];
|
|
105
|
+
case 1:
|
|
106
|
+
stats = _a.sent();
|
|
107
|
+
if (stats) {
|
|
108
|
+
timestamp = stats.timestamp;
|
|
109
|
+
bytesReceived = stats.video.bytesReceived;
|
|
110
|
+
this.emitTrafficLogsEvent(this.calculateDeltas(bytesReceived, timestamp));
|
|
111
|
+
}
|
|
112
|
+
return [2 /*return*/];
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
}); };
|
|
116
|
+
this.calculateDeltas = function (bytesReceived, timestamp) {
|
|
117
|
+
var now = moment_1.default.utc(timestamp);
|
|
118
|
+
var videoTrafficDelta = bytesReceived - _this.previousTraffic;
|
|
119
|
+
var videoDurationDelta = now.diff(_this.videoDurationLastCheck, 'seconds', true);
|
|
120
|
+
_this.videoDurationLastCheck = now;
|
|
121
|
+
_this.previousTraffic = bytesReceived;
|
|
122
|
+
return { videoTrafficDelta: videoTrafficDelta, videoDurationDelta: videoTrafficDelta ? videoDurationDelta : 0 };
|
|
123
|
+
};
|
|
124
|
+
this.multiPartyService.on(MultiParty_1.MultiPartyServiceEventTypes.streamDestroyed, this.stop);
|
|
125
|
+
this.multiPartyService.on(MultiParty_1.MultiPartyServiceEventTypes.streamCreated, this.start);
|
|
126
|
+
}
|
|
127
|
+
return TrafficLogManager;
|
|
128
|
+
}());
|
|
129
|
+
exports.TrafficLogManager = TrafficLogManager;
|
|
130
|
+
//# sourceMappingURL=trafficLogManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trafficLogManager.js","sourceRoot":"","sources":["../../../src/services/trafficLogManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { MediaServiceType, MultiPartyCameraTypes, SessionClientRole } from '@techsee/techsee-nway-media-service/lib/MediaConstants';
|
|
2
|
+
import { BrandingSettings } from '@techsee/techsee-nway-media-service/lib/MultiParty';
|
|
3
|
+
export declare enum PinnedUserType {
|
|
4
|
+
AGENT = "agent",
|
|
5
|
+
USER = "user",
|
|
6
|
+
NONE = "none"
|
|
7
|
+
}
|
|
8
|
+
export type OnPinnedUserChangedCb = (pinnedUser: PinnedUserType) => void;
|
|
9
|
+
export declare enum ConnectionState {
|
|
10
|
+
WaitingForConnection = "WaitingForConnection",
|
|
11
|
+
Connecting = "Connecting",
|
|
12
|
+
ConnectedPublishingVideo = "ConnectedPublishingVideo",
|
|
13
|
+
ConnectedNoVideo = "ConnectedNoVideo",
|
|
14
|
+
Disconnected = "Disconnected"
|
|
15
|
+
}
|
|
16
|
+
export type ConnectionDetails = {
|
|
17
|
+
userRole: SessionClientRole;
|
|
18
|
+
isOwnConnection: boolean;
|
|
19
|
+
isMediaPermissionsRejected: boolean;
|
|
20
|
+
connectionState: ConnectionState;
|
|
21
|
+
connectionId?: string;
|
|
22
|
+
videoStreamId: string;
|
|
23
|
+
};
|
|
24
|
+
export declare enum AudioState {
|
|
25
|
+
DISABLED = "disabled",
|
|
26
|
+
MUTED = "muted",
|
|
27
|
+
ENABLED = "enabled"
|
|
28
|
+
}
|
|
29
|
+
export interface MultipartySessionSettings {
|
|
30
|
+
audioState: AudioState;
|
|
31
|
+
selectedCamera: MultiPartyCameraTypes;
|
|
32
|
+
cameraEnabled: boolean;
|
|
33
|
+
mediaServiceType: MediaServiceType;
|
|
34
|
+
branding?: BrandingSettings;
|
|
35
|
+
keepSessionState?: boolean;
|
|
36
|
+
}
|
|
37
|
+
export declare const toSessionClientRole: (userType?: PinnedUserType) => SessionClientRole | undefined;
|
|
38
|
+
export declare const toPinnedUserType: (userRole?: SessionClientRole) => PinnedUserType;
|
|
39
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACpB,MAAM,wDAAwD,CAAC;AAChE,OAAO,EAAC,gBAAgB,EAAC,MAAM,oDAAoD,CAAC;AAEpF,oBAAY,cAAc;IACtB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,IAAI,SAAS;CAChB;AAED,MAAM,MAAM,qBAAqB,GAAG,CAAC,UAAU,EAAE,cAAc,KAAK,IAAI,CAAC;AAEzE,oBAAY,eAAe;IACvB,oBAAoB,yBAAyB;IAC7C,UAAU,eAAe;IACzB,wBAAwB,6BAA6B;IACrD,gBAAgB,qBAAqB;IACrC,YAAY,iBAAiB;CAChC;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC5B,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,eAAe,EAAE,OAAO,CAAC;IACzB,0BAA0B,EAAE,OAAO,CAAC;IACpC,eAAe,EAAE,eAAe,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,oBAAY,UAAU;IAClB,QAAQ,aAAa;IACrB,KAAK,UAAU;IACf,OAAO,YAAY;CACtB;AAED,MAAM,WAAW,yBAAyB;IACtC,UAAU,EAAE,UAAU,CAAC;IACvB,cAAc,EAAE,qBAAqB,CAAC;IACtC,aAAa,EAAE,OAAO,CAAC;IACvB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,eAAO,MAAM,mBAAmB,cAAe,cAAc,KAAG,iBAAiB,GAAG,SASnF,CAAC;AAEF,eAAO,MAAM,gBAAgB,cAAe,iBAAiB,KAAG,cAS/D,CAAC"}
|