@techsee/techsee-media-service 999.25.2-alpha2 → 999.25.2-alpha3

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/MultiParty/OpentokMultiparty.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4C,UAAU,EAAE,UAAU,EAAqB,MAAM,cAAc,CAAC;AACnH,OAAO,EAAc,iBAAiB,EAAC,MAAM,mBAAmB,CAAC;AAGjE,OAAO,EAAC,gBAAgB,EAAE,WAAW,EAAE,eAAe,EAAC,MAAM,aAAa,CAAC;AAK3E,OAAO,EAAE,MAAM,iBAAiB,CAAC;AASjC,qBAAa,iBAAkB,SAAQ,UAAU;IAC7C,WAAW,EAAE,KAAK,CAAC,UAAU,CAAC,CAAM;IACpC,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC;IAC5B,gBAAgB,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC;IAChC,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,gBAAgB,EAAE,CAAC,UAAU,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,KAAK,MAAM,CAAC;IAElF,gDAAgD;IAChD,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,gBAAgB,SAAK;gBAET,QAAQ,EAAE,eAAe,EAAE,mBAAmB,EAAE,CAAC,UAAU,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,KAAK,MAAM;IAM3H,IAAI,eAAe,IAAI,MAAM,GAAG,SAAS,CAExC;IAED,OAAO,gBAAiB,WAAW,KAAG,IAAI,CAoCxC;IAEF,UAAU,QAAO,IAAI,CAYnB;IAEF,sBAAsB,aAAoB,eAAe,KAAG,QAAQ,OAAO,GAAG,KAAK,CAAC,CAYlF;IAEF,sBAAsB,aAAoB,eAAe,KAAG,QAAQ,OAAO,GAAG,KAAK,CAAC,CASlF;IAEF,eAAe,yBAAgC,eAAe,KAAG,QAAQ,IAAI,CAAC,CA6B5E;IAEF,YAAY,eAAsB,OAAO,KAAG,QAAQ,IAAI,CAAC,CAgBvD;IAEF,YAAY,uBAA8B,OAAO,KAAG,QAAQ,IAAI,CAAC,CAgB/D;IAEF,YAAY,QAAa,QAAQ,IAAI,CAAC,CAiCpC;IAEF,OAAO,CAAC,aAAa;IAIrB,aAAa,aAAc,eAAe,KAAG,IAAI,CAmD/C;IAEF,OAAO,CAAC,yBAAyB;IAMjC,oBAAoB;gBACR,GAAG,MAAM;UACjB,QAAQ,IAAI,CAAC,CA+Cf;IAEF,4BAA4B,UAAW,GAAG,KAAG,IAAI,CAY/C;IAEF,sBAAsB;gBACV,GAAG,MAAM;gBACT,MAAM;UACd,IAAI,CAON;IAEF,wBAAwB;oBACR,GAAG,UAAU;UACzB,IAAI,CAmBN;IAEF,0BAA0B;oBACV,GAAG,UAAU;gBACjB,MAAM;UACd,IAAI,CAcN;IAEF,kBAAkB,iCAAoB,IAAI,CAExC;CACL","file":"OpentokMultiparty.d.ts","sourcesContent":["import {maxParticipantsNumber, MULTI_PARTY_EVENTS, MultiParty, Subscriber, DEFAULT_AVATAR_URI} from './MultiParty';\nimport {CameraTypes, SessionClientRole} from '../MediaConstants';\nimport {getMediaTracer} from '../MediaUtils/MediaTracer';\nimport get from 'lodash/get';\nimport {BrandingSettings, Credentials, SessionSettings} from './Contracts';\nimport filter from 'lodash/filter';\nimport cloneDeep from 'lodash/cloneDeep';\nimport {MediaCapabilitiesHelper} from './MediaCapabilitiesHelper';\n\nimport OT from '@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<Subscriber> = [];\n session?: OT.Session | null;\n currentPublisher?: OT.Publisher;\n branding?: BrandingSettings;\n getParticipantId: (clientRole: SessionClientRole, connectionId: string) => string;\n\n /** @FIXME not used atm, should be refactored */\n credentials?: Credentials;\n participantCount = 0;\n\n constructor(settings: SessionSettings, getParticipantDomId: (clientRole: SessionClientRole, connectionId: string) => string) {\n super(settings);\n this.branding = settings.branding;\n this.getParticipantId = getParticipantDomId;\n }\n\n get ownConnectionId(): string | undefined {\n return this.session?.connection?.connectionId;\n }\n\n connect = (credentials: Credentials): 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 this.session.on('streamPropertyChanged', this.streamPropertyChangedHandler);\n\n this.session.connect(credentials.token, async (error?: OT.OTError) => {\n if (error) {\n this.session?.off();\n this.session = null;\n this.traceErrorCallback(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 this.participantCount = 0;\n trace.info('Disconnection from session completed');\n }\n } catch (err) {\n trace.error(JSON.stringify(err));\n }\n };\n\n couldStartPublishVideo = async (settings: SessionSettings): Promise<boolean | Error> => {\n try {\n const mediaCapabilitiesHelper = await MediaCapabilitiesHelper.getInstance();\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: SessionSettings): Promise<boolean | Error> => {\n try {\n const mediaCapabilitiesHelper = await MediaCapabilitiesHelper.getInstance();\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: SessionSettings): 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\n if (!this.currentPublisher) {\n throw new Error('Creating session requires initialized publisher');\n }\n\n this.currentPublisher && this.session?.publish(this.currentPublisher, this.traceErrorCallback);\n }\n };\n\n publishAudio = async (shouldMute: boolean): Promise<void> => {\n const settings = cloneDeep(this.settings);\n\n settings.startWithAudioMuted = !shouldMute;\n\n if (shouldMute && !await this.couldStartPublishAudio(settings)) {\n trace.error('could not publish audio');\n\n return;\n }\n\n if (!this.currentPublisher) {\n await this.createPublisher(settings);\n } else {\n this.currentPublisher.publishAudio(shouldMute);\n }\n };\n\n publishVideo = async (shouldPublishVideo: boolean): Promise<void> => {\n const settings = cloneDeep(this.settings);\n\n settings.defaultCamera = shouldPublishVideo ? this.settings.defaultCamera : CameraTypes.NONE;\n\n if (shouldPublishVideo && !await this.couldStartPublishVideo(settings)) {\n trace.error('could not publish video');\n\n return;\n }\n\n if (!this.currentPublisher) {\n await this.createPublisher(settings);\n } else {\n this.currentPublisher.publishVideo(shouldPublishVideo);\n }\n };\n\n switchCamera = async (): Promise<void> => {\n try {\n const mediaCapabilitiesHelper = await MediaCapabilitiesHelper.getInstance();\n\n if (!mediaCapabilitiesHelper.supportSwitchCamera) {\n throw new Error('Not Support switch camera');\n }\n\n let deviceId = '';\n let cameraType = CameraTypes.NONE;\n\n switch (this.settings.defaultCamera) {\n case CameraTypes.BACK:\n cameraType = CameraTypes.FRONT;\n deviceId = mediaCapabilitiesHelper.frontCameraDeviceId;\n break;\n case CameraTypes.FRONT:\n cameraType = CameraTypes.BACK;\n deviceId = mediaCapabilitiesHelper.backCameraDeviceId;\n break;\n default:\n throw new Error(`cameraType not valid: ${this.settings.defaultCamera}`);\n }\n\n return this.currentPublisher?.setVideoSource(deviceId)\n .then(() => {\n this.settings.defaultCamera = cameraType;\n trace.info(`Success to switch camera to cameraType: ${cameraType}`);\n });\n } catch (err) {\n trace.error(JSON.stringify(err));\n throw err;\n }\n };\n\n private getClientRole(connection?: OT.Connection): SessionClientRole {\n return (connection?.data && JSON.parse(connection.data).clientRole) || SessionClientRole.USER;\n }\n\n initPublisher = (settings: SessionSettings): void => {\n const properties: OT.PublisherProperties = {\n insertMode: 'append',\n fitMode: 'cover',\n width: '100%',\n height: '100%',\n style: {\n buttonDisplayMode: 'off'\n },\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(this.getParticipantIdForStream(this.session?.connection),\n properties, this.traceErrorCallback);\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 this.emit(MULTI_PARTY_EVENTS.videoElementCreated, event);\n });\n this.currentPublisher.on('streamDestroyed', (event: any) => {\n trace.info('Publisher stream destroyed', event);\n this.emit(MULTI_PARTY_EVENTS.streamDestroyed, {event: event,\n participantId: this.getParticipantIdForStream(event?.stream?.connection)});\n });\n this.currentPublisher.on('accessDenied', (event: any) => {\n trace.info('Publisher denied media permissions', event);\n this.emit(MULTI_PARTY_EVENTS.mediaDeviceAccessDenied);\n });\n this.currentPublisher.on('streamCreated', async (event: any) => {\n await MediaCapabilitiesHelper.setDevicesList();\n\n const participantId = this.getParticipantIdForStream(event?.stream?.connection);\n\n this.emit(MULTI_PARTY_EVENTS.streamCreated,\n {event: event, participantId: participantId,\n startWithAudioMuted: this.settings.startWithAudioMuted,\n hasAudio: event?.stream?.hasAudio,\n hasVideo: event?.stream?.hasVideo,\n isOwnConnection: this.ownConnectionId === event?.stream?.connection?.connectionId,\n });\n\n trace.info('publisher stream created', {event,\n hasAudio: get(this.currentPublisher, 'stream.hasAudio'),\n participantId});\n });\n }\n };\n\n private getParticipantIdForStream(connection: any) {\n const clientRole = this.getClientRole(connection);\n\n return this.getParticipantId(clientRole, connection.connectionId);\n }\n\n streamCreatedHandler = async (event: OT.Event<'streamCreated', OT.Session> & {\n stream: OT.Stream;\n }): Promise<void> => {\n trace.info('streamCreatedHandler', event.stream);\n\n const {stream} = event;\n const {connection} = stream;\n const participantId = this.getParticipantIdForStream(connection);\n\n await MediaCapabilitiesHelper.setDevicesList();\n\n this.emit(MULTI_PARTY_EVENTS.streamCreated,\n {event: event, participantId: participantId,\n startWithAudioMuted: this.settings.startWithAudioMuted,\n isOwnConnection: this.ownConnectionId === (event?.stream?.connection?.connectionId) as string,\n hasVideo: event?.stream?.hasVideo,\n hasAudio: event?.stream?.hasAudio});\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 const properties: OT.SubscriberProperties = {\n insertMode: 'append',\n fitMode: 'cover',\n width: '100%',\n height: '100%',\n style: {\n buttonDisplayMode: 'off'\n },\n };\n\n const subscriber = event.target.subscribe(event.stream, participantId, properties, (err: any) => {\n this.traceErrorCallback(err);\n subscriber.setStyle('backgroundImageURI', this.branding?.backgroundImageURI || DEFAULT_AVATAR_URI);\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: this.getClientRole(connection)\n });\n }\n };\n\n streamPropertyChangedHandler = (event: any): void => {\n trace.info('streamPropertyChangedHandler', event);\n\n const {stream} = event;\n\n this.emit(MULTI_PARTY_EVENTS.videoAudioStatus, {\n hasVideo: stream?.hasVideo,\n hasAudio: stream?.hasAudio,\n participantId: this.getParticipantIdForStream(stream?.connection),\n isOwnConnection: this.ownConnectionId === stream?.connection?.connectionId,\n stream\n });\n };\n\n streamDestroyedHandler = (event: OT.Event<'streamDestroyed', OT.Session> & {\n stream: OT.Stream;\n reason: string;\n }): 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, {event: event, participantId: this.getParticipantIdForStream(event?.stream?.connection)});\n this.subscribers = filter(this.subscribers, (subscriber) => subscriber.connectionId !== destroyedConnectionId);\n };\n\n connectionCreatedHandler = (event: OT.Event<'connectionCreated', OT.Session> & {\n connection: OT.Connection;\n }): void => {\n trace.info('connectionCreatedHandler', event);\n\n const {connection} = event;\n\n if (!this.ownConnectionId || !connection) {\n return;\n }\n\n ++this.participantCount;\n this.emit(MULTI_PARTY_EVENTS.participantsNumberChanged, this.participantCount);\n\n const clientRole = this.getClientRole(connection);\n\n this.emit(MULTI_PARTY_EVENTS.connectionCreated, {\n clientRole, event,\n participantId: this.getParticipantIdForStream(connection),\n isOwnConnection: this.ownConnectionId === connection.connectionId\n });\n };\n\n connectionDestroyedHandler = (event: OT.Event<'connectionDestroyed', OT.Session> & {\n connection: OT.Connection;\n reason: string;\n }): void => {\n const {connection} = event;\n const clientRole = this.getClientRole(connection);\n\n trace.info('connectionDestroyedHandler', event);\n this.emit(MULTI_PARTY_EVENTS.connectionDestroyed, {clientRole, event, participantId: this.getParticipantIdForStream(event?.connection)});\n\n if (!this.ownConnectionId || !connection || connection.connectionId !== this.ownConnectionId) {\n return;\n }\n\n --this.participantCount;\n this.emit(MULTI_PARTY_EVENTS.participantsNumberChanged, this.participantCount);\n this.session = null;\n };\n\n traceErrorCallback = (error?: Error): void => {\n trace.error(JSON.stringify(error));\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/MultiParty/OpentokMultiparty.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4C,UAAU,EAAE,UAAU,EAAqB,MAAM,cAAc,CAAC;AACnH,OAAO,EAAc,iBAAiB,EAAC,MAAM,mBAAmB,CAAC;AAGjE,OAAO,EAAC,gBAAgB,EAAE,WAAW,EAAE,eAAe,EAAC,MAAM,aAAa,CAAC;AAK3E,OAAO,EAAE,MAAM,iBAAiB,CAAC;AASjC,qBAAa,iBAAkB,SAAQ,UAAU;IAC7C,WAAW,EAAE,KAAK,CAAC,UAAU,CAAC,CAAM;IACpC,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC;IAC5B,gBAAgB,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC;IAChC,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,gBAAgB,EAAE,CAAC,UAAU,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,KAAK,MAAM,CAAC;IAElF,gDAAgD;IAChD,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,gBAAgB,SAAK;gBAET,QAAQ,EAAE,eAAe,EAAE,mBAAmB,EAAE,CAAC,UAAU,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,KAAK,MAAM;IAM3H,IAAI,eAAe,IAAI,MAAM,GAAG,SAAS,CAExC;IAED,OAAO,gBAAiB,WAAW,KAAG,IAAI,CAoCxC;IAEF,UAAU,QAAO,IAAI,CAYnB;IAEF,sBAAsB,aAAoB,eAAe,KAAG,QAAQ,OAAO,GAAG,KAAK,CAAC,CAYlF;IAEF,sBAAsB,aAAoB,eAAe,KAAG,QAAQ,OAAO,GAAG,KAAK,CAAC,CASlF;IAEF,eAAe,yBAAgC,eAAe,KAAG,QAAQ,IAAI,CAAC,CA6B5E;IAEF,YAAY,eAAsB,OAAO,KAAG,QAAQ,IAAI,CAAC,CAgBvD;IAEF,YAAY,uBAA8B,OAAO,KAAG,QAAQ,IAAI,CAAC,CAgB/D;IAEF,YAAY,QAAa,QAAQ,IAAI,CAAC,CAiCpC;IAEF,OAAO,CAAC,aAAa;IAIrB,aAAa,aAAc,eAAe,KAAG,IAAI,CAoD/C;IAEF,OAAO,CAAC,yBAAyB;IAMjC,oBAAoB;gBACR,GAAG,MAAM;UACjB,QAAQ,IAAI,CAAC,CA+Cf;IAEF,4BAA4B,UAAW,GAAG,KAAG,IAAI,CAY/C;IAEF,sBAAsB;gBACV,GAAG,MAAM;gBACT,MAAM;UACd,IAAI,CAON;IAEF,wBAAwB;oBACR,GAAG,UAAU;UACzB,IAAI,CAmBN;IAEF,0BAA0B;oBACV,GAAG,UAAU;gBACjB,MAAM;UACd,IAAI,CAcN;IAEF,kBAAkB,iCAAoB,IAAI,CAExC;CACL","file":"OpentokMultiparty.d.ts","sourcesContent":["import {maxParticipantsNumber, MULTI_PARTY_EVENTS, MultiParty, Subscriber, DEFAULT_AVATAR_URI} from './MultiParty';\nimport {CameraTypes, SessionClientRole} from '../MediaConstants';\nimport {getMediaTracer} from '../MediaUtils/MediaTracer';\nimport get from 'lodash/get';\nimport {BrandingSettings, Credentials, SessionSettings} from './Contracts';\nimport filter from 'lodash/filter';\nimport cloneDeep from 'lodash/cloneDeep';\nimport {MediaCapabilitiesHelper} from './MediaCapabilitiesHelper';\n\nimport OT from '@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<Subscriber> = [];\n session?: OT.Session | null;\n currentPublisher?: OT.Publisher;\n branding?: BrandingSettings;\n getParticipantId: (clientRole: SessionClientRole, connectionId: string) => string;\n\n /** @FIXME not used atm, should be refactored */\n credentials?: Credentials;\n participantCount = 0;\n\n constructor(settings: SessionSettings, getParticipantDomId: (clientRole: SessionClientRole, connectionId: string) => string) {\n super(settings);\n this.branding = settings.branding;\n this.getParticipantId = getParticipantDomId;\n }\n\n get ownConnectionId(): string | undefined {\n return this.session?.connection?.connectionId;\n }\n\n connect = (credentials: Credentials): 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 this.session.on('streamPropertyChanged', this.streamPropertyChangedHandler);\n\n this.session.connect(credentials.token, async (error?: OT.OTError) => {\n if (error) {\n this.session?.off();\n this.session = null;\n this.traceErrorCallback(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 this.participantCount = 0;\n trace.info('Disconnection from session completed');\n }\n } catch (err) {\n trace.error(JSON.stringify(err));\n }\n };\n\n couldStartPublishVideo = async (settings: SessionSettings): Promise<boolean | Error> => {\n try {\n const mediaCapabilitiesHelper = await MediaCapabilitiesHelper.getInstance();\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: SessionSettings): Promise<boolean | Error> => {\n try {\n const mediaCapabilitiesHelper = await MediaCapabilitiesHelper.getInstance();\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: SessionSettings): 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\n if (!this.currentPublisher) {\n throw new Error('Creating session requires initialized publisher');\n }\n\n this.currentPublisher && this.session?.publish(this.currentPublisher, this.traceErrorCallback);\n }\n };\n\n publishAudio = async (shouldMute: boolean): Promise<void> => {\n const settings = cloneDeep(this.settings);\n\n settings.startWithAudioMuted = !shouldMute;\n\n if (shouldMute && !await this.couldStartPublishAudio(settings)) {\n trace.error('could not publish audio');\n\n return;\n }\n\n if (!this.currentPublisher) {\n await this.createPublisher(settings);\n } else {\n this.currentPublisher.publishAudio(shouldMute);\n }\n };\n\n publishVideo = async (shouldPublishVideo: boolean): Promise<void> => {\n const settings = cloneDeep(this.settings);\n\n settings.defaultCamera = shouldPublishVideo ? this.settings.defaultCamera : CameraTypes.NONE;\n\n if (shouldPublishVideo && !await this.couldStartPublishVideo(settings)) {\n trace.error('could not publish video');\n\n return;\n }\n\n if (!this.currentPublisher) {\n await this.createPublisher(settings);\n } else {\n this.currentPublisher.publishVideo(shouldPublishVideo);\n }\n };\n\n switchCamera = async (): Promise<void> => {\n try {\n const mediaCapabilitiesHelper = await MediaCapabilitiesHelper.getInstance();\n\n if (!mediaCapabilitiesHelper.supportSwitchCamera) {\n throw new Error('Not Support switch camera');\n }\n\n let deviceId = '';\n let cameraType = CameraTypes.NONE;\n\n switch (this.settings.defaultCamera) {\n case CameraTypes.BACK:\n cameraType = CameraTypes.FRONT;\n deviceId = mediaCapabilitiesHelper.frontCameraDeviceId;\n break;\n case CameraTypes.FRONT:\n cameraType = CameraTypes.BACK;\n deviceId = mediaCapabilitiesHelper.backCameraDeviceId;\n break;\n default:\n throw new Error(`cameraType not valid: ${this.settings.defaultCamera}`);\n }\n\n return this.currentPublisher?.setVideoSource(deviceId)\n .then(() => {\n this.settings.defaultCamera = cameraType;\n trace.info(`Success to switch camera to cameraType: ${cameraType}`);\n });\n } catch (err) {\n trace.error(JSON.stringify(err));\n throw err;\n }\n };\n\n private getClientRole(connection?: OT.Connection): SessionClientRole {\n return (connection?.data && JSON.parse(connection.data).clientRole) || SessionClientRole.USER;\n }\n\n initPublisher = (settings: SessionSettings): void => {\n const properties: OT.PublisherProperties = {\n insertMode: 'append',\n fitMode: 'cover',\n width: '100%',\n height: '100%',\n style: {\n buttonDisplayMode: 'off'\n },\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(this.getParticipantIdForStream(this.session?.connection),\n properties, this.traceErrorCallback);\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 this.emit(MULTI_PARTY_EVENTS.videoElementCreated, event);\n });\n this.currentPublisher.on('streamDestroyed', (event: any) => {\n trace.info('Publisher stream destroyed', event);\n this.emit(MULTI_PARTY_EVENTS.streamDestroyed, {event: event,\n participantId: this.getParticipantIdForStream(event?.stream?.connection)});\n });\n this.currentPublisher.on('accessDenied', (event: any) => {\n trace.info('Publisher denied media permissions', event);\n this.emit(MULTI_PARTY_EVENTS.mediaDeviceAccessDenied);\n });\n this.currentPublisher.on('streamCreated', async (event: any) => {\n await MediaCapabilitiesHelper.setDevicesList();\n\n const participantId = this.getParticipantIdForStream(event?.stream?.connection);\n\n this.emit(MULTI_PARTY_EVENTS.streamCreated,\n {event: event, participantId: participantId,\n startWithAudioMuted: this.settings.startWithAudioMuted,\n hasAudio: event?.stream?.hasAudio,\n hasVideo: event?.stream?.hasVideo,\n isOwnConnection: this.ownConnectionId === event?.stream?.connection?.connectionId,\n });\n\n trace.info('publisher stream created', {event,\n hasAudio: get(this.currentPublisher, 'stream.hasAudio'),\n participantId});\n });\n this.currentPublisher?.setStyle('backgroundImageURI', this.branding?.backgroundImageURI || DEFAULT_AVATAR_URI);\n }\n };\n\n private getParticipantIdForStream(connection: any) {\n const clientRole = this.getClientRole(connection);\n\n return this.getParticipantId(clientRole, connection.connectionId);\n }\n\n streamCreatedHandler = async (event: OT.Event<'streamCreated', OT.Session> & {\n stream: OT.Stream;\n }): Promise<void> => {\n trace.info('streamCreatedHandler', event.stream);\n\n const {stream} = event;\n const {connection} = stream;\n const participantId = this.getParticipantIdForStream(connection);\n\n await MediaCapabilitiesHelper.setDevicesList();\n\n this.emit(MULTI_PARTY_EVENTS.streamCreated,\n {event: event, participantId: participantId,\n startWithAudioMuted: this.settings.startWithAudioMuted,\n isOwnConnection: this.ownConnectionId === (event?.stream?.connection?.connectionId) as string,\n hasVideo: event?.stream?.hasVideo,\n hasAudio: event?.stream?.hasAudio});\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 const properties: OT.SubscriberProperties = {\n insertMode: 'append',\n fitMode: 'cover',\n width: '100%',\n height: '100%',\n style: {\n buttonDisplayMode: 'off'\n },\n };\n\n const subscriber = event.target.subscribe(event.stream, participantId, properties, (err: any) => {\n this.traceErrorCallback(err);\n subscriber.setStyle('backgroundImageURI', this.branding?.backgroundImageURI || DEFAULT_AVATAR_URI);\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: this.getClientRole(connection)\n });\n }\n };\n\n streamPropertyChangedHandler = (event: any): void => {\n trace.info('streamPropertyChangedHandler', event);\n\n const {stream} = event;\n\n this.emit(MULTI_PARTY_EVENTS.videoAudioStatus, {\n hasVideo: stream?.hasVideo,\n hasAudio: stream?.hasAudio,\n participantId: this.getParticipantIdForStream(stream?.connection),\n isOwnConnection: this.ownConnectionId === stream?.connection?.connectionId,\n stream\n });\n };\n\n streamDestroyedHandler = (event: OT.Event<'streamDestroyed', OT.Session> & {\n stream: OT.Stream;\n reason: string;\n }): 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, {event: event, participantId: this.getParticipantIdForStream(event?.stream?.connection)});\n this.subscribers = filter(this.subscribers, (subscriber) => subscriber.connectionId !== destroyedConnectionId);\n };\n\n connectionCreatedHandler = (event: OT.Event<'connectionCreated', OT.Session> & {\n connection: OT.Connection;\n }): void => {\n trace.info('connectionCreatedHandler', event);\n\n const {connection} = event;\n\n if (!this.ownConnectionId || !connection) {\n return;\n }\n\n ++this.participantCount;\n this.emit(MULTI_PARTY_EVENTS.participantsNumberChanged, this.participantCount);\n\n const clientRole = this.getClientRole(connection);\n\n this.emit(MULTI_PARTY_EVENTS.connectionCreated, {\n clientRole, event,\n participantId: this.getParticipantIdForStream(connection),\n isOwnConnection: this.ownConnectionId === connection.connectionId\n });\n };\n\n connectionDestroyedHandler = (event: OT.Event<'connectionDestroyed', OT.Session> & {\n connection: OT.Connection;\n reason: string;\n }): void => {\n const {connection} = event;\n const clientRole = this.getClientRole(connection);\n\n trace.info('connectionDestroyedHandler', event);\n this.emit(MULTI_PARTY_EVENTS.connectionDestroyed, {clientRole, event, participantId: this.getParticipantIdForStream(event?.connection)});\n\n if (!this.ownConnectionId || !connection || connection.connectionId !== this.ownConnectionId) {\n return;\n }\n\n --this.participantCount;\n this.emit(MULTI_PARTY_EVENTS.participantsNumberChanged, this.participantCount);\n this.session = null;\n };\n\n traceErrorCallback = (error?: Error): void => {\n trace.error(JSON.stringify(error));\n };\n}\n"]}
@@ -599,7 +599,7 @@ function (_super) {
599
599
  };
600
600
 
601
601
  _this.initPublisher = function (settings) {
602
- var _a;
602
+ var _a, _b, _c;
603
603
 
604
604
  var properties = {
605
605
  insertMode: 'append',
@@ -678,6 +678,8 @@ function (_super) {
678
678
  });
679
679
  });
680
680
  });
681
+
682
+ (_b = _this.currentPublisher) === null || _b === void 0 ? void 0 : _b.setStyle('backgroundImageURI', ((_c = _this.branding) === null || _c === void 0 ? void 0 : _c.backgroundImageURI) || MultiParty_1.DEFAULT_AVATAR_URI);
681
683
  }
682
684
  };
683
685
 
@@ -1 +1 @@
1
- {"version":3,"sources":["MultiParty/OpentokMultiparty.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","__importDefault","mod","__esModule","defineProperty","exports","OpentokMultiparty","MultiParty_1","require","MediaConstants_1","MediaTracer_1","get_1","filter_1","cloneDeep_1","MediaCapabilitiesHelper_1","client_1","trace","getMediaTracer","OpentokFacingMode","_super","settings","getParticipantDomId","_this","subscribers","participantCount","connect","credentials","session","initSession","apiKey","sessionId","err","error","JSON","stringify","emit","MULTI_PARTY_EVENTS","connectFailed","meta","on","connectionCreatedHandler","connectionDestroyedHandler","streamCreatedHandler","streamDestroyedHandler","streamPropertyChangedHandler","token","_a","_b","off","traceErrorCallback","defaultCamera","CameraTypes","NONE","startWithAudioMuted","info","createPublisher","disconnect","couldStartPublishVideo","mediaCapabilitiesHelper","err_1","MediaCapabilitiesHelper","getInstance","hasCamera","couldStartPublishAudio","err_2","hasMicrophone","settingsForPublisher","currentPublisher","initPublisher","Error","publish","publishAudio","shouldMute","publishVideo","shouldPublishVideo","switchCamera","deviceId","cameraType_1","err_3","supportSwitchCamera","BACK","FRONT","frontCameraDeviceId","backCameraDeviceId","setVideoSource","properties","insertMode","fitMode","width","height","style","buttonDisplayMode","facingMode","USER","ENVIRONMENT","getParticipantIdForStream","connection","event","videoElementCreated","streamDestroyed","participantId","stream","mediaDeviceAccessDenied","_c","_d","_e","_f","setDevicesList","streamCreated","hasAudio","hasVideo","isOwnConnection","ownConnectionId","connectionId","subscriber_1","maxParticipantsNumber","target","subscribe","setStyle","branding","backgroundImageURI","DEFAULT_AVATAR_URI","subscriber","clientRole","getClientRole","videoAudioStatus","destroyedConnectionId","participantsNumberChanged","connectionCreated","connectionDestroyed","getParticipantId","get","enumerable","configurable","data","parse","SessionClientRole","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\");\nvar client_1 = __importDefault(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(settings, getParticipantDomId) {\n var _this = _super.call(this, settings) || this;\n _this.subscribers = [];\n _this.participantCount = 0;\n _this.connect = function (credentials) {\n _this.credentials = credentials;\n try {\n _this.session = client_1.default.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.on('streamPropertyChanged', _this.streamPropertyChangedHandler);\n _this.session.connect(credentials.token, function (error) { return __awaiter(_this, void 0, void 0, function () {\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (error) {\n (_a = this.session) === null || _a === void 0 ? void 0 : _a.off();\n this.session = null;\n this.traceErrorCallback(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 _b.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 _this.participantCount = 0;\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.getInstance()];\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.getInstance()];\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 var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n settings = cloneDeep_1.default(settingsForPublisher);\n return [4 /*yield*/, this.couldStartPublishVideo(settings)];\n case 1:\n couldStartPublishVideo = _b.sent();\n return [4 /*yield*/, this.couldStartPublishAudio(settings)];\n case 2:\n couldStartPublishAudio = _b.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 if (!this.currentPublisher) {\n throw new Error('Creating session requires initialized publisher');\n }\n this.currentPublisher && ((_a = this.session) === null || _a === void 0 ? void 0 : _a.publish(this.currentPublisher, this.traceErrorCallback));\n }\n return [2 /*return*/];\n }\n });\n }); };\n _this.publishAudio = function (shouldMute) { 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 = !shouldMute;\n _a = shouldMute;\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) return [3 /*break*/, 4];\n return [4 /*yield*/, this.createPublisher(settings)];\n case 3:\n _b.sent();\n return [3 /*break*/, 5];\n case 4:\n this.currentPublisher.publishAudio(shouldMute);\n _b.label = 5;\n case 5: return [2 /*return*/];\n }\n });\n }); };\n _this.publishVideo = function (shouldPublishVideo) { 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 = shouldPublishVideo ? this.settings.defaultCamera : MediaConstants_1.CameraTypes.NONE;\n _a = shouldPublishVideo;\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) return [3 /*break*/, 4];\n return [4 /*yield*/, this.createPublisher(settings)];\n case 3:\n _b.sent();\n return [3 /*break*/, 5];\n case 4:\n this.currentPublisher.publishVideo(shouldPublishVideo);\n _b.label = 5;\n case 5: return [2 /*return*/];\n }\n });\n }); };\n _this.switchCamera = function () { return __awaiter(_this, void 0, void 0, function () {\n var mediaCapabilitiesHelper, deviceId, cameraType_1, err_3;\n var _this = this;\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 2, , 3]);\n return [4 /*yield*/, MediaCapabilitiesHelper_1.MediaCapabilitiesHelper.getInstance()];\n case 1:\n mediaCapabilitiesHelper = _b.sent();\n if (!mediaCapabilitiesHelper.supportSwitchCamera) {\n throw new Error('Not Support switch camera');\n }\n deviceId = '';\n cameraType_1 = MediaConstants_1.CameraTypes.NONE;\n switch (this.settings.defaultCamera) {\n case MediaConstants_1.CameraTypes.BACK:\n cameraType_1 = MediaConstants_1.CameraTypes.FRONT;\n deviceId = mediaCapabilitiesHelper.frontCameraDeviceId;\n break;\n case MediaConstants_1.CameraTypes.FRONT:\n cameraType_1 = MediaConstants_1.CameraTypes.BACK;\n deviceId = mediaCapabilitiesHelper.backCameraDeviceId;\n break;\n default:\n throw new Error(\"cameraType not valid: \" + this.settings.defaultCamera);\n }\n return [2 /*return*/, (_a = this.currentPublisher) === null || _a === void 0 ? void 0 : _a.setVideoSource(deviceId).then(function () {\n _this.settings.defaultCamera = cameraType_1;\n trace.info(\"Success to switch camera to cameraType: \" + cameraType_1);\n })];\n case 2:\n err_3 = _b.sent();\n trace.error(JSON.stringify(err_3));\n throw err_3;\n case 3: return [2 /*return*/];\n }\n });\n }); };\n _this.initPublisher = function (settings) {\n var _a;\n var properties = {\n insertMode: 'append',\n fitMode: 'cover',\n width: '100%',\n height: '100%',\n style: {\n buttonDisplayMode: 'off'\n },\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 = client_1.default.initPublisher(_this.getParticipantIdForStream((_a = _this.session) === null || _a === void 0 ? void 0 : _a.connection), properties, _this.traceErrorCallback);\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 _this.emit(MultiParty_1.MULTI_PARTY_EVENTS.videoElementCreated, event);\n });\n _this.currentPublisher.on('streamDestroyed', function (event) {\n var _a;\n trace.info('Publisher stream destroyed', event);\n _this.emit(MultiParty_1.MULTI_PARTY_EVENTS.streamDestroyed, { event: event, participantId: _this.getParticipantIdForStream((_a = event === null || event === void 0 ? void 0 : event.stream) === null || _a === void 0 ? void 0 : _a.connection) });\n });\n _this.currentPublisher.on('accessDenied', function (event) {\n trace.info('Publisher denied media permissions', event);\n _this.emit(MultiParty_1.MULTI_PARTY_EVENTS.mediaDeviceAccessDenied);\n });\n _this.currentPublisher.on('streamCreated', function (event) { return __awaiter(_this, void 0, void 0, function () {\n var participantId;\n var _a, _b, _c, _d, _e;\n return __generator(this, function (_f) {\n switch (_f.label) {\n case 0: return [4 /*yield*/, MediaCapabilitiesHelper_1.MediaCapabilitiesHelper.setDevicesList()];\n case 1:\n _f.sent();\n participantId = this.getParticipantIdForStream((_a = event === null || event === void 0 ? void 0 : event.stream) === null || _a === void 0 ? void 0 : _a.connection);\n this.emit(MultiParty_1.MULTI_PARTY_EVENTS.streamCreated, { event: event, participantId: participantId,\n startWithAudioMuted: this.settings.startWithAudioMuted, hasAudio: (_b = event === null || event === void 0 ? void 0 : event.stream) === null || _b === void 0 ? void 0 : _b.hasAudio,\n hasVideo: (_c = event === null || event === void 0 ? void 0 : event.stream) === null || _c === void 0 ? void 0 : _c.hasVideo,\n isOwnConnection: this.ownConnectionId === ((_e = (_d = event === null || event === void 0 ? void 0 : event.stream) === null || _d === void 0 ? void 0 : _d.connection) === null || _e === void 0 ? void 0 : _e.connectionId),\n });\n trace.info('publisher stream created', { event: event, hasAudio: get_1.default(this.currentPublisher, 'stream.hasAudio'), participantId: participantId });\n return [2 /*return*/];\n }\n });\n }); });\n }\n };\n _this.streamCreatedHandler = function (event) { return __awaiter(_this, void 0, void 0, function () {\n var stream, connection, participantId, properties, subscriber_1;\n var _this = this;\n var _a, _b, _c, _d;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n trace.info('streamCreatedHandler', event.stream);\n stream = event.stream;\n connection = stream.connection;\n participantId = this.getParticipantIdForStream(connection);\n return [4 /*yield*/, MediaCapabilitiesHelper_1.MediaCapabilitiesHelper.setDevicesList()];\n case 1:\n _e.sent();\n this.emit(MultiParty_1.MULTI_PARTY_EVENTS.streamCreated, { event: event, participantId: participantId,\n startWithAudioMuted: this.settings.startWithAudioMuted, isOwnConnection: this.ownConnectionId === ((_b = (_a = event === null || event === void 0 ? void 0 : event.stream) === null || _a === void 0 ? void 0 : _a.connection) === null || _b === void 0 ? void 0 : _b.connectionId),\n hasVideo: (_c = event === null || event === void 0 ? void 0 : event.stream) === null || _c === void 0 ? void 0 : _c.hasVideo,\n hasAudio: (_d = event === null || event === void 0 ? void 0 : event.stream) === null || _d === void 0 ? void 0 : _d.hasAudio });\n if (!this.ownConnectionId || !stream || connection.connectionId === this.ownConnectionId) {\n return [2 /*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 properties = {\n insertMode: 'append',\n fitMode: 'cover',\n width: '100%',\n height: '100%',\n style: {\n buttonDisplayMode: 'off'\n },\n };\n subscriber_1 = event.target.subscribe(event.stream, participantId, properties, function (err) {\n var _a;\n _this.traceErrorCallback(err);\n subscriber_1.setStyle('backgroundImageURI', ((_a = _this.branding) === null || _a === void 0 ? void 0 : _a.backgroundImageURI) || MultiParty_1.DEFAULT_AVATAR_URI);\n subscriber_1 === null || subscriber_1 === void 0 ? void 0 : 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: this.getClientRole(connection)\n });\n }\n return [2 /*return*/];\n }\n });\n }); };\n _this.streamPropertyChangedHandler = function (event) {\n var _a;\n trace.info('streamPropertyChangedHandler', event);\n var stream = event.stream;\n _this.emit(MultiParty_1.MULTI_PARTY_EVENTS.videoAudioStatus, {\n hasVideo: stream === null || stream === void 0 ? void 0 : stream.hasVideo,\n hasAudio: stream === null || stream === void 0 ? void 0 : stream.hasAudio,\n participantId: _this.getParticipantIdForStream(stream === null || stream === void 0 ? void 0 : stream.connection),\n isOwnConnection: _this.ownConnectionId === ((_a = stream === null || stream === void 0 ? void 0 : stream.connection) === null || _a === void 0 ? void 0 : _a.connectionId),\n stream: stream\n });\n };\n _this.streamDestroyedHandler = function (event) {\n var _a;\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, { event: event, participantId: _this.getParticipantIdForStream((_a = event === null || event === void 0 ? void 0 : event.stream) === null || _a === void 0 ? void 0 : _a.connection) });\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 ++_this.participantCount;\n _this.emit(MultiParty_1.MULTI_PARTY_EVENTS.participantsNumberChanged, _this.participantCount);\n var clientRole = _this.getClientRole(connection);\n _this.emit(MultiParty_1.MULTI_PARTY_EVENTS.connectionCreated, {\n clientRole: clientRole, event: event,\n participantId: _this.getParticipantIdForStream(connection),\n isOwnConnection: _this.ownConnectionId === connection.connectionId\n });\n };\n _this.connectionDestroyedHandler = function (event) {\n var connection = event.connection;\n var clientRole = _this.getClientRole(connection);\n trace.info('connectionDestroyedHandler', event);\n _this.emit(MultiParty_1.MULTI_PARTY_EVENTS.connectionDestroyed, { clientRole: clientRole, event: event, participantId: _this.getParticipantIdForStream(event === null || event === void 0 ? void 0 : event.connection) });\n if (!_this.ownConnectionId || !connection || connection.connectionId !== _this.ownConnectionId) {\n return;\n }\n --_this.participantCount;\n _this.emit(MultiParty_1.MULTI_PARTY_EVENTS.participantsNumberChanged, _this.participantCount);\n _this.session = null;\n };\n _this.traceErrorCallback = function (error) {\n trace.error(JSON.stringify(error));\n };\n _this.branding = settings.branding;\n _this.getParticipantId = getParticipantDomId;\n return _this;\n }\n Object.defineProperty(OpentokMultiparty.prototype, \"ownConnectionId\", {\n get: function () {\n var _a, _b;\n return (_b = (_a = this.session) === null || _a === void 0 ? void 0 : _a.connection) === null || _b === void 0 ? void 0 : _b.connectionId;\n },\n enumerable: false,\n configurable: true\n });\n OpentokMultiparty.prototype.getClientRole = function (connection) {\n return ((connection === null || connection === void 0 ? void 0 : connection.data) && JSON.parse(connection.data).clientRole) || MediaConstants_1.SessionClientRole.USER;\n };\n OpentokMultiparty.prototype.getParticipantIdForStream = function (connection) {\n var clientRole = this.getClientRole(connection);\n return this.getParticipantId(clientRole, connection.connectionId);\n };\n return OpentokMultiparty;\n}(MultiParty_1.MultiParty));\nexports.OpentokMultiparty = OpentokMultiparty;\n\n//# sourceMappingURL=OpentokMultiparty.js.map\n"]}
1
+ {"version":3,"sources":["MultiParty/OpentokMultiparty.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","__importDefault","mod","__esModule","defineProperty","exports","OpentokMultiparty","MultiParty_1","require","MediaConstants_1","MediaTracer_1","get_1","filter_1","cloneDeep_1","MediaCapabilitiesHelper_1","client_1","trace","getMediaTracer","OpentokFacingMode","_super","settings","getParticipantDomId","_this","subscribers","participantCount","connect","credentials","session","initSession","apiKey","sessionId","err","error","JSON","stringify","emit","MULTI_PARTY_EVENTS","connectFailed","meta","on","connectionCreatedHandler","connectionDestroyedHandler","streamCreatedHandler","streamDestroyedHandler","streamPropertyChangedHandler","token","_a","_b","off","traceErrorCallback","defaultCamera","CameraTypes","NONE","startWithAudioMuted","info","createPublisher","disconnect","couldStartPublishVideo","mediaCapabilitiesHelper","err_1","MediaCapabilitiesHelper","getInstance","hasCamera","couldStartPublishAudio","err_2","hasMicrophone","settingsForPublisher","currentPublisher","initPublisher","Error","publish","publishAudio","shouldMute","publishVideo","shouldPublishVideo","switchCamera","deviceId","cameraType_1","err_3","supportSwitchCamera","BACK","FRONT","frontCameraDeviceId","backCameraDeviceId","setVideoSource","_c","properties","insertMode","fitMode","width","height","style","buttonDisplayMode","facingMode","USER","ENVIRONMENT","getParticipantIdForStream","connection","event","videoElementCreated","streamDestroyed","participantId","stream","mediaDeviceAccessDenied","_d","_e","_f","setDevicesList","streamCreated","hasAudio","hasVideo","isOwnConnection","ownConnectionId","connectionId","setStyle","branding","backgroundImageURI","DEFAULT_AVATAR_URI","subscriber_1","maxParticipantsNumber","target","subscribe","subscriber","clientRole","getClientRole","videoAudioStatus","destroyedConnectionId","participantsNumberChanged","connectionCreated","connectionDestroyed","getParticipantId","get","enumerable","configurable","data","parse","SessionClientRole","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\");\nvar client_1 = __importDefault(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(settings, getParticipantDomId) {\n var _this = _super.call(this, settings) || this;\n _this.subscribers = [];\n _this.participantCount = 0;\n _this.connect = function (credentials) {\n _this.credentials = credentials;\n try {\n _this.session = client_1.default.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.on('streamPropertyChanged', _this.streamPropertyChangedHandler);\n _this.session.connect(credentials.token, function (error) { return __awaiter(_this, void 0, void 0, function () {\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (error) {\n (_a = this.session) === null || _a === void 0 ? void 0 : _a.off();\n this.session = null;\n this.traceErrorCallback(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 _b.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 _this.participantCount = 0;\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.getInstance()];\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.getInstance()];\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 var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n settings = cloneDeep_1.default(settingsForPublisher);\n return [4 /*yield*/, this.couldStartPublishVideo(settings)];\n case 1:\n couldStartPublishVideo = _b.sent();\n return [4 /*yield*/, this.couldStartPublishAudio(settings)];\n case 2:\n couldStartPublishAudio = _b.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 if (!this.currentPublisher) {\n throw new Error('Creating session requires initialized publisher');\n }\n this.currentPublisher && ((_a = this.session) === null || _a === void 0 ? void 0 : _a.publish(this.currentPublisher, this.traceErrorCallback));\n }\n return [2 /*return*/];\n }\n });\n }); };\n _this.publishAudio = function (shouldMute) { 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 = !shouldMute;\n _a = shouldMute;\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) return [3 /*break*/, 4];\n return [4 /*yield*/, this.createPublisher(settings)];\n case 3:\n _b.sent();\n return [3 /*break*/, 5];\n case 4:\n this.currentPublisher.publishAudio(shouldMute);\n _b.label = 5;\n case 5: return [2 /*return*/];\n }\n });\n }); };\n _this.publishVideo = function (shouldPublishVideo) { 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 = shouldPublishVideo ? this.settings.defaultCamera : MediaConstants_1.CameraTypes.NONE;\n _a = shouldPublishVideo;\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) return [3 /*break*/, 4];\n return [4 /*yield*/, this.createPublisher(settings)];\n case 3:\n _b.sent();\n return [3 /*break*/, 5];\n case 4:\n this.currentPublisher.publishVideo(shouldPublishVideo);\n _b.label = 5;\n case 5: return [2 /*return*/];\n }\n });\n }); };\n _this.switchCamera = function () { return __awaiter(_this, void 0, void 0, function () {\n var mediaCapabilitiesHelper, deviceId, cameraType_1, err_3;\n var _this = this;\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 2, , 3]);\n return [4 /*yield*/, MediaCapabilitiesHelper_1.MediaCapabilitiesHelper.getInstance()];\n case 1:\n mediaCapabilitiesHelper = _b.sent();\n if (!mediaCapabilitiesHelper.supportSwitchCamera) {\n throw new Error('Not Support switch camera');\n }\n deviceId = '';\n cameraType_1 = MediaConstants_1.CameraTypes.NONE;\n switch (this.settings.defaultCamera) {\n case MediaConstants_1.CameraTypes.BACK:\n cameraType_1 = MediaConstants_1.CameraTypes.FRONT;\n deviceId = mediaCapabilitiesHelper.frontCameraDeviceId;\n break;\n case MediaConstants_1.CameraTypes.FRONT:\n cameraType_1 = MediaConstants_1.CameraTypes.BACK;\n deviceId = mediaCapabilitiesHelper.backCameraDeviceId;\n break;\n default:\n throw new Error(\"cameraType not valid: \" + this.settings.defaultCamera);\n }\n return [2 /*return*/, (_a = this.currentPublisher) === null || _a === void 0 ? void 0 : _a.setVideoSource(deviceId).then(function () {\n _this.settings.defaultCamera = cameraType_1;\n trace.info(\"Success to switch camera to cameraType: \" + cameraType_1);\n })];\n case 2:\n err_3 = _b.sent();\n trace.error(JSON.stringify(err_3));\n throw err_3;\n case 3: return [2 /*return*/];\n }\n });\n }); };\n _this.initPublisher = function (settings) {\n var _a, _b, _c;\n var properties = {\n insertMode: 'append',\n fitMode: 'cover',\n width: '100%',\n height: '100%',\n style: {\n buttonDisplayMode: 'off'\n },\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 = client_1.default.initPublisher(_this.getParticipantIdForStream((_a = _this.session) === null || _a === void 0 ? void 0 : _a.connection), properties, _this.traceErrorCallback);\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 _this.emit(MultiParty_1.MULTI_PARTY_EVENTS.videoElementCreated, event);\n });\n _this.currentPublisher.on('streamDestroyed', function (event) {\n var _a;\n trace.info('Publisher stream destroyed', event);\n _this.emit(MultiParty_1.MULTI_PARTY_EVENTS.streamDestroyed, { event: event, participantId: _this.getParticipantIdForStream((_a = event === null || event === void 0 ? void 0 : event.stream) === null || _a === void 0 ? void 0 : _a.connection) });\n });\n _this.currentPublisher.on('accessDenied', function (event) {\n trace.info('Publisher denied media permissions', event);\n _this.emit(MultiParty_1.MULTI_PARTY_EVENTS.mediaDeviceAccessDenied);\n });\n _this.currentPublisher.on('streamCreated', function (event) { return __awaiter(_this, void 0, void 0, function () {\n var participantId;\n var _a, _b, _c, _d, _e;\n return __generator(this, function (_f) {\n switch (_f.label) {\n case 0: return [4 /*yield*/, MediaCapabilitiesHelper_1.MediaCapabilitiesHelper.setDevicesList()];\n case 1:\n _f.sent();\n participantId = this.getParticipantIdForStream((_a = event === null || event === void 0 ? void 0 : event.stream) === null || _a === void 0 ? void 0 : _a.connection);\n this.emit(MultiParty_1.MULTI_PARTY_EVENTS.streamCreated, { event: event, participantId: participantId,\n startWithAudioMuted: this.settings.startWithAudioMuted, hasAudio: (_b = event === null || event === void 0 ? void 0 : event.stream) === null || _b === void 0 ? void 0 : _b.hasAudio,\n hasVideo: (_c = event === null || event === void 0 ? void 0 : event.stream) === null || _c === void 0 ? void 0 : _c.hasVideo,\n isOwnConnection: this.ownConnectionId === ((_e = (_d = event === null || event === void 0 ? void 0 : event.stream) === null || _d === void 0 ? void 0 : _d.connection) === null || _e === void 0 ? void 0 : _e.connectionId),\n });\n trace.info('publisher stream created', { event: event, hasAudio: get_1.default(this.currentPublisher, 'stream.hasAudio'), participantId: participantId });\n return [2 /*return*/];\n }\n });\n }); });\n (_b = _this.currentPublisher) === null || _b === void 0 ? void 0 : _b.setStyle('backgroundImageURI', ((_c = _this.branding) === null || _c === void 0 ? void 0 : _c.backgroundImageURI) || MultiParty_1.DEFAULT_AVATAR_URI);\n }\n };\n _this.streamCreatedHandler = function (event) { return __awaiter(_this, void 0, void 0, function () {\n var stream, connection, participantId, properties, subscriber_1;\n var _this = this;\n var _a, _b, _c, _d;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n trace.info('streamCreatedHandler', event.stream);\n stream = event.stream;\n connection = stream.connection;\n participantId = this.getParticipantIdForStream(connection);\n return [4 /*yield*/, MediaCapabilitiesHelper_1.MediaCapabilitiesHelper.setDevicesList()];\n case 1:\n _e.sent();\n this.emit(MultiParty_1.MULTI_PARTY_EVENTS.streamCreated, { event: event, participantId: participantId,\n startWithAudioMuted: this.settings.startWithAudioMuted, isOwnConnection: this.ownConnectionId === ((_b = (_a = event === null || event === void 0 ? void 0 : event.stream) === null || _a === void 0 ? void 0 : _a.connection) === null || _b === void 0 ? void 0 : _b.connectionId),\n hasVideo: (_c = event === null || event === void 0 ? void 0 : event.stream) === null || _c === void 0 ? void 0 : _c.hasVideo,\n hasAudio: (_d = event === null || event === void 0 ? void 0 : event.stream) === null || _d === void 0 ? void 0 : _d.hasAudio });\n if (!this.ownConnectionId || !stream || connection.connectionId === this.ownConnectionId) {\n return [2 /*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 properties = {\n insertMode: 'append',\n fitMode: 'cover',\n width: '100%',\n height: '100%',\n style: {\n buttonDisplayMode: 'off'\n },\n };\n subscriber_1 = event.target.subscribe(event.stream, participantId, properties, function (err) {\n var _a;\n _this.traceErrorCallback(err);\n subscriber_1.setStyle('backgroundImageURI', ((_a = _this.branding) === null || _a === void 0 ? void 0 : _a.backgroundImageURI) || MultiParty_1.DEFAULT_AVATAR_URI);\n subscriber_1 === null || subscriber_1 === void 0 ? void 0 : 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: this.getClientRole(connection)\n });\n }\n return [2 /*return*/];\n }\n });\n }); };\n _this.streamPropertyChangedHandler = function (event) {\n var _a;\n trace.info('streamPropertyChangedHandler', event);\n var stream = event.stream;\n _this.emit(MultiParty_1.MULTI_PARTY_EVENTS.videoAudioStatus, {\n hasVideo: stream === null || stream === void 0 ? void 0 : stream.hasVideo,\n hasAudio: stream === null || stream === void 0 ? void 0 : stream.hasAudio,\n participantId: _this.getParticipantIdForStream(stream === null || stream === void 0 ? void 0 : stream.connection),\n isOwnConnection: _this.ownConnectionId === ((_a = stream === null || stream === void 0 ? void 0 : stream.connection) === null || _a === void 0 ? void 0 : _a.connectionId),\n stream: stream\n });\n };\n _this.streamDestroyedHandler = function (event) {\n var _a;\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, { event: event, participantId: _this.getParticipantIdForStream((_a = event === null || event === void 0 ? void 0 : event.stream) === null || _a === void 0 ? void 0 : _a.connection) });\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 ++_this.participantCount;\n _this.emit(MultiParty_1.MULTI_PARTY_EVENTS.participantsNumberChanged, _this.participantCount);\n var clientRole = _this.getClientRole(connection);\n _this.emit(MultiParty_1.MULTI_PARTY_EVENTS.connectionCreated, {\n clientRole: clientRole, event: event,\n participantId: _this.getParticipantIdForStream(connection),\n isOwnConnection: _this.ownConnectionId === connection.connectionId\n });\n };\n _this.connectionDestroyedHandler = function (event) {\n var connection = event.connection;\n var clientRole = _this.getClientRole(connection);\n trace.info('connectionDestroyedHandler', event);\n _this.emit(MultiParty_1.MULTI_PARTY_EVENTS.connectionDestroyed, { clientRole: clientRole, event: event, participantId: _this.getParticipantIdForStream(event === null || event === void 0 ? void 0 : event.connection) });\n if (!_this.ownConnectionId || !connection || connection.connectionId !== _this.ownConnectionId) {\n return;\n }\n --_this.participantCount;\n _this.emit(MultiParty_1.MULTI_PARTY_EVENTS.participantsNumberChanged, _this.participantCount);\n _this.session = null;\n };\n _this.traceErrorCallback = function (error) {\n trace.error(JSON.stringify(error));\n };\n _this.branding = settings.branding;\n _this.getParticipantId = getParticipantDomId;\n return _this;\n }\n Object.defineProperty(OpentokMultiparty.prototype, \"ownConnectionId\", {\n get: function () {\n var _a, _b;\n return (_b = (_a = this.session) === null || _a === void 0 ? void 0 : _a.connection) === null || _b === void 0 ? void 0 : _b.connectionId;\n },\n enumerable: false,\n configurable: true\n });\n OpentokMultiparty.prototype.getClientRole = function (connection) {\n return ((connection === null || connection === void 0 ? void 0 : connection.data) && JSON.parse(connection.data).clientRole) || MediaConstants_1.SessionClientRole.USER;\n };\n OpentokMultiparty.prototype.getParticipantIdForStream = function (connection) {\n var clientRole = this.getClientRole(connection);\n return this.getParticipantId(clientRole, connection.connectionId);\n };\n return OpentokMultiparty;\n}(MultiParty_1.MultiParty));\nexports.OpentokMultiparty = OpentokMultiparty;\n\n//# sourceMappingURL=OpentokMultiparty.js.map\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@techsee/techsee-media-service",
3
- "version": "999.25.2-alpha2",
3
+ "version": "999.25.2-alpha3",
4
4
  "description": "Techsee Media Service",
5
5
  "author": "TechSee",
6
6
  "main": "lib/index.js",