sip-connector 14.1.2-7 → 15.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/@SipConnector-BBhQzo-W.cjs +1 -0
- package/dist/@SipConnector-G96OmJEP.js +2248 -0
- package/dist/ApiManager/@ApiManager.d.ts +59 -0
- package/dist/ApiManager/__tests-utils__/helpers.d.ts +9 -0
- package/dist/ApiManager/constants.d.ts +72 -0
- package/dist/ApiManager/eventNames.d.ts +34 -0
- package/dist/ApiManager/index.d.ts +3 -0
- package/dist/ApiManager/types.d.ts +99 -0
- package/dist/CallManager/@CallManager.d.ts +26 -0
- package/dist/CallManager/AbstractCallStrategy.d.ts +47 -0
- package/dist/CallManager/MCUCallStrategy.d.ts +30 -0
- package/dist/CallManager/RemoteStreamsManager.d.ts +8 -0
- package/dist/CallManager/causes.d.ts +13 -0
- package/dist/CallManager/eventNames.d.ts +45 -0
- package/dist/CallManager/hasCanceledCallError.d.ts +2 -0
- package/dist/CallManager/index.d.ts +7 -0
- package/dist/CallManager/types.d.ts +59 -0
- package/dist/ConnectionManager/@ConnectionManager.d.ts +48 -0
- package/dist/ConnectionManager/ConfigurationManager.d.ts +60 -0
- package/dist/ConnectionManager/ConnectionFlow.d.ts +84 -0
- package/dist/ConnectionManager/ConnectionStateMachine.d.ts +61 -0
- package/dist/ConnectionManager/RegistrationManager.d.ts +17 -0
- package/dist/ConnectionManager/SipOperations.d.ts +32 -0
- package/dist/ConnectionManager/UAFactory.d.ts +50 -0
- package/dist/ConnectionManager/eventNames.d.ts +16 -0
- package/dist/ConnectionManager/getExtraHeadersRemoteAddress.d.ts +2 -0
- package/dist/ConnectionManager/index.d.ts +3 -0
- package/dist/IncomingCallManager/@IncomingCallManager.d.ts +37 -0
- package/dist/IncomingCallManager/eventNames.d.ts +13 -0
- package/dist/IncomingCallManager/index.d.ts +2 -0
- package/dist/PresentationManager/@PresentationManager.d.ts +47 -0
- package/dist/PresentationManager/constants.d.ts +1 -0
- package/dist/PresentationManager/eventNames.d.ts +11 -0
- package/dist/PresentationManager/index.d.ts +2 -0
- package/dist/PresentationManager/types.d.ts +2 -0
- package/dist/SipConnector/@SipConnector.d.ts +96 -0
- package/dist/SipConnector/eventNames.d.ts +4 -0
- package/dist/SipConnector/index.d.ts +2 -0
- package/dist/{src/SipConnectorFacade → SipConnectorFacade}/SipConnectorFacade.d.ts +19 -17
- package/dist/{src/__fixtures__ → __fixtures__}/BaseSession.mock.d.ts +9 -9
- package/dist/{src/__fixtures__ → __fixtures__}/RTCPeerConnectionMock.d.ts +7 -1
- package/dist/{src/__fixtures__ → __fixtures__}/RTCRtpSenderMock.d.ts +1 -0
- package/dist/{src/__fixtures__ → __fixtures__}/RTCSessionMock.d.ts +14 -9
- package/dist/{src/__fixtures__ → __fixtures__}/UA.mock.d.ts +15 -17
- package/dist/{src → __fixtures__}/eventNames.d.ts +1 -1
- package/dist/{src/__fixtures__ → __fixtures__}/index.d.ts +4 -4
- package/dist/{src/__fixtures__ → __fixtures__}/jssip.mock.d.ts +4 -4
- package/dist/doMock.cjs +1 -1
- package/dist/{src/doMock.d.ts → doMock.d.ts} +2 -1
- package/dist/doMock.js +444 -344
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +14 -0
- package/dist/index.js +870 -703
- package/dist/setParametersToSender/index.d.ts +3 -0
- package/dist/{src/setParametersToSender → setParametersToSender}/resolveHasNeedToUpdateItemEncoding.d.ts +1 -1
- package/dist/{src/videoSendingBalancer → setParametersToSender}/setEncodingsToSender.d.ts +1 -5
- package/dist/setParametersToSender/setMaxBitrateToSender.d.ts +2 -0
- package/dist/{src/setParametersToSender → setParametersToSender}/setParametersToSender.d.ts +1 -4
- package/dist/setParametersToSender/types.d.ts +5 -0
- package/dist/{src/tools → tools}/__fixtures__/connectToServer.d.ts +2 -2
- package/dist/{src/tools → tools}/__fixtures__/processRequest.d.ts +1 -1
- package/dist/{src/tools → tools}/error/getLinkError.d.ts +1 -1
- package/dist/{src/tools → tools}/error/getTypeFromError.d.ts +1 -1
- package/dist/{src/tools → tools}/error/getValuesFromError.d.ts +1 -1
- package/dist/{src/tools → tools}/error/index.d.ts +1 -1
- package/dist/{src/tools → tools}/index.d.ts +2 -2
- package/dist/{src/tools → tools}/prepareMediaStream.d.ts +1 -1
- package/dist/{src/tools → tools}/setVideoTrackContentHints.d.ts +1 -1
- package/dist/{src/tools/syncMediaState/index.d.ts → tools/syncMediaState/createSyncMediaState.d.ts} +1 -1
- package/dist/tools/syncMediaState/index.d.ts +1 -0
- package/dist/{src/tools → tools}/syncMediaState/resolveOnStartMainCam.d.ts +1 -1
- package/dist/{src/tools → tools}/syncMediaState/resolveOnStartMic.d.ts +1 -1
- package/dist/{src/tools → tools}/syncMediaState/resolveOnStopMainCam.d.ts +1 -1
- package/dist/{src/tools → tools}/syncMediaState/resolveOnStopMic.d.ts +1 -1
- package/dist/types.d.ts +23 -0
- package/dist/utils/utils.d.ts +4 -0
- package/dist/videoSendingBalancer/CodecProvider.d.ts +7 -0
- package/dist/videoSendingBalancer/ParametersSetterWithQueue.d.ts +12 -0
- package/dist/videoSendingBalancer/SenderBalancer.d.ts +52 -0
- package/dist/videoSendingBalancer/SenderFinder.d.ts +7 -0
- package/dist/videoSendingBalancer/TaskQueue.d.ts +20 -0
- package/dist/videoSendingBalancer/VideoSendingBalancer.d.ts +44 -0
- package/dist/videoSendingBalancer/VideoSendingEventHandler.d.ts +25 -0
- package/dist/videoSendingBalancer/calcBitrate/calcMaxBitrateByWidth.d.ts +4 -0
- package/dist/videoSendingBalancer/calcBitrate/calcMaxBitrateByWidthAndCodec.d.ts +4 -0
- package/dist/videoSendingBalancer/calcBitrate/index.d.ts +1 -0
- package/dist/videoSendingBalancer/calcResolution/calcScaleResolutionDownBy.d.ts +6 -0
- package/dist/videoSendingBalancer/calcResolution/index.d.ts +1 -0
- package/dist/videoSendingBalancer/index.d.ts +3 -0
- package/dist/videoSendingBalancer/types.d.ts +36 -0
- package/package.json +36 -43
- package/dist/SipConnector-BHvTGgmw.js +0 -1352
- package/dist/SipConnector-ChW25Tx9.cjs +0 -1
- package/dist/src/SipConnector.d.ts +0 -235
- package/dist/src/causes.d.ts +0 -23
- package/dist/src/getExtraHeadersRemoteAddress.d.ts +0 -2
- package/dist/src/headers.d.ts +0 -37
- package/dist/src/index.d.ts +0 -11
- package/dist/src/setParametersToSender/index.d.ts +0 -1
- package/dist/src/types.d.ts +0 -69
- package/dist/src/videoSendingBalancer/balance.d.ts +0 -10
- package/dist/src/videoSendingBalancer/getMaxBitrateByWidth.d.ts +0 -3
- package/dist/src/videoSendingBalancer/getMaxBitrateByWidthAndCodec.d.ts +0 -3
- package/dist/src/videoSendingBalancer/index.d.ts +0 -13
- package/dist/src/videoSendingBalancer/processSender.d.ts +0 -10
- package/dist/src/videoSendingBalancer/scaleBitrate.d.ts +0 -2
- /package/dist/{src/SipConnectorFacade → SipConnectorFacade}/index.d.ts +0 -0
- /package/dist/{src/__fixtures__ → __fixtures__}/Registrator.mock.d.ts +0 -0
- /package/dist/{src/__fixtures__ → __fixtures__}/Request.mock.d.ts +0 -0
- /package/dist/{src/__fixtures__ → __fixtures__}/WebSocketInterface.mock.d.ts +0 -0
- /package/dist/{src/__fixtures__ → __fixtures__}/accountNotify.d.ts +0 -0
- /package/dist/{src/__fixtures__ → __fixtures__}/channels.d.ts +0 -0
- /package/dist/{src/__fixtures__ → __fixtures__}/channelsNotify.d.ts +0 -0
- /package/dist/{src/__fixtures__ → __fixtures__}/conferenceParticipantTokenIssuedNotify.d.ts +0 -0
- /package/dist/{src → __fixtures__}/constants.d.ts +0 -0
- /package/dist/{src/__fixtures__ → __fixtures__}/delayPromise.d.ts +0 -0
- /package/dist/{src/__fixtures__ → __fixtures__}/enterRoom.d.ts +0 -0
- /package/dist/{src/__fixtures__ → __fixtures__}/mediaState.d.ts +0 -0
- /package/dist/{src/__fixtures__ → __fixtures__}/participantMoveRequests.d.ts +0 -0
- /package/dist/{src/__fixtures__ → __fixtures__}/participantNotify.d.ts +0 -0
- /package/dist/{src/__fixtures__ → __fixtures__}/remoteCallerData.d.ts +0 -0
- /package/dist/{src/__fixtures__ → __fixtures__}/utils.d.ts +0 -0
- /package/dist/{src/__fixtures__ → __fixtures__}/webcastNotify.d.ts +0 -0
- /package/dist/{src/logger.d.ts → logger.d.ts} +0 -0
- /package/dist/{src/setParametersToSender → setParametersToSender}/configureDegradationPreference.d.ts +0 -0
- /package/dist/{src/setParametersToSender → setParametersToSender}/configureEmptyEncodings.d.ts +0 -0
- /package/dist/{src/setParametersToSender → setParametersToSender}/configureEncodings.d.ts +0 -0
- /package/dist/{src/setParametersToSender → setParametersToSender}/configureMaxBitrate.d.ts +0 -0
- /package/dist/{src/setParametersToSender → setParametersToSender}/configureScaleResolutionDownBy.d.ts +0 -0
- /package/dist/{src/setParametersToSender → setParametersToSender}/hasChangedRTCRtpSendParameters.d.ts +0 -0
- /package/dist/{src/tools → tools}/__fixtures__/call.d.ts +0 -0
- /package/dist/{src/tools → tools}/__fixtures__/hasValidUri.d.ts +0 -0
- /package/dist/{src/tools → tools}/__fixtures__/permissions.d.ts +0 -0
- /package/dist/{src/tools → tools}/__tests-utils__/parseObject.d.ts +0 -0
- /package/dist/{src/tools → tools}/__tests-utils__/resolveParseArray.d.ts +0 -0
- /package/dist/{src/tools → tools}/error/stringifyMessage.d.ts +0 -0
- /package/dist/{src/tools → tools}/generateSimulcastEncodings.d.ts +0 -0
- /package/dist/{src/tools → tools}/getExtraHeaders.d.ts +0 -0
- /package/dist/{src/tools → tools}/getUserAgent.d.ts +0 -0
- /package/dist/{src/tools → tools}/hasPurgatory.d.ts +0 -0
- /package/dist/{src/tools → tools}/resolveUpdateTransceiver.d.ts +0 -0
- /package/dist/{src/videoSendingBalancer → tools}/scaleResolutionAndBitrate.d.ts +0 -0
- /package/dist/{src/tools/sendDTMFAccumulated.d.ts → tools/sendDtmfFAccumulated.d.ts} +0 -0
- /package/dist/{src/utils → utils}/errors.d.ts +0 -0
- /package/dist/{src/utils → utils}/findSenderByStream.d.ts +0 -0
- /package/dist/{src/utils → utils}/findVideoSender.d.ts +0 -0
- /package/dist/{src/utils → utils}/findVideoTrack.d.ts +0 -0
- /package/dist/{src/utils → utils}/getCodecFromSender.d.ts +0 -0
- /package/dist/{src/videoSendingBalancer → utils}/hasIncludesString.d.ts +0 -0
- /package/dist/{src/utils → utils}/replaceForbiddenSymbolsWithUnderscore.d.ts +0 -0
- /package/dist/{src/videoSendingBalancer → videoSendingBalancer/calcBitrate}/hasAv1Codec.d.ts +0 -0
- /package/dist/{src/videoSendingBalancer → videoSendingBalancer/calcBitrate}/scaleBitrateByCodec.d.ts +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare const resolveHasNeedToUpdateItemEncoding: (defaultValue?: number) => (itemEncodingTarget
|
|
1
|
+
declare const resolveHasNeedToUpdateItemEncoding: (defaultValue?: number) => (itemEncodingTarget?: number, itemEncodingCurrent?: number) => boolean;
|
|
2
2
|
export default resolveHasNeedToUpdateItemEncoding;
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
export type TResult = {
|
|
3
|
-
parameters: RTCRtpSendParameters;
|
|
4
|
-
isChanged: boolean;
|
|
5
|
-
};
|
|
1
|
+
import { TOnSetParameters, TResult } from './types';
|
|
6
2
|
declare const setEncodingsToSender: (sender: RTCRtpSender, encodingsTarget: {
|
|
7
3
|
scaleResolutionDownBy?: number;
|
|
8
4
|
maxBitrate?: number;
|
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
import { TRtpSendParameters } from '../types';
|
|
2
|
-
|
|
3
|
-
parameters: RTCRtpSendParameters;
|
|
4
|
-
isChanged: boolean;
|
|
5
|
-
};
|
|
2
|
+
import { TResult } from './types';
|
|
6
3
|
declare const setParametersToSender: (sender: RTCRtpSender, parametersTarget: TRtpSendParameters) => Promise<TResult>;
|
|
7
4
|
export default setParametersToSender;
|
|
@@ -95,7 +95,7 @@ export declare const uaConfigurationWithAuthorization: {
|
|
|
95
95
|
session_timers: boolean;
|
|
96
96
|
sockets: import('../../__fixtures__/WebSocketInterface.mock').default[];
|
|
97
97
|
user_agent: string;
|
|
98
|
-
|
|
98
|
+
sdpSemantics: string;
|
|
99
99
|
register_expires: number;
|
|
100
100
|
connection_recovery_max_interval: number;
|
|
101
101
|
connection_recovery_min_interval: number;
|
|
@@ -108,7 +108,7 @@ export declare const uaConfigurationWithAuthorizationPasswordChanged: {
|
|
|
108
108
|
session_timers: boolean;
|
|
109
109
|
sockets: import('../../__fixtures__/WebSocketInterface.mock').default[];
|
|
110
110
|
user_agent: string;
|
|
111
|
-
|
|
111
|
+
sdpSemantics: string;
|
|
112
112
|
register_expires: number;
|
|
113
113
|
connection_recovery_max_interval: number;
|
|
114
114
|
connection_recovery_min_interval: number;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { default as getLinkError } from './getLinkError';
|
|
2
|
-
export { default as getTypeFromError
|
|
2
|
+
export { EErrorTypes, default as getTypeFromError } from './getTypeFromError';
|
|
3
3
|
export { default as getValuesFromError } from './getValuesFromError';
|
|
@@ -2,5 +2,5 @@ export * as error from './error';
|
|
|
2
2
|
export { default as getExtraHeaders } from './getExtraHeaders';
|
|
3
3
|
export { default as getUserAgent } from './getUserAgent';
|
|
4
4
|
export { default as hasPurgatory, PURGATORY_CONFERENCE_NUMBER } from './hasPurgatory';
|
|
5
|
-
export { default as sendDtmfAccumulated } from './
|
|
6
|
-
export {
|
|
5
|
+
export { default as sendDtmfAccumulated } from './sendDtmfFAccumulated';
|
|
6
|
+
export { createSyncMediaState } from './syncMediaState';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TContentHint } from '../
|
|
1
|
+
import { TContentHint } from '../PresentationManager';
|
|
2
2
|
declare const prepareMediaStream: (mediaStream?: MediaStream, { directionVideo, directionAudio, contentHint, }?: {
|
|
3
3
|
directionVideo?: RTCRtpTransceiverDirection;
|
|
4
4
|
directionAudio?: RTCRtpTransceiverDirection;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as createSyncMediaState } from './createSyncMediaState';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { SipConnector } from '../../SipConnector';
|
|
2
2
|
declare const resolveOnStartMainCam: (sipConnector: SipConnector) => (handler: ({ isSyncForced }: {
|
|
3
3
|
isSyncForced: boolean;
|
|
4
4
|
}) => void) => (() => void);
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { UA, WebSocketInterface } from '@krivega/jssip';
|
|
2
|
+
export type TJsSIP = {
|
|
3
|
+
UA: typeof UA;
|
|
4
|
+
WebSocketInterface: typeof WebSocketInterface;
|
|
5
|
+
};
|
|
6
|
+
export type TRtpSendParameters = Partial<Omit<RTCRtpSendParameters, 'transactionId'>>;
|
|
7
|
+
export type TSize = {
|
|
8
|
+
width: number;
|
|
9
|
+
height: number;
|
|
10
|
+
};
|
|
11
|
+
export type TSimulcastEncoding = TSize & {
|
|
12
|
+
rid?: string;
|
|
13
|
+
scalabilityMode?: string;
|
|
14
|
+
};
|
|
15
|
+
export declare enum EMimeTypesVideoCodecs {
|
|
16
|
+
VP8 = "video/VP8",
|
|
17
|
+
VP9 = "video/VP9",
|
|
18
|
+
H264 = "video/H264",
|
|
19
|
+
AV1 = "video/AV1",
|
|
20
|
+
rtx = "video/rtx",
|
|
21
|
+
red = "video/red",
|
|
22
|
+
flexfec03 = "video/flexfec-03"
|
|
23
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare function resolveSipUrl(serverUrl: string): (string: string) => string;
|
|
2
|
+
export declare const parseDisplayName: (displayName: string) => string;
|
|
3
|
+
export declare const generateUserId: () => number;
|
|
4
|
+
export declare const hasVideoTracks: (remoteTracks: MediaStreamTrack[]) => boolean;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { TOnSetParameters, TResult } from '../setParametersToSender';
|
|
2
|
+
import { IEncodingParameters, IParametersSetter } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Обёртка для ParametersSetter с использованием TaskQueue
|
|
5
|
+
*/
|
|
6
|
+
export declare class ParametersSetterWithQueue implements IParametersSetter {
|
|
7
|
+
private readonly taskQueue;
|
|
8
|
+
private readonly onSetParameters?;
|
|
9
|
+
constructor(onSetParameters?: TOnSetParameters);
|
|
10
|
+
setEncodingsToSender(sender: RTCRtpSender, parameters: IEncodingParameters): Promise<TResult>;
|
|
11
|
+
stop(): void;
|
|
12
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { TResult } from '../setParametersToSender';
|
|
2
|
+
import { ICodecProvider, IMainCamHeaders, IParametersSetter, ISenderFinder } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Бизнес-логика балансировки отправителей
|
|
5
|
+
* Отвечает за определение стратегии и применение параметров к отправителю
|
|
6
|
+
*/
|
|
7
|
+
export declare class SenderBalancer {
|
|
8
|
+
private readonly ignoreForCodec?;
|
|
9
|
+
private readonly senderFinder;
|
|
10
|
+
private readonly codecProvider;
|
|
11
|
+
private readonly parametersSetter;
|
|
12
|
+
private readonly resultNoChanged;
|
|
13
|
+
constructor({ senderFinder, codecProvider, parametersSetter, }: {
|
|
14
|
+
senderFinder: ISenderFinder;
|
|
15
|
+
codecProvider: ICodecProvider;
|
|
16
|
+
parametersSetter: IParametersSetter;
|
|
17
|
+
}, options: {
|
|
18
|
+
ignoreForCodec?: string;
|
|
19
|
+
});
|
|
20
|
+
/**
|
|
21
|
+
* Выполняет балансировку на основе заголовков от сервера
|
|
22
|
+
* @param connection - RTCPeerConnection для получения отправителей
|
|
23
|
+
* @param headers - Заголовки от сервера с командами управления
|
|
24
|
+
* @returns Promise с результатом балансировки
|
|
25
|
+
*/
|
|
26
|
+
balance(connection: RTCPeerConnection, headers?: IMainCamHeaders): Promise<TResult>;
|
|
27
|
+
/**
|
|
28
|
+
* Обрабатывает отправитель в зависимости от команды управления
|
|
29
|
+
* @param context - Контекст балансировки
|
|
30
|
+
* @returns Promise с результатом обработки
|
|
31
|
+
*/
|
|
32
|
+
private processSender;
|
|
33
|
+
/**
|
|
34
|
+
* Понижает разрешение отправителя (пауза камеры)
|
|
35
|
+
* @param context - Контекст балансировки
|
|
36
|
+
* @returns Promise с результатом
|
|
37
|
+
*/
|
|
38
|
+
private downgradeResolutionSender;
|
|
39
|
+
/**
|
|
40
|
+
* Устанавливает битрейт на основе разрешения трека
|
|
41
|
+
* @param context - Контекст балансировки
|
|
42
|
+
* @returns Promise с результатом
|
|
43
|
+
*/
|
|
44
|
+
private setBitrateByTrackResolution;
|
|
45
|
+
/**
|
|
46
|
+
* Устанавливает разрешение отправителя на основе заголовка
|
|
47
|
+
* @param resolutionMainCam - Разрешение главной камеры
|
|
48
|
+
* @param context - Контекст балансировки
|
|
49
|
+
* @returns Promise с результатом
|
|
50
|
+
*/
|
|
51
|
+
private setResolutionSender;
|
|
52
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ITaskQueue } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Очередь задач с правильной обработкой ошибок
|
|
4
|
+
* Обеспечивает последовательное выполнение задач и логирование ошибок
|
|
5
|
+
*/
|
|
6
|
+
export declare class TaskQueue<T> implements ITaskQueue<T> {
|
|
7
|
+
private readonly stackPromises;
|
|
8
|
+
/**
|
|
9
|
+
* Добавляет задачу в очередь и возвращает Promise с результатом
|
|
10
|
+
* @param task - Функция для выполнения
|
|
11
|
+
* @returns Promise с результатом выполнения задачи
|
|
12
|
+
*/
|
|
13
|
+
add(task: () => Promise<T>): Promise<T>;
|
|
14
|
+
stop(): void;
|
|
15
|
+
/**
|
|
16
|
+
* Выполняет задачи из очереди с обработкой ошибок
|
|
17
|
+
* @returns Promise с результатом выполнения
|
|
18
|
+
*/
|
|
19
|
+
private run;
|
|
20
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { TResult } from '../setParametersToSender';
|
|
2
|
+
import { SipConnector } from '../SipConnector';
|
|
3
|
+
import { IBalancerOptions } from './types';
|
|
4
|
+
/**
|
|
5
|
+
* Контроллер/фасад для балансировки видеопотоков
|
|
6
|
+
* Координирует работу обработчика событий, балансировщика и очереди задач
|
|
7
|
+
*/
|
|
8
|
+
declare class VideoSendingBalancer {
|
|
9
|
+
private readonly eventHandler;
|
|
10
|
+
private readonly senderBalancer;
|
|
11
|
+
private readonly parametersSetterWithQueue;
|
|
12
|
+
private serverHeaders?;
|
|
13
|
+
constructor(sipConnector: SipConnector, { ignoreForCodec, onSetParameters }?: IBalancerOptions);
|
|
14
|
+
/**
|
|
15
|
+
* Подписывается на события управления главной камерой
|
|
16
|
+
*/
|
|
17
|
+
subscribe(): void;
|
|
18
|
+
/**
|
|
19
|
+
* Отписывается от событий и сбрасывает состояние
|
|
20
|
+
*/
|
|
21
|
+
unsubscribe(): void;
|
|
22
|
+
/**
|
|
23
|
+
* Сбрасывает состояние балансировщика
|
|
24
|
+
*/
|
|
25
|
+
reset(): void;
|
|
26
|
+
/**
|
|
27
|
+
* Перебалансирует текущее состояние
|
|
28
|
+
* @returns Promise с результатом балансировки
|
|
29
|
+
*/
|
|
30
|
+
reBalance(): Promise<TResult>;
|
|
31
|
+
/**
|
|
32
|
+
* Выполняет балансировку на основе текущего состояния
|
|
33
|
+
* @returns Promise с результатом балансировки
|
|
34
|
+
*/
|
|
35
|
+
private balanceByTrack;
|
|
36
|
+
/**
|
|
37
|
+
* Обработчик событий управления главной камерой
|
|
38
|
+
* @param headers - Заголовки от сервера
|
|
39
|
+
*/
|
|
40
|
+
private readonly handleMainCamControl;
|
|
41
|
+
}
|
|
42
|
+
declare const resolveVideoSendingBalancer: (sipConnector: SipConnector, options?: IBalancerOptions) => VideoSendingBalancer;
|
|
43
|
+
export default VideoSendingBalancer;
|
|
44
|
+
export { resolveVideoSendingBalancer };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { SipConnector } from '../SipConnector';
|
|
2
|
+
import { IEventHandler, IMainCamHeaders } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Обработчик событий управления главной камерой
|
|
5
|
+
* Отвечает за подписку и отписку от событий SipConnector
|
|
6
|
+
*/
|
|
7
|
+
export declare class VideoSendingEventHandler implements IEventHandler {
|
|
8
|
+
private readonly sipConnector;
|
|
9
|
+
private currentHandler?;
|
|
10
|
+
constructor(sipConnector: SipConnector);
|
|
11
|
+
/**
|
|
12
|
+
* Подписывается на события управления главной камерой
|
|
13
|
+
* @param handler - Обработчик события
|
|
14
|
+
*/
|
|
15
|
+
subscribe(handler: (headers: IMainCamHeaders) => void): void;
|
|
16
|
+
/**
|
|
17
|
+
* Отписывается от событий управления главной камерой
|
|
18
|
+
*/
|
|
19
|
+
unsubscribe(): void;
|
|
20
|
+
/**
|
|
21
|
+
* Получает соединение из SipConnector
|
|
22
|
+
* @returns RTCPeerConnection или undefined
|
|
23
|
+
*/
|
|
24
|
+
getConnection(): RTCPeerConnection | undefined;
|
|
25
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare const getMinimumBitrate: (codec?: string) => number;
|
|
2
|
+
export declare const getMaximumBitrate: (codec?: string) => number;
|
|
3
|
+
declare const calcMaxBitrateByWidthAndCodec: (maxWidth: number, codec?: string) => number;
|
|
4
|
+
export default calcMaxBitrateByWidthAndCodec;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as calcMaxBitrateByWidthAndCodec, getMaximumBitrate, getMinimumBitrate, } from './calcMaxBitrateByWidthAndCodec';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as calcScaleResolutionDownBy } from './calcScaleResolutionDownBy';
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { EEventsMainCAM } from '../ApiManager';
|
|
2
|
+
import { TOnSetParameters, TResult } from '../setParametersToSender';
|
|
3
|
+
export interface IBalancerOptions {
|
|
4
|
+
ignoreForCodec?: string;
|
|
5
|
+
onSetParameters?: TOnSetParameters;
|
|
6
|
+
}
|
|
7
|
+
export interface IMainCamHeaders {
|
|
8
|
+
mainCam?: EEventsMainCAM;
|
|
9
|
+
resolutionMainCam?: string;
|
|
10
|
+
}
|
|
11
|
+
export interface IBalancingContext {
|
|
12
|
+
sender: RTCRtpSender;
|
|
13
|
+
videoTrack: MediaStreamVideoTrack;
|
|
14
|
+
codec?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface ISenderFinder {
|
|
17
|
+
findVideoSender: (senders: RTCRtpSender[]) => RTCRtpSender | undefined;
|
|
18
|
+
}
|
|
19
|
+
export interface ICodecProvider {
|
|
20
|
+
getCodecFromSender: (sender: RTCRtpSender) => Promise<string>;
|
|
21
|
+
}
|
|
22
|
+
export interface IEncodingParameters {
|
|
23
|
+
scaleResolutionDownBy: number;
|
|
24
|
+
maxBitrate: number;
|
|
25
|
+
}
|
|
26
|
+
export interface IParametersSetter {
|
|
27
|
+
setEncodingsToSender: (sender: RTCRtpSender, parameters: IEncodingParameters, onSetParameters?: TOnSetParameters) => Promise<TResult>;
|
|
28
|
+
}
|
|
29
|
+
export interface IEventHandler {
|
|
30
|
+
subscribe: (handler: (headers: IMainCamHeaders) => void) => void;
|
|
31
|
+
unsubscribe: () => void;
|
|
32
|
+
getConnection: () => RTCPeerConnection | undefined;
|
|
33
|
+
}
|
|
34
|
+
export interface ITaskQueue<T> {
|
|
35
|
+
add: (task: () => Promise<T>) => Promise<T>;
|
|
36
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sip-connector",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "15.1.0",
|
|
4
4
|
"description": "Module for connect to Vinteo server",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"webrtc",
|
|
@@ -22,24 +22,16 @@
|
|
|
22
22
|
"type": "module",
|
|
23
23
|
"exports": {
|
|
24
24
|
".": {
|
|
25
|
+
"types": "./dist/index.d.ts",
|
|
26
|
+
"import": "./dist/index.js",
|
|
25
27
|
"require": "./dist/index.cjs",
|
|
26
|
-
"
|
|
28
|
+
"default": "./dist/index.js"
|
|
27
29
|
},
|
|
28
30
|
"./doMock": {
|
|
31
|
+
"types": "./dist/doMock.d.ts",
|
|
32
|
+
"import": "./dist/doMock.js",
|
|
29
33
|
"require": "./dist/doMock.cjs",
|
|
30
|
-
"
|
|
31
|
-
}
|
|
32
|
-
},
|
|
33
|
-
"main": "./dist/index.cjs",
|
|
34
|
-
"types": "dist/index.d.ts",
|
|
35
|
-
"typesVersions": {
|
|
36
|
-
"*": {
|
|
37
|
-
"dist/index.d.ts": [
|
|
38
|
-
"dist/index.d.ts"
|
|
39
|
-
],
|
|
40
|
-
"*": [
|
|
41
|
-
"dist/*"
|
|
42
|
-
]
|
|
34
|
+
"default": "./dist/doMock.js"
|
|
43
35
|
}
|
|
44
36
|
},
|
|
45
37
|
"files": [
|
|
@@ -53,60 +45,61 @@
|
|
|
53
45
|
"prepare": "husky",
|
|
54
46
|
"prepublishOnly": "yarn build",
|
|
55
47
|
"preview": "vite preview",
|
|
56
|
-
"release": "standard-version && npm run release:publish",
|
|
57
|
-
"release:major": "standard-version --release-as major && npm run release:publish",
|
|
58
|
-
"release:pre": "standard-version --prerelease && npm run release:publish
|
|
59
|
-
"release:
|
|
60
|
-
"release:publish
|
|
48
|
+
"release": "standard-version && npm run release:publish && npm publish --access=public",
|
|
49
|
+
"release:major": "standard-version --release-as major && npm run release:publish && npm publish --access=public",
|
|
50
|
+
"release:pre": "standard-version --prerelease && npm run release:publish && npm publish --tag prerelease",
|
|
51
|
+
"release:alpha": "standard-version --prerelease alpha && npm run release:publish && npm publish --tag alpha",
|
|
52
|
+
"release:publish": "git push --follow-tags",
|
|
61
53
|
"test": "jest",
|
|
62
54
|
"test:ci": "cross-env CI=true jest",
|
|
63
|
-
"test:coverage": "yarn test:ci --
|
|
55
|
+
"test:coverage": "yarn test:ci --no-cache --coverage",
|
|
64
56
|
"test:watch": "jest --watch"
|
|
65
57
|
},
|
|
66
58
|
"dependencies": {
|
|
67
59
|
"@krivega/cancelable-promise": "^1.1.4",
|
|
68
60
|
"@krivega/jssip": "^5.1.2",
|
|
69
61
|
"debug": "^4.4.1",
|
|
70
|
-
"events-constructor": "^
|
|
71
|
-
"repeated-calls": "^2.3.
|
|
62
|
+
"events-constructor": "^2.0.0",
|
|
63
|
+
"repeated-calls": "^2.3.4",
|
|
72
64
|
"sequent-promises": "^2.0.1",
|
|
73
65
|
"stack-promises": "^2.0.3",
|
|
74
66
|
"ts-debounce": "^4.0.0",
|
|
75
|
-
"webrtc-mock": "^1.1.7"
|
|
67
|
+
"webrtc-mock": "^1.1.7",
|
|
68
|
+
"xstate": "^5.20.2"
|
|
76
69
|
},
|
|
77
70
|
"devDependencies": {
|
|
78
71
|
"@babel/preset-typescript": "^7.27.1",
|
|
79
72
|
"@commitlint/cli": "^19.8.1",
|
|
80
73
|
"@commitlint/config-conventional": "^19.8.1",
|
|
81
|
-
"@eslint/compat": "^1.3.
|
|
82
|
-
"@nabla/vite-plugin-eslint": "^2.0.
|
|
83
|
-
"@stylistic/eslint-plugin": "^5.
|
|
74
|
+
"@eslint/compat": "^1.3.2",
|
|
75
|
+
"@nabla/vite-plugin-eslint": "^2.0.6",
|
|
76
|
+
"@stylistic/eslint-plugin": "^5.2.3",
|
|
84
77
|
"@types/debug": "^4.1.12",
|
|
85
78
|
"@types/dom-mediacapture-transform": "^0.1.11",
|
|
86
79
|
"@types/jest": "^30.0.0",
|
|
87
|
-
"@typescript-eslint/eslint-plugin": "^8.
|
|
88
|
-
"@typescript-eslint/parser": "^8.
|
|
89
|
-
"cross-env": "^
|
|
90
|
-
"eslint": "^9.
|
|
80
|
+
"@typescript-eslint/eslint-plugin": "^8.39.1",
|
|
81
|
+
"@typescript-eslint/parser": "^8.39.1",
|
|
82
|
+
"cross-env": "^10.0.0",
|
|
83
|
+
"eslint": "^9.33.0",
|
|
91
84
|
"eslint-import-resolver-typescript": "^4.4.4",
|
|
92
85
|
"eslint-plugin-flowtype": "^8.0.3",
|
|
93
86
|
"eslint-plugin-import": "^2.32.0",
|
|
94
87
|
"eslint-plugin-jest": "^29.0.1",
|
|
95
|
-
"eslint-plugin-prettier": "^5.5.
|
|
96
|
-
"eslint-plugin-unicorn": "^
|
|
88
|
+
"eslint-plugin-prettier": "^5.5.4",
|
|
89
|
+
"eslint-plugin-unicorn": "^60.0.0",
|
|
97
90
|
"husky": "^9.1.7",
|
|
98
|
-
"jest": "^30.0.
|
|
99
|
-
"jest-environment-jsdom": "^30.0.
|
|
91
|
+
"jest": "^30.0.5",
|
|
92
|
+
"jest-environment-jsdom": "^30.0.5",
|
|
100
93
|
"jest-extended": "^6.0.0",
|
|
101
94
|
"jest-junit": "^16.0.0",
|
|
102
|
-
"lint-staged": "^16.1.
|
|
95
|
+
"lint-staged": "^16.1.5",
|
|
103
96
|
"prettier": "^3.6.2",
|
|
104
97
|
"standard-version": "^9.5.0",
|
|
105
|
-
"ts-jest": "^29.4.
|
|
98
|
+
"ts-jest": "^29.4.1",
|
|
106
99
|
"ts-node": "^10.9.2",
|
|
107
100
|
"tsc-files": "^1.1.4",
|
|
108
|
-
"typescript": "^5.
|
|
109
|
-
"vite": "^7.
|
|
101
|
+
"typescript": "^5.9.2",
|
|
102
|
+
"vite": "^7.1.2",
|
|
110
103
|
"vite-plugin-dts": "^4.5.4",
|
|
111
104
|
"vite-tsconfig-paths": "^5.1.4"
|
|
112
105
|
},
|
|
@@ -114,13 +107,13 @@
|
|
|
114
107
|
"@krivega/cancelable-promise": "^1.1.4",
|
|
115
108
|
"@krivega/jssip": "^5.1.2",
|
|
116
109
|
"debug": "^4.4.1",
|
|
117
|
-
"events-constructor": "^
|
|
110
|
+
"events-constructor": "^2.0.0",
|
|
118
111
|
"repeated-calls": "^2.3.3",
|
|
119
112
|
"sequent-promises": "^2.0.1",
|
|
120
113
|
"stack-promises": "^2.0.3",
|
|
121
114
|
"ts-debounce": "^4.0.0",
|
|
122
|
-
"webrtc-mock": "^1.1.7"
|
|
115
|
+
"webrtc-mock": "^1.1.7",
|
|
116
|
+
"xstate": "^5.20.2"
|
|
123
117
|
},
|
|
124
|
-
"packageManager": "yarn@1.22.22"
|
|
125
|
-
"main:src": "src/index.ts"
|
|
118
|
+
"packageManager": "yarn@1.22.22"
|
|
126
119
|
}
|