UNPKG

@ashetm/ng-mediastream

Version:

``@ashetm/ng-mediastream`` is a library that simplify manipulation of API ``MediaStream``.

1 lines 25 kB
{"version":3,"file":"ashetm-ng-mediastream.mjs","sources":["../../../projects/mediastream/src/lib/mediastream.class.ts","../../../projects/mediastream/src/lib/mediastream-device.class.ts","../../../projects/mediastream/src/lib/mediastream-service.class.ts","../../../projects/mediastream/src/lib/mediastream-camera-service.class.ts","../../../projects/mediastream/src/lib/mediastream.token.ts","../../../projects/mediastream/src/lib/mediastream-camera.service.ts","../../../projects/mediastream/src/lib/mediastream-microphone-service.class.ts","../../../projects/mediastream/src/lib/mediastream-microphone.service.ts","../../../projects/mediastream/src/lib/mediastream-camera-microphone.service.ts","../../../projects/mediastream/src/lib/mediastream.service.ts","../../../projects/mediastream/src/lib/mediastream.provider.ts","../../../projects/mediastream/src/public-api.ts","../../../projects/mediastream/src/ashetm-ng-mediastream.ts"],"sourcesContent":["\nexport abstract class AMediastream {\n\n protected readonly NAVIGATOR: Navigator = window.navigator;\n protected readonly MEDIA_DEVICES: MediaDevices = this.NAVIGATOR.mediaDevices;\n\n}\n","import { BehaviorSubject, Observable } from \"rxjs\";\n\nimport { AMediastream } from \"./mediastream.class\";\n\n\nexport abstract class AMediastreamDevice extends AMediastream {\n\n protected readonly _currentMediaDeviceSubject$: BehaviorSubject<MediaDeviceInfo>\n = new BehaviorSubject<MediaDeviceInfo>(null as any as MediaDeviceInfo);\n readonly currentMediaDevice$: Observable<MediaDeviceInfo>\n = this._currentMediaDeviceSubject$;\n\n}\n","import { BehaviorSubject, Observable } from \"rxjs\";\n\nimport { AMediastreamDevice } from \"./mediastream-device.class\";\n\n\nexport abstract class AMediastreamService extends AMediastreamDevice {\n\n abstract readonly mediastream$: Observable<MediaStream>;\n\n protected readonly _toggleMediaStreamSubject: BehaviorSubject<boolean>\n = new BehaviorSubject<boolean>(true);\n\n get mediastreamConstraints(): boolean | MediaTrackConstraints {\n return this._mediaConstraints;\n }\n\n constructor(\n protected readonly _mediaConstraints: boolean | MediaTrackConstraints\n ) {\n super();\n }\n\n protected _buildMediaConstraints(\n device: MediaDeviceInfo | null\n ): boolean | MediaTrackConstraints {\n switch (true) {\n case device && typeof this._mediaConstraints === 'object':\n return {\n ...this._mediaConstraints as MediaTrackConstraints,\n deviceId: (device as MediaDeviceInfo).deviceId\n };\n case device\n && typeof this._mediaConstraints === 'boolean'\n && this._mediaConstraints:\n return {\n deviceId: (device as MediaDeviceInfo).deviceId\n };\n case device\n && typeof this._mediaConstraints === 'boolean'\n && !this._mediaConstraints:\n return this._mediaConstraints as false;\n\n default:\n return {\n ...this._mediaConstraints as MediaTrackConstraints\n };\n }\n }\n\n}\n","import { combineLatest, from, Observable } from \"rxjs\";\nimport { switchMap } from \"rxjs/operators\";\n\nimport { IMediastreamCameraService } from \"./mediastream-camera-service.interface\";\nimport { AMediastreamService } from \"./mediastream-service.class\";\n\n\nexport abstract class AMediastreamCameraService\n extends AMediastreamService\n implements IMediastreamCameraService {\n\n protected readonly _userMedia$: Observable<MediaStream>\n = combineLatest([\n this._currentMediaDeviceSubject$\n ]).pipe(switchMap(([device]: [MediaDeviceInfo]) =>\n from(this.MEDIA_DEVICES.getUserMedia({\n audio: false,\n video: this._buildMediaConstraints(device)\n }))));\n\n disableCamera(): void {\n this._toggleMediaStreamSubject.next(false);\n }\n\n enableCamera(): void {\n this._toggleMediaStreamSubject.next(true);\n }\n\n toggleCamera(): void {\n const value: boolean = this._toggleMediaStreamSubject.getValue();\n\n this._toggleMediaStreamSubject.next(!value);\n }\n\n updateCameraDevice(\n device: MediaDeviceInfo & Record<'kind', 'videoinput'>\n ): void {\n this._currentMediaDeviceSubject$.next(device);\n }\n\n}\n","import { InjectionToken } from '@angular/core';\n\n\nexport const MEDIASTREAM_TOKEN_CAMERA_CONSTRAINTS: InjectionToken<boolean | MediaStreamConstraints>\n = new InjectionToken<boolean | MediaStreamConstraints>('MEDIASTREAM_CAMERA_CONSTRAINTS');\nexport const MEDIASTREAM_TOKEN_MICROPHONE_CONSTRAINTS: InjectionToken<boolean | MediaStreamConstraints>\n = new InjectionToken<boolean | MediaStreamConstraints>('MEDIASTREAM_MICROPHONE_CONSTRAINTS');\n","import { Inject, Injectable } from '@angular/core';\nimport { combineLatest, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { AMediastreamCameraService } from './mediastream-camera-service.class';\nimport { MEDIASTREAM_TOKEN_CAMERA_CONSTRAINTS } from './mediastream.token';\n\n\n@Injectable()\nexport class MediastreamCameraService extends AMediastreamCameraService {\n\n readonly mediastream$: Observable<MediaStream>\n = combineLatest([\n this._toggleMediaStreamSubject.asObservable(),\n this._userMedia$\n ]).pipe(map(([toggleCamera, media]: [boolean, MediaStream]) => {\n media.getAudioTracks()\n .map((track: MediaStreamTrack) => {\n track.enabled = toggleCamera;\n\n return track;\n });\n\n return media;\n }));\n\n constructor(\n @Inject(MEDIASTREAM_TOKEN_CAMERA_CONSTRAINTS)\n private readonly __mediastreamCameraConstraints: any\n ) {\n super(__mediastreamCameraConstraints);\n }\n\n}\n","import { combineLatest, from, Observable } from \"rxjs\";\nimport { switchMap } from \"rxjs/operators\";\n\nimport { IMediastreamMicrophoneService } from \"./mediastream-microphone-service.interface\";\nimport { AMediastreamService } from \"./mediastream-service.class\";\n\n\nexport abstract class AMediastreamMicrophoneService\n extends AMediastreamService\n implements IMediastreamMicrophoneService {\n\n protected readonly _userMedia$: Observable<MediaStream>\n = combineLatest([\n this._currentMediaDeviceSubject$\n ]).pipe(switchMap(([device]: [MediaDeviceInfo]) =>\n from(this.MEDIA_DEVICES.getUserMedia({\n audio: this._buildMediaConstraints(device),\n video: false\n }))));\n\n disableMicrophone(): void {\n this._toggleMediaStreamSubject.next(false);\n }\n\n enableMicrophone(): void {\n this._toggleMediaStreamSubject.next(true);\n }\n\n toggleMicrophone(): void {\n const value: boolean = this._toggleMediaStreamSubject.getValue();\n\n this._toggleMediaStreamSubject.next(!value);\n }\n\n updateMicrophoneDevice(\n device: MediaDeviceInfo & Record<'kind', 'audioinput'>\n ): void {\n this._currentMediaDeviceSubject$.next(device);\n }\n\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { combineLatest, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { AMediastreamMicrophoneService } from './mediastream-microphone-service.class';\nimport { MEDIASTREAM_TOKEN_MICROPHONE_CONSTRAINTS } from './mediastream.token';\n\n\n@Injectable()\nexport class MediastreamMicrophoneService extends AMediastreamMicrophoneService {\n\n readonly mediastream$: Observable<MediaStream>\n = combineLatest([\n this._toggleMediaStreamSubject.asObservable(),\n this._userMedia$\n ]).pipe(map(([toggleMicrophone, media]: [boolean, MediaStream]) => {\n media.getAudioTracks()\n .map((track: MediaStreamTrack) => {\n track.enabled = toggleMicrophone;\n\n return track;\n });\n\n return media;\n }));\n\n constructor(\n @Inject(MEDIASTREAM_TOKEN_MICROPHONE_CONSTRAINTS)\n private readonly __mediastreamMicrophoneConstraints: any\n ) {\n super(__mediastreamMicrophoneConstraints);\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { combineLatest, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { IMediastreamCameraService } from './mediastream-camera-service.interface';\nimport { MediastreamCameraService } from './mediastream-camera.service';\nimport { IMediastreamMicrophoneService } from './mediastream-microphone-service.interface';\nimport { MediastreamMicrophoneService } from './mediastream-microphone.service';\n\n\n@Injectable()\nexport class MediastreamCameraMicrophoneService\n implements IMediastreamCameraService, IMediastreamMicrophoneService {\n\n readonly currentCameraMediaDevice$: Observable<MediaDeviceInfo>\n = this._mediastreamCameraService.currentMediaDevice$;\n\n readonly currentMicrophoneMediaDevice$: Observable<MediaDeviceInfo>\n = this._mediastreamMicrophoneService.currentMediaDevice$;\n\n readonly mediastream$: Observable<MediaStream>\n = combineLatest([\n this._mediastreamCameraService.mediastream$,\n this._mediastreamMicrophoneService.mediastream$\n ]).pipe(map(([mediastreamCamera, mediastreamMicrophone]: [MediaStream, MediaStream]) => {\n const mediastreamCameraTracks: MediaStreamTrack[] = mediastreamCamera.getVideoTracks();\n const mediastreamMicrophoneTracks: MediaStreamTrack[] = mediastreamMicrophone.getAudioTracks();\n const mediastreamTracks: MediaStreamTrack[] = [\n ...mediastreamCameraTracks,\n ...mediastreamMicrophoneTracks\n ];\n\n return new MediaStream(mediastreamTracks);\n }));\n\n get mediastreamCameraConstraints(): boolean | MediaTrackConstraints {\n return this._mediastreamCameraService.mediastreamConstraints;\n }\n\n get mediastreamMicrophoneConstraints(): boolean | MediaTrackConstraints {\n return this._mediastreamMicrophoneService.mediastreamConstraints;\n }\n\n constructor(\n private readonly _mediastreamCameraService: MediastreamCameraService,\n private readonly _mediastreamMicrophoneService: MediastreamMicrophoneService\n ) { }\n\n disableCamera(): void {\n this._mediastreamCameraService.disableCamera();\n }\n\n disableMicrophone(): void {\n this._mediastreamMicrophoneService.disableMicrophone();\n }\n\n enableCamera(): void {\n this._mediastreamCameraService.enableCamera();\n }\n\n enableMicrophone(): void {\n this._mediastreamMicrophoneService.enableMicrophone();\n }\n\n toggleCamera(): void {\n this._mediastreamCameraService.toggleCamera();\n }\n\n toggleMicrophone(): void {\n this._mediastreamMicrophoneService.toggleMicrophone();\n }\n\n updateCameraDevice(device: MediaDeviceInfo & Record<'kind', 'videoinput'>): void {\n this._mediastreamCameraService.updateCameraDevice(device);\n }\n\n updateMicrophoneDevice(device: MediaDeviceInfo & Record<'kind', 'audioinput'>): void {\n this._mediastreamMicrophoneService.updateMicrophoneDevice(device);\n }\n\n}\n","import { Injectable, Injector } from '@angular/core';\n\nimport { MediastreamCameraMicrophoneService } from './mediastream-camera-microphone.service';\nimport { MediastreamCameraService } from './mediastream-camera.service';\nimport { MediastreamMicrophoneService } from './mediastream-microphone.service';\nimport { AMediastream } from './mediastream.class';\nimport {\n MEDIASTREAM_TOKEN_CAMERA_CONSTRAINTS,\n MEDIASTREAM_TOKEN_MICROPHONE_CONSTRAINTS\n} from './mediastream.token';\n\n\n@Injectable()\nexport class MediastreamService extends AMediastream {\n\n constructor(private readonly _injector: Injector) {\n super();\n }\n\n async getCameraDevices(): Promise<MediaDeviceInfo[]> {\n return (await this.getDevices()).filter((device: MediaDeviceInfo) => device.kind === 'videoinput');\n }\n\n async getDevices(): Promise<MediaDeviceInfo[]> {\n return await this.MEDIA_DEVICES.enumerateDevices();\n }\n\n async getMicrophoneDevices(): Promise<MediaDeviceInfo[]> {\n return (await this.getDevices()).filter((device: MediaDeviceInfo) => device.kind === 'audioinput');\n }\n\n async hasCameraDevices(): Promise<boolean> {\n return (await this.getCameraDevices()).length !== 0;\n }\n\n async hasMicrophoneDevices(): Promise<boolean> {\n return (await this.getMicrophoneDevices()).length !== 0;\n }\n\n async requestCamera(\n constraints?: MediaTrackConstraints\n ): Promise<MediastreamCameraService> {\n const cameraConstraints: boolean | MediaTrackConstraints = constraints || true;\n const injector: Injector = Injector.create({\n providers: [\n {\n provide: MediastreamCameraService,\n useClass: MediastreamCameraService\n }, {\n provide: MEDIASTREAM_TOKEN_CAMERA_CONSTRAINTS,\n useValue: cameraConstraints\n }\n ],\n parent: this._injector\n });\n\n return await this.MEDIA_DEVICES.getUserMedia({\n audio: false,\n video: cameraConstraints\n }).then(() => injector.get(MediastreamCameraService));\n }\n\n async requestCameraAndMicrophone(constraints?: Partial<\n Record<'audio' | 'video', MediaTrackConstraints>\n >): Promise<MediastreamCameraMicrophoneService> {\n const cameraConstraints: boolean | MediaTrackConstraints\n = constraints?.video || true;\n const microphoneConstraints: boolean | MediaTrackConstraints\n = constraints?.audio || true;\n const injector: Injector = Injector.create({\n providers: [\n {\n provide: MediastreamCameraService,\n useClass: MediastreamCameraService\n }, {\n provide: MediastreamCameraMicrophoneService,\n useClass: MediastreamCameraMicrophoneService\n }, {\n provide: MediastreamMicrophoneService,\n useClass: MediastreamMicrophoneService\n }, {\n provide: MEDIASTREAM_TOKEN_CAMERA_CONSTRAINTS,\n useValue: cameraConstraints\n }, {\n provide: MEDIASTREAM_TOKEN_MICROPHONE_CONSTRAINTS,\n useValue: microphoneConstraints\n }\n ],\n parent: this._injector\n });\n\n return await this.MEDIA_DEVICES.getUserMedia({\n audio: microphoneConstraints,\n video: cameraConstraints\n }).then(() => injector.get(MediastreamCameraMicrophoneService));\n }\n\n async requestMicrophone(\n constraints?: MediaTrackConstraints\n ): Promise<MediastreamMicrophoneService> {\n const microphoneConstraints: boolean | MediaTrackConstraints = constraints || true;\n const injector: Injector = Injector.create({\n providers: [\n {\n provide: MediastreamMicrophoneService,\n useClass: MediastreamMicrophoneService\n }, {\n provide: MEDIASTREAM_TOKEN_MICROPHONE_CONSTRAINTS,\n useValue: microphoneConstraints\n }\n ],\n parent: this._injector\n });\n\n return await this.MEDIA_DEVICES.getUserMedia({\n audio: microphoneConstraints,\n video: false\n }).then(() => injector.get(MediastreamMicrophoneService));\n }\n\n}\n","import { makeEnvironmentProviders } from '@angular/core';\n\nimport { MediastreamService } from './mediastream.service';\n\n\nexport const provideMediaStream = () => {\n return makeEnvironmentProviders([MediastreamService]);\n}\n","/*\n * Public API Surface of mediastream\n */\n\nexport * from './lib/mediastream-camera-microphone.service';\nexport * from './lib/mediastream-camera.service';\nexport * from './lib/mediastream-microphone.service';\nexport * from './lib/mediastream.provider';\nexport * from './lib/mediastream.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.MediastreamCameraService","i2.MediastreamMicrophoneService"],"mappings":"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"}