mediasoup-client 3.6.59 → 3.6.60

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 (86) hide show
  1. package/README.md +17 -3
  2. package/lib/Consumer.d.ts +3 -3
  3. package/lib/Consumer.d.ts.map +1 -1
  4. package/lib/DataConsumer.d.ts +3 -3
  5. package/lib/DataConsumer.d.ts.map +1 -1
  6. package/lib/DataProducer.d.ts +3 -3
  7. package/lib/DataProducer.d.ts.map +1 -1
  8. package/lib/Device.d.ts +3 -3
  9. package/lib/Device.d.ts.map +1 -1
  10. package/lib/EnhancedEventEmitter.d.ts +1 -1
  11. package/lib/EnhancedEventEmitter.d.ts.map +1 -1
  12. package/lib/Producer.d.ts +4 -4
  13. package/lib/Producer.d.ts.map +1 -1
  14. package/lib/RtpParameters.d.ts +11 -11
  15. package/lib/RtpParameters.d.ts.map +1 -1
  16. package/lib/SctpParameters.d.ts +4 -4
  17. package/lib/SctpParameters.d.ts.map +1 -1
  18. package/lib/Transport.d.ts +11 -11
  19. package/lib/Transport.d.ts.map +1 -1
  20. package/lib/handlers/Chrome55.js +6 -6
  21. package/lib/handlers/Chrome67.js +6 -6
  22. package/lib/handlers/Chrome70.d.ts.map +1 -1
  23. package/lib/handlers/Chrome70.js +10 -7
  24. package/lib/handlers/Chrome74.d.ts.map +1 -1
  25. package/lib/handlers/Chrome74.js +10 -7
  26. package/lib/handlers/Edge11.js +6 -6
  27. package/lib/handlers/FakeHandler.d.ts +1 -1
  28. package/lib/handlers/FakeHandler.d.ts.map +1 -1
  29. package/lib/handlers/FakeHandler.js +6 -6
  30. package/lib/handlers/Firefox60.d.ts.map +1 -1
  31. package/lib/handlers/Firefox60.js +10 -7
  32. package/lib/handlers/HandlerInterface.d.ts +11 -11
  33. package/lib/handlers/HandlerInterface.d.ts.map +1 -1
  34. package/lib/handlers/ReactNative.js +6 -6
  35. package/lib/handlers/Safari11.js +6 -6
  36. package/lib/handlers/Safari12.d.ts.map +1 -1
  37. package/lib/handlers/Safari12.js +10 -7
  38. package/lib/index.d.ts +1 -1
  39. package/lib/index.js +1 -1
  40. package/lib/scalabilityModes.d.ts +1 -1
  41. package/lib/scalabilityModes.d.ts.map +1 -1
  42. package/npm-scripts.js +124 -28
  43. package/package.json +17 -5
  44. package/.eslintrc.js +0 -243
  45. package/.github/FUNDING.yml +0 -12
  46. package/.github/ISSUE_TEMPLATE/Bug_Report.md +0 -24
  47. package/.github/ISSUE_TEMPLATE/Feature_Request.md +0 -7
  48. package/.github/ISSUE_TEMPLATE/Support_Question.md +0 -12
  49. package/.travis.yml +0 -26
  50. package/src/Consumer.ts +0 -334
  51. package/src/DataConsumer.ts +0 -271
  52. package/src/DataProducer.ts +0 -291
  53. package/src/Device.ts +0 -584
  54. package/src/EnhancedEventEmitter.ts +0 -133
  55. package/src/Logger.ts +0 -47
  56. package/src/Producer.ts +0 -534
  57. package/src/RtpParameters.ts +0 -326
  58. package/src/SctpParameters.ts +0 -74
  59. package/src/Transport.ts +0 -1275
  60. package/src/errors.ts +0 -45
  61. package/src/handlers/Chrome55.ts +0 -866
  62. package/src/handlers/Chrome67.ts +0 -951
  63. package/src/handlers/Chrome70.ts +0 -964
  64. package/src/handlers/Chrome74.ts +0 -1058
  65. package/src/handlers/Edge11.ts +0 -667
  66. package/src/handlers/FakeHandler.ts +0 -448
  67. package/src/handlers/Firefox60.ts +0 -1040
  68. package/src/handlers/HandlerInterface.ts +0 -162
  69. package/src/handlers/ReactNative.ts +0 -886
  70. package/src/handlers/Safari11.ts +0 -944
  71. package/src/handlers/Safari12.ts +0 -1009
  72. package/src/handlers/ortc/edgeUtils.ts +0 -77
  73. package/src/handlers/sdp/MediaSection.ts +0 -836
  74. package/src/handlers/sdp/RemoteSdp.ts +0 -474
  75. package/src/handlers/sdp/commonUtils.ts +0 -259
  76. package/src/handlers/sdp/plainRtpUtils.ts +0 -58
  77. package/src/handlers/sdp/planBUtils.ts +0 -227
  78. package/src/handlers/sdp/unifiedPlanUtils.ts +0 -188
  79. package/src/index.ts +0 -28
  80. package/src/ortc.ts +0 -1169
  81. package/src/scalabilityModes.ts +0 -27
  82. package/src/types.ts +0 -11
  83. package/src/utils.ts +0 -18
  84. package/test/fakeParameters.js +0 -701
  85. package/test/test.js +0 -1672
  86. package/tsconfig.json +0 -17
package/.eslintrc.js DELETED
@@ -1,243 +0,0 @@
1
- const eslintConfig =
2
- {
3
- env :
4
- {
5
- browser : true,
6
- es6 : true,
7
- node : true
8
- },
9
- plugins : [],
10
- settings : {},
11
- parserOptions :
12
- {
13
- ecmaVersion : 2018,
14
- sourceType : 'module',
15
- ecmaFeatures :
16
- {
17
- impliedStrict : true
18
- },
19
- lib : [ 'es2018', 'dom' ]
20
- },
21
- rules :
22
- {
23
- 'array-bracket-spacing' : [ 2, 'always',
24
- {
25
- objectsInArrays : true,
26
- arraysInArrays : true
27
- }
28
- ],
29
- 'arrow-parens' : [ 2, 'always' ],
30
- 'arrow-spacing' : 2,
31
- 'block-spacing' : [ 2, 'always' ],
32
- 'brace-style' : [ 2, 'allman', { allowSingleLine: true } ],
33
- 'camelcase' : 2,
34
- 'comma-dangle' : 2,
35
- 'comma-spacing' : [ 2, { before: false, after: true } ],
36
- 'comma-style' : 2,
37
- 'computed-property-spacing' : 2,
38
- 'constructor-super' : 2,
39
- 'func-call-spacing' : 2,
40
- 'generator-star-spacing' : 2,
41
- 'guard-for-in' : 2,
42
- 'indent' : [ 2, 'tab', { 'SwitchCase': 1 } ],
43
- 'key-spacing' : [ 2,
44
- {
45
- singleLine :
46
- {
47
- beforeColon : false,
48
- afterColon : true
49
- },
50
- multiLine :
51
- {
52
- beforeColon : true,
53
- afterColon : true,
54
- align : 'colon'
55
- }
56
- }
57
- ],
58
- 'keyword-spacing' : 2,
59
- 'linebreak-style' : [ 2, 'unix' ],
60
- 'lines-around-comment' : [ 2,
61
- {
62
- allowBlockStart : true,
63
- allowObjectStart : true,
64
- beforeBlockComment : false,
65
- beforeLineComment : false
66
- }
67
- ],
68
- 'max-len' : [ 2, 90,
69
- {
70
- tabWidth : 2,
71
- comments : 100,
72
- ignoreUrls : true,
73
- ignoreStrings : true,
74
- ignoreTemplateLiterals : true,
75
- ignoreRegExpLiterals : true
76
- }
77
- ],
78
- 'newline-after-var' : 2,
79
- 'newline-before-return' : 2,
80
- 'newline-per-chained-call' : 2,
81
- 'no-alert' : 2,
82
- 'no-caller' : 2,
83
- 'no-case-declarations' : 2,
84
- 'no-catch-shadow' : 2,
85
- 'no-class-assign' : 2,
86
- 'no-confusing-arrow' : 2,
87
- 'no-console' : 2,
88
- 'no-const-assign' : 2,
89
- 'no-debugger' : 2,
90
- 'no-dupe-args' : 2,
91
- 'no-dupe-keys' : 2,
92
- 'no-duplicate-case' : 2,
93
- 'no-div-regex' : 2,
94
- 'no-empty' : [ 2, { allowEmptyCatch: true } ],
95
- 'no-empty-pattern' : 2,
96
- 'no-else-return' : 0,
97
- 'no-eval' : 2,
98
- 'no-extend-native' : 2,
99
- 'no-ex-assign' : 2,
100
- 'no-extra-bind' : 2,
101
- 'no-extra-boolean-cast' : 2,
102
- 'no-extra-label' : 2,
103
- 'no-extra-semi' : 2,
104
- 'no-fallthrough' : 2,
105
- 'no-func-assign' : 2,
106
- 'no-global-assign' : 2,
107
- 'no-implicit-coercion' : 2,
108
- 'no-implicit-globals' : 2,
109
- 'no-inner-declarations' : 2,
110
- 'no-invalid-regexp' : 2,
111
- 'no-invalid-this' : 2,
112
- 'no-irregular-whitespace' : 2,
113
- 'no-lonely-if' : 2,
114
- 'no-mixed-operators' : 2,
115
- 'no-mixed-spaces-and-tabs' : 2,
116
- 'no-multi-spaces' : 2,
117
- 'no-multi-str' : 2,
118
- 'no-multiple-empty-lines' : [ 1, { max: 1, maxEOF: 0, maxBOF: 0 } ],
119
- 'no-native-reassign' : 2,
120
- 'no-negated-in-lhs' : 2,
121
- 'no-new' : 2,
122
- 'no-new-func' : 2,
123
- 'no-new-wrappers' : 2,
124
- 'no-obj-calls' : 2,
125
- 'no-proto' : 2,
126
- 'no-prototype-builtins' : 0,
127
- 'no-redeclare' : 2,
128
- 'no-regex-spaces' : 2,
129
- 'no-restricted-imports' : 2,
130
- 'no-return-assign' : 2,
131
- 'no-self-assign' : 2,
132
- 'no-self-compare' : 2,
133
- 'no-sequences' : 2,
134
- 'no-shadow' : 2,
135
- 'no-shadow-restricted-names' : 2,
136
- 'no-spaced-func' : 2,
137
- 'no-sparse-arrays' : 2,
138
- 'no-this-before-super' : 2,
139
- 'no-throw-literal' : 2,
140
- 'no-undef' : 2,
141
- 'no-unexpected-multiline' : 2,
142
- 'no-unmodified-loop-condition' : 2,
143
- 'no-unreachable' : 2,
144
- 'no-unused-vars' : [ 1, { vars: 'all', args: 'after-used' } ],
145
- 'no-use-before-define' : 0,
146
- 'no-useless-call' : 2,
147
- 'no-useless-computed-key' : 2,
148
- 'no-useless-concat' : 2,
149
- 'no-useless-rename' : 2,
150
- 'no-var' : 2,
151
- 'no-whitespace-before-property' : 2,
152
- 'object-curly-newline' : 0,
153
- 'object-curly-spacing' : [ 2, 'always' ],
154
- 'object-property-newline' : [ 2, { allowMultiplePropertiesPerLine: true } ],
155
- 'prefer-const' : 2,
156
- 'prefer-rest-params' : 2,
157
- 'prefer-spread' : 2,
158
- 'prefer-template' : 2,
159
- 'quotes' : [ 2, 'single', { avoidEscape: true } ],
160
- 'semi' : [ 2, 'always' ],
161
- 'semi-spacing' : 2,
162
- 'space-before-blocks' : 2,
163
- 'space-before-function-paren' : [ 2,
164
- {
165
- anonymous : 'never',
166
- named : 'never',
167
- asyncArrow : 'always'
168
- }
169
- ],
170
- 'space-in-parens' : [ 2, 'never' ],
171
- 'spaced-comment' : [ 2, 'always' ],
172
- 'strict' : 2,
173
- 'valid-typeof' : 2,
174
- 'yoda' : 2
175
- }
176
- };
177
-
178
- switch (process.env.MEDIASOUP_NODE_LANGUAGE)
179
- {
180
- case 'typescript':
181
- {
182
- eslintConfig.parser = '@typescript-eslint/parser';
183
- eslintConfig.plugins =
184
- [
185
- ...eslintConfig.plugins,
186
- '@typescript-eslint'
187
- ];
188
- eslintConfig.extends =
189
- [
190
- 'eslint:recommended',
191
- 'plugin:@typescript-eslint/eslint-recommended',
192
- 'plugin:@typescript-eslint/recommended'
193
- ];
194
- eslintConfig.rules =
195
- {
196
- ...eslintConfig.rules,
197
- 'no-unused-vars' : 0,
198
- '@typescript-eslint/ban-types' : 0,
199
- '@typescript-eslint/ban-ts-comment' : 0,
200
- '@typescript-eslint/ban-ts-ignore' : 0,
201
- '@typescript-eslint/explicit-module-boundary-types' : 0,
202
- '@typescript-eslint/member-delimiter-style' : [ 2,
203
-
204
- {
205
- multiline : { delimiter: 'semi', requireLast: true },
206
- singleline : { delimiter: 'semi', requireLast: false }
207
- }
208
- ],
209
- '@typescript-eslint/no-explicit-any' : 0,
210
- '@typescript-eslint/no-unused-vars' : [ 2,
211
- {
212
- vars : 'all',
213
- args : 'after-used',
214
- ignoreRestSiblings : false
215
- }
216
- ],
217
- '@typescript-eslint/no-use-before-define' : [ 2, { functions: false } ],
218
- '@typescript-eslint/no-empty-function' : 0,
219
- '@typescript-eslint/no-non-null-assertion' : 0
220
- };
221
-
222
- break;
223
- }
224
-
225
- case 'javascript':
226
- {
227
- eslintConfig.env['jest/globals'] = true;
228
- eslintConfig.plugins =
229
- [
230
- ...eslintConfig.plugins,
231
- 'jest'
232
- ];
233
-
234
- break;
235
- }
236
-
237
- default:
238
- {
239
- throw new TypeError('wrong/missing MEDIASOUP_NODE_LANGUAGE env');
240
- }
241
- }
242
-
243
- module.exports = eslintConfig;
@@ -1,12 +0,0 @@
1
- # These are supported funding model platforms
2
-
3
- github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
4
- patreon: # Replace with a single Patreon username
5
- open_collective: mediasoup
6
- ko_fi: # Replace with a single Ko-fi username
7
- tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8
- community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9
- liberapay: # Replace with a single Liberapay username
10
- issuehunt: # Replace with a single IssueHunt username
11
- otechie: # Replace with a single Otechie username
12
- custom: # Replace with a single custom sponsorship URL
@@ -1,24 +0,0 @@
1
- ---
2
- name: 🐍 Bug Report
3
- about: Report a bug in mediasoup-client
4
- labels: bug
5
- ---
6
-
7
- ## Bug Report
8
-
9
- **IMPORTANT:** We primarily use GitHub as an issue tracker. Just open an issue here if you have encountered a bug in mediasoup-client.
10
-
11
- If you have questions or doubts about mediasoup-client or need support, please use the mediasoup Discourse Group instead:
12
-
13
- https://mediasoup.discourse.group
14
-
15
- ### Your environment
16
-
17
- - Operating system:
18
- - Browser version:
19
- - npm version:
20
- - mediasoup version:
21
- - mediasoup-client version:
22
-
23
-
24
- ### Issue description
@@ -1,7 +0,0 @@
1
- ---
2
- name: 🚀 Feature Request
3
- about: Suggest an idea or improvement for mediasoup-client
4
- labels: feature
5
- ---
6
-
7
- ## Feature Request
@@ -1,12 +0,0 @@
1
- ---
2
- name: 🙈 Support Question
3
- about: If you have any questions use the mediasoup Discourse Group
4
- ---
5
-
6
- **IMPORTANT:** We primarily use GitHub as an issue tracker. Please, use the mediasoup Discourse Group if you have questions or doubts or if you need support about mediasoup and its ecosystem:
7
-
8
- https://mediasoup.discourse.group
9
-
10
- Before asking any questions, please check the mediasoup official documentation:
11
-
12
- https://mediasoup.org/documentation/
package/.travis.yml DELETED
@@ -1,26 +0,0 @@
1
- branches:
2
- only:
3
- - v3
4
-
5
- language: node_js
6
-
7
- node_js:
8
- - 10
9
- - 12
10
- - 14
11
-
12
- install:
13
- - npm install
14
-
15
- script:
16
- - npm run lint
17
- - npm run typescript:build
18
- - npm test
19
-
20
- notifications:
21
- email:
22
- on_success: change
23
- on_failure: always
24
- recipients:
25
- - secure: nZrn+wwkyo7sLlB9/Gsk4CyzyG3UccqOimQRz5VwTwyafYqpwin5T6eWBoDq6nphfLPt4D9keC4NawRlv2bX9AWRuKlrU7Z8/1rkObIwSm1ZNk/Yn718Q/IwEDSabS00pNXV3X9dV1QfxelrHiH1PgNdjU1aOyMqWWD445aXq/RM8L6ushksMbMkoW6DWaM83DGFB2FWumkFqI84uRpWqdESp9mVVErxBeWrTAOQqRsLDHGFwcDq07xBJDNw7vrPN2Furnf3xE6hGDWiBpstjwGpY0vql+5UzjOnC6oqdLP9H3i5znR2lzPw5x/4S0cW6fKzF/G02aPPk2Oty9CRXdLJKuJ9Xrwo7BVAEfnQFpc6q1kvONx/j0bY2UdLO2zgUGM1IWO2Pvmm7//FWiv9WgCF3kfOIp5qh5SN1o/W+SErmvKaYyOPMe3OUOemDjOnVIQcMDTISue2aYUS7GuoTx/+jp+F8Y99/3shyBWEaAbg1LVptRgMUvSzrBG/3Y2b6Gx2qSojMisyqfv3USx8h91sxZ96qyHkbHm4LCzB6PeRgNf+ebUnm/+fTrTtkdeo3byD5ZsKI1dzJ+/ZqDaAEEZRKwLxBdJLlLsWAoM+iQ4L6rPgFP5xZ2E4eVQY/MPJt3bjCxEhNSc/8y1vTIozx33PoiemILODj+I/ARxYxB8=
26
- - secure: dSfH0lbTzxCBjMnZdg1nBy3i7BVtLpiM+1PkWcj3FrLwNVDc6yjNmsqxF+AwDJRYlsq/KtaZIKx8GeTIz59LpOnXunFugnpl2XnJAw+QdNYsTRnfj99PlbGaZFoqL5p1l/8zJxRcuIiaIlpE3yV5iD7pT35DoTY/WWew/6Wcu1aawWUwJ6oR4y/K8hyN0J8GaWb62HTmdwPWY0mc1qtCHVGDWGAQXi828U7QhQpXmk9e8G8j3a9yiVAHI3hFzgUkQv2qBil/1NHr9RY4J/bOuiWymBfDTzyfOdJgn2nZUD+ky+UucEqVnzUE9kvNYkOHUTzq3+H5LLgUy8n4uSIwhvYsGNVgpJCQufc4F+GM70bEA+jCB+pihiBDLN2o2vpbNH45vi8zZtW1bUIdJC88MMjiKC4Yvu33n0ii0/1arqUK9Na96phYJUpgbz6nCKBRO0N/VlXwZTvwJ5hmIhoYzZ9vrvXD66RMGB+Bbm318TvOJqCUEoNRyTaXcBFBr0vEgq3+vTlnOGcxv83efHP8+GUM7Q3f22N4GHXBtIlRIYVtcEm5PjYtdtvzAup2Upr3Y8UnaYhq8SJREZIBEFfNRPB3g0/knizmls0zIzoXvakOtsUq+sUt5xapayD8RYiN4W/Kj8fhWKFUL+zby6OJx+bC9MTA+LVRhROKdLhvga8=
package/src/Consumer.ts DELETED
@@ -1,334 +0,0 @@
1
- import { Logger } from './Logger';
2
- import { EnhancedEventEmitter } from './EnhancedEventEmitter';
3
- import { InvalidStateError } from './errors';
4
- import { MediaKind, RtpParameters } from './RtpParameters';
5
-
6
- const logger = new Logger('Consumer');
7
-
8
- export type ConsumerOptions =
9
- {
10
- id?: string;
11
- producerId?: string;
12
- kind?: 'audio' | 'video';
13
- rtpParameters: RtpParameters;
14
- appData?: Record<string, unknown>;
15
- }
16
-
17
- export type ConsumerEvents =
18
- {
19
- transportclose: [];
20
- trackended: [];
21
- // Private events.
22
- '@getstats': [(stats: RTCStatsReport) => void, (error: Error) => void];
23
- '@close': [];
24
- '@pause': [];
25
- '@resume': [];
26
- }
27
-
28
- export type ConsumerObserverEvents =
29
- {
30
- close: [];
31
- pause: [];
32
- resume: [];
33
- trackended: [];
34
- }
35
-
36
- export class Consumer extends EnhancedEventEmitter<ConsumerEvents>
37
- {
38
- // Id.
39
- private readonly _id: string;
40
- // Local id.
41
- private readonly _localId: string;
42
- // Associated Producer id.
43
- private readonly _producerId: string;
44
- // Closed flag.
45
- private _closed = false;
46
- // Associated RTCRtpReceiver.
47
- private readonly _rtpReceiver?: RTCRtpReceiver;
48
- // Remote track.
49
- private readonly _track: MediaStreamTrack;
50
- // RTP parameters.
51
- private readonly _rtpParameters: RtpParameters;
52
- // Paused flag.
53
- private _paused: boolean;
54
- // App custom data.
55
- private readonly _appData: Record<string, unknown>;
56
- // Observer instance.
57
- protected readonly _observer = new EnhancedEventEmitter<ConsumerObserverEvents>();
58
-
59
- constructor(
60
- {
61
- id,
62
- localId,
63
- producerId,
64
- rtpReceiver,
65
- track,
66
- rtpParameters,
67
- appData
68
- }:
69
- {
70
- id: string;
71
- localId: string;
72
- producerId: string;
73
- rtpReceiver?: RTCRtpReceiver;
74
- track: MediaStreamTrack;
75
- rtpParameters: RtpParameters;
76
- appData?: Record<string, unknown>;
77
- }
78
- )
79
- {
80
- super();
81
-
82
- logger.debug('constructor()');
83
-
84
- this._id = id;
85
- this._localId = localId;
86
- this._producerId = producerId;
87
- this._rtpReceiver = rtpReceiver;
88
- this._track = track;
89
- this._rtpParameters = rtpParameters;
90
- this._paused = !track.enabled;
91
- this._appData = appData || {};
92
- this._onTrackEnded = this._onTrackEnded.bind(this);
93
-
94
- this._handleTrack();
95
- }
96
-
97
- /**
98
- * Consumer id.
99
- */
100
- get id(): string
101
- {
102
- return this._id;
103
- }
104
-
105
- /**
106
- * Local id.
107
- */
108
- get localId(): string
109
- {
110
- return this._localId;
111
- }
112
-
113
- /**
114
- * Associated Producer id.
115
- */
116
- get producerId(): string
117
- {
118
- return this._producerId;
119
- }
120
-
121
- /**
122
- * Whether the Consumer is closed.
123
- */
124
- get closed(): boolean
125
- {
126
- return this._closed;
127
- }
128
-
129
- /**
130
- * Media kind.
131
- */
132
- get kind(): MediaKind
133
- {
134
- return this._track.kind as MediaKind;
135
- }
136
-
137
- /**
138
- * Associated RTCRtpReceiver.
139
- */
140
- get rtpReceiver(): RTCRtpReceiver | undefined
141
- {
142
- return this._rtpReceiver;
143
- }
144
-
145
- /**
146
- * The associated track.
147
- */
148
- get track(): MediaStreamTrack
149
- {
150
- return this._track;
151
- }
152
-
153
- /**
154
- * RTP parameters.
155
- */
156
- get rtpParameters(): RtpParameters
157
- {
158
- return this._rtpParameters;
159
- }
160
-
161
- /**
162
- * Whether the Consumer is paused.
163
- */
164
- get paused(): boolean
165
- {
166
- return this._paused;
167
- }
168
-
169
- /**
170
- * App custom data.
171
- */
172
- get appData(): Record<string, unknown>
173
- {
174
- return this._appData;
175
- }
176
-
177
- /**
178
- * Invalid setter.
179
- */
180
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
181
- set appData(appData: Record<string, unknown>)
182
- {
183
- throw new Error('cannot override appData object');
184
- }
185
-
186
- get observer(): EnhancedEventEmitter
187
- {
188
- return this._observer;
189
- }
190
-
191
- /**
192
- * Closes the Consumer.
193
- */
194
- close(): void
195
- {
196
- if (this._closed)
197
- return;
198
-
199
- logger.debug('close()');
200
-
201
- this._closed = true;
202
-
203
- this._destroyTrack();
204
-
205
- this.emit('@close');
206
-
207
- // Emit observer event.
208
- this._observer.safeEmit('close');
209
- }
210
-
211
- /**
212
- * Transport was closed.
213
- */
214
- transportClosed(): void
215
- {
216
- if (this._closed)
217
- return;
218
-
219
- logger.debug('transportClosed()');
220
-
221
- this._closed = true;
222
-
223
- this._destroyTrack();
224
-
225
- this.safeEmit('transportclose');
226
-
227
- // Emit observer event.
228
- this._observer.safeEmit('close');
229
- }
230
-
231
- /**
232
- * Get associated RTCRtpReceiver stats.
233
- */
234
- async getStats(): Promise<RTCStatsReport>
235
- {
236
- if (this._closed)
237
- throw new InvalidStateError('closed');
238
-
239
- return new Promise<RTCStatsReport>((resolve, reject) =>
240
- {
241
- this.safeEmit(
242
- '@getstats',
243
- resolve,
244
- reject
245
- );
246
- });
247
- }
248
-
249
- /**
250
- * Pauses receiving media.
251
- */
252
- pause(): void
253
- {
254
- logger.debug('pause()');
255
-
256
- if (this._closed)
257
- {
258
- logger.error('pause() | Consumer closed');
259
-
260
- return;
261
- }
262
-
263
- if (this._paused)
264
- {
265
- logger.debug('pause() | Consumer is already paused');
266
-
267
- return;
268
- }
269
-
270
- this._paused = true;
271
- this._track.enabled = false;
272
-
273
- this.emit('@pause');
274
-
275
- // Emit observer event.
276
- this._observer.safeEmit('pause');
277
- }
278
-
279
- /**
280
- * Resumes receiving media.
281
- */
282
- resume(): void
283
- {
284
- logger.debug('resume()');
285
-
286
- if (this._closed)
287
- {
288
- logger.error('resume() | Consumer closed');
289
-
290
- return;
291
- }
292
-
293
- if (!this._paused)
294
- {
295
- logger.debug('resume() | Consumer is already resumed');
296
-
297
- return;
298
- }
299
-
300
- this._paused = false;
301
- this._track.enabled = true;
302
-
303
- this.emit('@resume');
304
-
305
- // Emit observer event.
306
- this._observer.safeEmit('resume');
307
- }
308
-
309
- private _onTrackEnded(): void
310
- {
311
- logger.debug('track "ended" event');
312
-
313
- this.safeEmit('trackended');
314
-
315
- // Emit observer event.
316
- this._observer.safeEmit('trackended');
317
- }
318
-
319
- private _handleTrack(): void
320
- {
321
- this._track.addEventListener('ended', this._onTrackEnded);
322
- }
323
-
324
- private _destroyTrack(): void
325
- {
326
- try
327
- {
328
- this._track.removeEventListener('ended', this._onTrackEnded);
329
- this._track.stop();
330
- }
331
- catch (error)
332
- {}
333
- }
334
- }