@techsee/techsee-media-service 0.20.1 → 0.20.2
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.
|
@@ -150,6 +150,6 @@ var couldStartMultiparty = function couldStartMultiparty() {
|
|
|
150
150
|
});
|
|
151
151
|
};
|
|
152
152
|
exports.couldStartMultiparty = couldStartMultiparty;
|
|
153
|
-
//# sourceMappingURL=MultiParty.js.map
|
|
154
153
|
|
|
155
154
|
//# sourceMappingURL=MultiParty.js.map
|
|
155
|
+
//# sourceMappingURL=MultiParty.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["MultiParty/MultiParty.js","../src/MultiParty/MultiParty.ts"],"names":["__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__","constructor","create","__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","apply","__generator","body","_","label","sent","t","trys","ops","f","y","g","verb","Symbol","iterator","n","v","op","TypeError","pop","length","push","defineProperty","exports","couldStartMultiparty","MultiParty","MULTI_PARTY_EVENTS","maxParticipantsNumber","participateDomId","MediaCapabilitiesHelper_1","require","MediaTracer_1","events_1","trace","getMediaTracer","_super","settings","_this","EventEmitter","mediaCapabilitiesHelper","err_1","_a","MediaCapabilitiesHelper","init","hasWebRTC","error","JSON","stringify"],"mappings":"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","file":"MultiParty.js","sourcesContent":["\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n 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;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.couldStartMultiparty = exports.MultiParty = exports.MULTI_PARTY_EVENTS = exports.maxParticipantsNumber = exports.participateDomId = void 0;\nvar MediaCapabilitiesHelper_1 = require(\"./MediaCapabilitiesHelper\");\nvar MediaTracer_1 = require(\"../MediaUtils/MediaTracer\");\nvar events_1 = require(\"events\");\nvar trace = MediaTracer_1.getMediaTracer('Multiparty');\nexports.participateDomId = 'participate';\nexports.maxParticipantsNumber = 2;\nvar MULTI_PARTY_EVENTS;\n(function (MULTI_PARTY_EVENTS) {\n MULTI_PARTY_EVENTS[\"connectFailed\"] = \"connectFailed\";\n MULTI_PARTY_EVENTS[\"streamDestroyed\"] = \"streamDestroyed\";\n MULTI_PARTY_EVENTS[\"connectionCreated\"] = \"connectionCreated\";\n MULTI_PARTY_EVENTS[\"connectionDestroyed\"] = \"connectionDestroyed\";\n MULTI_PARTY_EVENTS[\"streamCreated\"] = \"streamCreated\";\n})(MULTI_PARTY_EVENTS = exports.MULTI_PARTY_EVENTS || (exports.MULTI_PARTY_EVENTS = {}));\nvar MultiParty = /** @class */ (function (_super) {\n __extends(MultiParty, _super);\n function MultiParty(settings) {\n var _this = _super.call(this) || this;\n _this.settings = settings;\n return _this;\n }\n return MultiParty;\n}(events_1.EventEmitter));\nexports.MultiParty = MultiParty;\nvar couldStartMultiparty = function () { return __awaiter(void 0, void 0, void 0, function () {\n var mediaCapabilitiesHelper, err_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n return [4 /*yield*/, MediaCapabilitiesHelper_1.MediaCapabilitiesHelper.init()];\n case 1:\n mediaCapabilitiesHelper = _a.sent();\n return [2 /*return*/, mediaCapabilitiesHelper.hasWebRTC()];\n case 2:\n err_1 = _a.sent();\n trace.error(JSON.stringify(err_1));\n return [2 /*return*/, false];\n case 3: return [2 /*return*/];\n }\n });\n}); };\nexports.couldStartMultiparty = couldStartMultiparty;\n","import {MediaCapabilitiesHelper} from './MediaCapabilitiesHelper';\nimport {getMediaTracer} from '../MediaUtils/MediaTracer';\nimport {EventEmitter} from 'events';\nimport {ISessionSettings} from './Contracts';\n\nconst trace = getMediaTracer('Multiparty');\n\nexport const participateDomId = 'participate';\nexport const maxParticipantsNumber = 2;\n\nexport enum MULTI_PARTY_EVENTS {\n connectFailed = 'connectFailed',\n streamDestroyed = 'streamDestroyed',\n connectionCreated = 'connectionCreated',\n connectionDestroyed = 'connectionDestroyed',\n streamCreated = 'streamCreated'\n}\n\nexport abstract class MultiParty extends EventEmitter {\n abstract session: any;\n abstract subscribers: Array<any> | undefined;\n protected settings: ISessionSettings;\n\n abstract connect(...args: any[]): void;\n abstract disconnect(): void;\n\n constructor(settings: ISessionSettings) {\n super();\n this.settings = settings;\n }\n}\n\nexport const couldStartMultiparty = async (): Promise<boolean> => {\n try {\n const mediaCapabilitiesHelper = await MediaCapabilitiesHelper.init();\n\n return mediaCapabilitiesHelper.hasWebRTC();\n\n } catch (err) {\n trace.error(JSON.stringify(err));\n\n return false;\n }\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["MultiParty/MultiParty.js"],"names":["__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__","constructor","create","__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","apply","__generator","body","_","label","sent","t","trys","ops","f","y","g","verb","Symbol","iterator","n","v","op","TypeError","pop","length","push","defineProperty","exports","couldStartMultiparty","MultiParty","MULTI_PARTY_EVENTS","maxParticipantsNumber","participateDomId","MediaCapabilitiesHelper_1","require","MediaTracer_1","events_1","trace","getMediaTracer","_super","settings","_this","EventEmitter","mediaCapabilitiesHelper","err_1","_a","MediaCapabilitiesHelper","init","hasWebRTC","error","JSON","stringify"],"mappings":"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","file":"MultiParty.js","sourcesContent":["\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n 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;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.couldStartMultiparty = exports.MultiParty = exports.MULTI_PARTY_EVENTS = exports.maxParticipantsNumber = exports.participateDomId = void 0;\nvar MediaCapabilitiesHelper_1 = require(\"./MediaCapabilitiesHelper\");\nvar MediaTracer_1 = require(\"../MediaUtils/MediaTracer\");\nvar events_1 = require(\"events\");\nvar trace = MediaTracer_1.getMediaTracer('Multiparty');\nexports.participateDomId = 'participate';\nexports.maxParticipantsNumber = 2;\nvar MULTI_PARTY_EVENTS;\n(function (MULTI_PARTY_EVENTS) {\n MULTI_PARTY_EVENTS[\"connectFailed\"] = \"connectFailed\";\n MULTI_PARTY_EVENTS[\"streamDestroyed\"] = \"streamDestroyed\";\n MULTI_PARTY_EVENTS[\"connectionCreated\"] = \"connectionCreated\";\n MULTI_PARTY_EVENTS[\"connectionDestroyed\"] = \"connectionDestroyed\";\n MULTI_PARTY_EVENTS[\"streamCreated\"] = \"streamCreated\";\n})(MULTI_PARTY_EVENTS = exports.MULTI_PARTY_EVENTS || (exports.MULTI_PARTY_EVENTS = {}));\nvar MultiParty = /** @class */ (function (_super) {\n __extends(MultiParty, _super);\n function MultiParty(settings) {\n var _this = _super.call(this) || this;\n _this.settings = settings;\n return _this;\n }\n return MultiParty;\n}(events_1.EventEmitter));\nexports.MultiParty = MultiParty;\nvar couldStartMultiparty = function () { return __awaiter(void 0, void 0, void 0, function () {\n var mediaCapabilitiesHelper, err_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n return [4 /*yield*/, MediaCapabilitiesHelper_1.MediaCapabilitiesHelper.init()];\n case 1:\n mediaCapabilitiesHelper = _a.sent();\n return [2 /*return*/, mediaCapabilitiesHelper.hasWebRTC()];\n case 2:\n err_1 = _a.sent();\n trace.error(JSON.stringify(err_1));\n return [2 /*return*/, false];\n case 3: return [2 /*return*/];\n }\n });\n}); };\nexports.couldStartMultiparty = couldStartMultiparty;\n\n//# sourceMappingURL=MultiParty.js.map\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/MultiParty/OpentokMultiparty.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4C,UAAU,EAAmB,MAAM,cAAc,CAAC;AAIrG,OAAO,EAAC,YAAY,EAAE,gBAAgB,EAAC,MAAM,aAAa,CAAC;AAe3D,qBAAa,iBAAkB,SAAQ,UAAU;IAC7C,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,CAAM;IAC7B,OAAO,EAAE,GAAG,CAAC;IACb,gBAAgB,EAAE,GAAG,CAAC;IACtB,WAAW,EAAE,GAAG,CAAC;IAEjB,IAAI,eAAe,IAAI,MAAM,GAAG,OAAO,CAEtC;IAED,OAAO,gBAAiB,YAAY,KAAG,IAAI,CAmCzC;IAEF,UAAU,QAAO,IAAI,CAYnB;IAEF,sBAAsB,aAAoB,gBAAgB,KAAG,QAAQ,OAAO,GAAG,KAAK,CAAC,CAYnF;IAEF,sBAAsB,aAAoB,gBAAgB,KAAG,QAAQ,OAAO,GAAG,KAAK,CAAC,CASnF;IAEF,eAAe,yBAAgC,gBAAgB,KAAG,QAAQ,IAAI,CAAC,CAwB7E;IAEF,YAAY,UAAiB,OAAO,KAAG,QAAQ,IAAI,CAAC,CAgBlD;IAEF,YAAY,UAAiB,OAAO,KAAG,QAAQ,IAAI,CAAC,CAgBlD;IAEF,aAAa,aAAc,gBAAgB,UAyB1C;IAED,oBAAoB;gBAAqB,GAAG;UAAK,IAAI,CAmCnD;IAEF,sBAAsB,UAAW,GAAG,KAAG,IAAI,CAOzC;IAEF,wBAAwB,UAAW,GAAG,KAAG,IAAI,CAY3C;IAEF,0BAA0B,UAAW,GAAG,KAAG,IAAI,CAI7C;IAEF,UAAU,UAAW,GAAG,KAAG,IAAI,CAE7B;CACL","file":"OpentokMultiparty.d.ts","sourcesContent":["import {maxParticipantsNumber, MULTI_PARTY_EVENTS, MultiParty, participateDomId} from './MultiParty';\nimport {CameraTypes} from '../MediaConstants';\nimport {getMediaTracer} from '../MediaUtils/MediaTracer';\nimport get from 'lodash/get';\nimport {ICredentials, ISessionSettings} from './Contracts';\nimport filter from 'lodash/filter';\nimport cloneDeep from 'lodash/cloneDeep';\nimport {MediaCapabilitiesHelper} from './MediaCapabilitiesHelper';\n\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst OT = require('@opentok/client');\nconst trace = getMediaTracer('Multiparty');\n\n// The preferred camera position to use for the video source\nenum OpentokFacingMode {\n USER = 'user',\n ENVIRONMENT = 'environment'\n}\n\nexport class OpentokMultiparty extends MultiParty {\n subscribers: Array<any> = [];\n session: any;\n currentPublisher: any;\n credentials: any;\n\n get ownConnectionId(): string | boolean {\n return this.session && this.session.connection && this.session.connection.connectionId;\n }\n\n connect = (credentials: ICredentials): void => {\n this.credentials = credentials;\n\n try {\n this.session = OT.initSession(credentials.apiKey, credentials.sessionId);\n } catch (err) {\n trace.error(JSON.stringify(err));\n this.emit(MULTI_PARTY_EVENTS.connectFailed, {meta: {err: JSON.stringify(err)}});\n\n return;\n }\n\n this.session.on('connectionCreated', this.connectionCreatedHandler);\n this.session.on('connectionDestroyed', this.connectionDestroyedHandler);\n this.session.on('streamCreated', this.streamCreatedHandler);\n this.session.on('streamDestroyed', this.streamDestroyedHandler);\n\n this.session.connect(this.credentials.token, async (error: any) => {\n if (error) {\n this.session.off();\n this.session = null;\n this.traceError(error);\n this.emit(MULTI_PARTY_EVENTS.connectFailed, {meta: {err: JSON.stringify(error)}});\n\n return;\n }\n\n if (this.settings.defaultCamera === CameraTypes.NONE && this.settings.startWithAudioMuted) {\n trace.info('camera is none, no need to create publisher');\n\n return;\n }\n\n await this.createPublisher(this.settings);\n });\n };\n\n disconnect = (): void => {\n try {\n trace.info('Disconnecting from session');\n\n if (this.session) {\n this.session.disconnect();\n\n trace.info('Disconnection from session completed');\n }\n } catch (err) {\n trace.error(JSON.stringify(err));\n }\n };\n\n couldStartPublishVideo = async (settings: ISessionSettings): Promise<boolean | Error> => {\n try {\n const mediaCapabilitiesHelper = await MediaCapabilitiesHelper.init();\n\n return (settings.defaultCamera !== CameraTypes.NONE)\n ? mediaCapabilitiesHelper.hasCamera()\n : false;\n\n } catch (err) {\n trace.error(JSON.stringify(err));\n throw err;\n }\n };\n\n couldStartPublishAudio = async (settings: ISessionSettings): Promise<boolean | Error> => {\n try {\n const mediaCapabilitiesHelper = await MediaCapabilitiesHelper.init();\n\n return !settings.startWithAudioMuted && mediaCapabilitiesHelper.hasMicrophone();\n } catch (err) {\n trace.error(JSON.stringify(err));\n throw err;\n }\n };\n\n createPublisher = async (settingsForPublisher: ISessionSettings): Promise<void> => {\n const settings = cloneDeep(settingsForPublisher);\n const couldStartPublishVideo = await this.couldStartPublishVideo(settings);\n const couldStartPublishAudio = await this.couldStartPublishAudio(settings);\n\n if (!couldStartPublishVideo && !couldStartPublishAudio) {\n // FIXME: use emitter\n trace.error('could not create a publisher, due to lack of media capabilities or settings');\n\n return;\n }\n\n if (!couldStartPublishVideo) {\n settings.defaultCamera = CameraTypes.NONE;\n }\n\n if (!couldStartPublishAudio) {\n settings.startWithAudioMuted = true;\n }\n\n if (!this.currentPublisher) {\n this.initPublisher(settings);\n this.session.publish(this.currentPublisher, this.traceError);\n }\n };\n\n publishAudio = async (value: boolean): Promise<void> => {\n const settings = cloneDeep(this.settings);\n\n settings.startWithAudioMuted = !value;\n\n if (value && !await this.couldStartPublishAudio(settings)) {\n trace.error('could not publish audio');\n\n return;\n }\n\n if (!this.currentPublisher) {\n this.createPublisher(settings);\n } else {\n this.currentPublisher.publishAudio(value);\n }\n };\n\n publishVideo = async (value: boolean): Promise<void> => {\n const settings = cloneDeep(this.settings);\n\n settings.defaultCamera = value ? this.settings.defaultCamera : CameraTypes.NONE;\n\n if (value && !await this.couldStartPublishVideo(settings)) {\n trace.error('could not publish video');\n\n return;\n }\n\n if (!this.currentPublisher) {\n this.createPublisher(settings);\n } else {\n this.currentPublisher.publishVideo(value);\n }\n };\n\n initPublisher = (settings: ISessionSettings) => {\n const properties = {\n insertMode: 'append',\n width: '200',\n height: '200',\n publishAudio: !settings.startWithAudioMuted,\n publishVideo: settings.defaultCamera !== CameraTypes.NONE,\n facingMode: settings.defaultCamera === CameraTypes.FRONT ? OpentokFacingMode.USER : OpentokFacingMode.ENVIRONMENT\n };\n\n this.currentPublisher = OT.initPublisher(`${participateDomId}1`, properties, this.traceError);\n\n if (!this.currentPublisher) {\n trace.error('failed to init publisher');\n } else {\n this.currentPublisher.on('videoElementCreated', (event: any) => {\n trace.info('videoElementCreated', event);\n });\n this.currentPublisher.on('streamDestroyed', (event: any) => {\n trace.info('Publisher stream destroyed', event);\n });\n this.currentPublisher.on('streamCreated', (event: any) => {\n trace.info('publisher stream created', event, get(this.currentPublisher, 'stream.hasAudio'));\n });\n }\n }\n\n streamCreatedHandler = (event: { stream: any }): void => {\n trace.info('streamCreatedHandler', event.stream);\n this.emit(MULTI_PARTY_EVENTS.streamCreated, event);\n\n const {stream} = event;\n const {connection} = stream || {connection: null};\n\n if (!this.ownConnectionId || !stream || connection.connectionId === this.ownConnectionId) {\n return;\n }\n\n if (this.subscribers.length >= maxParticipantsNumber - 1) {\n trace.info(`a new subscriber cannot be added, as the number of participants reached its limit: ${maxParticipantsNumber}`);\n } else {\n //fixme: use width and height passed in settings\n const properties = {\n insertMode: 'append',\n width: '200',\n height: '200'\n };\n\n const subscriber = this.session.subscribe(event.stream, `${participateDomId}${this.subscribers.length}`, properties, (err: any) => {\n this.traceError(err);\n\n subscriber.on('videoElementCreated', (event: any) => {\n trace.info('videoElementCreated', event);\n });\n });\n\n this.subscribers.push({\n subscriber,\n connectionId: connection.connectionId,\n clientRole: connection?.data?.clientRole ? JSON.parse(connection.data).clientRole : 'default' //fixme temp workaround for BE\n });\n }\n };\n\n streamDestroyedHandler = (event: any): void => {\n trace.info('streamDestroyedHandler', event);\n const {stream} = event;\n const destroyedConnectionId = stream && stream.connection && stream.connection.connectionId;\n\n this.emit(MULTI_PARTY_EVENTS.streamDestroyed, {meta: {event: JSON.stringify(event)}});\n this.subscribers = filter(this.subscribers, (subscriber) => subscriber.connectionId !== destroyedConnectionId);\n };\n\n connectionCreatedHandler = (event: any): void => {\n trace.info('connectionCreatedHandler', event);\n const {connection} = event;\n\n if (!this.ownConnectionId || !connection) {\n return;\n }\n\n const clientRole = 'default'; //JSON.parse(connection.data).clientRole; //fixme\n\n this.emit(MULTI_PARTY_EVENTS.connectionCreated, {meta: {clientRole, event: JSON.stringify(event)}});\n\n };\n\n connectionDestroyedHandler = (event: any): void => {\n this.session = null;\n trace.info('connectionDestroyedHandler', event);\n this.emit(MULTI_PARTY_EVENTS.connectionDestroyed, {meta: {event: JSON.stringify(event)}});\n };\n\n traceError = (error: any): void => {\n trace.error(error);\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/MultiParty/OpentokMultiparty.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4C,UAAU,EAAmB,MAAM,cAAc,CAAC;AAIrG,OAAO,EAAC,YAAY,EAAE,gBAAgB,EAAC,MAAM,aAAa,CAAC;AAe3D,qBAAa,iBAAkB,SAAQ,UAAU;IAC7C,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,CAAM;IAC7B,OAAO,EAAE,GAAG,CAAC;IACb,gBAAgB,EAAE,GAAG,CAAC;IACtB,WAAW,EAAE,GAAG,CAAC;IAEjB,IAAI,eAAe,IAAI,MAAM,GAAG,OAAO,CAEtC;IAED,OAAO,gBAAiB,YAAY,KAAG,IAAI,CAmCzC;IAEF,UAAU,QAAO,IAAI,CAYnB;IAEF,sBAAsB,aAAoB,gBAAgB,KAAG,QAAQ,OAAO,GAAG,KAAK,CAAC,CAYnF;IAEF,sBAAsB,aAAoB,gBAAgB,KAAG,QAAQ,OAAO,GAAG,KAAK,CAAC,CASnF;IAEF,eAAe,yBAAgC,gBAAgB,KAAG,QAAQ,IAAI,CAAC,CAwB7E;IAEF,YAAY,UAAiB,OAAO,KAAG,QAAQ,IAAI,CAAC,CAgBlD;IAEF,YAAY,UAAiB,OAAO,KAAG,QAAQ,IAAI,CAAC,CAgBlD;IAEF,aAAa,aAAc,gBAAgB,UAyB1C;IAED,oBAAoB;gBAAqB,GAAG;UAAK,IAAI,CAmCnD;IAEF,sBAAsB,UAAW,GAAG,KAAG,IAAI,CAOzC;IAEF,wBAAwB,UAAW,GAAG,KAAG,IAAI,CAY3C;IAEF,0BAA0B,UAAW,GAAG,KAAG,IAAI,CAU7C;IAEF,UAAU,UAAW,GAAG,KAAG,IAAI,CAE7B;CACL","file":"OpentokMultiparty.d.ts","sourcesContent":["import {maxParticipantsNumber, MULTI_PARTY_EVENTS, MultiParty, participateDomId} from './MultiParty';\nimport {CameraTypes} from '../MediaConstants';\nimport {getMediaTracer} from '../MediaUtils/MediaTracer';\nimport get from 'lodash/get';\nimport {ICredentials, ISessionSettings} from './Contracts';\nimport filter from 'lodash/filter';\nimport cloneDeep from 'lodash/cloneDeep';\nimport {MediaCapabilitiesHelper} from './MediaCapabilitiesHelper';\n\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst OT = require('@opentok/client');\nconst trace = getMediaTracer('Multiparty');\n\n// The preferred camera position to use for the video source\nenum OpentokFacingMode {\n USER = 'user',\n ENVIRONMENT = 'environment'\n}\n\nexport class OpentokMultiparty extends MultiParty {\n subscribers: Array<any> = [];\n session: any;\n currentPublisher: any;\n credentials: any;\n\n get ownConnectionId(): string | boolean {\n return this.session && this.session.connection && this.session.connection.connectionId;\n }\n\n connect = (credentials: ICredentials): void => {\n this.credentials = credentials;\n\n try {\n this.session = OT.initSession(credentials.apiKey, credentials.sessionId);\n } catch (err) {\n trace.error(JSON.stringify(err));\n this.emit(MULTI_PARTY_EVENTS.connectFailed, {meta: {err: JSON.stringify(err)}});\n\n return;\n }\n\n this.session.on('connectionCreated', this.connectionCreatedHandler);\n this.session.on('connectionDestroyed', this.connectionDestroyedHandler);\n this.session.on('streamCreated', this.streamCreatedHandler);\n this.session.on('streamDestroyed', this.streamDestroyedHandler);\n\n this.session.connect(this.credentials.token, async (error: any) => {\n if (error) {\n this.session.off();\n this.session = null;\n this.traceError(error);\n this.emit(MULTI_PARTY_EVENTS.connectFailed, {meta: {err: JSON.stringify(error)}});\n\n return;\n }\n\n if (this.settings.defaultCamera === CameraTypes.NONE && this.settings.startWithAudioMuted) {\n trace.info('camera is none, no need to create publisher');\n\n return;\n }\n\n await this.createPublisher(this.settings);\n });\n };\n\n disconnect = (): void => {\n try {\n trace.info('Disconnecting from session');\n\n if (this.session) {\n this.session.disconnect();\n\n trace.info('Disconnection from session completed');\n }\n } catch (err) {\n trace.error(JSON.stringify(err));\n }\n };\n\n couldStartPublishVideo = async (settings: ISessionSettings): Promise<boolean | Error> => {\n try {\n const mediaCapabilitiesHelper = await MediaCapabilitiesHelper.init();\n\n return (settings.defaultCamera !== CameraTypes.NONE)\n ? mediaCapabilitiesHelper.hasCamera()\n : false;\n\n } catch (err) {\n trace.error(JSON.stringify(err));\n throw err;\n }\n };\n\n couldStartPublishAudio = async (settings: ISessionSettings): Promise<boolean | Error> => {\n try {\n const mediaCapabilitiesHelper = await MediaCapabilitiesHelper.init();\n\n return !settings.startWithAudioMuted && mediaCapabilitiesHelper.hasMicrophone();\n } catch (err) {\n trace.error(JSON.stringify(err));\n throw err;\n }\n };\n\n createPublisher = async (settingsForPublisher: ISessionSettings): Promise<void> => {\n const settings = cloneDeep(settingsForPublisher);\n const couldStartPublishVideo = await this.couldStartPublishVideo(settings);\n const couldStartPublishAudio = await this.couldStartPublishAudio(settings);\n\n if (!couldStartPublishVideo && !couldStartPublishAudio) {\n // FIXME: use emitter\n trace.error('could not create a publisher, due to lack of media capabilities or settings');\n\n return;\n }\n\n if (!couldStartPublishVideo) {\n settings.defaultCamera = CameraTypes.NONE;\n }\n\n if (!couldStartPublishAudio) {\n settings.startWithAudioMuted = true;\n }\n\n if (!this.currentPublisher) {\n this.initPublisher(settings);\n this.session.publish(this.currentPublisher, this.traceError);\n }\n };\n\n publishAudio = async (value: boolean): Promise<void> => {\n const settings = cloneDeep(this.settings);\n\n settings.startWithAudioMuted = !value;\n\n if (value && !await this.couldStartPublishAudio(settings)) {\n trace.error('could not publish audio');\n\n return;\n }\n\n if (!this.currentPublisher) {\n this.createPublisher(settings);\n } else {\n this.currentPublisher.publishAudio(value);\n }\n };\n\n publishVideo = async (value: boolean): Promise<void> => {\n const settings = cloneDeep(this.settings);\n\n settings.defaultCamera = value ? this.settings.defaultCamera : CameraTypes.NONE;\n\n if (value && !await this.couldStartPublishVideo(settings)) {\n trace.error('could not publish video');\n\n return;\n }\n\n if (!this.currentPublisher) {\n this.createPublisher(settings);\n } else {\n this.currentPublisher.publishVideo(value);\n }\n };\n\n initPublisher = (settings: ISessionSettings) => {\n const properties = {\n insertMode: 'append',\n width: '200',\n height: '200',\n publishAudio: !settings.startWithAudioMuted,\n publishVideo: settings.defaultCamera !== CameraTypes.NONE,\n facingMode: settings.defaultCamera === CameraTypes.FRONT ? OpentokFacingMode.USER : OpentokFacingMode.ENVIRONMENT\n };\n\n this.currentPublisher = OT.initPublisher(`${participateDomId}1`, properties, this.traceError);\n\n if (!this.currentPublisher) {\n trace.error('failed to init publisher');\n } else {\n this.currentPublisher.on('videoElementCreated', (event: any) => {\n trace.info('videoElementCreated', event);\n });\n this.currentPublisher.on('streamDestroyed', (event: any) => {\n trace.info('Publisher stream destroyed', event);\n });\n this.currentPublisher.on('streamCreated', (event: any) => {\n trace.info('publisher stream created', event, get(this.currentPublisher, 'stream.hasAudio'));\n });\n }\n }\n\n streamCreatedHandler = (event: { stream: any }): void => {\n trace.info('streamCreatedHandler', event.stream);\n this.emit(MULTI_PARTY_EVENTS.streamCreated, event);\n\n const {stream} = event;\n const {connection} = stream || {connection: null};\n\n if (!this.ownConnectionId || !stream || connection.connectionId === this.ownConnectionId) {\n return;\n }\n\n if (this.subscribers.length >= maxParticipantsNumber - 1) {\n trace.info(`a new subscriber cannot be added, as the number of participants reached its limit: ${maxParticipantsNumber}`);\n } else {\n //fixme: use width and height passed in settings\n const properties = {\n insertMode: 'append',\n width: '200',\n height: '200'\n };\n\n const subscriber = this.session.subscribe(event.stream, `${participateDomId}${this.subscribers.length}`, properties, (err: any) => {\n this.traceError(err);\n\n subscriber.on('videoElementCreated', (event: any) => {\n trace.info('videoElementCreated', event);\n });\n });\n\n this.subscribers.push({\n subscriber,\n connectionId: connection.connectionId,\n clientRole: connection?.data?.clientRole ? JSON.parse(connection.data).clientRole : 'default' //fixme temp workaround for BE\n });\n }\n };\n\n streamDestroyedHandler = (event: any): void => {\n trace.info('streamDestroyedHandler', event);\n const {stream} = event;\n const destroyedConnectionId = stream && stream.connection && stream.connection.connectionId;\n\n this.emit(MULTI_PARTY_EVENTS.streamDestroyed, {meta: {event: JSON.stringify(event)}});\n this.subscribers = filter(this.subscribers, (subscriber) => subscriber.connectionId !== destroyedConnectionId);\n };\n\n connectionCreatedHandler = (event: any): void => {\n trace.info('connectionCreatedHandler', event);\n const {connection} = event;\n\n if (!this.ownConnectionId || !connection) {\n return;\n }\n\n const clientRole = 'default'; //JSON.parse(connection.data).clientRole; //fixme\n\n this.emit(MULTI_PARTY_EVENTS.connectionCreated, {meta: {clientRole, event: JSON.stringify(event)}});\n\n };\n\n connectionDestroyedHandler = (event: any): void => {\n const {connection} = event;\n\n if (!this.ownConnectionId || !connection || connection.connectionId !== this.ownConnectionId) {\n return;\n }\n\n this.session = null;\n trace.info('connectionDestroyedHandler', event);\n this.emit(MULTI_PARTY_EVENTS.connectionDestroyed, {meta: {event: JSON.stringify(event)}});\n };\n\n traceError = (error: any): void => {\n trace.error(error);\n };\n}\n"]}
|
|
@@ -384,6 +384,10 @@ var OpentokMultiparty = /** @class */function (_super) {
|
|
|
384
384
|
_this.emit(MultiParty_1.MULTI_PARTY_EVENTS.connectionCreated, { meta: { clientRole: clientRole, event: JSON.stringify(event) } });
|
|
385
385
|
};
|
|
386
386
|
_this.connectionDestroyedHandler = function (event) {
|
|
387
|
+
var connection = event.connection;
|
|
388
|
+
if (!_this.ownConnectionId || !connection || connection.connectionId !== _this.ownConnectionId) {
|
|
389
|
+
return;
|
|
390
|
+
}
|
|
387
391
|
_this.session = null;
|
|
388
392
|
trace.info('connectionDestroyedHandler', event);
|
|
389
393
|
_this.emit(MultiParty_1.MULTI_PARTY_EVENTS.connectionDestroyed, { meta: { event: JSON.stringify(event) } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["MultiParty/OpentokMultiparty.js","../src/MultiParty/OpentokMultiparty.ts"],"names":["__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__","constructor","create","__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","apply","__generator","body","_","label","sent","t","trys","ops","f","y","g","verb","Symbol","iterator","n","v","op","TypeError","pop","length","push","__importDefault","mod","__esModule","defineProperty","exports","OpentokMultiparty","MultiParty_1","require","MediaConstants_1","MediaTracer_1","get_1","filter_1","cloneDeep_1","MediaCapabilitiesHelper_1","OT","trace","getMediaTracer","OpentokFacingMode","_super","_this","arguments","subscribers","connect","credentials","session","initSession","apiKey","sessionId","err","error","JSON","stringify","emit","MULTI_PARTY_EVENTS","connectFailed","meta","on","connectionCreatedHandler","connectionDestroyedHandler","streamCreatedHandler","streamDestroyedHandler","token","_a","off","traceError","settings","defaultCamera","CameraTypes","NONE","startWithAudioMuted","info","createPublisher","disconnect","couldStartPublishVideo","mediaCapabilitiesHelper","err_1","MediaCapabilitiesHelper","init","hasCamera","couldStartPublishAudio","err_2","hasMicrophone","settingsForPublisher","default","currentPublisher","initPublisher","publish","publishAudio","_b","publishVideo","properties","insertMode","width","height","facingMode","FRONT","USER","ENVIRONMENT","participateDomId","event","stream","streamCreated","connection","ownConnectionId","connectionId","maxParticipantsNumber","subscriber_1","subscribe","subscriber","clientRole","data","parse","destroyedConnectionId","streamDestroyed","connectionCreated","connectionDestroyed","get","enumerable","configurable","MultiParty"],"mappings":"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","file":"OpentokMultiparty.js","sourcesContent":["\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n 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;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OpentokMultiparty = void 0;\nvar MultiParty_1 = require(\"./MultiParty\");\nvar MediaConstants_1 = require(\"../MediaConstants\");\nvar MediaTracer_1 = require(\"../MediaUtils/MediaTracer\");\nvar get_1 = __importDefault(require(\"lodash/get\"));\nvar filter_1 = __importDefault(require(\"lodash/filter\"));\nvar cloneDeep_1 = __importDefault(require(\"lodash/cloneDeep\"));\nvar MediaCapabilitiesHelper_1 = require(\"./MediaCapabilitiesHelper\");\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nvar OT = require('@opentok/client');\nvar trace = MediaTracer_1.getMediaTracer('Multiparty');\n// The preferred camera position to use for the video source\nvar OpentokFacingMode;\n(function (OpentokFacingMode) {\n OpentokFacingMode[\"USER\"] = \"user\";\n OpentokFacingMode[\"ENVIRONMENT\"] = \"environment\";\n})(OpentokFacingMode || (OpentokFacingMode = {}));\nvar OpentokMultiparty = /** @class */ (function (_super) {\n __extends(OpentokMultiparty, _super);\n function OpentokMultiparty() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.subscribers = [];\n _this.connect = function (credentials) {\n _this.credentials = credentials;\n try {\n _this.session = OT.initSession(credentials.apiKey, credentials.sessionId);\n }\n catch (err) {\n trace.error(JSON.stringify(err));\n _this.emit(MultiParty_1.MULTI_PARTY_EVENTS.connectFailed, { meta: { err: JSON.stringify(err) } });\n return;\n }\n _this.session.on('connectionCreated', _this.connectionCreatedHandler);\n _this.session.on('connectionDestroyed', _this.connectionDestroyedHandler);\n _this.session.on('streamCreated', _this.streamCreatedHandler);\n _this.session.on('streamDestroyed', _this.streamDestroyedHandler);\n _this.session.connect(_this.credentials.token, function (error) { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (error) {\n this.session.off();\n this.session = null;\n this.traceError(error);\n this.emit(MultiParty_1.MULTI_PARTY_EVENTS.connectFailed, { meta: { err: JSON.stringify(error) } });\n return [2 /*return*/];\n }\n if (this.settings.defaultCamera === MediaConstants_1.CameraTypes.NONE && this.settings.startWithAudioMuted) {\n trace.info('camera is none, no need to create publisher');\n return [2 /*return*/];\n }\n return [4 /*yield*/, this.createPublisher(this.settings)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n }); });\n };\n _this.disconnect = function () {\n try {\n trace.info('Disconnecting from session');\n if (_this.session) {\n _this.session.disconnect();\n trace.info('Disconnection from session completed');\n }\n }\n catch (err) {\n trace.error(JSON.stringify(err));\n }\n };\n _this.couldStartPublishVideo = function (settings) { return __awaiter(_this, void 0, void 0, function () {\n var mediaCapabilitiesHelper, err_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n return [4 /*yield*/, MediaCapabilitiesHelper_1.MediaCapabilitiesHelper.init()];\n case 1:\n mediaCapabilitiesHelper = _a.sent();\n return [2 /*return*/, (settings.defaultCamera !== MediaConstants_1.CameraTypes.NONE)\n ? mediaCapabilitiesHelper.hasCamera()\n : false];\n case 2:\n err_1 = _a.sent();\n trace.error(JSON.stringify(err_1));\n throw err_1;\n case 3: return [2 /*return*/];\n }\n });\n }); };\n _this.couldStartPublishAudio = function (settings) { return __awaiter(_this, void 0, void 0, function () {\n var mediaCapabilitiesHelper, err_2;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n return [4 /*yield*/, MediaCapabilitiesHelper_1.MediaCapabilitiesHelper.init()];\n case 1:\n mediaCapabilitiesHelper = _a.sent();\n return [2 /*return*/, !settings.startWithAudioMuted && mediaCapabilitiesHelper.hasMicrophone()];\n case 2:\n err_2 = _a.sent();\n trace.error(JSON.stringify(err_2));\n throw err_2;\n case 3: return [2 /*return*/];\n }\n });\n }); };\n _this.createPublisher = function (settingsForPublisher) { return __awaiter(_this, void 0, void 0, function () {\n var settings, couldStartPublishVideo, couldStartPublishAudio;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n settings = cloneDeep_1.default(settingsForPublisher);\n return [4 /*yield*/, this.couldStartPublishVideo(settings)];\n case 1:\n couldStartPublishVideo = _a.sent();\n return [4 /*yield*/, this.couldStartPublishAudio(settings)];\n case 2:\n couldStartPublishAudio = _a.sent();\n if (!couldStartPublishVideo && !couldStartPublishAudio) {\n // FIXME: use emitter\n trace.error('could not create a publisher, due to lack of media capabilities or settings');\n return [2 /*return*/];\n }\n if (!couldStartPublishVideo) {\n settings.defaultCamera = MediaConstants_1.CameraTypes.NONE;\n }\n if (!couldStartPublishAudio) {\n settings.startWithAudioMuted = true;\n }\n if (!this.currentPublisher) {\n this.initPublisher(settings);\n this.session.publish(this.currentPublisher, this.traceError);\n }\n return [2 /*return*/];\n }\n });\n }); };\n _this.publishAudio = function (value) { return __awaiter(_this, void 0, void 0, function () {\n var settings, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n settings = cloneDeep_1.default(this.settings);\n settings.startWithAudioMuted = !value;\n _a = value;\n if (!_a) return [3 /*break*/, 2];\n return [4 /*yield*/, this.couldStartPublishAudio(settings)];\n case 1:\n _a = !(_b.sent());\n _b.label = 2;\n case 2:\n if (_a) {\n trace.error('could not publish audio');\n return [2 /*return*/];\n }\n if (!this.currentPublisher) {\n this.createPublisher(settings);\n }\n else {\n this.currentPublisher.publishAudio(value);\n }\n return [2 /*return*/];\n }\n });\n }); };\n _this.publishVideo = function (value) { return __awaiter(_this, void 0, void 0, function () {\n var settings, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n settings = cloneDeep_1.default(this.settings);\n settings.defaultCamera = value ? this.settings.defaultCamera : MediaConstants_1.CameraTypes.NONE;\n _a = value;\n if (!_a) return [3 /*break*/, 2];\n return [4 /*yield*/, this.couldStartPublishVideo(settings)];\n case 1:\n _a = !(_b.sent());\n _b.label = 2;\n case 2:\n if (_a) {\n trace.error('could not publish video');\n return [2 /*return*/];\n }\n if (!this.currentPublisher) {\n this.createPublisher(settings);\n }\n else {\n this.currentPublisher.publishVideo(value);\n }\n return [2 /*return*/];\n }\n });\n }); };\n _this.initPublisher = function (settings) {\n var properties = {\n insertMode: 'append',\n width: '200',\n height: '200',\n publishAudio: !settings.startWithAudioMuted,\n publishVideo: settings.defaultCamera !== MediaConstants_1.CameraTypes.NONE,\n facingMode: settings.defaultCamera === MediaConstants_1.CameraTypes.FRONT ? OpentokFacingMode.USER : OpentokFacingMode.ENVIRONMENT\n };\n _this.currentPublisher = OT.initPublisher(MultiParty_1.participateDomId + \"1\", properties, _this.traceError);\n if (!_this.currentPublisher) {\n trace.error('failed to init publisher');\n }\n else {\n _this.currentPublisher.on('videoElementCreated', function (event) {\n trace.info('videoElementCreated', event);\n });\n _this.currentPublisher.on('streamDestroyed', function (event) {\n trace.info('Publisher stream destroyed', event);\n });\n _this.currentPublisher.on('streamCreated', function (event) {\n trace.info('publisher stream created', event, get_1.default(_this.currentPublisher, 'stream.hasAudio'));\n });\n }\n };\n _this.streamCreatedHandler = function (event) {\n var _a;\n trace.info('streamCreatedHandler', event.stream);\n _this.emit(MultiParty_1.MULTI_PARTY_EVENTS.streamCreated, event);\n var stream = event.stream;\n var connection = (stream || { connection: null }).connection;\n if (!_this.ownConnectionId || !stream || connection.connectionId === _this.ownConnectionId) {\n return;\n }\n if (_this.subscribers.length >= MultiParty_1.maxParticipantsNumber - 1) {\n trace.info(\"a new subscriber cannot be added, as the number of participants reached its limit: \" + MultiParty_1.maxParticipantsNumber);\n }\n else {\n //fixme: use width and height passed in settings\n var properties = {\n insertMode: 'append',\n width: '200',\n height: '200'\n };\n var subscriber_1 = _this.session.subscribe(event.stream, \"\" + MultiParty_1.participateDomId + _this.subscribers.length, properties, function (err) {\n _this.traceError(err);\n subscriber_1.on('videoElementCreated', function (event) {\n trace.info('videoElementCreated', event);\n });\n });\n _this.subscribers.push({\n subscriber: subscriber_1,\n connectionId: connection.connectionId,\n clientRole: ((_a = connection === null || connection === void 0 ? void 0 : connection.data) === null || _a === void 0 ? void 0 : _a.clientRole) ? JSON.parse(connection.data).clientRole : 'default' //fixme temp workaround for BE\n });\n }\n };\n _this.streamDestroyedHandler = function (event) {\n trace.info('streamDestroyedHandler', event);\n var stream = event.stream;\n var destroyedConnectionId = stream && stream.connection && stream.connection.connectionId;\n _this.emit(MultiParty_1.MULTI_PARTY_EVENTS.streamDestroyed, { meta: { event: JSON.stringify(event) } });\n _this.subscribers = filter_1.default(_this.subscribers, function (subscriber) { return subscriber.connectionId !== destroyedConnectionId; });\n };\n _this.connectionCreatedHandler = function (event) {\n trace.info('connectionCreatedHandler', event);\n var connection = event.connection;\n if (!_this.ownConnectionId || !connection) {\n return;\n }\n var clientRole = 'default'; //JSON.parse(connection.data).clientRole; //fixme\n _this.emit(MultiParty_1.MULTI_PARTY_EVENTS.connectionCreated, { meta: { clientRole: clientRole, event: JSON.stringify(event) } });\n };\n _this.connectionDestroyedHandler = function (event) {\n _this.session = null;\n trace.info('connectionDestroyedHandler', event);\n _this.emit(MultiParty_1.MULTI_PARTY_EVENTS.connectionDestroyed, { meta: { event: JSON.stringify(event) } });\n };\n _this.traceError = function (error) {\n trace.error(error);\n };\n return _this;\n }\n Object.defineProperty(OpentokMultiparty.prototype, \"ownConnectionId\", {\n get: function () {\n return this.session && this.session.connection && this.session.connection.connectionId;\n },\n enumerable: false,\n configurable: true\n });\n return OpentokMultiparty;\n}(MultiParty_1.MultiParty));\nexports.OpentokMultiparty = OpentokMultiparty;\n","import {maxParticipantsNumber, MULTI_PARTY_EVENTS, MultiParty, participateDomId} from './MultiParty';\nimport {CameraTypes} from '../MediaConstants';\nimport {getMediaTracer} from '../MediaUtils/MediaTracer';\nimport get from 'lodash/get';\nimport {ICredentials, ISessionSettings} from './Contracts';\nimport filter from 'lodash/filter';\nimport cloneDeep from 'lodash/cloneDeep';\nimport {MediaCapabilitiesHelper} from './MediaCapabilitiesHelper';\n\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst OT = require('@opentok/client');\nconst trace = getMediaTracer('Multiparty');\n\n// The preferred camera position to use for the video source\nenum OpentokFacingMode {\n USER = 'user',\n ENVIRONMENT = 'environment'\n}\n\nexport class OpentokMultiparty extends MultiParty {\n subscribers: Array<any> = [];\n session: any;\n currentPublisher: any;\n credentials: any;\n\n get ownConnectionId(): string | boolean {\n return this.session && this.session.connection && this.session.connection.connectionId;\n }\n\n connect = (credentials: ICredentials): void => {\n this.credentials = credentials;\n\n try {\n this.session = OT.initSession(credentials.apiKey, credentials.sessionId);\n } catch (err) {\n trace.error(JSON.stringify(err));\n this.emit(MULTI_PARTY_EVENTS.connectFailed, {meta: {err: JSON.stringify(err)}});\n\n return;\n }\n\n this.session.on('connectionCreated', this.connectionCreatedHandler);\n this.session.on('connectionDestroyed', this.connectionDestroyedHandler);\n this.session.on('streamCreated', this.streamCreatedHandler);\n this.session.on('streamDestroyed', this.streamDestroyedHandler);\n\n this.session.connect(this.credentials.token, async (error: any) => {\n if (error) {\n this.session.off();\n this.session = null;\n this.traceError(error);\n this.emit(MULTI_PARTY_EVENTS.connectFailed, {meta: {err: JSON.stringify(error)}});\n\n return;\n }\n\n if (this.settings.defaultCamera === CameraTypes.NONE && this.settings.startWithAudioMuted) {\n trace.info('camera is none, no need to create publisher');\n\n return;\n }\n\n await this.createPublisher(this.settings);\n });\n };\n\n disconnect = (): void => {\n try {\n trace.info('Disconnecting from session');\n\n if (this.session) {\n this.session.disconnect();\n\n trace.info('Disconnection from session completed');\n }\n } catch (err) {\n trace.error(JSON.stringify(err));\n }\n };\n\n couldStartPublishVideo = async (settings: ISessionSettings): Promise<boolean | Error> => {\n try {\n const mediaCapabilitiesHelper = await MediaCapabilitiesHelper.init();\n\n return (settings.defaultCamera !== CameraTypes.NONE)\n ? mediaCapabilitiesHelper.hasCamera()\n : false;\n\n } catch (err) {\n trace.error(JSON.stringify(err));\n throw err;\n }\n };\n\n couldStartPublishAudio = async (settings: ISessionSettings): Promise<boolean | Error> => {\n try {\n const mediaCapabilitiesHelper = await MediaCapabilitiesHelper.init();\n\n return !settings.startWithAudioMuted && mediaCapabilitiesHelper.hasMicrophone();\n } catch (err) {\n trace.error(JSON.stringify(err));\n throw err;\n }\n };\n\n createPublisher = async (settingsForPublisher: ISessionSettings): Promise<void> => {\n const settings = cloneDeep(settingsForPublisher);\n const couldStartPublishVideo = await this.couldStartPublishVideo(settings);\n const couldStartPublishAudio = await this.couldStartPublishAudio(settings);\n\n if (!couldStartPublishVideo && !couldStartPublishAudio) {\n // FIXME: use emitter\n trace.error('could not create a publisher, due to lack of media capabilities or settings');\n\n return;\n }\n\n if (!couldStartPublishVideo) {\n settings.defaultCamera = CameraTypes.NONE;\n }\n\n if (!couldStartPublishAudio) {\n settings.startWithAudioMuted = true;\n }\n\n if (!this.currentPublisher) {\n this.initPublisher(settings);\n this.session.publish(this.currentPublisher, this.traceError);\n }\n };\n\n publishAudio = async (value: boolean): Promise<void> => {\n const settings = cloneDeep(this.settings);\n\n settings.startWithAudioMuted = !value;\n\n if (value && !await this.couldStartPublishAudio(settings)) {\n trace.error('could not publish audio');\n\n return;\n }\n\n if (!this.currentPublisher) {\n this.createPublisher(settings);\n } else {\n this.currentPublisher.publishAudio(value);\n }\n };\n\n publishVideo = async (value: boolean): Promise<void> => {\n const settings = cloneDeep(this.settings);\n\n settings.defaultCamera = value ? this.settings.defaultCamera : CameraTypes.NONE;\n\n if (value && !await this.couldStartPublishVideo(settings)) {\n trace.error('could not publish video');\n\n return;\n }\n\n if (!this.currentPublisher) {\n this.createPublisher(settings);\n } else {\n this.currentPublisher.publishVideo(value);\n }\n };\n\n initPublisher = (settings: ISessionSettings) => {\n const properties = {\n insertMode: 'append',\n width: '200',\n height: '200',\n publishAudio: !settings.startWithAudioMuted,\n publishVideo: settings.defaultCamera !== CameraTypes.NONE,\n facingMode: settings.defaultCamera === CameraTypes.FRONT ? OpentokFacingMode.USER : OpentokFacingMode.ENVIRONMENT\n };\n\n this.currentPublisher = OT.initPublisher(`${participateDomId}1`, properties, this.traceError);\n\n if (!this.currentPublisher) {\n trace.error('failed to init publisher');\n } else {\n this.currentPublisher.on('videoElementCreated', (event: any) => {\n trace.info('videoElementCreated', event);\n });\n this.currentPublisher.on('streamDestroyed', (event: any) => {\n trace.info('Publisher stream destroyed', event);\n });\n this.currentPublisher.on('streamCreated', (event: any) => {\n trace.info('publisher stream created', event, get(this.currentPublisher, 'stream.hasAudio'));\n });\n }\n }\n\n streamCreatedHandler = (event: { stream: any }): void => {\n trace.info('streamCreatedHandler', event.stream);\n this.emit(MULTI_PARTY_EVENTS.streamCreated, event);\n\n const {stream} = event;\n const {connection} = stream || {connection: null};\n\n if (!this.ownConnectionId || !stream || connection.connectionId === this.ownConnectionId) {\n return;\n }\n\n if (this.subscribers.length >= maxParticipantsNumber - 1) {\n trace.info(`a new subscriber cannot be added, as the number of participants reached its limit: ${maxParticipantsNumber}`);\n } else {\n //fixme: use width and height passed in settings\n const properties = {\n insertMode: 'append',\n width: '200',\n height: '200'\n };\n\n const subscriber = this.session.subscribe(event.stream, `${participateDomId}${this.subscribers.length}`, properties, (err: any) => {\n this.traceError(err);\n\n subscriber.on('videoElementCreated', (event: any) => {\n trace.info('videoElementCreated', event);\n });\n });\n\n this.subscribers.push({\n subscriber,\n connectionId: connection.connectionId,\n clientRole: connection?.data?.clientRole ? JSON.parse(connection.data).clientRole : 'default' //fixme temp workaround for BE\n });\n }\n };\n\n streamDestroyedHandler = (event: any): void => {\n trace.info('streamDestroyedHandler', event);\n const {stream} = event;\n const destroyedConnectionId = stream && stream.connection && stream.connection.connectionId;\n\n this.emit(MULTI_PARTY_EVENTS.streamDestroyed, {meta: {event: JSON.stringify(event)}});\n this.subscribers = filter(this.subscribers, (subscriber) => subscriber.connectionId !== destroyedConnectionId);\n };\n\n connectionCreatedHandler = (event: any): void => {\n trace.info('connectionCreatedHandler', event);\n const {connection} = event;\n\n if (!this.ownConnectionId || !connection) {\n return;\n }\n\n const clientRole = 'default'; //JSON.parse(connection.data).clientRole; //fixme\n\n this.emit(MULTI_PARTY_EVENTS.connectionCreated, {meta: {clientRole, event: JSON.stringify(event)}});\n\n };\n\n connectionDestroyedHandler = (event: any): void => {\n this.session = null;\n trace.info('connectionDestroyedHandler', event);\n this.emit(MULTI_PARTY_EVENTS.connectionDestroyed, {meta: {event: JSON.stringify(event)}});\n };\n\n traceError = (error: any): void => {\n trace.error(error);\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["MultiParty/OpentokMultiparty.js","../src/MultiParty/OpentokMultiparty.ts"],"names":["__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__","constructor","create","__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","apply","__generator","body","_","label","sent","t","trys","ops","f","y","g","verb","Symbol","iterator","n","v","op","TypeError","pop","length","push","__importDefault","mod","__esModule","defineProperty","exports","OpentokMultiparty","MultiParty_1","require","MediaConstants_1","MediaTracer_1","get_1","filter_1","cloneDeep_1","MediaCapabilitiesHelper_1","OT","trace","getMediaTracer","OpentokFacingMode","_super","_this","arguments","subscribers","connect","credentials","session","initSession","apiKey","sessionId","err","error","JSON","stringify","emit","MULTI_PARTY_EVENTS","connectFailed","meta","on","connectionCreatedHandler","connectionDestroyedHandler","streamCreatedHandler","streamDestroyedHandler","token","_a","off","traceError","settings","defaultCamera","CameraTypes","NONE","startWithAudioMuted","info","createPublisher","disconnect","couldStartPublishVideo","mediaCapabilitiesHelper","err_1","MediaCapabilitiesHelper","init","hasCamera","couldStartPublishAudio","err_2","hasMicrophone","settingsForPublisher","default","currentPublisher","initPublisher","publish","publishAudio","_b","publishVideo","properties","insertMode","width","height","facingMode","FRONT","USER","ENVIRONMENT","participateDomId","event","stream","streamCreated","connection","ownConnectionId","connectionId","maxParticipantsNumber","subscriber_1","subscribe","subscriber","clientRole","data","parse","destroyedConnectionId","streamDestroyed","connectionCreated","connectionDestroyed","get","enumerable","configurable","MultiParty"],"mappings":"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","file":"OpentokMultiparty.js","sourcesContent":["\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n 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;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OpentokMultiparty = void 0;\nvar MultiParty_1 = require(\"./MultiParty\");\nvar MediaConstants_1 = require(\"../MediaConstants\");\nvar MediaTracer_1 = require(\"../MediaUtils/MediaTracer\");\nvar get_1 = __importDefault(require(\"lodash/get\"));\nvar filter_1 = __importDefault(require(\"lodash/filter\"));\nvar cloneDeep_1 = __importDefault(require(\"lodash/cloneDeep\"));\nvar MediaCapabilitiesHelper_1 = require(\"./MediaCapabilitiesHelper\");\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nvar OT = require('@opentok/client');\nvar trace = MediaTracer_1.getMediaTracer('Multiparty');\n// The preferred camera position to use for the video source\nvar OpentokFacingMode;\n(function (OpentokFacingMode) {\n OpentokFacingMode[\"USER\"] = \"user\";\n OpentokFacingMode[\"ENVIRONMENT\"] = \"environment\";\n})(OpentokFacingMode || (OpentokFacingMode = {}));\nvar OpentokMultiparty = /** @class */ (function (_super) {\n __extends(OpentokMultiparty, _super);\n function OpentokMultiparty() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.subscribers = [];\n _this.connect = function (credentials) {\n _this.credentials = credentials;\n try {\n _this.session = OT.initSession(credentials.apiKey, credentials.sessionId);\n }\n catch (err) {\n trace.error(JSON.stringify(err));\n _this.emit(MultiParty_1.MULTI_PARTY_EVENTS.connectFailed, { meta: { err: JSON.stringify(err) } });\n return;\n }\n _this.session.on('connectionCreated', _this.connectionCreatedHandler);\n _this.session.on('connectionDestroyed', _this.connectionDestroyedHandler);\n _this.session.on('streamCreated', _this.streamCreatedHandler);\n _this.session.on('streamDestroyed', _this.streamDestroyedHandler);\n _this.session.connect(_this.credentials.token, function (error) { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (error) {\n this.session.off();\n this.session = null;\n this.traceError(error);\n this.emit(MultiParty_1.MULTI_PARTY_EVENTS.connectFailed, { meta: { err: JSON.stringify(error) } });\n return [2 /*return*/];\n }\n if (this.settings.defaultCamera === MediaConstants_1.CameraTypes.NONE && this.settings.startWithAudioMuted) {\n trace.info('camera is none, no need to create publisher');\n return [2 /*return*/];\n }\n return [4 /*yield*/, this.createPublisher(this.settings)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n }); });\n };\n _this.disconnect = function () {\n try {\n trace.info('Disconnecting from session');\n if (_this.session) {\n _this.session.disconnect();\n trace.info('Disconnection from session completed');\n }\n }\n catch (err) {\n trace.error(JSON.stringify(err));\n }\n };\n _this.couldStartPublishVideo = function (settings) { return __awaiter(_this, void 0, void 0, function () {\n var mediaCapabilitiesHelper, err_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n return [4 /*yield*/, MediaCapabilitiesHelper_1.MediaCapabilitiesHelper.init()];\n case 1:\n mediaCapabilitiesHelper = _a.sent();\n return [2 /*return*/, (settings.defaultCamera !== MediaConstants_1.CameraTypes.NONE)\n ? mediaCapabilitiesHelper.hasCamera()\n : false];\n case 2:\n err_1 = _a.sent();\n trace.error(JSON.stringify(err_1));\n throw err_1;\n case 3: return [2 /*return*/];\n }\n });\n }); };\n _this.couldStartPublishAudio = function (settings) { return __awaiter(_this, void 0, void 0, function () {\n var mediaCapabilitiesHelper, err_2;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n return [4 /*yield*/, MediaCapabilitiesHelper_1.MediaCapabilitiesHelper.init()];\n case 1:\n mediaCapabilitiesHelper = _a.sent();\n return [2 /*return*/, !settings.startWithAudioMuted && mediaCapabilitiesHelper.hasMicrophone()];\n case 2:\n err_2 = _a.sent();\n trace.error(JSON.stringify(err_2));\n throw err_2;\n case 3: return [2 /*return*/];\n }\n });\n }); };\n _this.createPublisher = function (settingsForPublisher) { return __awaiter(_this, void 0, void 0, function () {\n var settings, couldStartPublishVideo, couldStartPublishAudio;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n settings = cloneDeep_1.default(settingsForPublisher);\n return [4 /*yield*/, this.couldStartPublishVideo(settings)];\n case 1:\n couldStartPublishVideo = _a.sent();\n return [4 /*yield*/, this.couldStartPublishAudio(settings)];\n case 2:\n couldStartPublishAudio = _a.sent();\n if (!couldStartPublishVideo && !couldStartPublishAudio) {\n // FIXME: use emitter\n trace.error('could not create a publisher, due to lack of media capabilities or settings');\n return [2 /*return*/];\n }\n if (!couldStartPublishVideo) {\n settings.defaultCamera = MediaConstants_1.CameraTypes.NONE;\n }\n if (!couldStartPublishAudio) {\n settings.startWithAudioMuted = true;\n }\n if (!this.currentPublisher) {\n this.initPublisher(settings);\n this.session.publish(this.currentPublisher, this.traceError);\n }\n return [2 /*return*/];\n }\n });\n }); };\n _this.publishAudio = function (value) { return __awaiter(_this, void 0, void 0, function () {\n var settings, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n settings = cloneDeep_1.default(this.settings);\n settings.startWithAudioMuted = !value;\n _a = value;\n if (!_a) return [3 /*break*/, 2];\n return [4 /*yield*/, this.couldStartPublishAudio(settings)];\n case 1:\n _a = !(_b.sent());\n _b.label = 2;\n case 2:\n if (_a) {\n trace.error('could not publish audio');\n return [2 /*return*/];\n }\n if (!this.currentPublisher) {\n this.createPublisher(settings);\n }\n else {\n this.currentPublisher.publishAudio(value);\n }\n return [2 /*return*/];\n }\n });\n }); };\n _this.publishVideo = function (value) { return __awaiter(_this, void 0, void 0, function () {\n var settings, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n settings = cloneDeep_1.default(this.settings);\n settings.defaultCamera = value ? this.settings.defaultCamera : MediaConstants_1.CameraTypes.NONE;\n _a = value;\n if (!_a) return [3 /*break*/, 2];\n return [4 /*yield*/, this.couldStartPublishVideo(settings)];\n case 1:\n _a = !(_b.sent());\n _b.label = 2;\n case 2:\n if (_a) {\n trace.error('could not publish video');\n return [2 /*return*/];\n }\n if (!this.currentPublisher) {\n this.createPublisher(settings);\n }\n else {\n this.currentPublisher.publishVideo(value);\n }\n return [2 /*return*/];\n }\n });\n }); };\n _this.initPublisher = function (settings) {\n var properties = {\n insertMode: 'append',\n width: '200',\n height: '200',\n publishAudio: !settings.startWithAudioMuted,\n publishVideo: settings.defaultCamera !== MediaConstants_1.CameraTypes.NONE,\n facingMode: settings.defaultCamera === MediaConstants_1.CameraTypes.FRONT ? OpentokFacingMode.USER : OpentokFacingMode.ENVIRONMENT\n };\n _this.currentPublisher = OT.initPublisher(MultiParty_1.participateDomId + \"1\", properties, _this.traceError);\n if (!_this.currentPublisher) {\n trace.error('failed to init publisher');\n }\n else {\n _this.currentPublisher.on('videoElementCreated', function (event) {\n trace.info('videoElementCreated', event);\n });\n _this.currentPublisher.on('streamDestroyed', function (event) {\n trace.info('Publisher stream destroyed', event);\n });\n _this.currentPublisher.on('streamCreated', function (event) {\n trace.info('publisher stream created', event, get_1.default(_this.currentPublisher, 'stream.hasAudio'));\n });\n }\n };\n _this.streamCreatedHandler = function (event) {\n var _a;\n trace.info('streamCreatedHandler', event.stream);\n _this.emit(MultiParty_1.MULTI_PARTY_EVENTS.streamCreated, event);\n var stream = event.stream;\n var connection = (stream || { connection: null }).connection;\n if (!_this.ownConnectionId || !stream || connection.connectionId === _this.ownConnectionId) {\n return;\n }\n if (_this.subscribers.length >= MultiParty_1.maxParticipantsNumber - 1) {\n trace.info(\"a new subscriber cannot be added, as the number of participants reached its limit: \" + MultiParty_1.maxParticipantsNumber);\n }\n else {\n //fixme: use width and height passed in settings\n var properties = {\n insertMode: 'append',\n width: '200',\n height: '200'\n };\n var subscriber_1 = _this.session.subscribe(event.stream, \"\" + MultiParty_1.participateDomId + _this.subscribers.length, properties, function (err) {\n _this.traceError(err);\n subscriber_1.on('videoElementCreated', function (event) {\n trace.info('videoElementCreated', event);\n });\n });\n _this.subscribers.push({\n subscriber: subscriber_1,\n connectionId: connection.connectionId,\n clientRole: ((_a = connection === null || connection === void 0 ? void 0 : connection.data) === null || _a === void 0 ? void 0 : _a.clientRole) ? JSON.parse(connection.data).clientRole : 'default' //fixme temp workaround for BE\n });\n }\n };\n _this.streamDestroyedHandler = function (event) {\n trace.info('streamDestroyedHandler', event);\n var stream = event.stream;\n var destroyedConnectionId = stream && stream.connection && stream.connection.connectionId;\n _this.emit(MultiParty_1.MULTI_PARTY_EVENTS.streamDestroyed, { meta: { event: JSON.stringify(event) } });\n _this.subscribers = filter_1.default(_this.subscribers, function (subscriber) { return subscriber.connectionId !== destroyedConnectionId; });\n };\n _this.connectionCreatedHandler = function (event) {\n trace.info('connectionCreatedHandler', event);\n var connection = event.connection;\n if (!_this.ownConnectionId || !connection) {\n return;\n }\n var clientRole = 'default'; //JSON.parse(connection.data).clientRole; //fixme\n _this.emit(MultiParty_1.MULTI_PARTY_EVENTS.connectionCreated, { meta: { clientRole: clientRole, event: JSON.stringify(event) } });\n };\n _this.connectionDestroyedHandler = function (event) {\n var connection = event.connection;\n if (!_this.ownConnectionId || !connection || connection.connectionId !== _this.ownConnectionId) {\n return;\n }\n _this.session = null;\n trace.info('connectionDestroyedHandler', event);\n _this.emit(MultiParty_1.MULTI_PARTY_EVENTS.connectionDestroyed, { meta: { event: JSON.stringify(event) } });\n };\n _this.traceError = function (error) {\n trace.error(error);\n };\n return _this;\n }\n Object.defineProperty(OpentokMultiparty.prototype, \"ownConnectionId\", {\n get: function () {\n return this.session && this.session.connection && this.session.connection.connectionId;\n },\n enumerable: false,\n configurable: true\n });\n return OpentokMultiparty;\n}(MultiParty_1.MultiParty));\nexports.OpentokMultiparty = OpentokMultiparty;\n","import {maxParticipantsNumber, MULTI_PARTY_EVENTS, MultiParty, participateDomId} from './MultiParty';\nimport {CameraTypes} from '../MediaConstants';\nimport {getMediaTracer} from '../MediaUtils/MediaTracer';\nimport get from 'lodash/get';\nimport {ICredentials, ISessionSettings} from './Contracts';\nimport filter from 'lodash/filter';\nimport cloneDeep from 'lodash/cloneDeep';\nimport {MediaCapabilitiesHelper} from './MediaCapabilitiesHelper';\n\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst OT = require('@opentok/client');\nconst trace = getMediaTracer('Multiparty');\n\n// The preferred camera position to use for the video source\nenum OpentokFacingMode {\n USER = 'user',\n ENVIRONMENT = 'environment'\n}\n\nexport class OpentokMultiparty extends MultiParty {\n subscribers: Array<any> = [];\n session: any;\n currentPublisher: any;\n credentials: any;\n\n get ownConnectionId(): string | boolean {\n return this.session && this.session.connection && this.session.connection.connectionId;\n }\n\n connect = (credentials: ICredentials): void => {\n this.credentials = credentials;\n\n try {\n this.session = OT.initSession(credentials.apiKey, credentials.sessionId);\n } catch (err) {\n trace.error(JSON.stringify(err));\n this.emit(MULTI_PARTY_EVENTS.connectFailed, {meta: {err: JSON.stringify(err)}});\n\n return;\n }\n\n this.session.on('connectionCreated', this.connectionCreatedHandler);\n this.session.on('connectionDestroyed', this.connectionDestroyedHandler);\n this.session.on('streamCreated', this.streamCreatedHandler);\n this.session.on('streamDestroyed', this.streamDestroyedHandler);\n\n this.session.connect(this.credentials.token, async (error: any) => {\n if (error) {\n this.session.off();\n this.session = null;\n this.traceError(error);\n this.emit(MULTI_PARTY_EVENTS.connectFailed, {meta: {err: JSON.stringify(error)}});\n\n return;\n }\n\n if (this.settings.defaultCamera === CameraTypes.NONE && this.settings.startWithAudioMuted) {\n trace.info('camera is none, no need to create publisher');\n\n return;\n }\n\n await this.createPublisher(this.settings);\n });\n };\n\n disconnect = (): void => {\n try {\n trace.info('Disconnecting from session');\n\n if (this.session) {\n this.session.disconnect();\n\n trace.info('Disconnection from session completed');\n }\n } catch (err) {\n trace.error(JSON.stringify(err));\n }\n };\n\n couldStartPublishVideo = async (settings: ISessionSettings): Promise<boolean | Error> => {\n try {\n const mediaCapabilitiesHelper = await MediaCapabilitiesHelper.init();\n\n return (settings.defaultCamera !== CameraTypes.NONE)\n ? mediaCapabilitiesHelper.hasCamera()\n : false;\n\n } catch (err) {\n trace.error(JSON.stringify(err));\n throw err;\n }\n };\n\n couldStartPublishAudio = async (settings: ISessionSettings): Promise<boolean | Error> => {\n try {\n const mediaCapabilitiesHelper = await MediaCapabilitiesHelper.init();\n\n return !settings.startWithAudioMuted && mediaCapabilitiesHelper.hasMicrophone();\n } catch (err) {\n trace.error(JSON.stringify(err));\n throw err;\n }\n };\n\n createPublisher = async (settingsForPublisher: ISessionSettings): Promise<void> => {\n const settings = cloneDeep(settingsForPublisher);\n const couldStartPublishVideo = await this.couldStartPublishVideo(settings);\n const couldStartPublishAudio = await this.couldStartPublishAudio(settings);\n\n if (!couldStartPublishVideo && !couldStartPublishAudio) {\n // FIXME: use emitter\n trace.error('could not create a publisher, due to lack of media capabilities or settings');\n\n return;\n }\n\n if (!couldStartPublishVideo) {\n settings.defaultCamera = CameraTypes.NONE;\n }\n\n if (!couldStartPublishAudio) {\n settings.startWithAudioMuted = true;\n }\n\n if (!this.currentPublisher) {\n this.initPublisher(settings);\n this.session.publish(this.currentPublisher, this.traceError);\n }\n };\n\n publishAudio = async (value: boolean): Promise<void> => {\n const settings = cloneDeep(this.settings);\n\n settings.startWithAudioMuted = !value;\n\n if (value && !await this.couldStartPublishAudio(settings)) {\n trace.error('could not publish audio');\n\n return;\n }\n\n if (!this.currentPublisher) {\n this.createPublisher(settings);\n } else {\n this.currentPublisher.publishAudio(value);\n }\n };\n\n publishVideo = async (value: boolean): Promise<void> => {\n const settings = cloneDeep(this.settings);\n\n settings.defaultCamera = value ? this.settings.defaultCamera : CameraTypes.NONE;\n\n if (value && !await this.couldStartPublishVideo(settings)) {\n trace.error('could not publish video');\n\n return;\n }\n\n if (!this.currentPublisher) {\n this.createPublisher(settings);\n } else {\n this.currentPublisher.publishVideo(value);\n }\n };\n\n initPublisher = (settings: ISessionSettings) => {\n const properties = {\n insertMode: 'append',\n width: '200',\n height: '200',\n publishAudio: !settings.startWithAudioMuted,\n publishVideo: settings.defaultCamera !== CameraTypes.NONE,\n facingMode: settings.defaultCamera === CameraTypes.FRONT ? OpentokFacingMode.USER : OpentokFacingMode.ENVIRONMENT\n };\n\n this.currentPublisher = OT.initPublisher(`${participateDomId}1`, properties, this.traceError);\n\n if (!this.currentPublisher) {\n trace.error('failed to init publisher');\n } else {\n this.currentPublisher.on('videoElementCreated', (event: any) => {\n trace.info('videoElementCreated', event);\n });\n this.currentPublisher.on('streamDestroyed', (event: any) => {\n trace.info('Publisher stream destroyed', event);\n });\n this.currentPublisher.on('streamCreated', (event: any) => {\n trace.info('publisher stream created', event, get(this.currentPublisher, 'stream.hasAudio'));\n });\n }\n }\n\n streamCreatedHandler = (event: { stream: any }): void => {\n trace.info('streamCreatedHandler', event.stream);\n this.emit(MULTI_PARTY_EVENTS.streamCreated, event);\n\n const {stream} = event;\n const {connection} = stream || {connection: null};\n\n if (!this.ownConnectionId || !stream || connection.connectionId === this.ownConnectionId) {\n return;\n }\n\n if (this.subscribers.length >= maxParticipantsNumber - 1) {\n trace.info(`a new subscriber cannot be added, as the number of participants reached its limit: ${maxParticipantsNumber}`);\n } else {\n //fixme: use width and height passed in settings\n const properties = {\n insertMode: 'append',\n width: '200',\n height: '200'\n };\n\n const subscriber = this.session.subscribe(event.stream, `${participateDomId}${this.subscribers.length}`, properties, (err: any) => {\n this.traceError(err);\n\n subscriber.on('videoElementCreated', (event: any) => {\n trace.info('videoElementCreated', event);\n });\n });\n\n this.subscribers.push({\n subscriber,\n connectionId: connection.connectionId,\n clientRole: connection?.data?.clientRole ? JSON.parse(connection.data).clientRole : 'default' //fixme temp workaround for BE\n });\n }\n };\n\n streamDestroyedHandler = (event: any): void => {\n trace.info('streamDestroyedHandler', event);\n const {stream} = event;\n const destroyedConnectionId = stream && stream.connection && stream.connection.connectionId;\n\n this.emit(MULTI_PARTY_EVENTS.streamDestroyed, {meta: {event: JSON.stringify(event)}});\n this.subscribers = filter(this.subscribers, (subscriber) => subscriber.connectionId !== destroyedConnectionId);\n };\n\n connectionCreatedHandler = (event: any): void => {\n trace.info('connectionCreatedHandler', event);\n const {connection} = event;\n\n if (!this.ownConnectionId || !connection) {\n return;\n }\n\n const clientRole = 'default'; //JSON.parse(connection.data).clientRole; //fixme\n\n this.emit(MULTI_PARTY_EVENTS.connectionCreated, {meta: {clientRole, event: JSON.stringify(event)}});\n\n };\n\n connectionDestroyedHandler = (event: any): void => {\n const {connection} = event;\n\n if (!this.ownConnectionId || !connection || connection.connectionId !== this.ownConnectionId) {\n return;\n }\n\n this.session = null;\n trace.info('connectionDestroyedHandler', event);\n this.emit(MULTI_PARTY_EVENTS.connectionDestroyed, {meta: {event: JSON.stringify(event)}});\n };\n\n traceError = (error: any): void => {\n trace.error(error);\n };\n}\n"]}
|