@techsee/techsee-media-service 999.19.3-alphasap → 999.19.6-nodejs20
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 +27 -28
- package/lib/LocalStreamManager.d.ts +1 -0
- package/lib/LocalStreamManager.d.ts.map +1 -1
- package/lib/LocalStreamManager.js +82 -84
- package/lib/LocalStreamManager.js.map +1 -1
- package/lib/MediaConstants.d.ts +20 -3
- package/lib/MediaConstants.d.ts.map +1 -1
- package/lib/MediaConstants.js +31 -13
- package/lib/MediaConstants.js.map +1 -1
- package/lib/MediaContracts.d.ts +7 -1
- package/lib/MediaContracts.d.ts.map +1 -1
- package/lib/MediaContracts.js +1 -4
- package/lib/MediaContracts.js.map +1 -1
- package/lib/MediaPublisher.d.ts +1 -0
- package/lib/MediaPublisher.d.ts.map +1 -1
- package/lib/MediaPublisher.js +7 -10
- package/lib/MediaPublisher.js.map +1 -1
- package/lib/MediaServiceBase.d.ts +1 -0
- package/lib/MediaServiceBase.d.ts.map +1 -1
- package/lib/MediaServiceBase.js +169 -198
- package/lib/MediaServiceBase.js.map +1 -1
- package/lib/MediaSession/MediaServer.d.ts +1 -0
- package/lib/MediaSession/MediaServer.d.ts.map +1 -1
- package/lib/MediaSession/MediaServer.js +62 -74
- package/lib/MediaSession/MediaServer.js.map +1 -1
- package/lib/MediaSession/MediaSessionBase.d.ts +1 -0
- package/lib/MediaSession/MediaSessionBase.d.ts.map +1 -1
- package/lib/MediaSession/MediaSessionBase.js +19 -23
- package/lib/MediaSession/MediaSessionBase.js.map +1 -1
- package/lib/MediaSession/SessionOpentok.d.ts +1 -0
- package/lib/MediaSession/SessionOpentok.d.ts.map +1 -1
- package/lib/MediaSession/SessionOpentok.js +51 -80
- package/lib/MediaSession/SessionOpentok.js.map +1 -1
- package/lib/MediaSession/SessionTurn.d.ts +1 -0
- package/lib/MediaSession/SessionTurn.d.ts.map +1 -1
- package/lib/MediaSession/SessionTurn.js +109 -151
- package/lib/MediaSession/SessionTurn.js.map +1 -1
- package/lib/MediaSession/TurnConstants.d.ts +1 -0
- package/lib/MediaSession/TurnConstants.d.ts.map +1 -1
- package/lib/MediaSession/TurnConstants.js +1 -16
- package/lib/MediaSession/TurnConstants.js.map +1 -1
- package/lib/MediaSubscriber.d.ts +1 -0
- package/lib/MediaSubscriber.d.ts.map +1 -1
- package/lib/MediaSubscriber.js +37 -43
- package/lib/MediaSubscriber.js.map +1 -1
- package/lib/MediaUtils/Compatibility.d.ts +3 -0
- package/lib/MediaUtils/Compatibility.d.ts.map +1 -1
- package/lib/MediaUtils/Compatibility.js +76 -34
- package/lib/MediaUtils/Compatibility.js.map +1 -1
- package/lib/MediaUtils/MediaDomUtils.d.ts +4 -2
- package/lib/MediaUtils/MediaDomUtils.d.ts.map +1 -1
- package/lib/MediaUtils/MediaDomUtils.js +64 -62
- package/lib/MediaUtils/MediaDomUtils.js.map +1 -1
- package/lib/MediaUtils/MediaTracer.d.ts +1 -0
- package/lib/MediaUtils/MediaTracer.d.ts.map +1 -1
- package/lib/MediaUtils/MediaTracer.js +2 -5
- package/lib/MediaUtils/MediaTracer.js.map +1 -1
- package/lib/MediaUtils/index.d.ts +2 -0
- package/lib/MediaUtils/index.d.ts.map +1 -0
- package/lib/MediaUtils/index.js +6 -0
- package/lib/MediaUtils/index.js.map +1 -0
- package/lib/MultiParty/DetectWebRtcService.d.ts +17 -14
- package/lib/MultiParty/DetectWebRtcService.d.ts.map +1 -1
- package/lib/MultiParty/DetectWebRtcService.js +98 -54
- package/lib/MultiParty/DetectWebRtcService.js.map +1 -1
- package/lib/MultiParty/MediaCapabilitiesService.d.ts +18 -0
- package/lib/MultiParty/MediaCapabilitiesService.d.ts.map +1 -0
- package/lib/MultiParty/MediaCapabilitiesService.js +158 -0
- package/lib/MultiParty/MediaCapabilitiesService.js.map +1 -0
- package/lib/MultiParty/MediaCapabilitiesUtils.d.ts +6 -0
- package/lib/MultiParty/MediaCapabilitiesUtils.d.ts.map +1 -0
- package/lib/MultiParty/MediaCapabilitiesUtils.js +123 -0
- package/lib/MultiParty/MediaCapabilitiesUtils.js.map +1 -0
- package/lib/MultiParty/MediaTracer.d.ts +4 -0
- package/lib/MultiParty/MediaTracer.d.ts.map +1 -0
- package/lib/MultiParty/MediaTracer.js +10 -0
- package/lib/MultiParty/MediaTracer.js.map +1 -0
- package/lib/MultiParty/MultiPartyService.d.ts +49 -0
- package/lib/MultiParty/MultiPartyService.d.ts.map +1 -0
- package/lib/MultiParty/MultiPartyService.js +30 -0
- package/lib/MultiParty/MultiPartyService.js.map +1 -0
- package/lib/MultiParty/MultiPartyServiceFactory.d.ts +4 -0
- package/lib/MultiParty/MultiPartyServiceFactory.d.ts.map +1 -0
- package/lib/MultiParty/MultiPartyServiceFactory.js +13 -0
- package/lib/MultiParty/MultiPartyServiceFactory.js.map +1 -0
- package/lib/MultiParty/MultipartyServiceEventTypes.d.ts +89 -0
- package/lib/MultiParty/MultipartyServiceEventTypes.d.ts.map +1 -0
- package/lib/MultiParty/MultipartyServiceEventTypes.js +16 -0
- package/lib/MultiParty/MultipartyServiceEventTypes.js.map +1 -0
- package/lib/MultiParty/index.d.ts +7 -0
- package/lib/MultiParty/index.d.ts.map +1 -0
- package/lib/MultiParty/index.js +25 -0
- package/lib/MultiParty/index.js.map +1 -0
- package/lib/MultiParty/opentok/OpentokMultiPartyService.d.ts +38 -0
- package/lib/MultiParty/opentok/OpentokMultiPartyService.d.ts.map +1 -0
- package/lib/MultiParty/opentok/OpentokMultiPartyService.js +492 -0
- package/lib/MultiParty/opentok/OpentokMultiPartyService.js.map +1 -0
- package/lib/MultiParty/opentok/OpentokPublisher.d.ts +34 -0
- package/lib/MultiParty/opentok/OpentokPublisher.d.ts.map +1 -0
- package/lib/MultiParty/opentok/OpentokPublisher.js +121 -0
- package/lib/MultiParty/opentok/OpentokPublisher.js.map +1 -0
- package/lib/MultiParty/opentok/OpentokPublisherEventMapper.d.ts +20 -0
- package/lib/MultiParty/opentok/OpentokPublisherEventMapper.d.ts.map +1 -0
- package/lib/MultiParty/opentok/OpentokPublisherEventMapper.js +49 -0
- package/lib/MultiParty/opentok/OpentokPublisherEventMapper.js.map +1 -0
- package/lib/MultiParty/opentok/OpentokScreenPublisher.d.ts +6 -0
- package/lib/MultiParty/opentok/OpentokScreenPublisher.d.ts.map +1 -0
- package/lib/MultiParty/opentok/OpentokScreenPublisher.js +48 -0
- package/lib/MultiParty/opentok/OpentokScreenPublisher.js.map +1 -0
- package/lib/MultiParty/opentok/OpentokSubscriber.d.ts +2 -0
- package/lib/MultiParty/opentok/OpentokSubscriber.d.ts.map +1 -0
- package/lib/MultiParty/opentok/OpentokSubscriber.js +26 -0
- package/lib/MultiParty/opentok/OpentokSubscriber.js.map +1 -0
- package/lib/MultiParty/opentok/OpentokVideoPublisher.d.ts +19 -0
- package/lib/MultiParty/opentok/OpentokVideoPublisher.d.ts.map +1 -0
- package/lib/MultiParty/opentok/OpentokVideoPublisher.js +182 -0
- package/lib/MultiParty/opentok/OpentokVideoPublisher.js.map +1 -0
- package/lib/MultiParty/opentok/trace.d.ts +3 -0
- package/lib/MultiParty/opentok/trace.d.ts.map +1 -0
- package/lib/MultiParty/opentok/trace.js +18 -0
- package/lib/MultiParty/opentok/trace.js.map +1 -0
- package/lib/MultiParty/opentok.d.ts +463 -0
- package/lib/MultiParty/types.d.ts +33 -0
- package/lib/MultiParty/types.d.ts.map +1 -0
- package/lib/MultiParty/types.js +3 -0
- package/lib/MultiParty/types.js.map +1 -0
- package/lib/MultiParty/utils.d.ts +10 -0
- package/lib/MultiParty/utils.d.ts.map +1 -0
- package/lib/MultiParty/utils.js +17 -0
- package/lib/MultiParty/utils.js.map +1 -0
- package/lib/TechseeMediaStream.d.ts +1 -0
- package/lib/TechseeMediaStream.d.ts.map +1 -1
- package/lib/TechseeMediaStream.js +9 -12
- package/lib/TechseeMediaStream.js.map +1 -1
- package/lib/qos/raw-qos.d.ts +29 -0
- package/lib/qos/raw-qos.d.ts.map +1 -0
- package/lib/qos/raw-qos.js +84 -145
- package/lib/qos/raw-qos.js.map +1 -1
- package/lib/webrtc-ie-shim.d.ts +4 -0
- package/lib/webrtc-ie-shim.d.ts.map +1 -0
- package/lib/webrtc-ie-shim.js +1896 -2950
- package/lib/webrtc-ie-shim.js.map +1 -1
- package/package.json +66 -60
- package/lib/MultiParty/Contracts.d.ts +0 -11
- package/lib/MultiParty/Contracts.d.ts.map +0 -1
- package/lib/MultiParty/Contracts.js +0 -6
- package/lib/MultiParty/Contracts.js.map +0 -1
- package/lib/MultiParty/MediaCapabilitiesHelper.d.ts +0 -12
- package/lib/MultiParty/MediaCapabilitiesHelper.d.ts.map +0 -1
- package/lib/MultiParty/MediaCapabilitiesHelper.js +0 -167
- package/lib/MultiParty/MediaCapabilitiesHelper.js.map +0 -1
- package/lib/MultiParty/MultiParty.d.ts +0 -21
- package/lib/MultiParty/MultiParty.d.ts.map +0 -1
- package/lib/MultiParty/MultiParty.js +0 -155
- package/lib/MultiParty/MultiParty.js.map +0 -1
- package/lib/MultiParty/MultipartyFactory.d.ts +0 -2
- package/lib/MultiParty/MultipartyFactory.d.ts.map +0 -1
- package/lib/MultiParty/MultipartyFactory.js +0 -15
- package/lib/MultiParty/MultipartyFactory.js.map +0 -1
- package/lib/MultiParty/OpentokMultiparty.d.ts +0 -24
- package/lib/MultiParty/OpentokMultiparty.d.ts.map +0 -1
- package/lib/MultiParty/OpentokMultiparty.js +0 -408
- package/lib/MultiParty/OpentokMultiparty.js.map +0 -1
- package/lib/oldCode/constants.js +0 -20
- package/lib/oldCode/constants.js.map +0 -1
- package/lib/oldCode/event-emitter.js +0 -39
- package/lib/oldCode/event-emitter.js.map +0 -1
- package/lib/oldCode/index.js +0 -64
- package/lib/oldCode/index.js.map +0 -1
- package/lib/oldCode/opentok/session.js +0 -310
- package/lib/oldCode/opentok/session.js.map +0 -1
- package/lib/oldCode/opentok/stream.js +0 -310
- package/lib/oldCode/opentok/stream.js.map +0 -1
- package/lib/oldCode/publisher.js +0 -143
- package/lib/oldCode/publisher.js.map +0 -1
- package/lib/oldCode/service.js +0 -395
- package/lib/oldCode/service.js.map +0 -1
- package/lib/oldCode/session.js +0 -110
- package/lib/oldCode/session.js.map +0 -1
- package/lib/oldCode/stream.js +0 -195
- package/lib/oldCode/stream.js.map +0 -1
- package/lib/oldCode/subscriber.js +0 -90
- package/lib/oldCode/subscriber.js.map +0 -1
- package/lib/oldCode/tracer.d.ts +0 -36
- package/lib/oldCode/tracer.d.ts.map +0 -1
- package/lib/oldCode/tracer.js +0 -161
- package/lib/oldCode/tracer.js.map +0 -1
- package/lib/oldCode/utils/ImageFixer.d.ts +0 -1
- package/lib/oldCode/utils/ImageFixer.d.ts.map +0 -1
- package/lib/oldCode/utils/ImageFixer.js +0 -59
- package/lib/oldCode/utils/ImageFixer.js.map +0 -1
- package/lib/oldCode/webrtc/constants.js +0 -114
- package/lib/oldCode/webrtc/constants.js.map +0 -1
- package/lib/oldCode/webrtc/helper.js +0 -173
- package/lib/oldCode/webrtc/helper.js.map +0 -1
- package/lib/oldCode/webrtc/session-kms.js +0 -558
- package/lib/oldCode/webrtc/session-kms.js.map +0 -1
- package/lib/oldCode/webrtc/session-loopback.js +0 -336
- package/lib/oldCode/webrtc/session-loopback.js.map +0 -1
- package/lib/oldCode/webrtc/session-turn.js +0 -880
- package/lib/oldCode/webrtc/session-turn.js.map +0 -1
- package/lib/oldCode/webrtc/session-turn.v2.js +0 -583
- package/lib/oldCode/webrtc/session-turn.v2.js.map +0 -1
- package/lib/oldCode/webrtc/session.js +0 -52
- package/lib/oldCode/webrtc/session.js.map +0 -1
- package/lib/oldCode/webrtc/stream.js +0 -674
- package/lib/oldCode/webrtc/stream.js.map +0 -1
- package/lib/oldCode/webrtc/temasys/adapter-loader.js +0 -12
- package/lib/oldCode/webrtc/temasys/adapter-loader.js.map +0 -1
- package/lib/oldCode/webrtc/temasys/adapter.js +0 -5861
- package/lib/oldCode/webrtc/temasys/adapter.js.map +0 -1
- package/lib/oldCode/webrtc/webrtc-ie-shim.js +0 -3007
- package/lib/oldCode/webrtc/webrtc-ie-shim.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/MultiParty/MultipartyFactory.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,gBAAgB,EAAC,MAAM,aAAa,CAAC;AAE7C,eAAO,MAAM,gBAAgB,aAAc,gBAAgB,KAAG,GAI7D,CAAC","file":"MultipartyFactory.d.ts","sourcesContent":["import {MediaServiceType} from '../MediaConstants';\nimport {OpentokMultiparty} from './OpentokMultiparty';\nimport {ISessionSettings} from './Contracts';\n\nexport const createMultiParty = (settings: ISessionSettings): any => {\n if (settings.mediaSessionType === MediaServiceType.OPENTOK) {\n return new OpentokMultiparty(settings);\n }\n};\n"]}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.createMultiParty = void 0;
|
|
5
|
-
var MediaConstants_1 = require("../MediaConstants");
|
|
6
|
-
var OpentokMultiparty_1 = require("./OpentokMultiparty");
|
|
7
|
-
var createMultiParty = function createMultiParty(settings) {
|
|
8
|
-
if (settings.mediaSessionType === MediaConstants_1.MediaServiceType.OPENTOK) {
|
|
9
|
-
return new OpentokMultiparty_1.OpentokMultiparty(settings);
|
|
10
|
-
}
|
|
11
|
-
};
|
|
12
|
-
exports.createMultiParty = createMultiParty;
|
|
13
|
-
//# sourceMappingURL=MultipartyFactory.js.map
|
|
14
|
-
|
|
15
|
-
//# sourceMappingURL=MultipartyFactory.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["MultiParty/MultipartyFactory.js","../src/MultiParty/MultipartyFactory.ts"],"names":["Object","defineProperty","exports","value","createMultiParty","MediaConstants_1","require","OpentokMultiparty_1","settings","mediaSessionType","MediaServiceType","OPENTOK","OpentokMultiparty"],"mappings":"AAAA;;AACAA,OAAOC,cAAP,CAAsBC,OAAtB,EAA+B,YAA/B,EAA6C,EAAEC,OAAO,IAAT,EAA7C;AACAD,QAAQE,gBAAR,GAA2B,KAAK,CAAhC;ACFA,IAAAC,mBAAAC,QAAA,mBAAA,CAAA;AACA,IAAAC,sBAAAD,QAAA,qBAAA,CAAA;AAGO,IAAMF,mBAAmB,SAAnBA,gBAAmB,CAACI,QAAD,EAA2B;AACvD,QAAIA,SAASC,gBAAT,KAA8BJ,iBAAAK,gBAAA,CAAiBC,OAAnD,EAA4D;AACxD,eAAO,IAAIJ,oBAAAK,iBAAJ,CAAsBJ,QAAtB,CAAP;AACH;AACJ,CAJM;AAAMN,QAAAE,gBAAA,GAAgBA,gBAAhB","file":"MultipartyFactory.js","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createMultiParty = void 0;\nvar MediaConstants_1 = require(\"../MediaConstants\");\nvar OpentokMultiparty_1 = require(\"./OpentokMultiparty\");\nvar createMultiParty = function (settings) {\n if (settings.mediaSessionType === MediaConstants_1.MediaServiceType.OPENTOK) {\n return new OpentokMultiparty_1.OpentokMultiparty(settings);\n }\n};\nexports.createMultiParty = createMultiParty;\n","import {MediaServiceType} from '../MediaConstants';\nimport {OpentokMultiparty} from './OpentokMultiparty';\nimport {ISessionSettings} from './Contracts';\n\nexport const createMultiParty = (settings: ISessionSettings): any => {\n if (settings.mediaSessionType === MediaServiceType.OPENTOK) {\n return new OpentokMultiparty(settings);\n }\n};\n"]}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { MultiParty } from './MultiParty';
|
|
2
|
-
import { ICredentials, ISessionSettings } from './Contracts';
|
|
3
|
-
export declare class OpentokMultiparty extends MultiParty {
|
|
4
|
-
subscribers: Array<any>;
|
|
5
|
-
session: any;
|
|
6
|
-
currentPublisher: any;
|
|
7
|
-
credentials: any;
|
|
8
|
-
get ownConnectionId(): boolean;
|
|
9
|
-
connect: (credentials: ICredentials) => void;
|
|
10
|
-
disconnect: () => void;
|
|
11
|
-
couldStartPublishVideo: (settings: ISessionSettings) => Promise<boolean | Error>;
|
|
12
|
-
couldStartPublishAudio: (settings: ISessionSettings) => Promise<boolean | Error>;
|
|
13
|
-
createPublisher: (settingsForPublisher: ISessionSettings) => Promise<void>;
|
|
14
|
-
publishAudio: (value: boolean) => Promise<void>;
|
|
15
|
-
publishVideo: (value: boolean) => Promise<void>;
|
|
16
|
-
initPublisher: (settings: ISessionSettings) => void;
|
|
17
|
-
streamCreatedHandler: (event: {
|
|
18
|
-
stream: any;
|
|
19
|
-
}) => void;
|
|
20
|
-
streamDestroyedHandler: (event: any) => void;
|
|
21
|
-
connectionCreatedHandler: (event: any) => void;
|
|
22
|
-
connectionDestroyedHandler: (event: any) => void;
|
|
23
|
-
traceError: (error: any) => void;
|
|
24
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
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,OAAO,CAE7B;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(): 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');\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,408 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var __extends = undefined && undefined.__extends || function () {
|
|
4
|
-
var _extendStatics = function extendStatics(d, b) {
|
|
5
|
-
_extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {
|
|
6
|
-
d.__proto__ = b;
|
|
7
|
-
} || function (d, b) {
|
|
8
|
-
for (var p in b) {
|
|
9
|
-
if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
|
|
10
|
-
}
|
|
11
|
-
};
|
|
12
|
-
return _extendStatics(d, b);
|
|
13
|
-
};
|
|
14
|
-
return function (d, b) {
|
|
15
|
-
_extendStatics(d, b);
|
|
16
|
-
function __() {
|
|
17
|
-
this.constructor = d;
|
|
18
|
-
}
|
|
19
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
20
|
-
};
|
|
21
|
-
}();
|
|
22
|
-
var __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {
|
|
23
|
-
function adopt(value) {
|
|
24
|
-
return value instanceof P ? value : new P(function (resolve) {
|
|
25
|
-
resolve(value);
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
29
|
-
function fulfilled(value) {
|
|
30
|
-
try {
|
|
31
|
-
step(generator.next(value));
|
|
32
|
-
} catch (e) {
|
|
33
|
-
reject(e);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
function rejected(value) {
|
|
37
|
-
try {
|
|
38
|
-
step(generator["throw"](value));
|
|
39
|
-
} catch (e) {
|
|
40
|
-
reject(e);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
function step(result) {
|
|
44
|
-
result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
|
|
45
|
-
}
|
|
46
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
47
|
-
});
|
|
48
|
-
};
|
|
49
|
-
var __generator = undefined && undefined.__generator || function (thisArg, body) {
|
|
50
|
-
var _ = { label: 0, sent: function sent() {
|
|
51
|
-
if (t[0] & 1) throw t[1];return t[1];
|
|
52
|
-
}, trys: [], ops: [] },
|
|
53
|
-
f,
|
|
54
|
-
y,
|
|
55
|
-
t,
|
|
56
|
-
g;
|
|
57
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function () {
|
|
58
|
-
return this;
|
|
59
|
-
}), g;
|
|
60
|
-
function verb(n) {
|
|
61
|
-
return function (v) {
|
|
62
|
-
return step([n, v]);
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
function step(op) {
|
|
66
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
67
|
-
while (_) {
|
|
68
|
-
try {
|
|
69
|
-
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;
|
|
70
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
71
|
-
switch (op[0]) {
|
|
72
|
-
case 0:case 1:
|
|
73
|
-
t = op;break;
|
|
74
|
-
case 4:
|
|
75
|
-
_.label++;return { value: op[1], done: false };
|
|
76
|
-
case 5:
|
|
77
|
-
_.label++;y = op[1];op = [0];continue;
|
|
78
|
-
case 7:
|
|
79
|
-
op = _.ops.pop();_.trys.pop();continue;
|
|
80
|
-
default:
|
|
81
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
82
|
-
_ = 0;continue;
|
|
83
|
-
}
|
|
84
|
-
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
|
85
|
-
_.label = op[1];break;
|
|
86
|
-
}
|
|
87
|
-
if (op[0] === 6 && _.label < t[1]) {
|
|
88
|
-
_.label = t[1];t = op;break;
|
|
89
|
-
}
|
|
90
|
-
if (t && _.label < t[2]) {
|
|
91
|
-
_.label = t[2];_.ops.push(op);break;
|
|
92
|
-
}
|
|
93
|
-
if (t[2]) _.ops.pop();
|
|
94
|
-
_.trys.pop();continue;
|
|
95
|
-
}
|
|
96
|
-
op = body.call(thisArg, _);
|
|
97
|
-
} catch (e) {
|
|
98
|
-
op = [6, e];y = 0;
|
|
99
|
-
} finally {
|
|
100
|
-
f = t = 0;
|
|
101
|
-
}
|
|
102
|
-
}if (op[0] & 5) throw op[1];return { value: op[0] ? op[1] : void 0, done: true };
|
|
103
|
-
}
|
|
104
|
-
};
|
|
105
|
-
var __importDefault = undefined && undefined.__importDefault || function (mod) {
|
|
106
|
-
return mod && mod.__esModule ? mod : { "default": mod };
|
|
107
|
-
};
|
|
108
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
109
|
-
exports.OpentokMultiparty = void 0;
|
|
110
|
-
var MultiParty_1 = require("./MultiParty");
|
|
111
|
-
var MediaConstants_1 = require("../MediaConstants");
|
|
112
|
-
var MediaTracer_1 = require("../MediaUtils/MediaTracer");
|
|
113
|
-
var get_1 = __importDefault(require("lodash/get"));
|
|
114
|
-
var filter_1 = __importDefault(require("lodash/filter"));
|
|
115
|
-
var cloneDeep_1 = __importDefault(require("lodash/cloneDeep"));
|
|
116
|
-
var MediaCapabilitiesHelper_1 = require("./MediaCapabilitiesHelper");
|
|
117
|
-
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
118
|
-
var OT = require('@opentok/client');
|
|
119
|
-
var trace = MediaTracer_1.getMediaTracer('Multiparty');
|
|
120
|
-
// The preferred camera position to use for the video source
|
|
121
|
-
var OpentokFacingMode;
|
|
122
|
-
(function (OpentokFacingMode) {
|
|
123
|
-
OpentokFacingMode["USER"] = "user";
|
|
124
|
-
OpentokFacingMode["ENVIRONMENT"] = "environment";
|
|
125
|
-
})(OpentokFacingMode || (OpentokFacingMode = {}));
|
|
126
|
-
var OpentokMultiparty = /** @class */function (_super) {
|
|
127
|
-
__extends(OpentokMultiparty, _super);
|
|
128
|
-
function OpentokMultiparty() {
|
|
129
|
-
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
130
|
-
_this.subscribers = [];
|
|
131
|
-
_this.connect = function (credentials) {
|
|
132
|
-
_this.credentials = credentials;
|
|
133
|
-
try {
|
|
134
|
-
_this.session = OT.initSession(credentials.apiKey, credentials.sessionId);
|
|
135
|
-
} catch (err) {
|
|
136
|
-
trace.error(JSON.stringify(err));
|
|
137
|
-
_this.emit(MultiParty_1.MULTI_PARTY_EVENTS.connectFailed, { meta: { err: JSON.stringify(err) } });
|
|
138
|
-
return;
|
|
139
|
-
}
|
|
140
|
-
_this.session.on('connectionCreated', _this.connectionCreatedHandler);
|
|
141
|
-
_this.session.on('connectionDestroyed', _this.connectionDestroyedHandler);
|
|
142
|
-
_this.session.on('streamCreated', _this.streamCreatedHandler);
|
|
143
|
-
_this.session.on('streamDestroyed', _this.streamDestroyedHandler);
|
|
144
|
-
_this.session.connect(_this.credentials.token, function (error) {
|
|
145
|
-
return __awaiter(_this, void 0, void 0, function () {
|
|
146
|
-
return __generator(this, function (_a) {
|
|
147
|
-
switch (_a.label) {
|
|
148
|
-
case 0:
|
|
149
|
-
if (error) {
|
|
150
|
-
this.session.off();
|
|
151
|
-
this.session = null;
|
|
152
|
-
this.traceError(error);
|
|
153
|
-
this.emit(MultiParty_1.MULTI_PARTY_EVENTS.connectFailed, { meta: { err: JSON.stringify(error) } });
|
|
154
|
-
return [2 /*return*/];
|
|
155
|
-
}
|
|
156
|
-
if (this.settings.defaultCamera === MediaConstants_1.CameraTypes.NONE && this.settings.startWithAudioMuted) {
|
|
157
|
-
trace.info('camera is none, no need to create publisher');
|
|
158
|
-
return [2 /*return*/];
|
|
159
|
-
}
|
|
160
|
-
return [4 /*yield*/, this.createPublisher(this.settings)];
|
|
161
|
-
case 1:
|
|
162
|
-
_a.sent();
|
|
163
|
-
return [2 /*return*/];
|
|
164
|
-
}
|
|
165
|
-
});
|
|
166
|
-
});
|
|
167
|
-
});
|
|
168
|
-
};
|
|
169
|
-
_this.disconnect = function () {
|
|
170
|
-
try {
|
|
171
|
-
trace.info('Disconnecting from session');
|
|
172
|
-
if (_this.session) {
|
|
173
|
-
_this.session.disconnect();
|
|
174
|
-
trace.info('Disconnection from session completed');
|
|
175
|
-
}
|
|
176
|
-
} catch (err) {
|
|
177
|
-
trace.error(JSON.stringify(err));
|
|
178
|
-
}
|
|
179
|
-
};
|
|
180
|
-
_this.couldStartPublishVideo = function (settings) {
|
|
181
|
-
return __awaiter(_this, void 0, void 0, function () {
|
|
182
|
-
var mediaCapabilitiesHelper, err_1;
|
|
183
|
-
return __generator(this, function (_a) {
|
|
184
|
-
switch (_a.label) {
|
|
185
|
-
case 0:
|
|
186
|
-
_a.trys.push([0, 2,, 3]);
|
|
187
|
-
return [4 /*yield*/, MediaCapabilitiesHelper_1.MediaCapabilitiesHelper.init()];
|
|
188
|
-
case 1:
|
|
189
|
-
mediaCapabilitiesHelper = _a.sent();
|
|
190
|
-
return [2 /*return*/, settings.defaultCamera !== MediaConstants_1.CameraTypes.NONE ? mediaCapabilitiesHelper.hasCamera() : false];
|
|
191
|
-
case 2:
|
|
192
|
-
err_1 = _a.sent();
|
|
193
|
-
trace.error(JSON.stringify(err_1));
|
|
194
|
-
throw err_1;
|
|
195
|
-
case 3:
|
|
196
|
-
return [2 /*return*/];
|
|
197
|
-
}
|
|
198
|
-
});
|
|
199
|
-
});
|
|
200
|
-
};
|
|
201
|
-
_this.couldStartPublishAudio = function (settings) {
|
|
202
|
-
return __awaiter(_this, void 0, void 0, function () {
|
|
203
|
-
var mediaCapabilitiesHelper, err_2;
|
|
204
|
-
return __generator(this, function (_a) {
|
|
205
|
-
switch (_a.label) {
|
|
206
|
-
case 0:
|
|
207
|
-
_a.trys.push([0, 2,, 3]);
|
|
208
|
-
return [4 /*yield*/, MediaCapabilitiesHelper_1.MediaCapabilitiesHelper.init()];
|
|
209
|
-
case 1:
|
|
210
|
-
mediaCapabilitiesHelper = _a.sent();
|
|
211
|
-
return [2 /*return*/, !settings.startWithAudioMuted && mediaCapabilitiesHelper.hasMicrophone()];
|
|
212
|
-
case 2:
|
|
213
|
-
err_2 = _a.sent();
|
|
214
|
-
trace.error(JSON.stringify(err_2));
|
|
215
|
-
throw err_2;
|
|
216
|
-
case 3:
|
|
217
|
-
return [2 /*return*/];
|
|
218
|
-
}
|
|
219
|
-
});
|
|
220
|
-
});
|
|
221
|
-
};
|
|
222
|
-
_this.createPublisher = function (settingsForPublisher) {
|
|
223
|
-
return __awaiter(_this, void 0, void 0, function () {
|
|
224
|
-
var settings, couldStartPublishVideo, couldStartPublishAudio;
|
|
225
|
-
return __generator(this, function (_a) {
|
|
226
|
-
switch (_a.label) {
|
|
227
|
-
case 0:
|
|
228
|
-
settings = cloneDeep_1.default(settingsForPublisher);
|
|
229
|
-
return [4 /*yield*/, this.couldStartPublishVideo(settings)];
|
|
230
|
-
case 1:
|
|
231
|
-
couldStartPublishVideo = _a.sent();
|
|
232
|
-
return [4 /*yield*/, this.couldStartPublishAudio(settings)];
|
|
233
|
-
case 2:
|
|
234
|
-
couldStartPublishAudio = _a.sent();
|
|
235
|
-
if (!couldStartPublishVideo && !couldStartPublishAudio) {
|
|
236
|
-
// FIXME: use emitter
|
|
237
|
-
trace.error('could not create a publisher, due to lack of media capabilities');
|
|
238
|
-
return [2 /*return*/];
|
|
239
|
-
}
|
|
240
|
-
if (!couldStartPublishVideo) {
|
|
241
|
-
settings.defaultCamera = MediaConstants_1.CameraTypes.NONE;
|
|
242
|
-
}
|
|
243
|
-
if (!couldStartPublishAudio) {
|
|
244
|
-
settings.startWithAudioMuted = true;
|
|
245
|
-
}
|
|
246
|
-
if (!this.currentPublisher) {
|
|
247
|
-
this.initPublisher(settings);
|
|
248
|
-
this.session.publish(this.currentPublisher, this.traceError);
|
|
249
|
-
}
|
|
250
|
-
return [2 /*return*/];
|
|
251
|
-
}
|
|
252
|
-
});
|
|
253
|
-
});
|
|
254
|
-
};
|
|
255
|
-
_this.publishAudio = function (value) {
|
|
256
|
-
return __awaiter(_this, void 0, void 0, function () {
|
|
257
|
-
var settings, _a;
|
|
258
|
-
return __generator(this, function (_b) {
|
|
259
|
-
switch (_b.label) {
|
|
260
|
-
case 0:
|
|
261
|
-
settings = cloneDeep_1.default(this.settings);
|
|
262
|
-
settings.startWithAudioMuted = !value;
|
|
263
|
-
_a = value;
|
|
264
|
-
if (!_a) return [3 /*break*/, 2];
|
|
265
|
-
return [4 /*yield*/, this.couldStartPublishAudio(settings)];
|
|
266
|
-
case 1:
|
|
267
|
-
_a = !_b.sent();
|
|
268
|
-
_b.label = 2;
|
|
269
|
-
case 2:
|
|
270
|
-
if (_a) {
|
|
271
|
-
trace.error('could not publish audio');
|
|
272
|
-
return [2 /*return*/];
|
|
273
|
-
}
|
|
274
|
-
if (!this.currentPublisher) {
|
|
275
|
-
this.createPublisher(settings);
|
|
276
|
-
} else {
|
|
277
|
-
this.currentPublisher.publishAudio(value);
|
|
278
|
-
}
|
|
279
|
-
return [2 /*return*/];
|
|
280
|
-
}
|
|
281
|
-
});
|
|
282
|
-
});
|
|
283
|
-
};
|
|
284
|
-
_this.publishVideo = function (value) {
|
|
285
|
-
return __awaiter(_this, void 0, void 0, function () {
|
|
286
|
-
var settings, _a;
|
|
287
|
-
return __generator(this, function (_b) {
|
|
288
|
-
switch (_b.label) {
|
|
289
|
-
case 0:
|
|
290
|
-
settings = cloneDeep_1.default(this.settings);
|
|
291
|
-
settings.defaultCamera = value ? this.settings.defaultCamera : MediaConstants_1.CameraTypes.NONE;
|
|
292
|
-
_a = value;
|
|
293
|
-
if (!_a) return [3 /*break*/, 2];
|
|
294
|
-
return [4 /*yield*/, this.couldStartPublishVideo(settings)];
|
|
295
|
-
case 1:
|
|
296
|
-
_a = !_b.sent();
|
|
297
|
-
_b.label = 2;
|
|
298
|
-
case 2:
|
|
299
|
-
if (_a) {
|
|
300
|
-
trace.error('could not publish video');
|
|
301
|
-
return [2 /*return*/];
|
|
302
|
-
}
|
|
303
|
-
if (!this.currentPublisher) {
|
|
304
|
-
this.createPublisher(settings);
|
|
305
|
-
} else {
|
|
306
|
-
this.currentPublisher.publishVideo(value);
|
|
307
|
-
}
|
|
308
|
-
return [2 /*return*/];
|
|
309
|
-
}
|
|
310
|
-
});
|
|
311
|
-
});
|
|
312
|
-
};
|
|
313
|
-
_this.initPublisher = function (settings) {
|
|
314
|
-
var properties = {
|
|
315
|
-
insertMode: 'append',
|
|
316
|
-
width: '200',
|
|
317
|
-
height: '200',
|
|
318
|
-
publishAudio: !settings.startWithAudioMuted,
|
|
319
|
-
publishVideo: settings.defaultCamera !== MediaConstants_1.CameraTypes.NONE,
|
|
320
|
-
facingMode: settings.defaultCamera === MediaConstants_1.CameraTypes.FRONT ? OpentokFacingMode.USER : OpentokFacingMode.ENVIRONMENT
|
|
321
|
-
};
|
|
322
|
-
_this.currentPublisher = OT.initPublisher(MultiParty_1.participateDomId + "1", properties, _this.traceError);
|
|
323
|
-
if (!_this.currentPublisher) {
|
|
324
|
-
trace.error('failed to init publisher');
|
|
325
|
-
} else {
|
|
326
|
-
_this.currentPublisher.on('videoElementCreated', function (event) {
|
|
327
|
-
trace.info('videoElementCreated', event);
|
|
328
|
-
});
|
|
329
|
-
_this.currentPublisher.on('streamDestroyed', function (event) {
|
|
330
|
-
trace.info('Publisher stream destroyed', event);
|
|
331
|
-
});
|
|
332
|
-
_this.currentPublisher.on('streamCreated', function (event) {
|
|
333
|
-
trace.info('publisher stream created', event, get_1.default(_this.currentPublisher, 'stream.hasAudio'));
|
|
334
|
-
});
|
|
335
|
-
}
|
|
336
|
-
};
|
|
337
|
-
_this.streamCreatedHandler = function (event) {
|
|
338
|
-
var _a;
|
|
339
|
-
trace.info('streamCreatedHandler', event.stream);
|
|
340
|
-
_this.emit(MultiParty_1.MULTI_PARTY_EVENTS.streamCreated, event);
|
|
341
|
-
var stream = event.stream;
|
|
342
|
-
var connection = (stream || { connection: null }).connection;
|
|
343
|
-
if (!_this.ownConnectionId || !stream || connection.connectionId === _this.ownConnectionId) {
|
|
344
|
-
return;
|
|
345
|
-
}
|
|
346
|
-
if (_this.subscribers.length >= MultiParty_1.maxParticipantsNumber - 1) {
|
|
347
|
-
trace.info("a new subscriber cannot be added, as the number of participants reached its limit: " + MultiParty_1.maxParticipantsNumber);
|
|
348
|
-
} else {
|
|
349
|
-
//fixme: use width and height passed in settings
|
|
350
|
-
var properties = {
|
|
351
|
-
insertMode: 'append',
|
|
352
|
-
width: '200',
|
|
353
|
-
height: '200'
|
|
354
|
-
};
|
|
355
|
-
var subscriber_1 = _this.session.subscribe(event.stream, "" + MultiParty_1.participateDomId + _this.subscribers.length, properties, function (err) {
|
|
356
|
-
_this.traceError(err);
|
|
357
|
-
subscriber_1.on('videoElementCreated', function (event) {
|
|
358
|
-
trace.info('videoElementCreated', event);
|
|
359
|
-
});
|
|
360
|
-
});
|
|
361
|
-
_this.subscribers.push({
|
|
362
|
-
subscriber: subscriber_1,
|
|
363
|
-
connectionId: connection.connectionId,
|
|
364
|
-
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
|
|
365
|
-
});
|
|
366
|
-
}
|
|
367
|
-
};
|
|
368
|
-
_this.streamDestroyedHandler = function (event) {
|
|
369
|
-
trace.info('streamDestroyedHandler', event);
|
|
370
|
-
var stream = event.stream;
|
|
371
|
-
var destroyedConnectionId = stream && stream.connection && stream.connection.connectionId;
|
|
372
|
-
_this.emit(MultiParty_1.MULTI_PARTY_EVENTS.streamDestroyed, { meta: { event: JSON.stringify(event) } });
|
|
373
|
-
_this.subscribers = filter_1.default(_this.subscribers, function (subscriber) {
|
|
374
|
-
return subscriber.connectionId !== destroyedConnectionId;
|
|
375
|
-
});
|
|
376
|
-
};
|
|
377
|
-
_this.connectionCreatedHandler = function (event) {
|
|
378
|
-
trace.info('connectionCreatedHandler', event);
|
|
379
|
-
var connection = event.connection;
|
|
380
|
-
if (!_this.ownConnectionId || !connection) {
|
|
381
|
-
return;
|
|
382
|
-
}
|
|
383
|
-
var clientRole = 'default'; //JSON.parse(connection.data).clientRole; //fixme
|
|
384
|
-
_this.emit(MultiParty_1.MULTI_PARTY_EVENTS.connectionCreated, { meta: { clientRole: clientRole, event: JSON.stringify(event) } });
|
|
385
|
-
};
|
|
386
|
-
_this.connectionDestroyedHandler = function (event) {
|
|
387
|
-
_this.session = null;
|
|
388
|
-
trace.info('connectionDestroyedHandler', event);
|
|
389
|
-
_this.emit(MultiParty_1.MULTI_PARTY_EVENTS.connectionDestroyed, { meta: { event: JSON.stringify(event) } });
|
|
390
|
-
};
|
|
391
|
-
_this.traceError = function (error) {
|
|
392
|
-
trace.error(error);
|
|
393
|
-
};
|
|
394
|
-
return _this;
|
|
395
|
-
}
|
|
396
|
-
Object.defineProperty(OpentokMultiparty.prototype, "ownConnectionId", {
|
|
397
|
-
get: function get() {
|
|
398
|
-
return !!(this.session && this.session.connection && this.session.connection.connectionId);
|
|
399
|
-
},
|
|
400
|
-
enumerable: false,
|
|
401
|
-
configurable: true
|
|
402
|
-
});
|
|
403
|
-
return OpentokMultiparty;
|
|
404
|
-
}(MultiParty_1.MultiParty);
|
|
405
|
-
exports.OpentokMultiparty = OpentokMultiparty;
|
|
406
|
-
//# sourceMappingURL=OpentokMultiparty.js.map
|
|
407
|
-
|
|
408
|
-
//# sourceMappingURL=OpentokMultiparty.js.map
|
|
@@ -1 +0,0 @@
|
|
|
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');\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(): 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');\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"]}
|
package/lib/oldCode/constants.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
exports.__esModule = true;
|
|
4
|
-
var MEDIA_SERVICE_TYPES = exports.MEDIA_SERVICE_TYPES = {
|
|
5
|
-
OPENTOK: 'OPENTOK',
|
|
6
|
-
MEDIASERVER: 'MEDIA_SERVER',
|
|
7
|
-
TURNSERVER: 'TURN_SERVER'
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
// Grace period to wait in the unlikely case that temasys plugin has not finished initializing,
|
|
11
|
-
// and a session initialization was requested
|
|
12
|
-
var WAIT_FOR_TEMASYS_PLUGIN_INITIALIZATION = exports.WAIT_FOR_TEMASYS_PLUGIN_INITIALIZATION = 2000;
|
|
13
|
-
|
|
14
|
-
var TEMASYS_PLUGIN_CHECK_INTERVAL = exports.TEMASYS_PLUGIN_CHECK_INTERVAL = 100;
|
|
15
|
-
|
|
16
|
-
// Grace period to wait in the unlikely case that Opentok has not finished initializing,
|
|
17
|
-
// and a session initialization was requested
|
|
18
|
-
var WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS = exports.WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS = 10;
|
|
19
|
-
var WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL = exports.WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL = 500;
|
|
20
|
-
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["oldCode/constants.js"],"names":["MEDIA_SERVICE_TYPES","OPENTOK","MEDIASERVER","TURNSERVER","WAIT_FOR_TEMASYS_PLUGIN_INITIALIZATION","TEMASYS_PLUGIN_CHECK_INTERVAL","WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS","WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL"],"mappings":";;;AAAO,IAAMA,oDAAsB;AAC/BC,aAAS,SADsB;AAE/BC,iBAAa,cAFkB;AAG/BC,gBAAY;AAHmB,CAA5B;;AAMP;AACA;AACO,IAAMC,0FAAyC,IAA/C;;AAEA,IAAMC,wEAAgC,GAAtC;;AAEP;AACA;AACO,IAAMC,sGAA+C,EAArD;AACA,IAAMC,8FAA2C,GAAjD","file":"constants.js","sourcesContent":["export const MEDIA_SERVICE_TYPES = {\n OPENTOK: 'OPENTOK',\n MEDIASERVER: 'MEDIA_SERVER',\n TURNSERVER: 'TURN_SERVER'\n};\n\n// Grace period to wait in the unlikely case that temasys plugin has not finished initializing,\n// and a session initialization was requested\nexport const WAIT_FOR_TEMASYS_PLUGIN_INITIALIZATION = 2000;\n\nexport const TEMASYS_PLUGIN_CHECK_INTERVAL = 100;\n\n// Grace period to wait in the unlikely case that Opentok has not finished initializing,\n// and a session initialization was requested\nexport const WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS = 10;\nexport const WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL = 500;\n"]}
|