mediasoup-client 3.6.42 → 3.6.46

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 (55) hide show
  1. package/lib/DataConsumer.d.ts +2 -2
  2. package/lib/DataConsumer.d.ts.map +1 -1
  3. package/lib/Device.d.ts.map +1 -1
  4. package/lib/Device.js +7 -3
  5. package/lib/Logger.js +6 -6
  6. package/lib/Transport.d.ts +3 -3
  7. package/lib/Transport.js +1 -1
  8. package/lib/handlers/Chrome55.d.ts +1 -0
  9. package/lib/handlers/Chrome55.d.ts.map +1 -1
  10. package/lib/handlers/Chrome55.js +40 -9
  11. package/lib/handlers/Chrome67.d.ts +1 -0
  12. package/lib/handlers/Chrome67.d.ts.map +1 -1
  13. package/lib/handlers/Chrome67.js +41 -10
  14. package/lib/handlers/Chrome70.d.ts +1 -0
  15. package/lib/handlers/Chrome70.d.ts.map +1 -1
  16. package/lib/handlers/Chrome70.js +44 -11
  17. package/lib/handlers/Chrome74.d.ts +1 -0
  18. package/lib/handlers/Chrome74.d.ts.map +1 -1
  19. package/lib/handlers/Chrome74.js +44 -11
  20. package/lib/handlers/Edge11.d.ts.map +1 -1
  21. package/lib/handlers/Edge11.js +3 -2
  22. package/lib/handlers/FakeHandler.js +1 -1
  23. package/lib/handlers/Firefox60.d.ts.map +1 -1
  24. package/lib/handlers/Firefox60.js +12 -4
  25. package/lib/handlers/ReactNative.d.ts +1 -0
  26. package/lib/handlers/ReactNative.d.ts.map +1 -1
  27. package/lib/handlers/ReactNative.js +40 -9
  28. package/lib/handlers/Safari11.d.ts +1 -0
  29. package/lib/handlers/Safari11.d.ts.map +1 -1
  30. package/lib/handlers/Safari11.js +40 -10
  31. package/lib/handlers/Safari12.d.ts +1 -0
  32. package/lib/handlers/Safari12.d.ts.map +1 -1
  33. package/lib/handlers/Safari12.js +42 -10
  34. package/lib/handlers/ortc/edgeUtils.js +1 -1
  35. package/lib/handlers/sdp/MediaSection.js +1 -1
  36. package/lib/handlers/sdp/RemoteSdp.js +1 -1
  37. package/lib/handlers/sdp/commonUtils.js +1 -1
  38. package/lib/index.d.ts +1 -1
  39. package/lib/index.js +3 -3
  40. package/lib/ortc.js +1 -1
  41. package/lib/types.js +1 -1
  42. package/package.json +9 -9
  43. package/src/DataConsumer.ts +2 -2
  44. package/src/Device.ts +7 -2
  45. package/src/Transport.ts +3 -3
  46. package/src/handlers/Chrome55.ts +37 -5
  47. package/src/handlers/Chrome67.ts +37 -5
  48. package/src/handlers/Chrome70.ts +40 -4
  49. package/src/handlers/Chrome74.ts +40 -4
  50. package/src/handlers/Edge11.ts +3 -1
  51. package/src/handlers/Firefox60.ts +5 -1
  52. package/src/handlers/ReactNative.ts +37 -5
  53. package/src/handlers/Safari11.ts +37 -5
  54. package/src/handlers/Safari12.ts +40 -4
  55. package/tsconfig.json +1 -1
@@ -62,11 +62,11 @@ export declare class DataConsumer extends EnhancedEventEmitter {
62
62
  /**
63
63
  * DataChannel binaryType.
64
64
  */
65
- get binaryType(): string;
65
+ get binaryType(): BinaryType;
66
66
  /**
67
67
  * Set DataChannel binaryType.
68
68
  */
69
- set binaryType(binaryType: string);
69
+ set binaryType(binaryType: BinaryType);
70
70
  /**
71
71
  * App custom data.
72
72
  */
@@ -1 +1 @@
1
- {"version":3,"file":"DataConsumer.d.ts","sourceRoot":"","sources":["../src/DataConsumer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExD,oBAAY,mBAAmB,GAC/B;IACC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,GAAG,CAAC;CACd,CAAA;AAID,qBAAa,YAAa,SAAQ,oBAAoB;IAGrD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAE7B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IAEzC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAiB;IAE9C,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAuB;IAE7D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAM;IAE/B,SAAS,CAAC,QAAQ,CAAC,SAAS,uBAA8B;IAE1D;;;;;;;OAOG;gBAEF,EACC,EAAE,EACF,cAAc,EACd,WAAW,EACX,oBAAoB,EACpB,OAAO,EACP,EACD;QACC,EAAE,EAAE,MAAM,CAAC;QACX,cAAc,EAAE,MAAM,CAAC;QACvB,WAAW,EAAE,cAAc,CAAC;QAC5B,oBAAoB,EAAE,oBAAoB,CAAC;QAC3C,OAAO,EAAE,GAAG,CAAC;KACb;IAgBF;;OAEG;IACH,IAAI,EAAE,IAAI,MAAM,CAGf;IAED;;OAEG;IACH,IAAI,cAAc,IAAI,MAAM,CAG3B;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,OAAO,CAGpB;IAED;;OAEG;IACH,IAAI,oBAAoB,IAAI,oBAAoB,CAG/C;IAED;;OAEG;IACH,IAAI,UAAU,IAAI,mBAAmB,CAGpC;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,MAAM,CAGlB;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,MAAM,CAGrB;IAED;;OAEG;IACH,IAAI,UAAU,IAAI,MAAM,CAGvB;IAED;;OAEG;IACH,IAAI,UAAU,CAAC,UAAU,EAAE,MAAM,EAGhC;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,GAAG,CAGjB;IAED;;OAEG;IACH,IAAI,OAAO,CAAC,OAAO,EAAE,GAAG,EAGvB;IAED;;;;OAIG;IACH,IAAI,QAAQ,IAAI,oBAAoB,CAGnC;IAED;;OAEG;IACH,KAAK,IAAI,IAAI;IAiBb;;OAEG;IACH,eAAe,IAAI,IAAI;IAiBvB,OAAO,CAAC,kBAAkB;CAyD1B"}
1
+ {"version":3,"file":"DataConsumer.d.ts","sourceRoot":"","sources":["../src/DataConsumer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExD,oBAAY,mBAAmB,GAC/B;IACC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,GAAG,CAAC;CACd,CAAA;AAID,qBAAa,YAAa,SAAQ,oBAAoB;IAGrD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAE7B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IAEzC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAiB;IAE9C,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAuB;IAE7D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAM;IAE/B,SAAS,CAAC,QAAQ,CAAC,SAAS,uBAA8B;IAE1D;;;;;;;OAOG;gBAEF,EACC,EAAE,EACF,cAAc,EACd,WAAW,EACX,oBAAoB,EACpB,OAAO,EACP,EACD;QACC,EAAE,EAAE,MAAM,CAAC;QACX,cAAc,EAAE,MAAM,CAAC;QACvB,WAAW,EAAE,cAAc,CAAC;QAC5B,oBAAoB,EAAE,oBAAoB,CAAC;QAC3C,OAAO,EAAE,GAAG,CAAC;KACb;IAgBF;;OAEG;IACH,IAAI,EAAE,IAAI,MAAM,CAGf;IAED;;OAEG;IACH,IAAI,cAAc,IAAI,MAAM,CAG3B;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,OAAO,CAGpB;IAED;;OAEG;IACH,IAAI,oBAAoB,IAAI,oBAAoB,CAG/C;IAED;;OAEG;IACH,IAAI,UAAU,IAAI,mBAAmB,CAGpC;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,MAAM,CAGlB;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,MAAM,CAGrB;IAED;;OAEG;IACH,IAAI,UAAU,IAAI,UAAU,CAG3B;IAED;;OAEG;IACH,IAAI,UAAU,CAAC,UAAU,EAAE,UAAU,EAGpC;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,GAAG,CAGjB;IAED;;OAEG;IACH,IAAI,OAAO,CAAC,OAAO,EAAE,GAAG,EAGvB;IAED;;;;OAIG;IACH,IAAI,QAAQ,IAAI,oBAAoB,CAGnC;IAED;;OAEG;IACH,KAAK,IAAI,IAAI;IAiBb;;OAEG;IACH,eAAe,IAAI,IAAI;IAiBvB,OAAO,CAAC,kBAAkB;CAyD1B"}
@@ -1 +1 @@
1
- {"version":3,"file":"Device.d.ts","sourceRoot":"","sources":["../src/Device.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAI9D,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAoB,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAoB,MAAM,6BAA6B,CAAC;AAU/E,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAIpD,oBAAY,kBAAkB,GAC3B,UAAU,GACV,UAAU,GACV,UAAU,GACV,UAAU,GACV,WAAW,GACX,UAAU,GACV,UAAU,GACV,QAAQ,GACR,aAAa,CAAC;AAEjB,oBAAY,aAAa,GACzB;IACC;;OAEG;IACH,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC;;OAEG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAOF,wBAAgB,YAAY,IAAI,kBAAkB,GAAG,SAAS,CAqH7D;AAED,qBAAa,MAAM;IAGlB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiB;IAEjD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IAEtC,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO,CAAC,wBAAwB,CAAC,CAAM;IAEvC,OAAO,CAAC,oBAAoB,CAAC,CAAkB;IAG/C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;IAErD,OAAO,CAAC,iBAAiB,CAAC,CAAmB;IAE7C,SAAS,CAAC,QAAQ,CAAC,SAAS,uBAA8B;IAE1D;;;;OAIG;gBACS,EAAE,WAAW,EAAE,cAAc,EAAE,OAAO,EAAE,GAAE,aAAkB;IA8FxE;;OAEG;IACH,IAAI,WAAW,IAAI,MAAM,CAGxB;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,OAAO,CAGpB;IAED;;;;OAIG;IACH,IAAI,eAAe,IAAI,eAAe,CAMrC;IAED;;;;OAIG;IACH,IAAI,gBAAgB,IAAI,gBAAgB,CAMvC;IAED;;;;OAIG;IACH,IAAI,QAAQ,IAAI,oBAAoB,CAGnC;IAED;;OAEG;IACG,IAAI,CACT,EAAE,qBAAqB,EAAE,EACzB;QAAE,qBAAqB,EAAE,eAAe,CAAA;KAAE,GACxC,OAAO,CAAC,IAAI,CAAC;IA4EhB;;;;;OAKG;IACH,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO;IAUpC;;;;;OAKG;IACH,mBAAmB,CAClB,EACC,EAAE,EACF,aAAa,EACb,aAAa,EACb,cAAc,EACd,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,OAAY,EACZ,EAAE,gBAAgB,GACjB,SAAS;IAoBZ;;;;;OAKG;IACH,mBAAmB,CAClB,EACC,EAAE,EACF,aAAa,EACb,aAAa,EACb,cAAc,EACd,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,OAAY,EACZ,EAAE,gBAAgB,GACjB,SAAS;IAoBZ,OAAO,CAAC,gBAAgB;CAuDxB"}
1
+ {"version":3,"file":"Device.d.ts","sourceRoot":"","sources":["../src/Device.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAI9D,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAoB,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAoB,MAAM,6BAA6B,CAAC;AAU/E,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAIpD,oBAAY,kBAAkB,GAC3B,UAAU,GACV,UAAU,GACV,UAAU,GACV,UAAU,GACV,WAAW,GACX,UAAU,GACV,UAAU,GACV,QAAQ,GACR,aAAa,CAAC;AAEjB,oBAAY,aAAa,GACzB;IACC;;OAEG;IACH,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC;;OAEG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAOF,wBAAgB,YAAY,IAAI,kBAAkB,GAAG,SAAS,CA0H7D;AAED,qBAAa,MAAM;IAGlB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiB;IAEjD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IAEtC,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO,CAAC,wBAAwB,CAAC,CAAM;IAEvC,OAAO,CAAC,oBAAoB,CAAC,CAAkB;IAG/C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;IAErD,OAAO,CAAC,iBAAiB,CAAC,CAAmB;IAE7C,SAAS,CAAC,QAAQ,CAAC,SAAS,uBAA8B;IAE1D;;;;OAIG;gBACS,EAAE,WAAW,EAAE,cAAc,EAAE,OAAO,EAAE,GAAE,aAAkB;IA8FxE;;OAEG;IACH,IAAI,WAAW,IAAI,MAAM,CAGxB;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,OAAO,CAGpB;IAED;;;;OAIG;IACH,IAAI,eAAe,IAAI,eAAe,CAMrC;IAED;;;;OAIG;IACH,IAAI,gBAAgB,IAAI,gBAAgB,CAMvC;IAED;;;;OAIG;IACH,IAAI,QAAQ,IAAI,oBAAoB,CAGnC;IAED;;OAEG;IACG,IAAI,CACT,EAAE,qBAAqB,EAAE,EACzB;QAAE,qBAAqB,EAAE,eAAe,CAAA;KAAE,GACxC,OAAO,CAAC,IAAI,CAAC;IA4EhB;;;;;OAKG;IACH,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO;IAUpC;;;;;OAKG;IACH,mBAAmB,CAClB,EACC,EAAE,EACF,aAAa,EACb,aAAa,EACb,cAAc,EACd,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,OAAY,EACZ,EAAE,gBAAgB,GACjB,SAAS;IAoBZ;;;;;OAKG;IACH,mBAAmB,CAClB,EACC,EAAE,EACF,aAAa,EACb,aAAa,EACb,cAAc,EACd,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,OAAY,EACZ,EAAE,gBAAgB,GACjB,SAAS;IAoBZ,OAAO,CAAC,gBAAgB;CAuDxB"}
package/lib/Device.js CHANGED
@@ -15,7 +15,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  var __importStar = (this && this.__importStar) || function (mod) {
16
16
  if (mod && mod.__esModule) return mod;
17
17
  var result = {};
18
- if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
19
19
  __setModuleDefault(result, mod);
20
20
  return result;
21
21
  };
@@ -57,8 +57,8 @@ function detectDevice() {
57
57
  const ua = navigator.userAgent;
58
58
  const browser = bowser_1.default.getParser(ua);
59
59
  const engine = browser.getEngine();
60
- // Chrome and Chromium.
61
- if (browser.satisfies({ chrome: '>=74', chromium: '>=74' })) {
60
+ // Chrome, Chromium, and Edge.
61
+ if (browser.satisfies({ chrome: '>=74', chromium: '>=74', 'microsoft edge': '>=88' })) {
62
62
  return 'Chrome74';
63
63
  }
64
64
  else if (browser.satisfies({ chrome: '>=70', chromium: '>=70' })) {
@@ -74,6 +74,10 @@ function detectDevice() {
74
74
  else if (browser.satisfies({ firefox: '>=60' })) {
75
75
  return 'Firefox60';
76
76
  }
77
+ // Firefox on iOS.
78
+ else if (browser.satisfies({ ios: { OS: '>=14.3', firefox: '>=30.0' } })) {
79
+ return 'Safari12';
80
+ }
77
81
  // Safari with Unified-Plan support enabled.
78
82
  else if (browser.satisfies({ safari: '>=12.0' }) &&
79
83
  typeof RTCRtpTransceiver !== 'undefined' &&
package/lib/Logger.js CHANGED
@@ -9,14 +9,14 @@ const APP_NAME = 'mediasoup-client';
9
9
  class Logger {
10
10
  constructor(prefix) {
11
11
  if (prefix) {
12
- this._debug = debug_1.default(`${APP_NAME}:${prefix}`);
13
- this._warn = debug_1.default(`${APP_NAME}:WARN:${prefix}`);
14
- this._error = debug_1.default(`${APP_NAME}:ERROR:${prefix}`);
12
+ this._debug = (0, debug_1.default)(`${APP_NAME}:${prefix}`);
13
+ this._warn = (0, debug_1.default)(`${APP_NAME}:WARN:${prefix}`);
14
+ this._error = (0, debug_1.default)(`${APP_NAME}:ERROR:${prefix}`);
15
15
  }
16
16
  else {
17
- this._debug = debug_1.default(APP_NAME);
18
- this._warn = debug_1.default(`${APP_NAME}:WARN`);
19
- this._error = debug_1.default(`${APP_NAME}:ERROR`);
17
+ this._debug = (0, debug_1.default)(APP_NAME);
18
+ this._warn = (0, debug_1.default)(`${APP_NAME}:WARN`);
19
+ this._error = (0, debug_1.default)(`${APP_NAME}:ERROR`);
20
20
  }
21
21
  /* eslint-disable no-console */
22
22
  this._debug.log = console.info.bind(console);
@@ -65,7 +65,7 @@ export declare type IceCandidate = {
65
65
  */
66
66
  port: number;
67
67
  /**
68
- * The type of candidate..
68
+ * The type of candidate.
69
69
  */
70
70
  type: 'host' | 'srflx' | 'prflx' | 'relay';
71
71
  /**
@@ -75,11 +75,11 @@ export declare type IceCandidate = {
75
75
  };
76
76
  export declare type DtlsParameters = {
77
77
  /**
78
- * DTLS role. Default 'auto'.
78
+ * Server DTLS role. Default 'auto'.
79
79
  */
80
80
  role?: DtlsRole;
81
81
  /**
82
- * DTLS fingerprints.
82
+ * Server DTLS fingerprints.
83
83
  */
84
84
  fingerprints: DtlsFingerprint[];
85
85
  };
package/lib/Transport.js CHANGED
@@ -14,7 +14,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
14
14
  var __importStar = (this && this.__importStar) || function (mod) {
15
15
  if (mod && mod.__esModule) return mod;
16
16
  var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
18
  __setModuleDefault(result, mod);
19
19
  return result;
20
20
  };
@@ -7,6 +7,7 @@ export declare class Chrome55 extends HandlerInterface {
7
7
  private _remoteSdp?;
8
8
  private _sendingRtpParametersByKind?;
9
9
  private _sendingRemoteRtpParametersByKind?;
10
+ private _forcedLocalDtlsRole?;
10
11
  private _pc;
11
12
  private readonly _sendStream;
12
13
  private readonly _mapSendLocalIdTrack;
@@ -1 +1 @@
1
- {"version":3,"file":"Chrome55.d.ts","sourceRoot":"","sources":["../../src/handlers/Chrome55.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Chrome55.d.ts","sourceRoot":"","sources":["../../src/handlers/Chrome55.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
14
14
  var __importStar = (this && this.__importStar) || function (mod) {
15
15
  if (mod && mod.__esModule) return mod;
16
16
  var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
18
  __setModuleDefault(result, mod);
19
19
  return result;
20
20
  };
@@ -125,7 +125,19 @@ class Chrome55 extends HandlerInterface_1.HandlerInterface {
125
125
  audio: ortc.getSendingRemoteRtpParameters('audio', extendedRtpCapabilities),
126
126
  video: ortc.getSendingRemoteRtpParameters('video', extendedRtpCapabilities)
127
127
  };
128
- this._pc = new RTCPeerConnection(Object.assign({ iceServers: iceServers || [], iceTransportPolicy: iceTransportPolicy || 'all', bundlePolicy: 'max-bundle', rtcpMuxPolicy: 'require', sdpSemantics: 'plan-b' }, additionalSettings), proprietaryConstraints);
128
+ if (dtlsParameters.role && dtlsParameters.role !== 'auto') {
129
+ this._forcedLocalDtlsRole = dtlsParameters.role === 'server'
130
+ ? 'client'
131
+ : 'server';
132
+ }
133
+ this._pc = new RTCPeerConnection({
134
+ iceServers: iceServers || [],
135
+ iceTransportPolicy: iceTransportPolicy || 'all',
136
+ bundlePolicy: 'max-bundle',
137
+ rtcpMuxPolicy: 'require',
138
+ sdpSemantics: 'plan-b',
139
+ ...additionalSettings
140
+ }, proprietaryConstraints);
129
141
  // Handle RTCPeerConnection connection status.
130
142
  this._pc.addEventListener('iceconnectionstatechange', () => {
131
143
  switch (this._pc.iceConnectionState) {
@@ -181,6 +193,7 @@ class Chrome55 extends HandlerInterface_1.HandlerInterface {
181
193
  return this._pc.getStats();
182
194
  }
183
195
  async send({ track, encodings, codecOptions, codec }) {
196
+ var _a;
184
197
  this._assertSendDirection();
185
198
  logger.debug('send() [kind:%s, track.id:%s]', track.kind, track.id);
186
199
  if (codec) {
@@ -197,8 +210,12 @@ class Chrome55 extends HandlerInterface_1.HandlerInterface {
197
210
  const sendingRemoteRtpParameters = utils.clone(this._sendingRemoteRtpParametersByKind[track.kind], {});
198
211
  sendingRemoteRtpParameters.codecs =
199
212
  ortc.reduceCodecs(sendingRemoteRtpParameters.codecs);
200
- if (!this._transportReady)
201
- await this._setupTransport({ localDtlsRole: 'server', localSdpObject });
213
+ if (!this._transportReady) {
214
+ await this._setupTransport({
215
+ localDtlsRole: (_a = this._forcedLocalDtlsRole) !== null && _a !== void 0 ? _a : 'client',
216
+ localSdpObject
217
+ });
218
+ }
202
219
  if (track.kind === 'video' && encodings && encodings.length > 1) {
203
220
  logger.debug('send() | enabling simulcast');
204
221
  localSdpObject = sdpTransform.parse(offer.sdp);
@@ -301,6 +318,7 @@ class Chrome55 extends HandlerInterface_1.HandlerInterface {
301
318
  throw new errors_1.UnsupportedError('not implemented');
302
319
  }
303
320
  async sendDataChannel({ ordered, maxPacketLifeTime, maxRetransmits, label, protocol }) {
321
+ var _a;
304
322
  this._assertSendDirection();
305
323
  const options = {
306
324
  negotiated: true,
@@ -323,8 +341,12 @@ class Chrome55 extends HandlerInterface_1.HandlerInterface {
323
341
  const localSdpObject = sdpTransform.parse(offer.sdp);
324
342
  const offerMediaObject = localSdpObject.media
325
343
  .find((m) => m.type === 'application');
326
- if (!this._transportReady)
327
- await this._setupTransport({ localDtlsRole: 'server', localSdpObject });
344
+ if (!this._transportReady) {
345
+ await this._setupTransport({
346
+ localDtlsRole: (_a = this._forcedLocalDtlsRole) !== null && _a !== void 0 ? _a : 'client',
347
+ localSdpObject
348
+ });
349
+ }
328
350
  logger.debug('sendDataChannel() | calling pc.setLocalDescription() [offer:%o]', offer);
329
351
  await this._pc.setLocalDescription(offer);
330
352
  this._remoteSdp.sendSctpAssociation({ offerMediaObject });
@@ -342,6 +364,7 @@ class Chrome55 extends HandlerInterface_1.HandlerInterface {
342
364
  return { dataChannel, sctpStreamParameters };
343
365
  }
344
366
  async receive({ trackId, kind, rtpParameters }) {
367
+ var _a;
345
368
  this._assertRecvDirection();
346
369
  logger.debug('receive() [trackId:%s, kind:%s]', trackId, kind);
347
370
  const localId = trackId;
@@ -368,8 +391,12 @@ class Chrome55 extends HandlerInterface_1.HandlerInterface {
368
391
  answerMediaObject
369
392
  });
370
393
  answer = { type: 'answer', sdp: sdpTransform.write(localSdpObject) };
371
- if (!this._transportReady)
372
- await this._setupTransport({ localDtlsRole: 'client', localSdpObject });
394
+ if (!this._transportReady) {
395
+ await this._setupTransport({
396
+ localDtlsRole: (_a = this._forcedLocalDtlsRole) !== null && _a !== void 0 ? _a : 'client',
397
+ localSdpObject
398
+ });
399
+ }
373
400
  logger.debug('receive() | calling pc.setLocalDescription() [answer:%o]', answer);
374
401
  await this._pc.setLocalDescription(answer);
375
402
  const stream = this._pc.getRemoteStreams()
@@ -410,6 +437,7 @@ class Chrome55 extends HandlerInterface_1.HandlerInterface {
410
437
  throw new errors_1.UnsupportedError('not implemented');
411
438
  }
412
439
  async receiveDataChannel({ sctpStreamParameters, label, protocol }) {
440
+ var _a;
413
441
  this._assertRecvDirection();
414
442
  const { streamId, ordered, maxPacketLifeTime, maxRetransmits } = sctpStreamParameters;
415
443
  const options = {
@@ -433,7 +461,10 @@ class Chrome55 extends HandlerInterface_1.HandlerInterface {
433
461
  const answer = await this._pc.createAnswer();
434
462
  if (!this._transportReady) {
435
463
  const localSdpObject = sdpTransform.parse(answer.sdp);
436
- await this._setupTransport({ localDtlsRole: 'client', localSdpObject });
464
+ await this._setupTransport({
465
+ localDtlsRole: (_a = this._forcedLocalDtlsRole) !== null && _a !== void 0 ? _a : 'client',
466
+ localSdpObject
467
+ });
437
468
  }
438
469
  logger.debug('receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]', answer);
439
470
  await this._pc.setLocalDescription(answer);
@@ -7,6 +7,7 @@ export declare class Chrome67 extends HandlerInterface {
7
7
  private _remoteSdp?;
8
8
  private _sendingRtpParametersByKind?;
9
9
  private _sendingRemoteRtpParametersByKind?;
10
+ private _forcedLocalDtlsRole?;
10
11
  private _pc;
11
12
  private readonly _sendStream;
12
13
  private readonly _mapSendLocalIdRtpSender;
@@ -1 +1 @@
1
- {"version":3,"file":"Chrome67.d.ts","sourceRoot":"","sources":["../../src/handlers/Chrome67.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Chrome67.d.ts","sourceRoot":"","sources":["../../src/handlers/Chrome67.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
14
14
  var __importStar = (this && this.__importStar) || function (mod) {
15
15
  if (mod && mod.__esModule) return mod;
16
16
  var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
18
  __setModuleDefault(result, mod);
19
19
  return result;
20
20
  };
@@ -124,7 +124,19 @@ class Chrome67 extends HandlerInterface_1.HandlerInterface {
124
124
  audio: ortc.getSendingRemoteRtpParameters('audio', extendedRtpCapabilities),
125
125
  video: ortc.getSendingRemoteRtpParameters('video', extendedRtpCapabilities)
126
126
  };
127
- this._pc = new RTCPeerConnection(Object.assign({ iceServers: iceServers || [], iceTransportPolicy: iceTransportPolicy || 'all', bundlePolicy: 'max-bundle', rtcpMuxPolicy: 'require', sdpSemantics: 'plan-b' }, additionalSettings), proprietaryConstraints);
127
+ if (dtlsParameters.role && dtlsParameters.role !== 'auto') {
128
+ this._forcedLocalDtlsRole = dtlsParameters.role === 'server'
129
+ ? 'client'
130
+ : 'server';
131
+ }
132
+ this._pc = new RTCPeerConnection({
133
+ iceServers: iceServers || [],
134
+ iceTransportPolicy: iceTransportPolicy || 'all',
135
+ bundlePolicy: 'max-bundle',
136
+ rtcpMuxPolicy: 'require',
137
+ sdpSemantics: 'plan-b',
138
+ ...additionalSettings
139
+ }, proprietaryConstraints);
128
140
  // Handle RTCPeerConnection connection status.
129
141
  this._pc.addEventListener('iceconnectionstatechange', () => {
130
142
  switch (this._pc.iceConnectionState) {
@@ -180,6 +192,7 @@ class Chrome67 extends HandlerInterface_1.HandlerInterface {
180
192
  return this._pc.getStats();
181
193
  }
182
194
  async send({ track, encodings, codecOptions, codec }) {
195
+ var _a;
183
196
  this._assertSendDirection();
184
197
  logger.debug('send() [kind:%s, track.id:%s]', track.kind, track.id);
185
198
  if (codec) {
@@ -196,8 +209,12 @@ class Chrome67 extends HandlerInterface_1.HandlerInterface {
196
209
  const sendingRemoteRtpParameters = utils.clone(this._sendingRemoteRtpParametersByKind[track.kind], {});
197
210
  sendingRemoteRtpParameters.codecs =
198
211
  ortc.reduceCodecs(sendingRemoteRtpParameters.codecs);
199
- if (!this._transportReady)
200
- await this._setupTransport({ localDtlsRole: 'server', localSdpObject });
212
+ if (!this._transportReady) {
213
+ await this._setupTransport({
214
+ localDtlsRole: (_a = this._forcedLocalDtlsRole) !== null && _a !== void 0 ? _a : 'client',
215
+ localSdpObject
216
+ });
217
+ }
201
218
  if (track.kind === 'video' && encodings && encodings.length > 1) {
202
219
  logger.debug('send() | enabling simulcast');
203
220
  localSdpObject = sdpTransform.parse(offer.sdp);
@@ -330,7 +347,7 @@ class Chrome67 extends HandlerInterface_1.HandlerInterface {
330
347
  throw new Error('associated RTCRtpSender not found');
331
348
  const parameters = rtpSender.getParameters();
332
349
  parameters.encodings.forEach((encoding, idx) => {
333
- parameters.encodings[idx] = Object.assign(Object.assign({}, encoding), params);
350
+ parameters.encodings[idx] = { ...encoding, ...params };
334
351
  });
335
352
  await rtpSender.setParameters(parameters);
336
353
  }
@@ -342,6 +359,7 @@ class Chrome67 extends HandlerInterface_1.HandlerInterface {
342
359
  return rtpSender.getStats();
343
360
  }
344
361
  async sendDataChannel({ ordered, maxPacketLifeTime, maxRetransmits, label, protocol }) {
362
+ var _a;
345
363
  this._assertSendDirection();
346
364
  const options = {
347
365
  negotiated: true,
@@ -364,8 +382,12 @@ class Chrome67 extends HandlerInterface_1.HandlerInterface {
364
382
  const localSdpObject = sdpTransform.parse(offer.sdp);
365
383
  const offerMediaObject = localSdpObject.media
366
384
  .find((m) => m.type === 'application');
367
- if (!this._transportReady)
368
- await this._setupTransport({ localDtlsRole: 'server', localSdpObject });
385
+ if (!this._transportReady) {
386
+ await this._setupTransport({
387
+ localDtlsRole: (_a = this._forcedLocalDtlsRole) !== null && _a !== void 0 ? _a : 'client',
388
+ localSdpObject
389
+ });
390
+ }
369
391
  logger.debug('sendDataChannel() | calling pc.setLocalDescription() [offer:%o]', offer);
370
392
  await this._pc.setLocalDescription(offer);
371
393
  this._remoteSdp.sendSctpAssociation({ offerMediaObject });
@@ -383,6 +405,7 @@ class Chrome67 extends HandlerInterface_1.HandlerInterface {
383
405
  return { dataChannel, sctpStreamParameters };
384
406
  }
385
407
  async receive({ trackId, kind, rtpParameters }) {
408
+ var _a;
386
409
  this._assertRecvDirection();
387
410
  logger.debug('receive() [trackId:%s, kind:%s]', trackId, kind);
388
411
  const localId = trackId;
@@ -408,8 +431,12 @@ class Chrome67 extends HandlerInterface_1.HandlerInterface {
408
431
  answerMediaObject
409
432
  });
410
433
  answer = { type: 'answer', sdp: sdpTransform.write(localSdpObject) };
411
- if (!this._transportReady)
412
- await this._setupTransport({ localDtlsRole: 'client', localSdpObject });
434
+ if (!this._transportReady) {
435
+ await this._setupTransport({
436
+ localDtlsRole: (_a = this._forcedLocalDtlsRole) !== null && _a !== void 0 ? _a : 'client',
437
+ localSdpObject
438
+ });
439
+ }
413
440
  logger.debug('receive() | calling pc.setLocalDescription() [answer:%o]', answer);
414
441
  await this._pc.setLocalDescription(answer);
415
442
  const rtpReceiver = this._pc.getReceivers()
@@ -456,6 +483,7 @@ class Chrome67 extends HandlerInterface_1.HandlerInterface {
456
483
  return rtpReceiver.getStats();
457
484
  }
458
485
  async receiveDataChannel({ sctpStreamParameters, label, protocol }) {
486
+ var _a;
459
487
  this._assertRecvDirection();
460
488
  const { streamId, ordered, maxPacketLifeTime, maxRetransmits } = sctpStreamParameters;
461
489
  const options = {
@@ -479,7 +507,10 @@ class Chrome67 extends HandlerInterface_1.HandlerInterface {
479
507
  const answer = await this._pc.createAnswer();
480
508
  if (!this._transportReady) {
481
509
  const localSdpObject = sdpTransform.parse(answer.sdp);
482
- await this._setupTransport({ localDtlsRole: 'client', localSdpObject });
510
+ await this._setupTransport({
511
+ localDtlsRole: (_a = this._forcedLocalDtlsRole) !== null && _a !== void 0 ? _a : 'client',
512
+ localSdpObject
513
+ });
483
514
  }
484
515
  logger.debug('receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]', answer);
485
516
  await this._pc.setLocalDescription(answer);
@@ -7,6 +7,7 @@ export declare class Chrome70 extends HandlerInterface {
7
7
  private _remoteSdp?;
8
8
  private _sendingRtpParametersByKind?;
9
9
  private _sendingRemoteRtpParametersByKind?;
10
+ private _forcedLocalDtlsRole?;
10
11
  private _pc;
11
12
  private readonly _mapMidTransceiver;
12
13
  private readonly _sendStream;
@@ -1 +1 @@
1
- {"version":3,"file":"Chrome70.d.ts","sourceRoot":"","sources":["../../src/handlers/Chrome70.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Chrome70.d.ts","sourceRoot":"","sources":["../../src/handlers/Chrome70.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
14
14
  var __importStar = (this && this.__importStar) || function (mod) {
15
15
  if (mod && mod.__esModule) return mod;
16
16
  var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
18
  __setModuleDefault(result, mod);
19
19
  return result;
20
20
  };
@@ -118,7 +118,19 @@ class Chrome70 extends HandlerInterface_1.HandlerInterface {
118
118
  audio: ortc.getSendingRemoteRtpParameters('audio', extendedRtpCapabilities),
119
119
  video: ortc.getSendingRemoteRtpParameters('video', extendedRtpCapabilities)
120
120
  };
121
- this._pc = new RTCPeerConnection(Object.assign({ iceServers: iceServers || [], iceTransportPolicy: iceTransportPolicy || 'all', bundlePolicy: 'max-bundle', rtcpMuxPolicy: 'require', sdpSemantics: 'unified-plan' }, additionalSettings), proprietaryConstraints);
121
+ if (dtlsParameters.role && dtlsParameters.role !== 'auto') {
122
+ this._forcedLocalDtlsRole = dtlsParameters.role === 'server'
123
+ ? 'client'
124
+ : 'server';
125
+ }
126
+ this._pc = new RTCPeerConnection({
127
+ iceServers: iceServers || [],
128
+ iceTransportPolicy: iceTransportPolicy || 'all',
129
+ bundlePolicy: 'max-bundle',
130
+ rtcpMuxPolicy: 'require',
131
+ sdpSemantics: 'unified-plan',
132
+ ...additionalSettings
133
+ }, proprietaryConstraints);
122
134
  // Handle RTCPeerConnection connection status.
123
135
  this._pc.addEventListener('iceconnectionstatechange', () => {
124
136
  switch (this._pc.iceConnectionState) {
@@ -174,6 +186,7 @@ class Chrome70 extends HandlerInterface_1.HandlerInterface {
174
186
  return this._pc.getStats();
175
187
  }
176
188
  async send({ track, encodings, codecOptions, codec }) {
189
+ var _a;
177
190
  this._assertSendDirection();
178
191
  logger.debug('send() [kind:%s, track.id:%s]', track.kind, track.id);
179
192
  const sendingRtpParameters = utils.clone(this._sendingRtpParametersByKind[track.kind], {});
@@ -189,8 +202,12 @@ class Chrome70 extends HandlerInterface_1.HandlerInterface {
189
202
  let offer = await this._pc.createOffer();
190
203
  let localSdpObject = sdpTransform.parse(offer.sdp);
191
204
  let offerMediaObject;
192
- if (!this._transportReady)
193
- await this._setupTransport({ localDtlsRole: 'server', localSdpObject });
205
+ if (!this._transportReady) {
206
+ await this._setupTransport({
207
+ localDtlsRole: (_a = this._forcedLocalDtlsRole) !== null && _a !== void 0 ? _a : 'client',
208
+ localSdpObject
209
+ });
210
+ }
194
211
  if (encodings && encodings.length > 1) {
195
212
  logger.debug('send() | enabling legacy simulcast');
196
213
  localSdpObject = sdpTransform.parse(offer.sdp);
@@ -203,7 +220,7 @@ class Chrome70 extends HandlerInterface_1.HandlerInterface {
203
220
  }
204
221
  // Special case for VP9 with SVC.
205
222
  let hackVp9Svc = false;
206
- const layers = scalabilityModes_1.parse((encodings || [{}])[0].scalabilityMode);
223
+ const layers = (0, scalabilityModes_1.parse)((encodings || [{}])[0].scalabilityMode);
207
224
  if (encodings &&
208
225
  encodings.length === 1 &&
209
226
  layers.spatialLayers > 1 &&
@@ -299,6 +316,7 @@ class Chrome70 extends HandlerInterface_1.HandlerInterface {
299
316
  const answer = { type: 'answer', sdp: this._remoteSdp.getSdp() };
300
317
  logger.debug('stopSending() | calling pc.setRemoteDescription() [answer:%o]', answer);
301
318
  await this._pc.setRemoteDescription(answer);
319
+ this._mapMidTransceiver.delete(localId);
302
320
  }
303
321
  async replaceTrack(localId, track) {
304
322
  this._assertSendDirection();
@@ -336,7 +354,7 @@ class Chrome70 extends HandlerInterface_1.HandlerInterface {
336
354
  throw new Error('associated RTCRtpTransceiver not found');
337
355
  const parameters = transceiver.sender.getParameters();
338
356
  parameters.encodings.forEach((encoding, idx) => {
339
- parameters.encodings[idx] = Object.assign(Object.assign({}, encoding), params);
357
+ parameters.encodings[idx] = { ...encoding, ...params };
340
358
  });
341
359
  await transceiver.sender.setParameters(parameters);
342
360
  }
@@ -348,6 +366,7 @@ class Chrome70 extends HandlerInterface_1.HandlerInterface {
348
366
  return transceiver.sender.getStats();
349
367
  }
350
368
  async sendDataChannel({ ordered, maxPacketLifeTime, maxRetransmits, label, protocol }) {
369
+ var _a;
351
370
  this._assertSendDirection();
352
371
  const options = {
353
372
  negotiated: true,
@@ -370,8 +389,12 @@ class Chrome70 extends HandlerInterface_1.HandlerInterface {
370
389
  const localSdpObject = sdpTransform.parse(offer.sdp);
371
390
  const offerMediaObject = localSdpObject.media
372
391
  .find((m) => m.type === 'application');
373
- if (!this._transportReady)
374
- await this._setupTransport({ localDtlsRole: 'server', localSdpObject });
392
+ if (!this._transportReady) {
393
+ await this._setupTransport({
394
+ localDtlsRole: (_a = this._forcedLocalDtlsRole) !== null && _a !== void 0 ? _a : 'client',
395
+ localSdpObject
396
+ });
397
+ }
375
398
  logger.debug('sendDataChannel() | calling pc.setLocalDescription() [offer:%o]', offer);
376
399
  await this._pc.setLocalDescription(offer);
377
400
  this._remoteSdp.sendSctpAssociation({ offerMediaObject });
@@ -389,6 +412,7 @@ class Chrome70 extends HandlerInterface_1.HandlerInterface {
389
412
  return { dataChannel, sctpStreamParameters };
390
413
  }
391
414
  async receive({ trackId, kind, rtpParameters }) {
415
+ var _a;
392
416
  this._assertRecvDirection();
393
417
  logger.debug('receive() [trackId:%s, kind:%s]', trackId, kind);
394
418
  const localId = rtpParameters.mid || String(this._mapMidTransceiver.size);
@@ -413,8 +437,12 @@ class Chrome70 extends HandlerInterface_1.HandlerInterface {
413
437
  answerMediaObject
414
438
  });
415
439
  answer = { type: 'answer', sdp: sdpTransform.write(localSdpObject) };
416
- if (!this._transportReady)
417
- await this._setupTransport({ localDtlsRole: 'client', localSdpObject });
440
+ if (!this._transportReady) {
441
+ await this._setupTransport({
442
+ localDtlsRole: (_a = this._forcedLocalDtlsRole) !== null && _a !== void 0 ? _a : 'client',
443
+ localSdpObject
444
+ });
445
+ }
418
446
  logger.debug('receive() | calling pc.setLocalDescription() [answer:%o]', answer);
419
447
  await this._pc.setLocalDescription(answer);
420
448
  const transceiver = this._pc.getTransceivers()
@@ -442,6 +470,7 @@ class Chrome70 extends HandlerInterface_1.HandlerInterface {
442
470
  const answer = await this._pc.createAnswer();
443
471
  logger.debug('stopReceiving() | calling pc.setLocalDescription() [answer:%o]', answer);
444
472
  await this._pc.setLocalDescription(answer);
473
+ this._mapMidTransceiver.delete(localId);
445
474
  }
446
475
  async pauseReceiving(
447
476
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -461,6 +490,7 @@ class Chrome70 extends HandlerInterface_1.HandlerInterface {
461
490
  return transceiver.receiver.getStats();
462
491
  }
463
492
  async receiveDataChannel({ sctpStreamParameters, label, protocol }) {
493
+ var _a;
464
494
  this._assertRecvDirection();
465
495
  const { streamId, ordered, maxPacketLifeTime, maxRetransmits } = sctpStreamParameters;
466
496
  const options = {
@@ -484,7 +514,10 @@ class Chrome70 extends HandlerInterface_1.HandlerInterface {
484
514
  const answer = await this._pc.createAnswer();
485
515
  if (!this._transportReady) {
486
516
  const localSdpObject = sdpTransform.parse(answer.sdp);
487
- await this._setupTransport({ localDtlsRole: 'client', localSdpObject });
517
+ await this._setupTransport({
518
+ localDtlsRole: (_a = this._forcedLocalDtlsRole) !== null && _a !== void 0 ? _a : 'client',
519
+ localSdpObject
520
+ });
488
521
  }
489
522
  logger.debug('receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]', answer);
490
523
  await this._pc.setLocalDescription(answer);
@@ -7,6 +7,7 @@ export declare class Chrome74 extends HandlerInterface {
7
7
  private _remoteSdp?;
8
8
  private _sendingRtpParametersByKind?;
9
9
  private _sendingRemoteRtpParametersByKind?;
10
+ private _forcedLocalDtlsRole?;
10
11
  private _pc;
11
12
  private readonly _mapMidTransceiver;
12
13
  private readonly _sendStream;
@@ -1 +1 @@
1
- {"version":3,"file":"Chrome74.d.ts","sourceRoot":"","sources":["../../src/handlers/Chrome74.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Chrome74.d.ts","sourceRoot":"","sources":["../../src/handlers/Chrome74.ts"],"names":[],"mappings":"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"}