@livedigital/client 3.56.1 → 3.57.0-lk-5354-api-reference.1

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.
@@ -36,34 +36,59 @@ export interface BaseTrackParams {
36
36
  mediaStreamTrack: MediaStreamTrack;
37
37
  constraints: MediaStreamConstraints;
38
38
  }
39
+ /**
40
+ * Базовый контракт локального трека, которым управляет SDK.
41
+ *
42
+ * Через него приложение может публиковать медиа, ставить его на паузу,
43
+ * получать техническую статистику и отслеживать состояние публикации.
44
+ */
39
45
  export interface BaseTrack {
46
+ /** Набор событий трека, на которые можно подписаться из приложения. */
40
47
  observer: EnhancedEventEmitter;
41
48
  mediaStreamTrack: MediaStreamTrack;
42
49
  id: string;
43
50
  kind: MediaKind;
51
+ /** Показывает, опубликован ли трек в канале прямо сейчас. */
44
52
  isPublished: boolean;
53
+ /** Показывает, находится ли трек в paused-состоянии. */
45
54
  isPaused: boolean;
46
55
  internalEventEmitter: EnhancedEventEmitter<InternalObserverEvents>;
47
56
  producerId?: string;
48
57
  videoWebRTCStats?: ParsedOutboundVideoStreamStats;
49
58
  audioWebRTCStats?: ParsedOutboundAudioStreamStats;
59
+ /** Текущие MOS-оценки качества для этого трека. */
50
60
  connectionScores: MOSScores;
51
61
  getLabel: () => TrackLabel;
52
62
  setLabel: (label: TrackLabel) => void;
53
63
  setEncoderConfig: (encoderConfig: EncoderConfig) => void;
54
64
  getEncoderConfig: () => EncoderConfig;
55
65
  setProducer: (producer: Producer) => void;
66
+ /** Управляет тем, будет ли исходный `MediaStreamTrack` остановлен при паузе или закрытии публикации. */
56
67
  setStopTrackOnPause: (value: boolean) => void;
57
68
  getProducer: () => Producer | undefined;
69
+ /** Явно останавливает исходный `MediaStreamTrack`, если приложению нужно освободить устройство. */
58
70
  stopMediaStreamTrack: () => void;
71
+ /** Закрывает producer, связанный с треком, без удаления самого объекта трека. */
59
72
  closeProducer: (stopTrack?: boolean) => Promise<void>;
73
+ /** Меняет сетевой приоритет отправки этого трека. */
60
74
  setPriority: (priority: RTCPriorityType) => Promise<void>;
75
+ /**
76
+ * Низкоуровневый вариант публикации трека с явным контролем параметров кодирования.
77
+ *
78
+ * В большинстве сценариев приложению достаточно вызывать `publish()`.
79
+ */
61
80
  produce: ({ encodings, codecOptions, preferredCodec, transformParams, keyFrameRequestDelay, }: TrackProduceParams) => Promise<void>;
81
+ /** Публикует трек в канале, чтобы он стал доступен другим участникам. */
62
82
  publish: () => Promise<void>;
83
+ /** Снимает трек с публикации. */
63
84
  unpublish: (stopTrack?: boolean) => Promise<void>;
85
+ /** Возобновляет передачу трека после паузы. */
64
86
  resume: () => Promise<void>;
87
+ /** Возвращает сводную информацию о треке в формате, удобном для UI и отладки. */
65
88
  getInfo: () => Promise<BaseTrackInfo>;
89
+ /** Возвращает техническую WebRTC-статистику опубликованного трека. */
66
90
  getStats: () => Promise<TrackOutboundStats | undefined>;
91
+ /** Подменяет исходный `MediaStreamTrack` без пересоздания всего объекта трека. */
67
92
  replaceTrack: (track: MediaStreamTrack) => Promise<void>;
68
93
  }
69
94
  export interface TrackWithEncodings extends BaseTrack {
@@ -74,29 +99,58 @@ export interface TrackWithEncodings extends BaseTrack {
74
99
  export interface TrackWithEffects extends BaseTrack {
75
100
  isEffectsProcessing: boolean;
76
101
  }
102
+ /**
103
+ * Публичный контракт локального аудиотрека.
104
+ */
77
105
  export interface AudioTrack extends BaseTrack, TrackWithEncodings, TrackWithEffects {
106
+ /** Подключает пользовательский процессор аудиотрека перед публикацией. */
78
107
  setTrackProcessor: (trackProcessor?: AudioTrackProcessor) => void;
108
+ /** Убирает ранее установленный пользовательский процессор аудио. */
79
109
  unsetTrackProcessor: () => void;
110
+ /** Включает шумоподавление для текущего микрофонного трека. */
80
111
  enableNoiseSuppression: () => Promise<void>;
112
+ /** Отключает шумоподавление для текущего микрофонного трека. */
81
113
  disableNoiseSuppression: () => Promise<void>;
114
+ /** Ставит аудиотрек на паузу без его удаления из SDK. */
82
115
  pause: () => Promise<void>;
83
116
  }
117
+ /**
118
+ * Дополнительные параметры публикации видеотрека.
119
+ */
84
120
  export interface VideoTrackPublishParams {
121
+ /** Задержка перед запросом key frame после публикации или перепубликации трека. */
85
122
  keyFrameRequestDelay?: number;
86
123
  }
124
+ /**
125
+ * Публичный контракт локального видеотрека.
126
+ */
87
127
  export interface VideoTrack extends BaseTrack, TrackWithEncodings, TrackWithEffects {
128
+ /** Публикует видеотрек с дополнительными параметрами управления key frame. */
88
129
  publish: (params?: VideoTrackPublishParams) => Promise<void>;
130
+ /** Обновляет прикладные параметры трансформации видео, например ожидаемый размер кадра. */
89
131
  setTransformParams: (transformParams: object) => void;
132
+ /** Ограничивает максимальный spatial layer для опубликованного видео. */
90
133
  setMaxSpatialLayer: (spatialLayer: number) => Promise<void>;
134
+ /** Возвращает текущий верхний spatial layer, доступный для публикации. */
91
135
  getMaxSpatialLayer: () => number | undefined;
136
+ /** Включает движок видеоэффектов для трека. */
92
137
  enableEffects: () => Promise<void>;
138
+ /** Отключает ранее включённые видеоэффекты. */
93
139
  disableEffects: () => Promise<void>;
140
+ /** Применяет набор визуальных эффектов к текущему видеотреку. */
94
141
  applyEffects: (effects: Effects) => Promise<void>;
142
+ /** Сбрасывает текущие визуальные эффекты к исходному состоянию. */
95
143
  resetEffects: () => void;
144
+ /** Регистрирует callback, который будет вызван после загрузки моделей движка эффектов. */
96
145
  setOnLoadModels: (callback: () => void) => void;
146
+ /** Прогресс загрузки моделей эффекторного движка от `0` до `1`. */
97
147
  modelsLoadProgress: number;
148
+ /** Ставит видеотрек на паузу без его удаления из SDK. */
98
149
  pause: () => Promise<void>;
99
150
  }
151
+ /**
152
+ * Универсальный тип локального трека, который может быть аудио- или видеотреком.
153
+ */
100
154
  export type Track = AudioTrack | VideoTrack;
101
155
  export type AudioTrackParams = BaseTrackParams;
102
156
  export interface MediaTracksFactory {
@@ -114,10 +168,21 @@ export type ProducerAppData = AppData & {
114
168
  codec?: RtpCodecCapability;
115
169
  keyFrameRequestDelay?: number;
116
170
  };
171
+ /**
172
+ * Параметры предварительной инициализации SDK видеоэффектов.
173
+ *
174
+ * Используются, когда приложение хочет подготовить blur, background replacement
175
+ * и другие эффекты заранее, до первого вызова `videoTrack.enableEffects()`.
176
+ */
117
177
  export interface InitEffectsSDKParams {
178
+ /** Идентификатор клиента, выданный провайдером эффекторного SDK. */
118
179
  customerId?: string;
180
+ /** Явный URL JavaScript-ресурсов эффекторного SDK. */
119
181
  sdk_url?: string;
182
+ /** Явный URL API эффекторного SDK. */
120
183
  api_url?: string;
184
+ /** Локальный каталог, из которого приложение раздаёт модели и WASM-ресурсы. */
121
185
  localDir?: string;
186
+ /** Версия пакета моделей и runtime-компонентов, которую нужно использовать. */
122
187
  version?: string;
123
188
  }
@@ -1,6 +1,14 @@
1
1
  import type { NETWORK_OBSERVER_EVENTS } from '../constants/events';
2
2
  export type ExtendedRTCPeerConnectionState = RTCPeerConnectionState | 'reconnected';
3
3
  export type TransportDirection = 'send' | 'recv';
4
+ /**
5
+ * Политика выбора ICE-маршрутов для WebRTC-соединений.
6
+ *
7
+ * Значение `all` разрешает использовать все доступные candidate'ы, а `relay`
8
+ * помогает принудительно уйти в TURN-сценарий, если это требуется для отладки
9
+ * или обхода сетевых ограничений.
10
+ */
11
+ export type IceTransportPolicy = 'all' | 'relay';
4
12
  export interface TransportStatePayload {
5
13
  state: ExtendedRTCPeerConnectionState;
6
14
  direction: TransportDirection;
@@ -0,0 +1,36 @@
1
+ import type { ConsumerData, SpatialLayerParams, TrackInboundStats } from './common';
2
+ /**
3
+ * Публичная форма consumer-объекта, связанного с удалённым треком.
4
+ *
5
+ * SDK создаёт и обновляет consumer самостоятельно, а приложение может читать
6
+ * его текущее состояние и вызывать публичные операции управления подпиской.
7
+ */
8
+ export interface PeerConsumer {
9
+ readonly id: string;
10
+ readonly kind: 'audio' | 'video';
11
+ readonly producerId: string;
12
+ readonly appData: ConsumerData;
13
+ readonly paused: boolean;
14
+ readonly isVideo: boolean;
15
+ readonly isAudio: boolean;
16
+ readonly spatialLayers: number;
17
+ readonly temporalLayers: number;
18
+ readonly currentSpatialLayer: number;
19
+ readonly currentTemporalLayer: number;
20
+ readonly requestedSpatialLayer?: number;
21
+ readonly currentMaxSpatialLayer: number;
22
+ readonly availableSpatialLayers: SpatialLayerParams[];
23
+ readonly currentSpatialLayerParams?: SpatialLayerParams;
24
+ pause: () => void;
25
+ resume: () => void;
26
+ close: () => void;
27
+ setCurrentSpatialLayer: (currentSpatialLayer: number) => void;
28
+ setCurrentTemporalLayer: (currentTemporalLayer: number) => void;
29
+ applyLayersUpdate: (payload: {
30
+ spatialLayer?: number;
31
+ temporalLayer?: number;
32
+ }) => void;
33
+ setRequestedSpatialLayer: (spatialLayer: number | undefined) => void;
34
+ setCurrentMaxSpatialLayer: (spatialLayer: number) => void;
35
+ getStats: () => Promise<TrackInboundStats | undefined>;
36
+ }
@@ -0,0 +1,52 @@
1
+ import type { ParsedInboundAudioStreamStats, ParsedInboundVideoStreamStats } from 'webrtc-issue-detector';
2
+ import type EnhancedEventEmitter from '../EnhancedEventEmitter';
3
+ import type { MOSScores } from '../qoe/types';
4
+ import type { PeerTrackInfo, PreferredLayersParams, SpatialLayerParams, TrackLabel } from './common';
5
+ import type { PeerConsumer } from './peerConsumer';
6
+ /**
7
+ * Карта событий удалённого трека, доступная через `peerTrack.observer`.
8
+ */
9
+ export interface PeerTrackObserverEvents {
10
+ 'track-start': [PeerTrack];
11
+ 'track-end': [PeerTrack];
12
+ 'track-failed': [PeerTrack];
13
+ 'track-paused': [PeerTrack];
14
+ 'track-resumed': [PeerTrack];
15
+ 'volume-changed': [{
16
+ value: number;
17
+ }];
18
+ }
19
+ /**
20
+ * Публичная форма удалённого трека, который SDK возвращает через `peer.tracks`.
21
+ *
22
+ * Экземпляры создаются и управляются самим SDK, а приложение получает их для
23
+ * управления удалённым медиа, чтения статистики и подписки на события трека.
24
+ */
25
+ export interface PeerTrack {
26
+ readonly label: TrackLabel;
27
+ readonly observer: EnhancedEventEmitter<PeerTrackObserverEvents>;
28
+ readonly mediaStreamTrack: MediaStreamTrack;
29
+ readonly kind: 'audio' | 'video';
30
+ readonly isPaused: boolean;
31
+ readonly isMuted: boolean;
32
+ readonly isRemote: boolean;
33
+ readonly consumerId?: string;
34
+ readonly currentSpatialLayer: number;
35
+ readonly volume: number;
36
+ readonly connectionScores: MOSScores;
37
+ readonly audioWebRTCStats?: ParsedInboundAudioStreamStats;
38
+ readonly videoWebRTCStats?: ParsedInboundVideoStreamStats;
39
+ close: (params?: {
40
+ closeRemote?: boolean;
41
+ }) => Promise<void>;
42
+ mute: () => Promise<void>;
43
+ unmute: () => Promise<void>;
44
+ pause: (pauseRemote?: boolean) => Promise<void>;
45
+ resume: (resumeRemote?: boolean) => Promise<void>;
46
+ requestVideoPreferredLayers: (params: PreferredLayersParams) => Promise<void>;
47
+ requestKeyFrame: () => Promise<void>;
48
+ getVideoAvailableLayers: () => SpatialLayerParams[] | undefined;
49
+ getInfo: () => Promise<PeerTrackInfo>;
50
+ readonly consumer: PeerConsumer | undefined;
51
+ setVolume: (value: number) => void;
52
+ }
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@livedigital/client",
3
3
  "author": "vlprojects",
4
4
  "license": "MIT",
5
- "version": "3.56.1",
5
+ "version": "3.57.0-lk-5354-api-reference.1",
6
6
  "private": false,
7
7
  "bugs": {
8
8
  "url": "https://github.com/vlprojects/livedigital-sdk/issues"
@@ -25,6 +25,10 @@
25
25
  "build-proto": "sh ./build-proto.sh",
26
26
  "build": "yarn build-proto && yarn generate-signaling-client && rm -rf dist && rollup -c && tsc --importHelpers && cp src/constants/* dist/constants/",
27
27
  "generate-signaling-client": "swagger-typescript-api -p ./api/openapi.yaml -o ./src/engine/signalingApiClient -n api.ts --union-enums --axios --route-types",
28
+ "api:check": "api-extractor run --config ./api-extractor.json --typescript-compiler-folder ./node_modules/typescript",
29
+ "api:update": "api-extractor run --local --config ./api-extractor.json --typescript-compiler-folder ./node_modules/typescript",
30
+ "docs:api": "typedoc --options typedoc.json",
31
+ "docs:sync": "yarn build && yarn api:update && yarn docs:api",
28
32
  "watch": "rollup -c --sourcemap inline --watch --watch.onEnd='tsc --importHelpers && tsc --importHelpers && cp src/constants/* dist/constants/'",
29
33
  "lint": "eslint",
30
34
  "test": "NODE_ENV=test mocha --config test/utils/runners/mocha/.mocharc.js"
@@ -65,6 +69,7 @@
65
69
  "@rollup/plugin-node-resolve": "^13.0.0",
66
70
  "@rollup/plugin-replace": "^3.0.0",
67
71
  "@rollup/plugin-typescript": "^12.1.2",
72
+ "@microsoft/api-extractor": "^7.52.13",
68
73
  "@semantic-release/commit-analyzer": "^13.0.1",
69
74
  "@semantic-release/git": "^10.0.1",
70
75
  "@semantic-release/github": "^12.0.2",
@@ -114,6 +119,9 @@
114
119
  "ts-node": "^10.4.0",
115
120
  "ts-proto": "^2.7.5",
116
121
  "tslib": "^2.3.1",
122
+ "typedoc": "^0.28.12",
123
+ "typedoc-docusaurus-theme": "^1.4.2",
124
+ "typedoc-plugin-markdown": "^4.8.1",
117
125
  "typescript": "^5.8.3"
118
126
  }
119
127
  }