@techsee/techsee-media-service 999.20.0-nodejs.lite.2 → 999.20.1-alpha

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 (205) hide show
  1. package/README.md +28 -27
  2. package/lib/LocalStreamManager.d.ts +0 -1
  3. package/lib/LocalStreamManager.d.ts.map +1 -1
  4. package/lib/LocalStreamManager.js +84 -82
  5. package/lib/LocalStreamManager.js.map +1 -1
  6. package/lib/MediaConstants.d.ts +3 -21
  7. package/lib/MediaConstants.d.ts.map +1 -1
  8. package/lib/MediaConstants.js +13 -32
  9. package/lib/MediaConstants.js.map +1 -1
  10. package/lib/MediaContracts.d.ts +3 -9
  11. package/lib/MediaContracts.d.ts.map +1 -1
  12. package/lib/MediaContracts.js +4 -1
  13. package/lib/MediaContracts.js.map +1 -1
  14. package/lib/MediaPublisher.d.ts +0 -1
  15. package/lib/MediaPublisher.d.ts.map +1 -1
  16. package/lib/MediaPublisher.js +10 -7
  17. package/lib/MediaPublisher.js.map +1 -1
  18. package/lib/MediaServiceBase.d.ts +0 -1
  19. package/lib/MediaServiceBase.d.ts.map +1 -1
  20. package/lib/MediaServiceBase.js +199 -170
  21. package/lib/MediaServiceBase.js.map +1 -1
  22. package/lib/MediaSession/MediaServer.d.ts +0 -1
  23. package/lib/MediaSession/MediaServer.d.ts.map +1 -1
  24. package/lib/MediaSession/MediaServer.js +74 -62
  25. package/lib/MediaSession/MediaServer.js.map +1 -1
  26. package/lib/MediaSession/MediaSessionBase.d.ts +0 -1
  27. package/lib/MediaSession/MediaSessionBase.d.ts.map +1 -1
  28. package/lib/MediaSession/MediaSessionBase.js +23 -19
  29. package/lib/MediaSession/MediaSessionBase.js.map +1 -1
  30. package/lib/MediaSession/SessionOpentok.d.ts +2 -3
  31. package/lib/MediaSession/SessionOpentok.d.ts.map +1 -1
  32. package/lib/MediaSession/SessionOpentok.js +80 -51
  33. package/lib/MediaSession/SessionOpentok.js.map +1 -1
  34. package/lib/MediaSession/SessionTurn.d.ts +0 -1
  35. package/lib/MediaSession/SessionTurn.d.ts.map +1 -1
  36. package/lib/MediaSession/SessionTurn.js +151 -109
  37. package/lib/MediaSession/SessionTurn.js.map +1 -1
  38. package/lib/MediaSession/TurnConstants.d.ts +0 -1
  39. package/lib/MediaSession/TurnConstants.d.ts.map +1 -1
  40. package/lib/MediaSession/TurnConstants.js +16 -1
  41. package/lib/MediaSession/TurnConstants.js.map +1 -1
  42. package/lib/MediaSubscriber.d.ts +0 -1
  43. package/lib/MediaSubscriber.d.ts.map +1 -1
  44. package/lib/MediaSubscriber.js +43 -37
  45. package/lib/MediaSubscriber.js.map +1 -1
  46. package/lib/MediaUtils/Compatibility.d.ts +0 -3
  47. package/lib/MediaUtils/Compatibility.d.ts.map +1 -1
  48. package/lib/MediaUtils/Compatibility.js +34 -76
  49. package/lib/MediaUtils/Compatibility.js.map +1 -1
  50. package/lib/MediaUtils/MediaDomUtils.d.ts +3 -6
  51. package/lib/MediaUtils/MediaDomUtils.d.ts.map +1 -1
  52. package/lib/MediaUtils/MediaDomUtils.js +65 -70
  53. package/lib/MediaUtils/MediaDomUtils.js.map +1 -1
  54. package/lib/MediaUtils/MediaTracer.d.ts +0 -1
  55. package/lib/MediaUtils/MediaTracer.d.ts.map +1 -1
  56. package/lib/MediaUtils/MediaTracer.js +5 -2
  57. package/lib/MediaUtils/MediaTracer.js.map +1 -1
  58. package/lib/MultiParty/DetectWebRtcService.d.ts +14 -17
  59. package/lib/MultiParty/DetectWebRtcService.d.ts.map +1 -1
  60. package/lib/MultiParty/DetectWebRtcService.js +54 -98
  61. package/lib/MultiParty/DetectWebRtcService.js.map +1 -1
  62. package/lib/MultiParty/MediaCapabilitiesHelper.d.ts +10 -0
  63. package/lib/MultiParty/MediaCapabilitiesHelper.d.ts.map +1 -0
  64. package/lib/MultiParty/MediaCapabilitiesHelper.js +140 -0
  65. package/lib/MultiParty/MediaCapabilitiesHelper.js.map +1 -0
  66. package/lib/MultiParty/MultiParty.d.ts +21 -0
  67. package/lib/MultiParty/MultiParty.d.ts.map +1 -0
  68. package/lib/MultiParty/MultiParty.js +160 -0
  69. package/lib/MultiParty/MultiParty.js.map +1 -0
  70. package/lib/MultiParty/OpentokMultiparty.d.ts +32 -0
  71. package/lib/MultiParty/OpentokMultiparty.d.ts.map +1 -0
  72. package/lib/MultiParty/OpentokMultiparty.js +184 -0
  73. package/lib/MultiParty/OpentokMultiparty.js.map +1 -0
  74. package/lib/TechseeMediaStream.d.ts +0 -1
  75. package/lib/TechseeMediaStream.d.ts.map +1 -1
  76. package/lib/TechseeMediaStream.js +12 -9
  77. package/lib/TechseeMediaStream.js.map +1 -1
  78. package/lib/oldCode/constants.js +20 -0
  79. package/lib/oldCode/constants.js.map +1 -0
  80. package/lib/oldCode/event-emitter.js +39 -0
  81. package/lib/oldCode/event-emitter.js.map +1 -0
  82. package/lib/oldCode/index.js +64 -0
  83. package/lib/oldCode/index.js.map +1 -0
  84. package/lib/oldCode/opentok/session.js +310 -0
  85. package/lib/oldCode/opentok/session.js.map +1 -0
  86. package/lib/oldCode/opentok/stream.js +310 -0
  87. package/lib/oldCode/opentok/stream.js.map +1 -0
  88. package/lib/oldCode/publisher.js +143 -0
  89. package/lib/oldCode/publisher.js.map +1 -0
  90. package/lib/oldCode/service.js +395 -0
  91. package/lib/oldCode/service.js.map +1 -0
  92. package/lib/oldCode/session.js +110 -0
  93. package/lib/oldCode/session.js.map +1 -0
  94. package/lib/oldCode/stream.js +195 -0
  95. package/lib/oldCode/stream.js.map +1 -0
  96. package/lib/oldCode/subscriber.js +90 -0
  97. package/lib/oldCode/subscriber.js.map +1 -0
  98. package/lib/oldCode/tracer.d.ts +36 -0
  99. package/lib/oldCode/tracer.d.ts.map +1 -0
  100. package/lib/oldCode/tracer.js +161 -0
  101. package/lib/oldCode/tracer.js.map +1 -0
  102. package/lib/oldCode/utils/ImageFixer.d.ts +1 -0
  103. package/lib/oldCode/utils/ImageFixer.d.ts.map +1 -0
  104. package/lib/oldCode/utils/ImageFixer.js +59 -0
  105. package/lib/oldCode/utils/ImageFixer.js.map +1 -0
  106. package/lib/oldCode/webrtc/constants.js +114 -0
  107. package/lib/oldCode/webrtc/constants.js.map +1 -0
  108. package/lib/oldCode/webrtc/helper.js +173 -0
  109. package/lib/oldCode/webrtc/helper.js.map +1 -0
  110. package/lib/oldCode/webrtc/session-kms.js +558 -0
  111. package/lib/oldCode/webrtc/session-kms.js.map +1 -0
  112. package/lib/oldCode/webrtc/session-loopback.js +336 -0
  113. package/lib/oldCode/webrtc/session-loopback.js.map +1 -0
  114. package/lib/oldCode/webrtc/session-turn.js +880 -0
  115. package/lib/oldCode/webrtc/session-turn.js.map +1 -0
  116. package/lib/oldCode/webrtc/session-turn.v2.js +583 -0
  117. package/lib/oldCode/webrtc/session-turn.v2.js.map +1 -0
  118. package/lib/oldCode/webrtc/session.js +52 -0
  119. package/lib/oldCode/webrtc/session.js.map +1 -0
  120. package/lib/oldCode/webrtc/stream.js +674 -0
  121. package/lib/oldCode/webrtc/stream.js.map +1 -0
  122. package/lib/oldCode/webrtc/temasys/adapter-loader.js +12 -0
  123. package/lib/oldCode/webrtc/temasys/adapter-loader.js.map +1 -0
  124. package/lib/oldCode/webrtc/temasys/adapter.js +5861 -0
  125. package/lib/oldCode/webrtc/temasys/adapter.js.map +1 -0
  126. package/lib/oldCode/webrtc/webrtc-ie-shim.js +3007 -0
  127. package/lib/oldCode/webrtc/webrtc-ie-shim.js.map +1 -0
  128. package/lib/qos/raw-qos.js +145 -84
  129. package/lib/qos/raw-qos.js.map +1 -1
  130. package/lib/webrtc-ie-shim.js +2950 -1896
  131. package/lib/webrtc-ie-shim.js.map +1 -1
  132. package/package.json +59 -65
  133. package/lib/MediaUtils/index.d.ts +0 -2
  134. package/lib/MediaUtils/index.d.ts.map +0 -1
  135. package/lib/MediaUtils/index.js +0 -6
  136. package/lib/MediaUtils/index.js.map +0 -1
  137. package/lib/MultiParty/MediaCapabilitiesService.d.ts +0 -18
  138. package/lib/MultiParty/MediaCapabilitiesService.d.ts.map +0 -1
  139. package/lib/MultiParty/MediaCapabilitiesService.js +0 -158
  140. package/lib/MultiParty/MediaCapabilitiesService.js.map +0 -1
  141. package/lib/MultiParty/MediaCapabilitiesUtils.d.ts +0 -6
  142. package/lib/MultiParty/MediaCapabilitiesUtils.d.ts.map +0 -1
  143. package/lib/MultiParty/MediaCapabilitiesUtils.js +0 -123
  144. package/lib/MultiParty/MediaCapabilitiesUtils.js.map +0 -1
  145. package/lib/MultiParty/MediaTracer.d.ts +0 -4
  146. package/lib/MultiParty/MediaTracer.d.ts.map +0 -1
  147. package/lib/MultiParty/MediaTracer.js +0 -10
  148. package/lib/MultiParty/MediaTracer.js.map +0 -1
  149. package/lib/MultiParty/MultiPartyService.d.ts +0 -49
  150. package/lib/MultiParty/MultiPartyService.d.ts.map +0 -1
  151. package/lib/MultiParty/MultiPartyService.js +0 -30
  152. package/lib/MultiParty/MultiPartyService.js.map +0 -1
  153. package/lib/MultiParty/MultiPartyServiceFactory.d.ts +0 -4
  154. package/lib/MultiParty/MultiPartyServiceFactory.d.ts.map +0 -1
  155. package/lib/MultiParty/MultiPartyServiceFactory.js +0 -13
  156. package/lib/MultiParty/MultiPartyServiceFactory.js.map +0 -1
  157. package/lib/MultiParty/MultipartyServiceEventTypes.d.ts +0 -89
  158. package/lib/MultiParty/MultipartyServiceEventTypes.d.ts.map +0 -1
  159. package/lib/MultiParty/MultipartyServiceEventTypes.js +0 -16
  160. package/lib/MultiParty/MultipartyServiceEventTypes.js.map +0 -1
  161. package/lib/MultiParty/index.d.ts +0 -7
  162. package/lib/MultiParty/index.d.ts.map +0 -1
  163. package/lib/MultiParty/index.js +0 -25
  164. package/lib/MultiParty/index.js.map +0 -1
  165. package/lib/MultiParty/opentok/OpentokMultiPartyService.d.ts +0 -38
  166. package/lib/MultiParty/opentok/OpentokMultiPartyService.d.ts.map +0 -1
  167. package/lib/MultiParty/opentok/OpentokMultiPartyService.js +0 -492
  168. package/lib/MultiParty/opentok/OpentokMultiPartyService.js.map +0 -1
  169. package/lib/MultiParty/opentok/OpentokPublisher.d.ts +0 -34
  170. package/lib/MultiParty/opentok/OpentokPublisher.d.ts.map +0 -1
  171. package/lib/MultiParty/opentok/OpentokPublisher.js +0 -121
  172. package/lib/MultiParty/opentok/OpentokPublisher.js.map +0 -1
  173. package/lib/MultiParty/opentok/OpentokPublisherEventMapper.d.ts +0 -20
  174. package/lib/MultiParty/opentok/OpentokPublisherEventMapper.d.ts.map +0 -1
  175. package/lib/MultiParty/opentok/OpentokPublisherEventMapper.js +0 -49
  176. package/lib/MultiParty/opentok/OpentokPublisherEventMapper.js.map +0 -1
  177. package/lib/MultiParty/opentok/OpentokScreenPublisher.d.ts +0 -6
  178. package/lib/MultiParty/opentok/OpentokScreenPublisher.d.ts.map +0 -1
  179. package/lib/MultiParty/opentok/OpentokScreenPublisher.js +0 -48
  180. package/lib/MultiParty/opentok/OpentokScreenPublisher.js.map +0 -1
  181. package/lib/MultiParty/opentok/OpentokSubscriber.d.ts +0 -2
  182. package/lib/MultiParty/opentok/OpentokSubscriber.d.ts.map +0 -1
  183. package/lib/MultiParty/opentok/OpentokSubscriber.js +0 -26
  184. package/lib/MultiParty/opentok/OpentokSubscriber.js.map +0 -1
  185. package/lib/MultiParty/opentok/OpentokVideoPublisher.d.ts +0 -19
  186. package/lib/MultiParty/opentok/OpentokVideoPublisher.d.ts.map +0 -1
  187. package/lib/MultiParty/opentok/OpentokVideoPublisher.js +0 -182
  188. package/lib/MultiParty/opentok/OpentokVideoPublisher.js.map +0 -1
  189. package/lib/MultiParty/opentok/trace.d.ts +0 -3
  190. package/lib/MultiParty/opentok/trace.d.ts.map +0 -1
  191. package/lib/MultiParty/opentok/trace.js +0 -18
  192. package/lib/MultiParty/opentok/trace.js.map +0 -1
  193. package/lib/MultiParty/opentok.d.ts +0 -463
  194. package/lib/MultiParty/types.d.ts +0 -33
  195. package/lib/MultiParty/types.d.ts.map +0 -1
  196. package/lib/MultiParty/types.js +0 -3
  197. package/lib/MultiParty/types.js.map +0 -1
  198. package/lib/MultiParty/utils.d.ts +0 -10
  199. package/lib/MultiParty/utils.d.ts.map +0 -1
  200. package/lib/MultiParty/utils.js +0 -17
  201. package/lib/MultiParty/utils.js.map +0 -1
  202. package/lib/qos/raw-qos.d.ts +0 -29
  203. package/lib/qos/raw-qos.d.ts.map +0 -1
  204. package/lib/webrtc-ie-shim.d.ts +0 -4
  205. package/lib/webrtc-ie-shim.d.ts.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["oldCode/tracer.js","../src/oldCode/tracer.ts"],"names":["__spreadArrays","s","i","il","arguments","length","r","Array","k","a","j","jl","Object","defineProperty","exports","value","getTracer","getTracers","TsTracers","TsTracer","TsTracerType","TsTracerEvent","type","message","extra","_type","WebRtcSessionTrace","_message","_extra","prototype","get","enumerable","configurable","tracerType","enabled","callback","_enabled","consoleOutputEnabled","_callback","set","trace","rest","_i","console","log","apply","Enabled","_this","_tracers","_callbacks","_","keys","forEach","_add","register","indexOf","push","unregister","index","splice","tracer","event","enableTracers","enableConsoleOutput","find","TracerType","tracers"],"mappings":"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","file":"tracer.js","sourcesContent":["\"use strict\";\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getTracer = exports.getTracers = exports.TsTracers = exports.TsTracer = exports.TsTracerType = void 0;\nvar TsTracerType;\n(function (TsTracerType) {\n TsTracerType[\"WebRtcSessionTrace\"] = \"WebRtcSessionTrace\";\n TsTracerType[\"TSMediaServiceHelper\"] = \"TSMediaServiceHelper\";\n})(TsTracerType = exports.TsTracerType || (exports.TsTracerType = {}));\nvar TsTracerEvent = /** @class */ (function () {\n function TsTracerEvent(type, message, extra) {\n this._type = TsTracerType.WebRtcSessionTrace;\n this._message = '';\n this._type = type;\n this._message = message;\n this._extra = extra;\n }\n Object.defineProperty(TsTracerEvent.prototype, \"Type\", {\n get: function () {\n return this._type;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TsTracerEvent.prototype, \"Message\", {\n get: function () {\n return this._message;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TsTracerEvent.prototype, \"Extra\", {\n get: function () {\n return this._extra;\n },\n enumerable: false,\n configurable: true\n });\n return TsTracerEvent;\n}());\nvar TsTracer = /** @class */ (function () {\n function TsTracer(tracerType, enabled, callback) {\n this._enabled = false;\n this._type = TsTracerType.WebRtcSessionTrace;\n this.consoleOutputEnabled = false;\n this._type = tracerType;\n this._enabled = enabled;\n this._callback = callback;\n }\n Object.defineProperty(TsTracer.prototype, \"Enabled\", {\n get: function () {\n return this._enabled;\n },\n set: function (enabled) {\n this._enabled = enabled;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TsTracer.prototype, \"TracerType\", {\n get: function () {\n return this._type;\n },\n enumerable: false,\n configurable: true\n });\n TsTracer.prototype.trace = function (message) {\n var rest = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n rest[_i - 1] = arguments[_i];\n }\n if (this.consoleOutputEnabled) {\n console.log.apply(console, __spreadArrays([this._type + \":\" + message], rest));\n }\n if (!this.Enabled) {\n return;\n }\n if (this._callback) {\n this._callback(new TsTracerEvent(this._type, message, rest));\n }\n };\n return TsTracer;\n}());\nexports.TsTracer = TsTracer;\nvar TsTracers = /** @class */ (function () {\n function TsTracers() {\n var _this = this;\n this._tracers = [];\n this._callbacks = [];\n // @ts-ignore\n _.keys(TsTracerType).forEach(function (tracerType) {\n // @ts-ignore\n _this._add(TsTracerType[tracerType]);\n });\n }\n TsTracers.prototype.register = function (callback) {\n if (this._callbacks.indexOf(callback) < 0) {\n this._callbacks.push(callback);\n }\n };\n TsTracers.prototype.unregister = function (callback) {\n var index = this._callbacks.indexOf(callback);\n if (index >= 0) {\n this._callbacks.splice(index, 1);\n }\n };\n TsTracers.prototype._add = function (tracerType) {\n var _this = this;\n var tracer = new TsTracer(tracerType, false, function (event) {\n // @ts-ignore\n _.forEach(_this._callbacks, function (callback) { return callback(event); });\n });\n this._tracers.push(tracer);\n };\n TsTracers.prototype.enableTracers = function (value) {\n // @ts-ignore\n _.forEach(this._tracers, function (tracer) {\n tracer.Enabled = value;\n });\n };\n TsTracers.prototype.enableConsoleOutput = function () {\n // @ts-ignore\n _.forEach(this._tracers, function (tracer) {\n tracer.consoleOutputEnabled = true;\n });\n };\n TsTracers.prototype.getTracer = function (tracerType) {\n // @ts-ignore\n return _.find(this._tracers, function (tracer) { return tracer.TracerType === tracerType; });\n };\n return TsTracers;\n}());\nexports.TsTracers = TsTracers;\nvar tracers = new TsTracers();\nfunction getTracers() {\n return tracers;\n}\nexports.getTracers = getTracers;\nfunction getTracer(tracerType) {\n if (tracerType === void 0) { tracerType = TsTracerType.WebRtcSessionTrace; }\n return getTracers().getTracer(tracerType);\n}\nexports.getTracer = getTracer;\n","export enum TsTracerType {\n WebRtcSessionTrace = 'WebRtcSessionTrace',\n TSMediaServiceHelper = 'TSMediaServiceHelper'\n}\n\nexport interface ITsTracerEvent {\n readonly Type: TsTracerType;\n readonly Message: string;\n readonly Extra: any[];\n}\n\nexport interface ITsTraceEvent {\n (event: ITsTracerEvent): any\n}\n\nclass TsTracerEvent implements ITsTracerEvent {\n private _type: TsTracerType = TsTracerType.WebRtcSessionTrace;\n private _message: string = '';\n private _extra: any[];\n\n constructor(type: TsTracerType, message: string, extra: any[]) {\n this._type = type;\n this._message = message;\n this._extra = extra;\n }\n\n get Type(): TsTracerType {\n return this._type;\n }\n\n get Message(): string {\n return this._message;\n }\n\n get Extra(): any[] {\n return this._extra;\n }\n}\n\nexport class TsTracer {\n private _enabled: boolean = false;\n private readonly _type: TsTracerType = TsTracerType.WebRtcSessionTrace;\n private readonly _callback: ITsTraceEvent;\n public consoleOutputEnabled: boolean = false;\n\n constructor(tracerType: TsTracerType, enabled: boolean, callback: ITsTraceEvent) {\n this._type = tracerType;\n this._enabled = enabled;\n this._callback = callback;\n }\n\n get Enabled() {\n return this._enabled;\n }\n\n set Enabled(enabled: boolean) {\n this._enabled = enabled;\n }\n\n get TracerType() {\n return this._type;\n }\n\n trace(message: string, ...rest: any[]) {\n if (this.consoleOutputEnabled) {\n console.log(`${this._type}:${message}`, ...rest);\n }\n\n if (!this.Enabled) {\n return;\n }\n\n if (this._callback) {\n this._callback(new TsTracerEvent(this._type, message, rest));\n }\n }\n}\n\nexport class TsTracers {\n private _tracers: Array<TsTracer> = [];\n private _callbacks: Array<ITsTraceEvent> = [];\n\n constructor() {\n\n // @ts-ignore\n _.keys(TsTracerType).forEach((tracerType: string) => {\n\n // @ts-ignore\n this._add(TsTracerType[tracerType]);\n });\n }\n\n register(callback: ITsTraceEvent) {\n if (this._callbacks.indexOf(callback) < 0) {\n this._callbacks.push(callback);\n }\n }\n\n unregister(callback: ITsTraceEvent) {\n let index = this._callbacks.indexOf(callback);\n\n if (index >= 0) {\n this._callbacks.splice(index, 1);\n }\n }\n\n private _add(tracerType: TsTracerType) {\n const tracer = new TsTracer(tracerType, false, (event: ITsTracerEvent) => {\n // @ts-ignore\n _.forEach(this._callbacks, (callback) => callback(event));\n });\n\n this._tracers.push(tracer);\n }\n\n enableTracers(value: boolean) {\n // @ts-ignore\n _.forEach(this._tracers, (tracer) => {\n tracer.Enabled = value;\n\n });\n }\n\n enableConsoleOutput() {\n // @ts-ignore\n _.forEach(this._tracers, (tracer) => {\n tracer.consoleOutputEnabled = true;\n\n });\n }\n\n getTracer(tracerType: TsTracerType) {\n // @ts-ignore\n return _.find(this._tracers, (tracer) => tracer.TracerType === tracerType);\n }\n}\n\nconst tracers = new TsTracers();\n\nexport function getTracers(): TsTracers {\n return tracers;\n}\n\nexport function getTracer(tracerType: TsTracerType = TsTracerType.WebRtcSessionTrace) {\n\n return getTracers().getTracer(tracerType);\n}\n"]}
@@ -0,0 +1 @@
1
+ export declare function fixDataUrl(dataUrl: string, useHighQuality: boolean): Promise<string>;
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/oldCode/utils/ImageFixer.ts"],"names":[],"mappings":"AAOA,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAWpF","file":"ImageFixer.d.ts","sourcesContent":["const FIX_SETTINGS = {\n imageSizeThreshold: 640000, // 0.64 MP images and larger get resized\n highQualityImageSizeThreshold: 16000000, // 4000x4000 MP images and larger get resized\n defaultMime: 'image/jpeg',\n imageQuality: 0.8\n};\n\nexport function fixDataUrl(dataUrl: string, useHighQuality: boolean): Promise<string> {\n return _dataUrlToImage(dataUrl)\n .then((image: any) => {\n const resizeRequirement = _isResizeRequired(image, useHighQuality);\n\n if (resizeRequirement.resized) {\n return _resizeCanvas(image, resizeRequirement);\n }\n\n return dataUrl;\n });\n}\n\nfunction _dataUrlToImage(dataUrl: string) {\n return new Promise((resolve, reject) => {\n const img = new Image();\n\n img.onload = () => resolve(img);\n img.onerror = (err) => reject(err);\n img.src = dataUrl;\n });\n}\n\nfunction _isResizeRequired(image: any, useHighQuality?: boolean) {\n const maxImageSize = useHighQuality\n ? FIX_SETTINGS.highQualityImageSizeThreshold\n : FIX_SETTINGS.imageSizeThreshold;\n\n if (image.naturalWidth * image.naturalHeight > maxImageSize) {\n const ratio = image.naturalWidth / image.naturalHeight,\n newWidth = Math.sqrt(maxImageSize * ratio),\n newHeight = newWidth / ratio;\n\n return {resized: true, width: newWidth, height: newHeight};\n }\n\n return {width: image.naturalWidth, height: image.naturalHeight};\n}\n\nfunction _resizeCanvas(image: any, size: any) {\n const canvas = document.createElement('canvas') as HTMLCanvasElement;\n const ctx = canvas.getContext('2d');\n\n if (!ctx) {\n throw new Error('RESIZE_CANVAS_FAILED');\n }\n\n const {width, height} = size || _isResizeRequired(image);\n\n canvas.width = width;\n canvas.height = height;\n\n ctx.drawImage(image, 0, 0, canvas.width, canvas.height);\n\n return canvas.toDataURL(FIX_SETTINGS.defaultMime, FIX_SETTINGS.imageQuality);\n}\n"]}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.fixDataUrl = void 0;
5
+ var FIX_SETTINGS = {
6
+ imageSizeThreshold: 640000,
7
+ highQualityImageSizeThreshold: 16000000,
8
+ defaultMime: 'image/jpeg',
9
+ imageQuality: 0.8
10
+ };
11
+ function fixDataUrl(dataUrl, useHighQuality) {
12
+ return _dataUrlToImage(dataUrl).then(function (image) {
13
+ var resizeRequirement = _isResizeRequired(image, useHighQuality);
14
+ if (resizeRequirement.resized) {
15
+ return _resizeCanvas(image, resizeRequirement);
16
+ }
17
+ return dataUrl;
18
+ });
19
+ }
20
+ exports.fixDataUrl = fixDataUrl;
21
+ function _dataUrlToImage(dataUrl) {
22
+ return new Promise(function (resolve, reject) {
23
+ var img = new Image();
24
+ img.onload = function () {
25
+ return resolve(img);
26
+ };
27
+ img.onerror = function (err) {
28
+ return reject(err);
29
+ };
30
+ img.src = dataUrl;
31
+ });
32
+ }
33
+ function _isResizeRequired(image, useHighQuality) {
34
+ var maxImageSize = useHighQuality ? FIX_SETTINGS.highQualityImageSizeThreshold : FIX_SETTINGS.imageSizeThreshold;
35
+ if (image.naturalWidth * image.naturalHeight > maxImageSize) {
36
+ var ratio = image.naturalWidth / image.naturalHeight,
37
+ newWidth = Math.sqrt(maxImageSize * ratio),
38
+ newHeight = newWidth / ratio;
39
+ return { resized: true, width: newWidth, height: newHeight };
40
+ }
41
+ return { width: image.naturalWidth, height: image.naturalHeight };
42
+ }
43
+ function _resizeCanvas(image, size) {
44
+ var canvas = document.createElement('canvas');
45
+ var ctx = canvas.getContext('2d');
46
+ if (!ctx) {
47
+ throw new Error('RESIZE_CANVAS_FAILED');
48
+ }
49
+ var _a = size || _isResizeRequired(image),
50
+ width = _a.width,
51
+ height = _a.height;
52
+ canvas.width = width;
53
+ canvas.height = height;
54
+ ctx.drawImage(image, 0, 0, canvas.width, canvas.height);
55
+ return canvas.toDataURL(FIX_SETTINGS.defaultMime, FIX_SETTINGS.imageQuality);
56
+ }
57
+ //# sourceMappingURL=ImageFixer.js.map
58
+
59
+ //# sourceMappingURL=ImageFixer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["oldCode/utils/ImageFixer.js","../src/oldCode/utils/ImageFixer.ts"],"names":["Object","defineProperty","exports","value","fixDataUrl","FIX_SETTINGS","imageSizeThreshold","highQualityImageSizeThreshold","defaultMime","imageQuality","dataUrl","useHighQuality","_dataUrlToImage","then","image","resizeRequirement","_isResizeRequired","resized","_resizeCanvas","Promise","resolve","reject","img","Image","onload","onerror","err","src","maxImageSize","naturalWidth","naturalHeight","ratio","newWidth","Math","sqrt","newHeight","width","height","size","canvas","document","createElement","ctx","getContext","Error","_a","drawImage","toDataURL"],"mappings":"AAAA;;AACAA,OAAOC,cAAP,CAAsBC,OAAtB,EAA+B,YAA/B,EAA6C,EAAEC,OAAO,IAAT,EAA7C;AACAD,QAAQE,UAAR,GAAqB,KAAK,CAA1B;ACFA,IAAMC,eAAe;AACjBC,wBAAoB,MADH;AAEjBC,mCAA+B,QAFd;AAGjBC,iBAAa,YAHI;AAIjBC,kBAAc;AAJG,CAArB;AAOA,SAAgBL,UAAhB,CAA2BM,OAA3B,EAA4CC,cAA5C,EAAmE;AAC/D,WAAOC,gBAAgBF,OAAhB,EACFG,IADE,CACG,UAACC,KAAD,EAAW;AACb,YAAMC,oBAAoBC,kBAAkBF,KAAlB,EAAyBH,cAAzB,CAA1B;AAEA,YAAII,kBAAkBE,OAAtB,EAA+B;AAC3B,mBAAOC,cAAcJ,KAAd,EAAqBC,iBAArB,CAAP;AACH;AAED,eAAOL,OAAP;AACH,KATE,CAAP;AAUH;AAXDR,QAAAE,UAAA,GAAAA,UAAA;AAaA,SAASQ,eAAT,CAAyBF,OAAzB,EAAwC;AACpC,WAAO,IAAIS,OAAJ,CAAY,UAACC,OAAD,EAAUC,MAAV,EAAgB;AAC/B,YAAMC,MAAM,IAAIC,KAAJ,EAAZ;AAEAD,YAAIE,MAAJ,GAAa,YAAA;AAAM,mBAAAJ,QAAQE,GAAR,CAAA;AAAY,SAA/B;AACAA,YAAIG,OAAJ,GAAc,UAACC,GAAD,EAAI;AAAK,mBAAAL,OAAOK,GAAP,CAAA;AAAW,SAAlC;AACAJ,YAAIK,GAAJ,GAAUjB,OAAV;AACH,KANM,CAAP;AAOH;AAED,SAASM,iBAAT,CAA2BF,KAA3B,EAAuCH,cAAvC,EAA+D;AAC3D,QAAMiB,eAAejB,iBACfN,aAAaE,6BADE,GAEfF,aAAaC,kBAFnB;AAIA,QAAIQ,MAAMe,YAAN,GAAqBf,MAAMgB,aAA3B,GAA2CF,YAA/C,EAA6D;AACzD,YAAMG,QAAQjB,MAAMe,YAAN,GAAqBf,MAAMgB,aAAzC;AAAA,YACIE,WAAWC,KAAKC,IAAL,CAAUN,eAAeG,KAAzB,CADf;AAAA,YAEII,YAAYH,WAAWD,KAF3B;AAIA,eAAO,EAACd,SAAS,IAAV,EAAgBmB,OAAOJ,QAAvB,EAAiCK,QAAQF,SAAzC,EAAP;AACH;AAED,WAAO,EAACC,OAAOtB,MAAMe,YAAd,EAA4BQ,QAAQvB,MAAMgB,aAA1C,EAAP;AACH;AAED,SAASZ,aAAT,CAAuBJ,KAAvB,EAAmCwB,IAAnC,EAA4C;AACxC,QAAMC,SAASC,SAASC,aAAT,CAAuB,QAAvB,CAAf;AACA,QAAMC,MAAMH,OAAOI,UAAP,CAAkB,IAAlB,CAAZ;AAEA,QAAI,CAACD,GAAL,EAAU;AACN,cAAM,IAAIE,KAAJ,CAAU,sBAAV,CAAN;AACH;AAEK,QAAAC,KAAkBP,QAAQtB,kBAAkBF,KAAlB,CAA1B;AAAA,QAACsB,QAAKS,GAAAT,KAAN;AAAA,QAAQC,SAAMQ,GAAAR,MAAd;AAENE,WAAOH,KAAP,GAAeA,KAAf;AACAG,WAAOF,MAAP,GAAgBA,MAAhB;AAEAK,QAAII,SAAJ,CAAchC,KAAd,EAAqB,CAArB,EAAwB,CAAxB,EAA2ByB,OAAOH,KAAlC,EAAyCG,OAAOF,MAAhD;AAEA,WAAOE,OAAOQ,SAAP,CAAiB1C,aAAaG,WAA9B,EAA2CH,aAAaI,YAAxD,CAAP;AACH","file":"ImageFixer.js","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fixDataUrl = void 0;\nvar FIX_SETTINGS = {\n imageSizeThreshold: 640000,\n highQualityImageSizeThreshold: 16000000,\n defaultMime: 'image/jpeg',\n imageQuality: 0.8\n};\nfunction fixDataUrl(dataUrl, useHighQuality) {\n return _dataUrlToImage(dataUrl)\n .then(function (image) {\n var resizeRequirement = _isResizeRequired(image, useHighQuality);\n if (resizeRequirement.resized) {\n return _resizeCanvas(image, resizeRequirement);\n }\n return dataUrl;\n });\n}\nexports.fixDataUrl = fixDataUrl;\nfunction _dataUrlToImage(dataUrl) {\n return new Promise(function (resolve, reject) {\n var img = new Image();\n img.onload = function () { return resolve(img); };\n img.onerror = function (err) { return reject(err); };\n img.src = dataUrl;\n });\n}\nfunction _isResizeRequired(image, useHighQuality) {\n var maxImageSize = useHighQuality\n ? FIX_SETTINGS.highQualityImageSizeThreshold\n : FIX_SETTINGS.imageSizeThreshold;\n if (image.naturalWidth * image.naturalHeight > maxImageSize) {\n var ratio = image.naturalWidth / image.naturalHeight, newWidth = Math.sqrt(maxImageSize * ratio), newHeight = newWidth / ratio;\n return { resized: true, width: newWidth, height: newHeight };\n }\n return { width: image.naturalWidth, height: image.naturalHeight };\n}\nfunction _resizeCanvas(image, size) {\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d');\n if (!ctx) {\n throw new Error('RESIZE_CANVAS_FAILED');\n }\n var _a = size || _isResizeRequired(image), width = _a.width, height = _a.height;\n canvas.width = width;\n canvas.height = height;\n ctx.drawImage(image, 0, 0, canvas.width, canvas.height);\n return canvas.toDataURL(FIX_SETTINGS.defaultMime, FIX_SETTINGS.imageQuality);\n}\n","const FIX_SETTINGS = {\n imageSizeThreshold: 640000, // 0.64 MP images and larger get resized\n highQualityImageSizeThreshold: 16000000, // 4000x4000 MP images and larger get resized\n defaultMime: 'image/jpeg',\n imageQuality: 0.8\n};\n\nexport function fixDataUrl(dataUrl: string, useHighQuality: boolean): Promise<string> {\n return _dataUrlToImage(dataUrl)\n .then((image: any) => {\n const resizeRequirement = _isResizeRequired(image, useHighQuality);\n\n if (resizeRequirement.resized) {\n return _resizeCanvas(image, resizeRequirement);\n }\n\n return dataUrl;\n });\n}\n\nfunction _dataUrlToImage(dataUrl: string) {\n return new Promise((resolve, reject) => {\n const img = new Image();\n\n img.onload = () => resolve(img);\n img.onerror = (err) => reject(err);\n img.src = dataUrl;\n });\n}\n\nfunction _isResizeRequired(image: any, useHighQuality?: boolean) {\n const maxImageSize = useHighQuality\n ? FIX_SETTINGS.highQualityImageSizeThreshold\n : FIX_SETTINGS.imageSizeThreshold;\n\n if (image.naturalWidth * image.naturalHeight > maxImageSize) {\n const ratio = image.naturalWidth / image.naturalHeight,\n newWidth = Math.sqrt(maxImageSize * ratio),\n newHeight = newWidth / ratio;\n\n return {resized: true, width: newWidth, height: newHeight};\n }\n\n return {width: image.naturalWidth, height: image.naturalHeight};\n}\n\nfunction _resizeCanvas(image: any, size: any) {\n const canvas = document.createElement('canvas') as HTMLCanvasElement;\n const ctx = canvas.getContext('2d');\n\n if (!ctx) {\n throw new Error('RESIZE_CANVAS_FAILED');\n }\n\n const {width, height} = size || _isResizeRequired(image);\n\n canvas.width = width;\n canvas.height = height;\n\n ctx.drawImage(image, 0, 0, canvas.width, canvas.height);\n\n return canvas.toDataURL(FIX_SETTINGS.defaultMime, FIX_SETTINGS.imageQuality);\n}\n"]}
@@ -0,0 +1,114 @@
1
+ 'use strict';
2
+
3
+ exports.__esModule = true;
4
+ var SOCKET_EVENTS = exports.SOCKET_EVENTS = {
5
+ OUTGOING: {
6
+ // Emitted to a peer, offering an ICE candidate
7
+ ICE_CANDIDATE: 'onIceCandidate',
8
+
9
+ //
10
+ // KMS Events
11
+ //
12
+
13
+ // Initial event, sent by pub/sub as a request to create/join a pipeline
14
+ JOIN_PIPELINE: 'joinPipeline',
15
+
16
+ // Final event, sent by pub/sub as a request to destroy a pipeline, or response to PIPELINE_DESTROYED event
17
+ DESTROY_PIPELINE: 'destroyPipeline',
18
+
19
+ //
20
+ // TURN Events
21
+ //
22
+
23
+ // Initial event, sent by pub/sub as a request to create/join a room
24
+ JOIN_ROOM: 'joinRoom',
25
+
26
+ // Sent by publisher, as a response to an SDP offer request (SEND_OFFER)
27
+ SDP_OFFER: 'sdpOfferSend',
28
+
29
+ // An SDP response (emitted after receiving an SDP offer)
30
+ SDP_ANSWER: 'sdpAnswerSend'
31
+ },
32
+ INCOMING: {
33
+ // In TURN - Received by a publisher, as a response to an SDP_ANSWER sent by a subscriber
34
+ // In KMS - Received after JOIN_PIPELINE is processed
35
+ JOIN_RESPONSE: 'joinResponse', // This event is received by a publisher, when the sig server receive an SDP answer from subscriber
36
+
37
+ // An incoming ICE candidate sent by a peer
38
+ ICE_CANDIDATE: 'iceCandidate',
39
+
40
+ // An error occured in the signaling server
41
+ ERROR: 'errorOccured',
42
+
43
+ //
44
+ // KMS Events
45
+ //
46
+
47
+ // KMS pipeline was destroyed, in response we do a cleanup
48
+ PIPELINE_DESTROYED: 'pipelineDestroyed',
49
+
50
+ //
51
+ // TURN Events
52
+ //
53
+
54
+ // Received by a publisher (sent by signaling server when a peer joining a room)
55
+ SEND_OFFER: 'sendOffer',
56
+
57
+ // Recieved by a subscriber when publisher sent an SDP offer
58
+ SDP_OFFER: 'sdpOfferRecv',
59
+
60
+ // Recieved by all subscribers, when the publisher has reconnected
61
+ PUBLISHER_RECONNECT: 'publisherReconnect',
62
+
63
+ // Recieved by the publisher, when a subscriber has disconnected
64
+ PEER_DISCONNECTED: 'peerDisconnected'
65
+ }
66
+ };
67
+
68
+ // KMS - Pipeline types
69
+ var PIPELINE_TYPES = exports.PIPELINE_TYPES = {
70
+ AUDIO_VIDEO_TO_SUBSCRIBERS: 'AudioVideoToSub',
71
+ AUDIO_VIDEO_TO_SUBSCRIBERS_WITH_SMART: 'AudioVideoToSubWithSmart'
72
+ };
73
+
74
+ var CLIENT_TYPES = exports.CLIENT_TYPES = {
75
+ PUBLISHER: 'publisher',
76
+ SUBSCRIBER: 'subscriber',
77
+ INITIATOR: 'publisher',
78
+ GUEST: 'subscriber'
79
+ };
80
+
81
+ var PEER_CONNECTION_TYPES = exports.PEER_CONNECTION_TYPES = {
82
+ SEND_ONLY: 'WebRtcPeerSendonly',
83
+ RECV_ONLY: 'WebRtcPeerRecvonly',
84
+ SEND_RECV: 'WebRtcPeerSendrecv'
85
+ };
86
+
87
+ // Used to store the peer unique identifier (UID)
88
+ var COOKIES = exports.COOKIES = {
89
+ UID: 'media-client.uid'
90
+ };
91
+
92
+ var DEFAULT_STREAM_NAMES = exports.DEFAULT_STREAM_NAMES = {
93
+ MOBILE_CLIENT_VIDEO_STREAM: 'MOBILE_CLIENT_VIDEO_STREAM',
94
+ MOBILE_CLIENT_AUDIO_STREAM: 'MOBILE_CLIENT_AUDIO_STREAM',
95
+ DASHBOARD_AUDIO_STREAM: 'DASHBOARD_AUDIO_STREAM'
96
+ };
97
+
98
+ // When ICE exchange fail, an interval between reconnection attempts
99
+ var RECONNECT_TURN_SERVER_INTERVAL = exports.RECONNECT_TURN_SERVER_INTERVAL = 1000;
100
+
101
+ // When ICE exchange start, this is the timeout until the connection is deemed failed
102
+ var FAILED_CONNECTING_TURN_SERVER_INTERVAL = exports.FAILED_CONNECTING_TURN_SERVER_INTERVAL = 15000;
103
+
104
+ // Grace to to wait before creating a publisher, if peer connection has not been created yet
105
+ var WAIT_FOR_PC_INTERVAL = exports.WAIT_FOR_PC_INTERVAL = 2000;
106
+
107
+ // Interval between checks of video publishing ability attempts
108
+ var PUBLISH_APPROVAL_CHECK_INTERVAL = exports.PUBLISH_APPROVAL_CHECK_INTERVAL = 1000;
109
+
110
+ var SOCKET_RECONNECTION_DELAY = exports.SOCKET_RECONNECTION_DELAY = 3000,
111
+ SOCKET_RECONNECTION_DELAY_MAX = exports.SOCKET_RECONNECTION_DELAY_MAX = 6000,
112
+ SOCKET_RECONNECTION_ATTEMPTS = exports.SOCKET_RECONNECTION_ATTEMPTS = 100,
113
+ SOCKET_PATH = exports.SOCKET_PATH = '/socket2.io';
114
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["oldCode/webrtc/constants.js"],"names":["SOCKET_EVENTS","OUTGOING","ICE_CANDIDATE","JOIN_PIPELINE","DESTROY_PIPELINE","JOIN_ROOM","SDP_OFFER","SDP_ANSWER","INCOMING","JOIN_RESPONSE","ERROR","PIPELINE_DESTROYED","SEND_OFFER","PUBLISHER_RECONNECT","PEER_DISCONNECTED","PIPELINE_TYPES","AUDIO_VIDEO_TO_SUBSCRIBERS","AUDIO_VIDEO_TO_SUBSCRIBERS_WITH_SMART","CLIENT_TYPES","PUBLISHER","SUBSCRIBER","INITIATOR","GUEST","PEER_CONNECTION_TYPES","SEND_ONLY","RECV_ONLY","SEND_RECV","COOKIES","UID","DEFAULT_STREAM_NAMES","MOBILE_CLIENT_VIDEO_STREAM","MOBILE_CLIENT_AUDIO_STREAM","DASHBOARD_AUDIO_STREAM","RECONNECT_TURN_SERVER_INTERVAL","FAILED_CONNECTING_TURN_SERVER_INTERVAL","WAIT_FOR_PC_INTERVAL","PUBLISH_APPROVAL_CHECK_INTERVAL","SOCKET_RECONNECTION_DELAY","SOCKET_RECONNECTION_DELAY_MAX","SOCKET_RECONNECTION_ATTEMPTS","SOCKET_PATH"],"mappings":";;;AAAO,IAAMA,wCAAgB;AACzBC,cAAU;AACN;AACAC,uBAAe,gBAFT;;AAIN;AACA;AACA;;AAEA;AACAC,uBAAe,cATT;;AAWN;AACAC,0BAAkB,iBAZZ;;AAcN;AACA;AACA;;AAEA;AACAC,mBAAW,UAnBL;;AAqBN;AACAC,mBAAW,cAtBL;;AAwBN;AACAC,oBAAY;AAzBN,KADe;AA4BzBC,cAAU;AACN;AACA;AACAC,uBAAe,cAHT,EAGyB;;AAE/B;AACAP,uBAAe,cANT;;AAQN;AACAQ,eAAO,cATD;;AAWN;AACA;AACA;;AAEA;AACAC,4BAAoB,mBAhBd;;AAkBN;AACA;AACA;;AAEA;AACAC,oBAAY,WAvBN;;AAyBN;AACAN,mBAAW,cA1BL;;AA4BN;AACAO,6BAAqB,oBA7Bf;;AA+BN;AACAC,2BAAmB;AAhCb;AA5Be,CAAtB;;AAgEP;AACO,IAAMC,0CAAiB;AAC1BC,gCAA4B,iBADF;AAE1BC,2CAAuC;AAFb,CAAvB;;AAKA,IAAMC,sCAAe;AACxBC,eAAW,WADa;AAExBC,gBAAY,YAFY;AAGxBC,eAAW,WAHa;AAIxBC,WAAO;AAJiB,CAArB;;AAOA,IAAMC,wDAAwB;AACjCC,eAAW,oBADsB;AAEjCC,eAAW,oBAFsB;AAGjCC,eAAW;AAHsB,CAA9B;;AAMP;AACO,IAAMC,4BAAU;AACnBC,SAAK;AADc,CAAhB;;AAIA,IAAMC,sDAAuB;AAChCC,gCAA4B,4BADI;AAEhCC,gCAA4B,4BAFI;AAGhCC,4BAAwB;AAHQ,CAA7B;;AAMP;AACO,IAAMC,0EAAiC,IAAvC;;AAEP;AACO,IAAMC,0FAAyC,KAA/C;;AAEP;AACO,IAAMC,sDAAuB,IAA7B;;AAEP;AACO,IAAMC,4EAAkC,IAAxC;;AAEA,IAAMC,gEAA4B,IAAlC;AAAA,IACHC,wEAAgC,IAD7B;AAAA,IAEHC,sEAA+B,GAF5B;AAAA,IAGHC,oCAAc,aAHX","file":"constants.js","sourcesContent":["export const SOCKET_EVENTS = {\n OUTGOING: {\n // Emitted to a peer, offering an ICE candidate\n ICE_CANDIDATE: 'onIceCandidate',\n\n //\n // KMS Events\n //\n\n // Initial event, sent by pub/sub as a request to create/join a pipeline\n JOIN_PIPELINE: 'joinPipeline',\n\n // Final event, sent by pub/sub as a request to destroy a pipeline, or response to PIPELINE_DESTROYED event\n DESTROY_PIPELINE: 'destroyPipeline',\n\n //\n // TURN Events\n //\n\n // Initial event, sent by pub/sub as a request to create/join a room\n JOIN_ROOM: 'joinRoom',\n\n // Sent by publisher, as a response to an SDP offer request (SEND_OFFER)\n SDP_OFFER: 'sdpOfferSend',\n\n // An SDP response (emitted after receiving an SDP offer)\n SDP_ANSWER: 'sdpAnswerSend'\n },\n INCOMING: {\n // In TURN - Received by a publisher, as a response to an SDP_ANSWER sent by a subscriber\n // In KMS - Received after JOIN_PIPELINE is processed\n JOIN_RESPONSE: 'joinResponse', // This event is received by a publisher, when the sig server receive an SDP answer from subscriber\n\n // An incoming ICE candidate sent by a peer\n ICE_CANDIDATE: 'iceCandidate',\n\n // An error occured in the signaling server\n ERROR: 'errorOccured',\n\n //\n // KMS Events\n //\n\n // KMS pipeline was destroyed, in response we do a cleanup\n PIPELINE_DESTROYED: 'pipelineDestroyed',\n\n //\n // TURN Events\n //\n\n // Received by a publisher (sent by signaling server when a peer joining a room)\n SEND_OFFER: 'sendOffer',\n\n // Recieved by a subscriber when publisher sent an SDP offer\n SDP_OFFER: 'sdpOfferRecv',\n\n // Recieved by all subscribers, when the publisher has reconnected\n PUBLISHER_RECONNECT: 'publisherReconnect',\n\n // Recieved by the publisher, when a subscriber has disconnected\n PEER_DISCONNECTED: 'peerDisconnected'\n }\n};\n\n// KMS - Pipeline types\nexport const PIPELINE_TYPES = {\n AUDIO_VIDEO_TO_SUBSCRIBERS: 'AudioVideoToSub',\n AUDIO_VIDEO_TO_SUBSCRIBERS_WITH_SMART: 'AudioVideoToSubWithSmart'\n};\n\nexport const CLIENT_TYPES = {\n PUBLISHER: 'publisher',\n SUBSCRIBER: 'subscriber',\n INITIATOR: 'publisher',\n GUEST: 'subscriber'\n};\n\nexport const PEER_CONNECTION_TYPES = {\n SEND_ONLY: 'WebRtcPeerSendonly',\n RECV_ONLY: 'WebRtcPeerRecvonly',\n SEND_RECV: 'WebRtcPeerSendrecv'\n};\n\n// Used to store the peer unique identifier (UID)\nexport const COOKIES = {\n UID: 'media-client.uid'\n};\n\nexport const DEFAULT_STREAM_NAMES = {\n MOBILE_CLIENT_VIDEO_STREAM: 'MOBILE_CLIENT_VIDEO_STREAM',\n MOBILE_CLIENT_AUDIO_STREAM: 'MOBILE_CLIENT_AUDIO_STREAM',\n DASHBOARD_AUDIO_STREAM: 'DASHBOARD_AUDIO_STREAM'\n};\n\n// When ICE exchange fail, an interval between reconnection attempts\nexport const RECONNECT_TURN_SERVER_INTERVAL = 1000;\n\n// When ICE exchange start, this is the timeout until the connection is deemed failed\nexport const FAILED_CONNECTING_TURN_SERVER_INTERVAL = 15000;\n\n// Grace to to wait before creating a publisher, if peer connection has not been created yet\nexport const WAIT_FOR_PC_INTERVAL = 2000;\n\n// Interval between checks of video publishing ability attempts\nexport const PUBLISH_APPROVAL_CHECK_INTERVAL = 1000;\n\nexport const SOCKET_RECONNECTION_DELAY = 3000,\n SOCKET_RECONNECTION_DELAY_MAX = 6000,\n SOCKET_RECONNECTION_ATTEMPTS = 100,\n SOCKET_PATH = '/socket2.io';\n"]}
@@ -0,0 +1,173 @@
1
+ 'use strict';
2
+
3
+ exports.__esModule = true;
4
+ exports.getHighestResolutionStream = exports.getVideoTrackSettings = exports.getMediaConstraints = exports.FALLBACK_RESOLUTION = exports.POSSIBLE_RESOLUTIONS = exports.CONSTRAINTS_TYPES = undefined;
5
+
6
+ var _service = require('../service');
7
+
8
+ var _tracer = require('../tracer');
9
+
10
+ var tracer = (0, _tracer.getTracer)('TSMediaServiceHelper');
11
+
12
+ function _resolutionToConstraints(resolution) {
13
+ var _resolution$split = resolution.split('x'),
14
+ width = _resolution$split[0],
15
+ height = _resolution$split[1];
16
+
17
+ return { width: width, height: height };
18
+ }
19
+
20
+ var CONSTRAINTS_TYPES = exports.CONSTRAINTS_TYPES = {
21
+ MIN: 'min',
22
+ IDEAL: 'ideal'
23
+ };
24
+
25
+ var POSSIBLE_RESOLUTIONS = exports.POSSIBLE_RESOLUTIONS = [
26
+ //'3840x2160', // 4k - disabled since it's an overkill
27
+ '1920x1080', // FHD
28
+ '1280x720' // HD
29
+ ];
30
+
31
+ // In case all possible resolution fails, we'll attempt to set the highest resolution as ideal
32
+ var FALLBACK_RESOLUTION = exports.FALLBACK_RESOLUTION = POSSIBLE_RESOLUTIONS[0];
33
+
34
+ function _constraintByType(value, type) {
35
+ switch (type) {
36
+ case CONSTRAINTS_TYPES.MIN:
37
+ return { min: value };
38
+ default:
39
+ return { ideal: value };
40
+ }
41
+ }
42
+
43
+ var getMediaConstraints = exports.getMediaConstraints = function getMediaConstraints(_ref) {
44
+ var resolution = _ref.resolution,
45
+ deviceOpts = _ref.deviceOpts,
46
+ constraintType = _ref.constraintType;
47
+ return _service.TsMediaService.getDevices().then(function (devices) {
48
+ var groupedDevices = {
49
+ video: _.filter(devices, function (device) {
50
+ return device.kind.toLowerCase() === 'videoinput';
51
+ }),
52
+ audio: _.filter(devices, function (device) {
53
+ return device.kind.toLowerCase() === 'audioinput';
54
+ })
55
+ };
56
+
57
+ var videoDevice = deviceOpts.video && _.last(groupedDevices.video);
58
+ var audioDevice = deviceOpts.audio && _.last(groupedDevices.audio);
59
+
60
+ var mediaConstraints = {};
61
+ tracer.trace('getMediaConstraints', videoDevice);
62
+ if (videoDevice) {
63
+ var videoResolution = _resolutionToConstraints(resolution);
64
+
65
+ _.assign(mediaConstraints, {
66
+ video: {
67
+ deviceId: videoDevice.deviceId,
68
+ width: _constraintByType(videoResolution.width, constraintType),
69
+ height: _constraintByType(videoResolution.height, constraintType),
70
+ facingMode: 'environment',
71
+ frameRate: { ideal: 15, max: 30 }
72
+ }
73
+ });
74
+ }
75
+
76
+ if (audioDevice) {
77
+ _.assign(mediaConstraints, {
78
+ audio: { deviceId: audioDevice.deviceId }
79
+ });
80
+ }
81
+
82
+ return mediaConstraints;
83
+ });
84
+ };
85
+
86
+ var getVideoTrackSettings = exports.getVideoTrackSettings = function getVideoTrackSettings(stream) {
87
+ var videoTracks = stream.getTracks().filter(function (track) {
88
+ return track.kind === 'video';
89
+ });
90
+
91
+ if (_.isEmpty(videoTracks)) {
92
+ return;
93
+ }
94
+
95
+ var videoTrack = videoTracks[0];
96
+
97
+ return videoTrack.getSettings && videoTrack.getSettings();
98
+ };
99
+
100
+ function _constraintsByResolution(resolution, deviceOpts, constraintType) {
101
+ return getMediaConstraints({
102
+ resolution: resolution,
103
+ deviceOpts: deviceOpts,
104
+ constraintType: constraintType
105
+ });
106
+ }
107
+
108
+ function _handleGetUserMediaError(error) {
109
+ var errorName = _.get(error, 'name');
110
+
111
+ if (errorName === 'NotAllowedError') {
112
+ return { code: 1500, name: 'NotAllowedError' };
113
+ }
114
+
115
+ if (errorName === 'PermissionDismissedError') {
116
+ return { code: 8, name: 'PermissionDismissedError' };
117
+ }
118
+
119
+ return { code: 999, name: errorName || 'UnknownError' };
120
+ }
121
+
122
+ /**
123
+ * Scan possible resolutions from high to low, trying to set each as minimal.
124
+ * Eventually, use a fallback as ideal so the browser may decide which to use.
125
+ *
126
+ * @method
127
+ * @param {Object} [deviceOpts] Devices to limit to in the constraints
128
+ * @param {Object} [constraints] Media constraints
129
+ *
130
+ * @returns { Promise }
131
+ *
132
+ */
133
+ var getHighestResolutionStream = exports.getHighestResolutionStream = function getHighestResolutionStream(deviceOpts, constraints) {
134
+ // In case we had a constraints scan before, return the best
135
+ if (constraints) {
136
+ return _service.TsMediaService.createLocalMediaStream(constraints).then(function (stream) {
137
+ return { stream: stream, constraints: constraints };
138
+ });
139
+ }
140
+
141
+ var successfulConstraintsFound = false;
142
+
143
+ return new Promise(function (resolve, reject) {
144
+ Promise.reduce(POSSIBLE_RESOLUTIONS, function (total, resolution) {
145
+ if (successfulConstraintsFound) {
146
+ return;
147
+ }
148
+
149
+ return _constraintsByResolution(resolution, deviceOpts, CONSTRAINTS_TYPES.MIN).then(function (potentialConstraints) {
150
+ return _service.TsMediaService.createLocalMediaStream(potentialConstraints).then(function (stream) {
151
+ successfulConstraintsFound = true;
152
+
153
+ return resolve({ stream: stream, constraints: potentialConstraints });
154
+ });
155
+ }).catch(function () {
156
+ return null;
157
+ });
158
+ }, 0).then(function () {
159
+ if (successfulConstraintsFound) {
160
+ return;
161
+ }
162
+
163
+ _constraintsByResolution(FALLBACK_RESOLUTION, deviceOpts, CONSTRAINTS_TYPES.IDEAL).then(function (potentialConstraints) {
164
+ return _service.TsMediaService.createLocalMediaStream(potentialConstraints).then(function (stream) {
165
+ return resolve({ stream: stream, constraints: potentialConstraints });
166
+ });
167
+ }).catch(function (err) {
168
+ return reject(_handleGetUserMediaError(err));
169
+ });
170
+ });
171
+ });
172
+ };
173
+ //# sourceMappingURL=helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["oldCode/webrtc/helper.js"],"names":["tracer","_resolutionToConstraints","resolution","split","width","height","CONSTRAINTS_TYPES","MIN","IDEAL","POSSIBLE_RESOLUTIONS","FALLBACK_RESOLUTION","_constraintByType","value","type","min","ideal","getMediaConstraints","deviceOpts","constraintType","TsMediaService","getDevices","then","devices","groupedDevices","video","_","filter","device","kind","toLowerCase","audio","videoDevice","last","audioDevice","mediaConstraints","trace","videoResolution","assign","deviceId","facingMode","frameRate","max","getVideoTrackSettings","stream","videoTracks","getTracks","track","isEmpty","videoTrack","getSettings","_constraintsByResolution","_handleGetUserMediaError","error","errorName","get","code","name","getHighestResolutionStream","constraints","createLocalMediaStream","successfulConstraintsFound","Promise","resolve","reject","reduce","total","potentialConstraints","catch","err"],"mappings":"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","file":"helper.js","sourcesContent":["import {TsMediaService} from '../service';\n\nimport {getTracer} from '../tracer';\n\nconst tracer = getTracer('TSMediaServiceHelper');\n\nfunction _resolutionToConstraints(resolution) {\n const [width, height] = resolution.split('x');\n\n return {width, height};\n}\n\nexport const CONSTRAINTS_TYPES = {\n MIN: 'min',\n IDEAL: 'ideal'\n};\n\nexport const POSSIBLE_RESOLUTIONS = [\n //'3840x2160', // 4k - disabled since it's an overkill\n '1920x1080', // FHD\n '1280x720' // HD\n];\n\n// In case all possible resolution fails, we'll attempt to set the highest resolution as ideal\nexport const FALLBACK_RESOLUTION = POSSIBLE_RESOLUTIONS[0];\n\nfunction _constraintByType(value, type) {\n switch (type) {\n case CONSTRAINTS_TYPES.MIN:\n return {min: value};\n default:\n return {ideal: value};\n }\n}\n\nexport const getMediaConstraints = ({resolution, deviceOpts, constraintType}) =>\n TsMediaService.getDevices()\n .then((devices) => {\n const groupedDevices = {\n video: _.filter(devices, (device) =>\n device.kind.toLowerCase() === 'videoinput'),\n audio: _.filter(devices, (device) =>\n device.kind.toLowerCase() === 'audioinput')\n };\n\n const videoDevice = deviceOpts.video && _.last(groupedDevices.video);\n const audioDevice = deviceOpts.audio && _.last(groupedDevices.audio);\n\n const mediaConstraints = {};\n tracer.trace('getMediaConstraints', videoDevice);\n if (videoDevice) {\n const videoResolution = _resolutionToConstraints(resolution);\n\n _.assign(mediaConstraints, {\n video: {\n deviceId: videoDevice.deviceId,\n width: _constraintByType(videoResolution.width, constraintType),\n height: _constraintByType(videoResolution.height, constraintType),\n facingMode: 'environment',\n frameRate: {ideal: 15, max: 30}\n }\n });\n }\n\n if (audioDevice) {\n _.assign(mediaConstraints, {\n audio: {deviceId: audioDevice.deviceId}\n });\n }\n\n return mediaConstraints;\n });\n\nexport const getVideoTrackSettings = (stream) => {\n const videoTracks = stream.getTracks()\n .filter((track) => (track.kind === 'video'));\n\n if (_.isEmpty(videoTracks)) {\n return;\n }\n\n const videoTrack = videoTracks[0];\n\n return videoTrack.getSettings && videoTrack.getSettings();\n};\n\nfunction _constraintsByResolution(resolution, deviceOpts, constraintType) {\n return getMediaConstraints({\n resolution: resolution,\n deviceOpts: deviceOpts,\n constraintType: constraintType\n });\n}\n\nfunction _handleGetUserMediaError(error) {\n const errorName = _.get(error, 'name');\n\n if (errorName === 'NotAllowedError') {\n return {code: 1500, name: 'NotAllowedError'};\n }\n\n if (errorName === 'PermissionDismissedError') {\n return {code: 8, name: 'PermissionDismissedError'};\n }\n\n return {code: 999, name: errorName || 'UnknownError'};\n}\n\n/**\n * Scan possible resolutions from high to low, trying to set each as minimal.\n * Eventually, use a fallback as ideal so the browser may decide which to use.\n *\n * @method\n * @param {Object} [deviceOpts] Devices to limit to in the constraints\n * @param {Object} [constraints] Media constraints\n *\n * @returns { Promise }\n *\n */\nexport const getHighestResolutionStream = (deviceOpts, constraints) => {\n // In case we had a constraints scan before, return the best\n if (constraints) {\n return TsMediaService.createLocalMediaStream(constraints)\n .then((stream) => ({stream, constraints}));\n }\n\n let successfulConstraintsFound = false;\n\n return new Promise((resolve, reject) => {\n Promise.reduce(POSSIBLE_RESOLUTIONS, (total, resolution) => {\n if (successfulConstraintsFound) {\n return;\n }\n\n return _constraintsByResolution(resolution, deviceOpts, CONSTRAINTS_TYPES.MIN)\n .then((potentialConstraints) => TsMediaService.createLocalMediaStream(potentialConstraints)\n .then((stream) => {\n successfulConstraintsFound = true;\n\n return resolve({stream, constraints: potentialConstraints});\n }))\n .catch(() => null);\n }, 0)\n .then(() => {\n if (successfulConstraintsFound) {\n return;\n }\n\n _constraintsByResolution(FALLBACK_RESOLUTION, deviceOpts, CONSTRAINTS_TYPES.IDEAL)\n .then((potentialConstraints) => TsMediaService.createLocalMediaStream(potentialConstraints)\n .then((stream) => resolve({stream, constraints: potentialConstraints})))\n .catch((err) => reject(_handleGetUserMediaError(err)));\n });\n });\n};\n"]}