Socket
Socket
Sign inDemoInstall

@100mslive/hms-video-store

Package Overview
Dependencies
Maintainers
17
Versions
708
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@100mslive/hms-video-store - npm Package Compare versions

Comparing version 0.12.12-alpha.6 to 0.12.12-alpha.7

3

dist/media/tracks/HMSLocalAudioTrack.d.ts

@@ -5,2 +5,3 @@ import { HMSAudioTrack } from './HMSAudioTrack';

import { HMSAudioPlugin, HMSPluginSupportResult } from '../../plugins';
import Room from '../../sdk/models/HMSRoom';
import { TrackAudioLevelMonitor } from '../../utils/track-audio-level-monitor';

@@ -26,3 +27,3 @@ import { HMSAudioTrackSettings } from '../settings';

isPublished: boolean;
constructor(stream: HMSLocalStream, track: MediaStreamTrack, source: string, eventBus: EventBus, settings?: HMSAudioTrackSettings);
constructor(stream: HMSLocalStream, track: MediaStreamTrack, source: string, eventBus: EventBus, settings?: HMSAudioTrackSettings, room?: Room);
getManuallySelectedDeviceId(): string | undefined;

@@ -29,0 +30,0 @@ resetManuallySelectedDeviceId(): void;

@@ -6,2 +6,3 @@ import { HMSVideoTrack } from './HMSVideoTrack';

import { HMSMediaStreamPlugin } from '../../plugins/video';
import Room from '../../sdk/models/HMSRoom';
import { HMSVideoTrackSettings } from '../settings';

@@ -39,3 +40,3 @@ import { HMSLocalStream } from '../streams';

isPublished: boolean;
constructor(stream: HMSLocalStream, track: MediaStreamTrack, source: string, eventBus: EventBus, settings?: HMSVideoTrackSettings);
constructor(stream: HMSLocalStream, track: MediaStreamTrack, source: string, eventBus: EventBus, settings?: HMSVideoTrackSettings, room?: Room);
/** @internal */

@@ -42,0 +43,0 @@ setSimulcastDefinitons(definitions: HMSSimulcastLayerDefinition[]): void;

@@ -70,3 +70,3 @@ import { VideoTrackLayerUpdate } from '../connection/channel-messages';

}
interface PluginPermissions {
export interface WhiteBoardPluginPermissions {
permissions?: {

@@ -78,3 +78,3 @@ admin?: Array<string>;

}
interface TranscriptionPluginPermissions {
export interface TranscriptionPluginPermissions {
permissions?: {

@@ -85,5 +85,9 @@ admin?: Array<string>;

}
export interface NoiseCancellationPlugin {
enabled?: boolean;
}
export declare enum Plugins {
WHITEBOARD = "whiteboard",
TRANSCRIPTIONS = "transcriptions"
TRANSCRIPTIONS = "transcriptions",
NOISE_CANCELLATION = "noiseCancellation"
}

@@ -96,4 +100,5 @@ export interface PolicyParams {

plugins: {
[Plugins.WHITEBOARD]?: PluginPermissions;
[Plugins.WHITEBOARD]?: WhiteBoardPluginPermissions;
[Plugins.TRANSCRIPTIONS]?: TranscriptionPluginPermissions[];
[Plugins.NOISE_CANCELLATION]?: NoiseCancellationPlugin;
};

@@ -100,0 +105,0 @@ template_id: string;

import { HMSAudioPlugin } from './HMSAudioPlugin';
import { EventBus } from '../../events/EventBus';
import { HMSLocalAudioTrack } from '../../media/tracks';
import Room from '../../sdk/models/HMSRoom';
/**

@@ -29,3 +30,4 @@ * This class manages applying different plugins on a local audio track. Plugins which need to modify the audio

private pluginAddInProgress;
constructor(track: HMSLocalAudioTrack, eventBus: EventBus);
private room?;
constructor(track: HMSLocalAudioTrack, eventBus: EventBus, room?: Room);
getPlugins(): string[];

@@ -32,0 +34,0 @@ addPlugin(plugin: HMSAudioPlugin): Promise<void>;

import { HMSMediaStreamPlugin } from './HMSMediaStreamPlugin';
import { EventBus } from '../../events/EventBus';
import Room from '../../sdk/models/HMSRoom';
export declare class HMSMediaStreamPluginsManager {
private readonly TAG;
private analytics;
private plugins;
constructor(eventBus: EventBus);
private room?;
constructor(eventBus: EventBus, room?: Room);
addPlugins(plugins: HMSMediaStreamPlugin[]): void;

@@ -8,0 +11,0 @@ removePlugins(plugins: HMSMediaStreamPlugin[]): void;

@@ -93,4 +93,8 @@ import { KnownRoles, TrackStateEntry } from './StoreInterfaces';

private addPluginsToRoles;
private addPermissionToRole;
private addWhiteboardPluginToRole;
private addTranscriptionsPluginToRole;
private handleNoiseCancellationPlugin;
private setEnv;
}
export { Store };
{
"version": "0.12.12-alpha.6",
"version": "0.12.12-alpha.7",
"license": "MIT",

@@ -76,3 +76,3 @@ "repository": {

],
"gitHead": "b056278ac61c5f0c04ed2c7c72ca84574ceac05c"
"gitHead": "b88ca5d4312e552bb6379028339d8c27f6de09aa"
}

@@ -18,3 +18,3 @@ import { IPublishConnectionObserver } from './IPublishConnectionObserver';

this.nativeConnection = new RTCPeerConnection({ ...config, iceTransportPolicy: 'relay' });
this.nativeConnection = new RTCPeerConnection(config);
this.channel = this.nativeConnection.createDataChannel(API_DATA_CHANNEL, {

@@ -21,0 +21,0 @@ protocol: 'SCTP',

@@ -123,3 +123,3 @@ import EventEmitter from 'eventemitter2';

this.nativeConnection = new RTCPeerConnection({ ...config, iceTransportPolicy: 'relay' });
this.nativeConnection = new RTCPeerConnection(config);
this.initNativeConnectionCallbacks();

@@ -126,0 +126,0 @@ }

@@ -10,2 +10,3 @@ import isEqual from 'lodash.isequal';

import { HMSAudioPluginsManager } from '../../plugins/audio';
import Room from '../../sdk/models/HMSRoom';
import HMSLogger from '../../utils/logger';

@@ -50,2 +51,3 @@ import { isBrowser, isIOS } from '../../utils/support';

settings: HMSAudioTrackSettings = new HMSAudioTrackSettingsBuilder().build(),
room?: Room,
) {

@@ -61,3 +63,3 @@ super(stream, track, source);

}
this.pluginsManager = new HMSAudioPluginsManager(this, eventBus);
this.pluginsManager = new HMSAudioPluginsManager(this, eventBus, room);
this.setFirstTrackId(track.id);

@@ -64,0 +66,0 @@ if (isIOS() && isBrowser) {

@@ -19,2 +19,3 @@ import isEqual from 'lodash.isequal';

import { LocalTrackManager } from '../../sdk/LocalTrackManager';
import Room from '../../sdk/models/HMSRoom';
import HMSLogger from '../../utils/logger';

@@ -73,2 +74,3 @@ import { isBrowser, isMobile } from '../../utils/support';

settings: HMSVideoTrackSettings = new HMSVideoTrackSettingsBuilder().build(),
room?: Room,
) {

@@ -85,3 +87,3 @@ super(stream, track, source);

this.pluginsManager = new HMSVideoPluginsManager(this, eventBus);
this.mediaStreamPluginsManager = new HMSMediaStreamPluginsManager(eventBus);
this.mediaStreamPluginsManager = new HMSMediaStreamPluginsManager(eventBus, room);
this.setFirstTrackId(this.trackId);

@@ -88,0 +90,0 @@ if (isBrowser && isMobile()) {

@@ -80,3 +80,3 @@ import { VideoTrackLayerUpdate } from '../connection/channel-messages';

}
interface PluginPermissions {
export interface WhiteBoardPluginPermissions {
permissions?: {

@@ -90,3 +90,3 @@ // list of roles

interface TranscriptionPluginPermissions {
export interface TranscriptionPluginPermissions {
permissions?: {

@@ -99,5 +99,9 @@ // list of roles

export interface NoiseCancellationPlugin {
enabled?: boolean;
}
export enum Plugins {
WHITEBOARD = 'whiteboard',
TRANSCRIPTIONS = 'transcriptions',
NOISE_CANCELLATION = 'noiseCancellation',
}

@@ -111,4 +115,5 @@

plugins: {
[Plugins.WHITEBOARD]?: PluginPermissions;
[Plugins.WHITEBOARD]?: WhiteBoardPluginPermissions;
[Plugins.TRANSCRIPTIONS]?: TranscriptionPluginPermissions[];
[Plugins.NOISE_CANCELLATION]?: NoiseCancellationPlugin;
};

@@ -115,0 +120,0 @@ template_id: string;

@@ -221,2 +221,3 @@ import { HMSAction } from '../../error/HMSAction';

private convertHls(hlsNotification?: HLSNotification) {
// only checking for zeroth variant intialized
const isInitialised =

@@ -223,0 +224,0 @@ hlsNotification?.variants && hlsNotification.variants.length > 0

@@ -7,2 +7,3 @@ import { AudioPluginsAnalytics } from './AudioPluginsAnalytics';

import { HMSLocalAudioTrack } from '../../media/tracks';
import Room from '../../sdk/models/HMSRoom';
import HMSLogger from '../../utils/logger';

@@ -44,4 +45,5 @@

private pluginAddInProgress = false;
private room?: Room;
constructor(track: HMSLocalAudioTrack, private eventBus: EventBus) {
constructor(track: HMSLocalAudioTrack, private eventBus: EventBus, room?: Room) {
this.hmsTrack = track;

@@ -51,2 +53,3 @@ this.pluginsMap = new Map();

this.createAudioContext();
this.room = room;
}

@@ -75,2 +78,17 @@

switch (plugin.getName()) {
case 'HMSKrispPlugin':
if (!this.room?.isNoiseCancellationEnabled) {
const errorMessage = 'Krisp Noise Cancellation is not enabled for this room';
if (this.pluginsMap.size === 0) {
throw Error(errorMessage);
} else {
HMSLogger.w(this.TAG, errorMessage);
return;
}
}
break;
default:
}
this.pluginAddInProgress = true;

@@ -77,0 +95,0 @@

@@ -5,15 +5,35 @@ import { HMSMediaStreamPlugin } from './HMSMediaStreamPlugin';

import { HMSException } from '../../internal';
import Room from '../../sdk/models/HMSRoom';
import HMSLogger from '../../utils/logger';
export class HMSMediaStreamPluginsManager {
private readonly TAG = '[MediaStreamPluginsManager]';
private analytics: VideoPluginsAnalytics;
private plugins: Set<HMSMediaStreamPlugin>;
private room?: Room;
constructor(eventBus: EventBus) {
constructor(eventBus: EventBus, room?: Room) {
this.plugins = new Set<HMSMediaStreamPlugin>();
this.analytics = new VideoPluginsAnalytics(eventBus);
this.room = room;
}
addPlugins(plugins: HMSMediaStreamPlugin[]): void {
plugins.forEach(plugin => this.plugins.add(plugin));
plugins.forEach(plugin => {
switch (plugin.getName()) {
case 'HMSEffectsPlugin':
if (!this.room?.isEffectsEnabled) {
const errorMessage = 'Effects Virtual Background is not enabled for this room';
if (this.plugins.size === 0) {
throw Error(errorMessage);
} else {
HMSLogger.w(this.TAG, errorMessage);
return;
}
}
break;
default:
}
this.plugins.add(plugin);
});
}

@@ -20,0 +40,0 @@

@@ -239,3 +239,10 @@ import { v4 as uuid } from 'uuid';

const nativeVideoTrack = stream.getVideoTracks()[0];
const videoTrack = new HMSLocalVideoTrack(local, nativeVideoTrack, 'screen', this.eventBus, screenSettings?.video);
const videoTrack = new HMSLocalVideoTrack(
local,
nativeVideoTrack,
'screen',
this.eventBus,
screenSettings?.video,
this.store.getRoom(),
);
videoTrack.setSimulcastDefinitons(this.store.getSimulcastDefinitionsForPeer(this.store.getLocalPeer()!, 'screen'));

@@ -261,2 +268,3 @@

screenSettings?.audio,
this.store.getRoom(),
);

@@ -628,2 +636,3 @@ tracks.push(audioTrack);

settings.audio,
this.store.getRoom(),
);

@@ -640,2 +649,3 @@ tracks.push(audioTrack);

settings.video,
this.store.getRoom(),
);

@@ -642,0 +652,0 @@ videoTrack.setSimulcastDefinitons(

@@ -34,3 +34,9 @@ import { KnownRoles, TrackStateEntry } from './StoreInterfaces';

} from '../../media/tracks';
import { Plugins, PolicyParams } from '../../notification-manager';
import {
NoiseCancellationPlugin,
Plugins,
PolicyParams,
TranscriptionPluginPermissions,
WhiteBoardPluginPermissions,
} from '../../notification-manager';
import HMSLogger from '../../utils/logger';

@@ -428,47 +434,68 @@ import { ENV } from '../../utils/support';

const addPermissionToRole = (
role: string,
pluginName: keyof PolicyParams['plugins'],
permission: HMSPermissionType,
mode?: HMSTranscriptionMode,
) => {
if (!this.knownRoles[role]) {
HMSLogger.d(this.TAG, `role ${role} is not present in given roles`, this.knownRoles);
return;
}
const rolePermissions = this.knownRoles[role].permissions;
if (pluginName === Plugins.TRANSCRIPTIONS && mode) {
// currently only admin is allowed, so no issue
rolePermissions[pluginName] = {
...rolePermissions[pluginName],
[mode]: [permission],
};
} else if (pluginName === Plugins.WHITEBOARD) {
if (!rolePermissions[pluginName]) {
rolePermissions[pluginName] = [];
}
rolePermissions[pluginName]?.push(permission);
}
};
Object.keys(plugins).forEach(plugin => {
const pluginName = plugin as keyof PolicyParams['plugins'];
if (!plugins[pluginName]) {
return;
}
if (pluginName === Plugins.WHITEBOARD) {
const permissions = plugins[pluginName]?.permissions;
permissions?.admin?.forEach(role => addPermissionToRole(role, pluginName, 'admin'));
permissions?.reader?.forEach(role => addPermissionToRole(role, pluginName, 'read'));
permissions?.writer?.forEach(role => addPermissionToRole(role, pluginName, 'write'));
} else if (pluginName === Plugins.TRANSCRIPTIONS) {
const transcriptionPlugins = plugins[pluginName] || [];
for (const transcription of transcriptionPlugins) {
transcription.permissions?.admin?.forEach(role =>
addPermissionToRole(role, pluginName, 'admin', transcription.mode),
);
switch (pluginName) {
case Plugins.WHITEBOARD: {
this.addWhiteboardPluginToRole(plugins[pluginName]);
break;
}
case Plugins.TRANSCRIPTIONS: {
this.addTranscriptionsPluginToRole(plugins[pluginName]);
break;
}
case Plugins.NOISE_CANCELLATION: {
this.handleNoiseCancellationPlugin(plugins[pluginName]);
break;
}
default: {
break;
}
}
});
}
private addPermissionToRole = (
role: string,
pluginName: keyof PolicyParams['plugins'],
permission: HMSPermissionType,
mode?: HMSTranscriptionMode,
) => {
if (!this.knownRoles[role]) {
HMSLogger.d(this.TAG, `role ${role} is not present in given roles`, this.knownRoles);
return;
}
const rolePermissions = this.knownRoles[role].permissions;
if (pluginName === Plugins.TRANSCRIPTIONS && mode) {
// currently only admin is allowed, so no issue
rolePermissions[pluginName] = {
...rolePermissions[pluginName],
[mode]: [permission],
};
} else if (pluginName === Plugins.WHITEBOARD) {
if (!rolePermissions[pluginName]) {
rolePermissions[pluginName] = [];
}
rolePermissions[pluginName]?.push(permission);
}
};
private addWhiteboardPluginToRole = (plugin?: WhiteBoardPluginPermissions) => {
const permissions = plugin?.permissions;
permissions?.admin?.forEach(role => this.addPermissionToRole(role, Plugins.WHITEBOARD, 'admin'));
permissions?.reader?.forEach(role => this.addPermissionToRole(role, Plugins.WHITEBOARD, 'read'));
permissions?.writer?.forEach(role => this.addPermissionToRole(role, Plugins.WHITEBOARD, 'write'));
};
private addTranscriptionsPluginToRole = (plugin: TranscriptionPluginPermissions[] = []) => {
for (const transcription of plugin) {
transcription.permissions?.admin?.forEach(role =>
this.addPermissionToRole(role, Plugins.TRANSCRIPTIONS, 'admin', transcription.mode),
);
}
};
private handleNoiseCancellationPlugin = (plugin?: NoiseCancellationPlugin) => {
if (!this.room) {
return;
}
// it will be called again after internalConnect room initialization, even after network disconnection
this.room.isNoiseCancellationEnabled = !!plugin?.enabled && !!this.room.isNoiseCancellationEnabled;
};
private setEnv() {

@@ -475,0 +502,0 @@ const endPoint = this.config?.initEndpoint!;

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc