sip-connector 15.1.0 → 15.2.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.
Files changed (61) hide show
  1. package/README.md +160 -11
  2. package/dist/{@SipConnector-G96OmJEP.js → @SipConnector-BEZk1hmx.js} +548 -267
  3. package/dist/@SipConnector-hpySQIBa.cjs +1 -0
  4. package/dist/SipConnector/@SipConnector.d.ts +2 -0
  5. package/dist/SipConnector/eventNames.d.ts +1 -1
  6. package/dist/SipConnectorFacade/SipConnectorFacade.d.ts +3 -0
  7. package/dist/StatsManager/@StatsManager.d.ts +19 -0
  8. package/dist/StatsManager/eventNames.d.ts +2 -0
  9. package/dist/StatsManager/index.d.ts +2 -0
  10. package/dist/StatsPeerConnection/StatsPeerConnection.d.ts +20 -0
  11. package/dist/StatsPeerConnection/__fixtures__/callStaticsState.d.ts +3923 -0
  12. package/dist/StatsPeerConnection/constants.d.ts +14 -0
  13. package/dist/StatsPeerConnection/eventNames.d.ts +10 -0
  14. package/dist/StatsPeerConnection/index.d.ts +4 -0
  15. package/dist/StatsPeerConnection/parseStatsReports.d.ts +14 -0
  16. package/dist/StatsPeerConnection/requestAllStatistics.d.ts +11 -0
  17. package/dist/StatsPeerConnection/typings.d.ts +194 -0
  18. package/dist/StatsPeerConnection/utils/hasAvailableStats.d.ts +2 -0
  19. package/dist/StatsPeerConnection/utils/index.d.ts +3 -0
  20. package/dist/StatsPeerConnection/utils/now.d.ts +2 -0
  21. package/dist/StatsPeerConnection/utils/statsReportToObject.d.ts +4 -0
  22. package/dist/{videoSendingBalancer → VideoSendingBalancer}/ParametersSetterWithQueue.d.ts +2 -2
  23. package/dist/{videoSendingBalancer → VideoSendingBalancer}/SenderBalancer.d.ts +2 -2
  24. package/dist/{videoSendingBalancer → VideoSendingBalancer}/VideoSendingBalancer.d.ts +2 -2
  25. package/dist/{videoSendingBalancer → VideoSendingBalancer}/types.d.ts +2 -2
  26. package/dist/doMock.cjs +1 -1
  27. package/dist/doMock.js +4 -4
  28. package/dist/index.cjs +1 -1
  29. package/dist/index.d.ts +2 -2
  30. package/dist/index.js +270 -255
  31. package/dist/tools/createUaParser/createUaParser.d.ts +4 -0
  32. package/dist/tools/createUaParser/index.d.ts +1 -0
  33. package/dist/tools/createUaParser/isElectronEnvironment.d.ts +2 -0
  34. package/dist/tools/index.d.ts +4 -0
  35. package/dist/{setParametersToSender → tools/setParametersToSender}/configureDegradationPreference.d.ts +1 -1
  36. package/dist/{setParametersToSender → tools/setParametersToSender}/configureEncodings.d.ts +1 -1
  37. package/dist/{setParametersToSender → tools/setParametersToSender}/index.d.ts +1 -1
  38. package/dist/{setParametersToSender → tools/setParametersToSender}/setEncodingsToSender.d.ts +2 -2
  39. package/dist/{setParametersToSender → tools/setParametersToSender}/setMaxBitrateToSender.d.ts +1 -1
  40. package/dist/tools/setParametersToSender/setParametersToSender.d.ts +4 -0
  41. package/dist/{setParametersToSender → tools/setParametersToSender}/types.d.ts +1 -1
  42. package/package.json +7 -13
  43. package/dist/@SipConnector-BBhQzo-W.cjs +0 -1
  44. package/dist/setParametersToSender/setParametersToSender.d.ts +0 -4
  45. /package/dist/{videoSendingBalancer → VideoSendingBalancer}/CodecProvider.d.ts +0 -0
  46. /package/dist/{videoSendingBalancer → VideoSendingBalancer}/SenderFinder.d.ts +0 -0
  47. /package/dist/{videoSendingBalancer → VideoSendingBalancer}/TaskQueue.d.ts +0 -0
  48. /package/dist/{videoSendingBalancer → VideoSendingBalancer}/VideoSendingEventHandler.d.ts +0 -0
  49. /package/dist/{videoSendingBalancer → VideoSendingBalancer}/calcBitrate/calcMaxBitrateByWidth.d.ts +0 -0
  50. /package/dist/{videoSendingBalancer → VideoSendingBalancer}/calcBitrate/calcMaxBitrateByWidthAndCodec.d.ts +0 -0
  51. /package/dist/{videoSendingBalancer → VideoSendingBalancer}/calcBitrate/hasAv1Codec.d.ts +0 -0
  52. /package/dist/{videoSendingBalancer → VideoSendingBalancer}/calcBitrate/index.d.ts +0 -0
  53. /package/dist/{videoSendingBalancer → VideoSendingBalancer}/calcBitrate/scaleBitrateByCodec.d.ts +0 -0
  54. /package/dist/{videoSendingBalancer → VideoSendingBalancer}/calcResolution/calcScaleResolutionDownBy.d.ts +0 -0
  55. /package/dist/{videoSendingBalancer → VideoSendingBalancer}/calcResolution/index.d.ts +0 -0
  56. /package/dist/{videoSendingBalancer → VideoSendingBalancer}/index.d.ts +0 -0
  57. /package/dist/{setParametersToSender → tools/setParametersToSender}/configureEmptyEncodings.d.ts +0 -0
  58. /package/dist/{setParametersToSender → tools/setParametersToSender}/configureMaxBitrate.d.ts +0 -0
  59. /package/dist/{setParametersToSender → tools/setParametersToSender}/configureScaleResolutionDownBy.d.ts +0 -0
  60. /package/dist/{setParametersToSender → tools/setParametersToSender}/hasChangedRTCRtpSendParameters.d.ts +0 -0
  61. /package/dist/{setParametersToSender → tools/setParametersToSender}/resolveHasNeedToUpdateItemEncoding.d.ts +0 -0
package/README.md CHANGED
@@ -3,40 +3,189 @@
3
3
  [![npm](https://img.shields.io/npm/v/sip-connector?style=flat-square)](https://www.npmjs.com/package/sip-connector)
4
4
  ![npm bundle size](https://img.shields.io/bundlephobia/minzip/sip-connector?style=flat-square)
5
5
 
6
- Class for run loop animation with RAF
6
+ TypeScript SDK для подключения к Vinteo по WebRTC через SIP (на базе `@krivega/jssip`). Предоставляет высокий уровень API для:
7
7
 
8
- ## Install
8
+ - подключения/регистрации на SIP-сервере;
9
+ - исходящих/входящих звонков;
10
+ - управления презентацией (share screen/video);
11
+ - отправки служебных сообщений (DTMF, каналы, синхронизация медиа-состояния);
12
+ - подписки на события платформы.
9
13
 
10
- npm
14
+ ## Установка
11
15
 
12
16
  ```sh
13
17
  npm install sip-connector
18
+ # или
19
+ yarn add sip-connector
14
20
  ```
15
21
 
16
- yarn
22
+ Минимально требуется передать `JsSIP` из `@krivega/jssip` при создании `SipConnector`.
23
+
24
+ ## Быстрый старт
25
+
26
+ ```ts
27
+ import { UA, WebSocketInterface } from '@krivega/jssip';
28
+ import { SipConnector, SipConnectorFacade, tools } from 'sip-connector';
29
+
30
+ // 1) Инициализация низкоуровневого коннектора
31
+ const sipConnector = new SipConnector({ JsSIP: { UA, WebSocketInterface } });
32
+
33
+ // 2) Фасад с готовыми сценариями и проксированием событий/методов
34
+ const facade = new SipConnectorFacade(sipConnector, {
35
+ // опционально: приоритезировать/исключить кодеки видео
36
+ preferredMimeTypesVideoCodecs: ['video/AV1', 'video/VP9'],
37
+ excludeMimeTypesVideoCodecs: ['video/H264'],
38
+ });
39
+
40
+ // 3) Подключение к серверу
41
+ await facade.connectToServer({
42
+ userAgent: tools.getUserAgent({ appName: 'MyApp' }),
43
+ sipWebSocketServerURL: 'wss://sip.example.com/ws',
44
+ sipServerUrl: 'sip:example.com',
45
+ name: '1001', // пользователь (SIP URI user)
46
+ password: 'secret',
47
+ isRegisteredUser: true, // включить SIP REGISTER
48
+ });
49
+
50
+ // 4) Исходящий звонок
51
+ const localStream = await navigator.mediaDevices.getUserMedia({ audio: true, video: true });
52
+ const pc = await facade.callToServer({
53
+ conference: '12345',
54
+ mediaStream: localStream,
55
+ setRemoteStreams: (streams) => {
56
+ // отобразите удалённые потоки в плеере
57
+ console.log('remote streams', streams);
58
+ },
59
+ });
60
+
61
+ // 5) Завершение
62
+ await facade.disconnectFromServer();
63
+ ```
17
64
 
18
- ```sh
19
- yarn add sip-connector
65
+ ## Входящий звонок (пример)
66
+
67
+ ```ts
68
+ // Подписка на входящие события
69
+ sipConnector.on('incoming-call:incoming', () => {
70
+ // ответить с локальным стримом
71
+ facade.answerToIncomingCall({
72
+ mediaStream: localStream,
73
+ setRemoteStreams: (streams) => {
74
+ /* ... */
75
+ },
76
+ });
77
+ });
20
78
  ```
21
79
 
22
- ## Run tests
80
+ ## Управление презентацией
81
+
82
+ ```ts
83
+ // старт
84
+ const displayStream = await navigator.mediaDevices.getDisplayMedia({ video: true, audio: true });
85
+ await facade.startPresentation({
86
+ mediaStream: displayStream,
87
+ isP2P: false,
88
+ contentHint: 'detail',
89
+ simulcastEncodings: [
90
+ { width: 1920, height: 1080, scalabilityMode: 'L3T3_KEY' },
91
+ { width: 1280, height: 720 },
92
+ ],
93
+ });
94
+
95
+ // обновление (например, смена потока)
96
+ await facade.updatePresentation({ mediaStream: displayStream, isP2P: false });
97
+
98
+ // стоп
99
+ await facade.stopShareSipConnector();
100
+ ```
101
+
102
+ ## События
103
+
104
+ События агрегируются и отдаются с префиксами менеджеров. Полный перечень смотрите в:
105
+
106
+ - `src/SipConnector/eventNames.ts`
107
+ - `src/ApiManager/eventNames.ts`
108
+
109
+ Примеры часто используемых событий:
110
+
111
+ - `connection:connected`, `connection:disconnected` — состояние подключения;
112
+ - `call:accepted`, `call:ended`, `call:failed` — жизненный цикл звонка;
113
+ - `api:enterRoom`, `api:useLicense`, `api:mustStopPresentation`, `api:newDTMF` — события от сервера;
114
+ - `incoming-call:incoming`, `incoming-call:failed` — входящие вызовы;
115
+ - `presentation:started`, `presentation:stopped` — презентация.
116
+
117
+ Подписка:
118
+
119
+ ```ts
120
+ const unsubscribe = sipConnector.on('api:enterRoom', ({ room }) => {
121
+ console.log('entered room', room);
122
+ });
123
+
124
+ // разовая подписка на несколько событий
125
+ sipConnector.onceRace(['call:ended', 'call:failed'], (_payload, eventName) => {
126
+ console.log('call finished by', eventName);
127
+ });
128
+ ```
129
+
130
+ ## Экспорты
131
+
132
+ ```ts
133
+ import {
134
+ SipConnector,
135
+ SipConnectorFacade,
136
+ debug,
137
+ enableDebug,
138
+ disableDebug,
139
+ ECallCause,
140
+ hasCanceledCallError,
141
+ EUseLicense,
142
+ EMimeTypesVideoCodecs,
143
+ type TContentHint,
144
+ type TCustomError,
145
+ type TJsSIP,
146
+ tools, // { getUserAgent, getExtraHeaders, hasPurgatory, ... }
147
+ } from 'sip-connector';
148
+ ```
149
+
150
+ ## Заметки по API
151
+
152
+ - `SipConnector` — низкоуровневый класс, инкапсулирующий менеджеры подключения/звонков/презентаций. Требует `JsSIP` при создании.
153
+ - `SipConnectorFacade` — удобный фасад с готовыми сценариями: `connectToServer`, `callToServer`, `answerToIncomingCall`, `disconnectFromServer`, `replaceMediaStream`, `sendMediaState`, `sendRefusalToTurnOnMic/Cam`, `onUseLicense`, `onMustStopPresentation`, `onMoveToSpectators/Participants` и др. Также проксирует методы `on/once/onceRace/wait/off`, `ping`, `hangUp`, `sendDTMF`, `checkTelephony`, `connection`, `isConfigured`, `isRegistered`.
154
+ - Поддерживаются настройки качества: `contentHint`, `degradationPreference`, `simulcastEncodings`, `sendEncodings`, фильтрация кодеков видео через `preferredMimeTypesVideoCodecs`/`excludeMimeTypesVideoCodecs`.
155
+
156
+ ## Отладка
157
+
158
+ ```ts
159
+ import { enableDebug, disableDebug } from 'sip-connector';
160
+
161
+ enableDebug();
162
+ // ...
163
+ disableDebug();
164
+ ```
165
+
166
+ ## Тесты
23
167
 
24
168
  ```sh
25
169
  npm test
26
170
  ```
27
171
 
172
+ ## Поддержка браузеров
173
+
174
+ SDK использует стандартные WebRTC API. Для максимально старых браузеров проверьте поддержку необходимых возможностей (кодеки, Unified Plan, `getDisplayMedia`).
175
+
28
176
  ## Maintainer
29
177
 
30
- **Krivega Dmitriy**
178
+ Krivega Dmitriy
31
179
 
32
- - Website: https://krivega.com
180
+ - Website: [krivega.com](https://krivega.com)
33
181
  - Github: [@Krivega](https://github.com/Krivega)
34
182
 
35
183
  ## Contributing
36
184
 
37
- Contributions, issues and feature requests are welcome!<br />Feel free to check [issues page](https://github.com/Krivega/sip-connector/issues). You can also take a look at the [contributing guide](https://github.com/Krivega/sip-connector/blob/master/CONTRIBUTING.md).
185
+ Contributions, issues and feature requests are welcome!
186
+ Feel free to check [issues page](https://github.com/Krivega/sip-connector/issues). You can also take a look at the [contributing guide](https://github.com/Krivega/sip-connector/blob/master/CONTRIBUTING.md).
38
187
 
39
188
  ## 📝 License
40
189
 
41
- Copyright © 2021 [Krivega Dmitriy](https://github.com/Krivega).<br />
190
+ Copyright © 2021‑2025 [Krivega Dmitriy](https://github.com/Krivega).
42
191
  This project is [MIT](https://github.com/Krivega/sip-connector/blob/master/LICENSE) licensed.